Compare commits

..
3 Commits
Author SHA1 Message Date
Pablo Garrido 179ae80b94 4.0.0 2022-05-25 09:10:03 +02:00
Pablo Garrido 5ad09cec70 Update changelog 2022-05-25 09:09:56 +02:00
Pablo Garrido dfd6966cd1 Update CI (#138)
* Update CI

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

* Fix yml

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

* Update

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

* Ensure fastrtps rmw

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

* Modify approach

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
2022-05-23 09:08:43 +02:00
9 changed files with 59 additions and 105 deletions
+9 -9
View File
@@ -3,27 +3,27 @@ name: CI micro-ROS Agent
on:
pull_request:
branches:
- 'humble'
- 'main'
schedule:
- cron: '33 6 * * *'
jobs:
microros_agent_ci:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ ubuntu-20.04 ]
ros_distribution: [ humble ]
ros_distribution: [ rolling ]
include:
- docker_image: ubuntu:jammy
ros_distribution: humble
- docker_image: ubuntu:22.04
ros_distribution: rolling
container:
image: ubuntu:jammy
image: ubuntu:22.04
steps:
- uses: actions/checkout@v3
- uses: ros-tooling/setup-ros@0.7.1
- uses: actions/checkout@v2
- uses: ros-tooling/setup-ros@0.3.2
with:
use-ros2-testing: false
required-ros-distributions: ${{ matrix.ros_distribution }}
@@ -31,7 +31,7 @@ jobs:
run: |
apt-get install ros-${{ matrix.ros_distribution }}-micro-ros-msgs
apt-get install ros-${{ matrix.ros_distribution }}-rmw-fastrtps-cpp
- uses : ros-tooling/action-ros-ci@0.3.6
- uses : ros-tooling/action-ros-ci@0.2.5
with:
package-name: "micro_ros_agent"
target-ros2-distro: ${{ matrix.ros_distribution }}
+1 -17
View File
@@ -2,23 +2,7 @@
Changelog for package micro-ros_agent
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3.0.6 (2024-01-29)
------------------
* Fix thread include (backport `#216 <https://github.com/micro-ROS/micro-ROS-Agent/issues/216>`_) (`#217 <https://github.com/micro-ROS/micro-ROS-Agent/issues/217>`_)
3.0.5 (2023-06-06)
------------------
3.0.4 (2022-09-28)
------------------
* Fix Datawriter destruction (`#169 <https://github.com/micro-ROS/micro-ROS-Agent/issues/169>`_)
* Synchronise predicate (`#160 <https://github.com/micro-ROS/micro-ROS-Agent/issues/160>`_)
3.0.3 (2022-06-13)
------------------
* Fix memory leak in graph manager (`#147 <https://github.com/micro-ROS/micro-ROS-Agent/issues/147>`_)
3.0.2 (2022-05-25)
4.0.0 (2022-05-25)
------------------
3.0.1 (2022-03-25)
@@ -65,7 +65,6 @@
#include <string>
#include <memory>
#include <map>
#include <thread>
namespace uros {
namespace agent {
@@ -112,12 +111,6 @@ public:
const eprosima::fastdds::dds::DomainParticipant* participant,
bool from_microros = true);
/**
* @brief Getter for the graph cache.
* @return Reference to inner graph cache
*/
rmw_dds_common::GraphCache& get_graph_cache() { return graphCache_; }
/**
* @brief Adds a DDS datawriter to the graph tree.
* @param datawriter_guid rtps::GUID_t of the datawriter to be added.
@@ -306,7 +299,7 @@ private:
// Store a auxiliary publishers and datawriter for each participant created in micro-ROS
std::map<
const eprosima::fastdds::dds::DomainParticipant*,
eprosima::fastdds::dds::DataWriter*
std::unique_ptr<eprosima::fastdds::dds::DataWriter>
> micro_ros_graph_datawriters_;
};
+1 -1
View File
@@ -2,7 +2,7 @@
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>micro_ros_agent</name>
<version>3.0.6</version>
<version>4.0.0</version>
<description>micro-ROS Agent package</description>
<maintainer email="pablogarrido@eprosima.com">Pablo Garrido</maintainer>
<maintainer email="antoniocuadros@eprosima.com">Antonio Cuadros</maintainer>
@@ -125,11 +125,9 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
// Set graph cache on change callback function
graphCache_.set_on_change_callback([this]()
{
{
std::unique_lock<std::mutex> lock(this->mtx_);
this->graph_changed_ = true;
}
this->cv_.notify_one();
});
@@ -146,7 +144,6 @@ inline void GraphManager::publish_microros_graph()
{
return this->graph_changed_;
});
graph_changed_ = false;
}
if (display_on_change_)
@@ -154,6 +151,7 @@ inline void GraphManager::publish_microros_graph()
std::cout << "Updated uros Graph: graph changed" << std::endl;
std::cout << graphCache_ << std::endl;
}
graph_changed_ = false;
micro_ros_msgs::msg::Graph graph_message;
@@ -322,10 +320,11 @@ void GraphManager::add_participant(
if (it == micro_ros_graph_datawriters_.end())
{
// Create datawriter
eprosima::fastdds::dds::DataWriter * datawriter = publisher_->create_datawriter(ros_discovery_topic_.get(), datawriter_qos_);
std::unique_ptr<eprosima::fastdds::dds::DataWriter> datawriter;
datawriter.reset(publisher_->create_datawriter(ros_discovery_topic_.get(), datawriter_qos_));
it = micro_ros_graph_datawriters_.insert(
std::make_pair(participant, datawriter)).first;
std::make_pair(participant, std::move(datawriter))).first;
}
it->second->write(static_cast<void *>(&info));
@@ -345,9 +344,8 @@ void GraphManager::remove_participant(
rmw_dds_common::convert_gid_to_msg(&gid, &info.gid);
auto it = micro_ros_graph_datawriters_.find(participant);
it->second->write(static_cast<void *>(&info));
publisher_->delete_datawriter(it->second);
micro_ros_graph_datawriters_.erase(participant);
}
micro_ros_graph_datawriters_.erase(participant);
}
void GraphManager::add_datawriter(
@@ -599,7 +597,7 @@ GraphManager::ParticipantListener::ParticipantListener(
}
void GraphManager::ParticipantListener::on_participant_discovery(
eprosima::fastdds::dds::DomainParticipant* /* participant */,
eprosima::fastdds::dds::DomainParticipant* participant,
eprosima::fastrtps::rtps::ParticipantDiscoveryInfo&& info)
{
switch (info.status)
@@ -616,15 +614,13 @@ void GraphManager::ParticipantListener::on_participant_discovery(
const std::string enclave =
std::string(name_found->second.begin(), name_found->second.end());
const rmw_gid_t gid = rmw_fastrtps_shared_cpp::create_rmw_gid("rmw_fastrtps_cpp", info.info.m_guid);
graphManager_from_->get_graph_cache().add_participant(gid, enclave);
graphManager_from_->add_participant(participant, false, enclave);
break;
}
case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::REMOVED_PARTICIPANT:
case eprosima::fastrtps::rtps::ParticipantDiscoveryInfo::DROPPED_PARTICIPANT:
{
const rmw_gid_t gid = rmw_fastrtps_shared_cpp::create_rmw_gid("rmw_fastrtps_cpp", info.info.m_guid);
graphManager_from_->get_graph_cache().remove_participant(gid);
graphManager_from_->remove_participant(participant, false);
break;
}
default:
-19
View File
@@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles" >
<transport_descriptors>
<transport_descriptor>
<transport_id>CustomUdpTransport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="participant_profile" is_default_profile="true">
<rtps>
<userTransports>
<transport_id>CustomUdpTransport</transport_id>
</userTransports>
<useBuiltinTransports>false</useBuiltinTransports>
</rtps>
</participant>
</profiles>
+1 -1
View File
@@ -24,4 +24,4 @@ if [ -n "$p2p_port" ]; then
set -- --p2p "$p2p_port" "$@"
fi
exec "$SNAP/opt/ros/snap/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@"
exec "$SNAP/lib/micro_ros_agent/micro_ros_agent" "$transport" "$@"
+35 -35
View File
@@ -71,6 +71,16 @@ description: |
$ snap set micro-ros-agent device="device path"
If connecting the micro-ROS Agent using an IP based connection mode,
that is, `udp4`, `udp6`, `tcp4` or `tcp6`, care must be taken to
connect first the `micro-ros-agent-shm-netplug` plug.
This is due to the fact that ROS 2 Foxy is using Fast-DDS as the
default DDS middleware, and Fast-DDS comes with *shared memory transport*.
Thus, this plugin must be enabled, in order to gain access to the
`/dev/shm` folder from the snap image, prior to running it:
$ sudo snap connect micro-ros-agent:micro-ros-agent-shm-netplug
When using the snap with a serial device, some steps need to be taken
in order to establish a successful connection:
@@ -110,59 +120,49 @@ architectures:
- build-on: armhf
- build-on: ppc64el
package-repositories:
- components: [main]
formats: [deb]
key-id: C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
key-server: keyserver.ubuntu.com
suites: [focal]
type: apt
url: http://repo.ros2.org/ubuntu/main
parts:
ros2-foxy-extension:
build-packages: [ros-foxy-ros-core]
override-build: install -D -m 0755 launch ${SNAPCRAFT_PART_INSTALL}/snap/command-chain/ros2-launch
plugin: nil
source: $SNAPCRAFT_EXTENSIONS_DIR/ros2
uros-agent:
plugin: colcon
source: .
colcon-cmake-args:
- -DMICROROSAGENT_SUPERBUILD=ON
- --cmake-force-configure
override-pull: |
snapcraftctl pull
version="$(git describe --always --tags| sed -e 's/^v//;s/-/+git/;y/-/./')"
[ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
snapcraftctl set-version "$version"
snapcraftctl set-grade "$grade"
override-build: |
set +u
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git -b $ROS_DISTRO
git clone https://github.com/eProsima/Micro-CDR.git -b $ROS_DISTRO
git clone https://github.com/micro-ROS/micro_ros_msgs.git -b $ROS_DISTRO
git clone https://github.com/micro-ROS/rosidl_typesupport_microxrcedds.git -b $ROS_DISTRO
git clone https://github.com/micro-ROS/rmw-microxrcedds.git -b $ROS_DISTRO
git clone https://github.com/micro-ROS/micro-ROS-Agent.git -b $ROS_DISTRO
. /opt/ros/$ROS_DISTRO/setup.sh
colcon build --merge-install --install-base $SNAPCRAFT_PRIME --cmake-args "-DUAGENT_BUILD_EXECUTABLE=OFF -DUAGENT_USE_SYSTEM_FASTDDS=ON" --packages-up-to micro_ros_agent
set -u
build-packages: [make, gcc, g++]
stage-packages: [ros-foxy-ros2launch]
build-environment:
- ROS_VERSION: '2'
- ROS_DISTRO: foxy
runner:
plugin: dump
source: snap/local/
organize:
'micro-ros-agent-daemon': usr/bin/
'fastdds_no_shared_memory.xml': usr/share/
'*': usr/bin/
plugs:
micro-ros-agent-shm-netplug:
interface: system-files
allow-auto-connection: true
write:
- /dev/shm
apps:
micro-ros-agent:
command: opt/ros/snap/lib/micro_ros_agent/micro_ros_agent
command: lib/micro_ros_agent/micro_ros_agent
environment:
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
plugs: [network, network-bind, serial-port]
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib"
plugs: [network, network-bind, serial-port, micro-ros-agent-shm-netplug]
extensions: [ros2-foxy]
daemon:
command: usr/bin/micro-ros-agent-daemon
environment:
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
LD_LIBRARY_PATH: "$LD_LIBRARY_PATH:$SNAP/lib"
daemon: simple
plugs: [network, network-bind, serial-port]
plugs: [network, network-bind, serial-port, micro-ros-agent-shm-netplug]