Compare commits

..
25 Commits
Author SHA1 Message Date
Pablo Garrido ccc177d276 1.5.3 2022-06-13 07:46:55 +02:00
Pablo Garrido 648081f77f Changelog
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
2022-06-13 07:46:49 +02:00
Guillaume Beuzeboc b317a906dc Fix/snap (#141)
* fix(snap): build snap using explicitly pulled dependency

* ci(snap): add snap workflow

* feat(CI): snap publication channel depending on tags

* fix(CI): push tagged snap to candidate instead of stable

* fix(snap): use MICROROSAGENT_SUPERBUILD
2022-06-08 16:23:20 +02:00
mergify[bot]andPablo Garrido 200f750a76 Fix memory leak in graph manager (#147) (#149)
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
(cherry picked from commit c89776e1fd)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2022-06-08 14:21:17 +02:00
Pablo Garrido 4dd8ffe63b 1.5.2 2022-05-25 09:08:16 +02:00
Pablo Garrido 375bf3e674 Update changelog 2022-05-25 09:07:52 +02:00
1325442eb5 Update CI (backport #135) (#139)
* Humble release (#135)

* Modify CI

* Update

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

* Update

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

* Update .github/workflows/ci.yml

* Update .github/workflows/ci.yml

* Modify CI

* Update to ubuntu latest

* Use pre-release repository

* Use ubuntu-20.04

* Fix

* Revert changes

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
(cherry picked from commit b0ebf5ab3f)

# Conflicts:
#	.github/workflows/ci.yml

* Update with foxy

* Update .github/workflows/ci.yml

Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com>
Co-authored-by: acuadros95 <acuadros1995@gmail.com>
2022-05-23 07:57:01 +02:00
mergify[bot]andAntonio Cuadros b17a6ef959 Add snap issue to README (#131) (#133)
(cherry picked from commit 0d4fcf8547)

Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com>
2022-04-19 15:11:36 +02:00
Pablo Garrido fd5d6adc00 1.5.1 2022-03-25 11:14:32 +01:00
Pablo Garrido 1904c562ef Update changelog
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
2022-03-25 11:14:09 +01:00
mergify[bot]andPablo Garrido 726692af04 Add services to graph manager (backport #127) (#128)
* Add services to graph manager (#127)

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
(cherry picked from commit 6d67807737)

* Revert "Add services to graph manager (#127)"

This reverts commit 3738c3b121.

* Fix incompatibilities

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

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2022-03-22 10:35:14 +01:00
Pablo Garrido 2326a201bc Add used missing includes (#116)
* Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

* Update CI

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
2022-03-17 08:36:50 +01:00
mergify[bot]andAntonio Cuadros 5b566f7b4f Add system logger flag (#118) (#120)
* Add system logger flag

* Add flag to superbuild

(cherry picked from commit 90545b7184)

Co-authored-by: Antonio Cuadros <49162117+Acuadros95@users.noreply.github.com>
2022-01-27 15:35:46 +01:00
mergify[bot]andPablo Garrido 0af992145e Add condition variable include (#113) (#115)
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>

Update

Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
(cherry picked from commit 07c460a327)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2022-01-14 08:21:25 +01:00
mergify[bot]andRoland Schwan f9e6daf6bf pass system name to xrceagent (#110) (#111)
(cherry picked from commit 8aea206b93)

Co-authored-by: Roland Schwan <RSchwan@users.noreply.github.com>
2022-01-12 12:43:21 +01:00
mergify[bot]andPablo Garrido e356e14e84 Fix memory leak in FastDDS datawriter (#107) (#108)
Signed-off-by: Pablo Garrido <pablogs9@gmail.com>
(cherry picked from commit ff2ae91877)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-12-22 10:23:20 +01:00
Your Name 37885214e1 1.5.0 2021-09-13 14:14:06 +02:00
Pablo Garrido 820bcdb5f6 changelog 2021-09-13 14:13:51 +02:00
mergify[bot]andPablo Garrido fd5bc39536 Remove XRCE dependency and add superbuild (#97) (#99)
Update package info

Update

Fix xrceagent paths

Update

Revert "Bump version"

This reverts commit 7b6b713041405a21d701952ef1eb2e8faab2802e.

Initial

(cherry picked from commit ceb1a1436c)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-09-13 10:49:08 +02:00
mecarillandmecarill fe1b3ade97 Fixed launch file by using a list for arguments. Ensures order of items is kept. (#93)
Co-authored-by: mecarill <mihkailkennerley@gmail.com>
2021-08-25 08:55:11 +02:00
mergify[bot]andPablo Garrido 7f3f560bc7 Fix graph manager datawriters behaviour (#84) (#86)
* Fix graph manager datawriters

Fixes

Fix

Fix destruction

* Revert "Fix graph manager datawriters"

This reverts commit 2847a2ebc3.

* Initial

(cherry picked from commit 646ca52aab)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-09 13:41:52 +02:00
mergify[bot]andPablo Garrido 80916d4949 Graph manager: Fix participant mask for listener callbacks (#81) (#83)
(cherry picked from commit 95fecd77ae)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-08 15:33:20 +02:00
mergify[bot]andPablo Garrido d1e851ba4e Fix agent launch (#78) (#79)
Co-authored-by: Your Name <you@example.com>
(cherry picked from commit 69f17c28a8)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-05 10:56:24 +02:00
mergify[bot]andPablo Garrido 6047f7135d Fix graph manager node namespaces (#75) (#76)
* Fix graph manager node namespaces

* Update

(cherry picked from commit f6a2aa3b60)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-02 13:42:03 +02:00
mergify[bot]andPablo Garrido 9d3fbc63a0 Fix graph manager node namespaces (backport #72) (#73)
* Fix graph manager node namespaces (#72)

(cherry picked from commit a623308505)

# Conflicts:
#	micro_ros_agent/src/agent/graph_manager/graph_manager.cpp

* Update graph_manager.cpp

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-02 09:51:40 +02:00
11 changed files with 218 additions and 141 deletions
+10 -9
View File
@@ -3,27 +3,27 @@ name: CI micro-ROS Agent
on:
pull_request:
branches:
- 'humble'
- 'foxy'
schedule:
- cron: '33 6 * * *'
jobs:
microros_agent_ci:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
os: [ ubuntu-20.04 ]
ros_distribution: [ humble ]
ros_distribution: [ foxy ]
include:
- docker_image: ubuntu:jammy
ros_distribution: humble
- docker_image: ubuntu:20.04
ros_distribution: foxy
container:
image: ubuntu:jammy
image: ubuntu:20.04
steps:
- uses: actions/checkout@v4
- uses: ros-tooling/setup-ros@0.7.13
- 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,8 @@ 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.4.3
- uses : ros-tooling/action-ros-ci@0.2.5
with:
package-name: "micro_ros_agent"
target-ros2-distro: ${{ matrix.ros_distribution }}
+60
View File
@@ -0,0 +1,60 @@
name: snap
on:
push:
tags:
- '*'
branches:
- foxy
pull_request:
branches:
- foxy
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
outputs:
snap-file: ${{ steps.build-snap.outputs.snap }}
strategy:
matrix:
architecture:
- linux/amd64
- linux/arm64
steps:
- uses: actions/checkout@v2
- uses: snapcore/action-build@v1
id: build-snap
with:
snapcraft-args: '--enable-experimental-extensions'
# Make sure the snap is installable
- run: |
sudo snap install --dangerous ${{ steps.build-snap.outputs.snap }}
# @todo Do some testing with the snap
- run: |
micro-ros-agent udp4
- uses: actions/upload-artifact@v3
with:
name: micro-ros-agent-snap
path: ${{ steps.build-snap.outputs.snap }}
publish:
if: github.ref == 'refs/heads/foxy' || startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
architecture:
- linux/amd64
- linux/arm64
steps:
- uses: actions/download-artifact@v3
with:
name: micro-ros-agent-snap
path: .
- uses: snapcore/action-publish@v1
with:
store_login: ${{ secrets.STORE_LOGIN }}
snap: ${{needs.build.outputs.snap-file}}
release: ${{ startsWith(github.ref, 'refs/tags/') && 'candidate' || 'edge'}}
+1 -1
View File
@@ -55,4 +55,4 @@ see the file [3rd-party-licenses.txt](3rd-party-licenses.txt).
Please notice the following issues/limitations:
* There is an unknown issue when dealing with serial ports shared with the micro-ROS agent running inside a Docker. Sometimes it works with a remarkable packet loss.
* There is an known issues with serial port communication on micro-ros-agent snap version. It is recommended to use the dockerized version or build it from source.
+11 -26
View File
@@ -2,38 +2,23 @@
Changelog for package micro-ros_agent
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3.0.6 (2024-01-29)
1.5.3 (2022-06-13)
------------------
* 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>`_)
* Fix memory leak in graph manager (`#147 <https://github.com/micro-ROS/micro-ROS-Agent/issues/147>`_) (`#149 <https://github.com/micro-ROS/micro-ROS-Agent/issues/149>`_)
3.0.5 (2023-06-06)
1.5.2 (2022-05-25)
------------------
3.0.4 (2022-09-28)
1.5.1 (2022-03-25)
------------------
* 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>`_)
* Add services to graph manager (backport `#127 <https://github.com/micro-ROS/micro-ROS-Agent/issues/127>`_) (`#128 <https://github.com/micro-ROS/micro-ROS-Agent/issues/128>`_)
* Add used missing includes (`#116 <https://github.com/micro-ROS/micro-ROS-Agent/issues/116>`_)
* Add system logger flag (`#118 <https://github.com/micro-ROS/micro-ROS-Agent/issues/118>`_) (`#120 <https://github.com/micro-ROS/micro-ROS-Agent/issues/120>`_)
* Add condition variable include (`#113 <https://github.com/micro-ROS/micro-ROS-Agent/issues/113>`_) (`#115 <https://github.com/micro-ROS/micro-ROS-Agent/issues/115>`_)
* pass system name to xrceagent (`#110 <https://github.com/micro-ROS/micro-ROS-Agent/issues/110>`_) (`#111 <https://github.com/micro-ROS/micro-ROS-Agent/issues/111>`_)
* Fix memory leak in FastDDS datawriter (`#107 <https://github.com/micro-ROS/micro-ROS-Agent/issues/107>`_) (`#108 <https://github.com/micro-ROS/micro-ROS-Agent/issues/108>`_)
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)
------------------
3.0.1 (2022-03-25)
------------------
* Add services to graph manager (`#127 <https://github.com/micro-ROS/micro-ROS-Agent/issues/127>`_) (`#129 <https://github.com/micro-ROS/micro-ROS-Agent/issues/129>`_)
* Add used missing includes (`#116 <https://github.com/micro-ROS/micro-ROS-Agent/issues/116>`_) (`#124 <https://github.com/micro-ROS/micro-ROS-Agent/issues/124>`_)
* Add system logger flag (`#118 <https://github.com/micro-ROS/micro-ROS-Agent/issues/118>`_) (`#119 <https://github.com/micro-ROS/micro-ROS-Agent/issues/119>`_)
* Add condition variable include (`#113 <https://github.com/micro-ROS/micro-ROS-Agent/issues/113>`_) (`#114 <https://github.com/micro-ROS/micro-ROS-Agent/issues/114>`_)
* pass system name to xrceagent (`#110 <https://github.com/micro-ROS/micro-ROS-Agent/issues/110>`_) (`#112 <https://github.com/micro-ROS/micro-ROS-Agent/issues/112>`_)
* Fix memory leak in FastDDS datawriter (`#107 <https://github.com/micro-ROS/micro-ROS-Agent/issues/107>`_) (`#109 <https://github.com/micro-ROS/micro-ROS-Agent/issues/109>`_)
3.0.0 (2021-09-13)
------------------
1.0.1 (2021-09-13)
1.5.0 (2021-09-13)
------------------
* Remove XRCE dependency and add superbuild (`#97 <https://github.com/micro-ROS/micro-ROS-Agent/issues/97>`_)
* Fixed launch file by using a list for arguments. Ensures order of items is kept. (`#93 <https://github.com/micro-ROS/micro-ROS-Agent/issues/93>`_) (`#94 <https://github.com/micro-ROS/micro-ROS-Agent/issues/94>`_)
+1 -1
View File
@@ -26,7 +26,7 @@ if(NOT xrceagent_FOUND)
GIT_REPOSITORY
https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
GIT_TAG
v2.4.2
ros2
PREFIX
${PROJECT_BINARY_DIR}/agent
INSTALL_DIR
@@ -65,7 +65,6 @@
#include <string>
#include <memory>
#include <map>
#include <thread>
namespace uros {
namespace agent {
@@ -144,6 +143,21 @@ public:
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::DataWriterQos& writer_qos);
/**
* @brief Adds a DDS datawriter to the graph tree.
* @param datawriter_guid rtps::GUID_t of the datawriter to be added.
* @param topic_name Name of the topic to which the datawriter sends information to.
* @param type_name Type name of the sent topic.
* @param participant_guid rtps::GUID_t of the participant which owns this datawriter.
* @param writer_qos QOS of the datawriter to be included into the graph tree.
*/
void add_datawriter(
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid,
const std::string& topic_name,
const std::string& type_name,
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::WriterQos& writer_qos);
/**
* @brief Removes a DDS datawriter from the graph tree.
* @param datawriter_guid rtps::GUID_t of the datawriter to be removed.
@@ -177,6 +191,21 @@ public:
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::DataReaderQos& reader_qos);
/**
* @brief Adds a DDS datareader to the graph tree.
* @param datareader_guid rtps::GUID_t of the datareader to be added.
* @param topic_name Name of the topic to which the datareader sends information to.
* @param type_name Type name of the sent topic.
* @param participant_guid rtps::GUID_t of the participant which owns this datareader.
* @param writer_qos QOS of the datareader to be included into the graph tree.
*/
void add_datareader(
const eprosima::fastrtps::rtps::GUID_t& datareader_guid,
const std::string& topic_name,
const std::string& type_name,
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::ReaderQos& reader_qos);
/**
* @brief Removes a DDS datareader from the graph tree.
* @param datareader_guid rtps::GUID_t of the datareader to be removed.
@@ -306,7 +335,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_;
};
+3 -3
View File
@@ -2,10 +2,10 @@
<?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>1.5.3</version>
<description>micro-ROS Agent package</description>
<maintainer email="eugeniocollado@eprosima.com">Eugenio Collado</maintainer>
<maintainer email="davidlaseca@eprosima.com">David Laseca</maintainer>
<maintainer email="pablogarrido@eprosima.com">Pablo Garrido</maintainer>
<maintainer email="antoniocuadros@eprosima.com">Antonio Cuadros</maintainer>
<license>Apache License 2.0</license>
<buildtool_depend>ament_cmake</buildtool_depend>
+48 -17
View File
@@ -79,9 +79,14 @@ bool Agent::create(
{
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->add_datawriter(datawriter->guid(), participant, datawriter);
// TODO(jamoralp): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
iHandle2GUID(instance_handle);
graph_manager_->add_datawriter(datawriter_guid, participant, datawriter);
graph_manager_->associate_entity(
datawriter->guid(), participant, dds::xrce::OBJK_DATAWRITER);
datawriter_guid, participant, dds::xrce::OBJK_DATAWRITER);
});
xrce_dds_agent_instance_.add_middleware_callback(
eprosima::uxr::Middleware::Kind::FASTDDS,
@@ -101,7 +106,12 @@ bool Agent::create(
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->remove_datawriter(datawriter->guid());
// TODO(jamoralp): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle);
graph_manager_->remove_datawriter(datawriter_guid);
});
xrce_dds_agent_instance_.add_middleware_callback(
@@ -174,15 +184,21 @@ bool Agent::create(
{
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->add_datawriter(datawriter->guid(), participant, datawriter);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dw =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dw);
graph_manager_->add_datawriter(datawriter_guid, participant, datawriter);
graph_manager_->associate_entity(
datawriter->guid(), participant, dds::xrce::OBJK_DATAWRITER);
datawriter_guid, participant, dds::xrce::OBJK_DATAWRITER);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dr =
datareader->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datareader_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle);
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dr);
graph_manager_->add_datareader(datareader_guid, participant, datareader);
graph_manager_->associate_entity(
datareader_guid, participant, dds::xrce::OBJK_DATAREADER);
@@ -206,13 +222,18 @@ bool Agent::create(
{
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->remove_datawriter(datawriter->guid());
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dw =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dw);
graph_manager_->remove_datawriter(datawriter_guid);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dr =
datareader->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datareader_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle);
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dr);
graph_manager_->remove_datareader(datareader_guid);
});
@@ -235,15 +256,20 @@ bool Agent::create(
{
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->add_datawriter(datawriter->guid(), participant, datawriter);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dw =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dw);
graph_manager_->add_datawriter(datawriter_guid, participant, datawriter);
graph_manager_->associate_entity(
datawriter->guid(), participant, dds::xrce::OBJK_DATAWRITER);
datawriter_guid, participant, dds::xrce::OBJK_DATAWRITER);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dr =
datareader->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datareader_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle);
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dr);
graph_manager_->add_datareader(datareader_guid, participant, datareader);
graph_manager_->associate_entity(
datareader_guid, participant, dds::xrce::OBJK_DATAREADER);
@@ -267,13 +293,18 @@ bool Agent::create(
{
auto graph_manager_ = find_or_create_graph_manager(participant->get_domain_id());
graph_manager_->remove_datawriter(datawriter->guid());
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dw =
datawriter->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datawriter_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dw);
graph_manager_->remove_datawriter(datawriter_guid);
// TODO(pablogs): Workaround for Fast-DDS bug #9977. Remove when fixed
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle =
const eprosima::fastrtps::rtps::InstanceHandle_t instance_handle_dr =
datareader->get_instance_handle();
const eprosima::fastrtps::rtps::GUID_t datareader_guid =
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle);
eprosima::fastrtps::rtps::iHandle2GUID(instance_handle_dr);
graph_manager_->remove_datareader(datareader_guid);
});
@@ -126,10 +126,8 @@ 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;
}
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(
@@ -378,6 +376,24 @@ void GraphManager::add_datawriter(
type_name, participant_gid, qos_profile, false);
}
void GraphManager::add_datawriter(
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid,
const std::string& topic_name,
const std::string& type_name,
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::WriterQos& writer_qos)
{
const rmw_gid_t datawriter_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
"rmw_fastrtps_cpp", datawriter_guid);
const rmw_gid_t participant_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
"rmw_fastrtps_cpp", participant_guid);
rmw_qos_profile_t qos_profile = rmw_qos_profile_unknown;
dds_qos_to_rmw_qos(writer_qos, &qos_profile);
graphCache_.add_entity(datawriter_gid, topic_name,
type_name, participant_gid, qos_profile, false);
}
void GraphManager::remove_datawriter(
const eprosima::fastrtps::rtps::GUID_t& datawriter_guid)
{
@@ -415,6 +431,24 @@ void GraphManager::add_datareader(
type_name, participant_gid, qos_profile, true);
}
void GraphManager::add_datareader(
const eprosima::fastrtps::rtps::GUID_t& datareader_guid,
const std::string& topic_name,
const std::string& type_name,
const eprosima::fastrtps::rtps::GUID_t& participant_guid,
const eprosima::fastdds::dds::ReaderQos& reader_qos)
{
const rmw_gid_t datareader_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
"rmw_fastrtps_cpp", datareader_guid);
const rmw_gid_t participant_gid = rmw_fastrtps_shared_cpp::create_rmw_gid(
"rmw_fastrtps_cpp", participant_guid);
rmw_qos_profile_t qos_profile = rmw_qos_profile_unknown;
dds_qos_to_rmw_qos(reader_qos, &qos_profile);
graphCache_.add_entity(datareader_gid, topic_name,
type_name, participant_gid, qos_profile, true);
}
void GraphManager::remove_datareader(
const eprosima::fastrtps::rtps::GUID_t& datareader_guid)
{
@@ -547,7 +581,7 @@ void GraphManager::update_node_entities_info()
if (ros_discovery_datareader_->take_next_sample(&entities_info, &sample_info) ==
eprosima::fastrtps::types::ReturnCode_t::RETCODE_OK)
{
if (sample_info.instance_state == eprosima::fastdds::dds::InstanceStateKind::ALIVE_INSTANCE_STATE)
if (sample_info.instance_state == eprosima::fastdds::dds::InstanceStateKind::ALIVE)
{
graphCache_.update_participant_entities(entities_info);
}
@@ -634,52 +668,6 @@ void GraphManager::ParticipantListener::on_participant_discovery(
}
}
static eprosima::fastdds::dds::DataWriterQos writer_qos_conversion(
const eprosima::fastdds::dds::WriterQos& writer_qos)
{
eprosima::fastdds::dds::DataWriterQos datawriter_qos;
datawriter_qos.durability(writer_qos.m_durability);
datawriter_qos.durability_service(writer_qos.m_durabilityService);
datawriter_qos.deadline(writer_qos.m_deadline);
datawriter_qos.latency_budget(writer_qos.m_latencyBudget);
datawriter_qos.liveliness(writer_qos.m_liveliness);
datawriter_qos.reliability(writer_qos.m_reliability);
datawriter_qos.destination_order(writer_qos.m_destinationOrder);
datawriter_qos.lifespan(writer_qos.m_lifespan);
datawriter_qos.user_data(writer_qos.m_userData);
datawriter_qos.ownership(writer_qos.m_ownership);
datawriter_qos.ownership_strength(writer_qos.m_ownershipStrength);
datawriter_qos.publish_mode(writer_qos.m_publishMode);
datawriter_qos.representation(writer_qos.representation);
datawriter_qos.data_sharing(writer_qos.data_sharing);
return datawriter_qos;
}
static eprosima::fastdds::dds::DataReaderQos reader_qos_conversion(
const eprosima::fastdds::dds::ReaderQos& reader_qos)
{
eprosima::fastdds::dds::DataReaderQos datareader_qos;
datareader_qos.durability(reader_qos.m_durability);
datareader_qos.deadline(reader_qos.m_deadline);
datareader_qos.latency_budget(reader_qos.m_latencyBudget);
datareader_qos.liveliness(reader_qos.m_liveliness);
datareader_qos.reliability(reader_qos.m_reliability);
datareader_qos.destination_order(reader_qos.m_destinationOrder);
datareader_qos.user_data(reader_qos.m_userData);
datareader_qos.ownership(reader_qos.m_ownership);
datareader_qos.time_based_filter(reader_qos.m_timeBasedFilter);
datareader_qos.lifespan(reader_qos.m_lifespan);
datareader_qos.durability_service(reader_qos.m_durabilityService);
eprosima::fastdds::dds::TypeConsistencyQos consistency;
consistency.type_consistency = reader_qos.type_consistency;
datareader_qos.type_consistency(consistency);
datareader_qos.data_sharing(reader_qos.data_sharing);
return datareader_qos;
}
template <>
void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtps::rtps::ReaderDiscoveryInfo>(
const eprosima::fastrtps::rtps::ReaderDiscoveryInfo& reader_info)
@@ -696,7 +684,7 @@ void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtp
const std::string type_name = reader_info.info.typeName().to_string();
graphManager_from_->add_datareader(reader_info.info.guid(), topic_name, type_name,
iHandle2GUID(reader_info.info.RTPSParticipantKey()), reader_qos_conversion(reader_info.info.m_qos));
iHandle2GUID(reader_info.info.RTPSParticipantKey()), reader_info.info.m_qos);
break;
}
default:
@@ -723,7 +711,7 @@ void GraphManager::ParticipantListener::process_discovery_info<eprosima::fastrtp
const std::string type_name = writer_info.info.typeName().to_string();
graphManager_from_->add_datawriter(writer_info.info.guid(), topic_name, type_name,
iHandle2GUID(writer_info.info.RTPSParticipantKey()), writer_qos_conversion(writer_info.info.m_qos));
iHandle2GUID(writer_info.info.RTPSParticipantKey()), writer_info.info.m_qos);
break;
}
default:
@@ -43,7 +43,7 @@ ParticipantEntitiesInfoTypeSupport::ParticipantEntitiesInfoTypeSupport()
ss << "dds_::" << message_name << "_";
this->setName(ss.str().c_str());
char full_bounded;
bool full_bounded = true;
m_typeSize = 4 + callbacks_->max_serialized_size(full_bounded);
}
@@ -135,7 +135,7 @@ MicrorosGraphInfoTypeSupport::MicrorosGraphInfoTypeSupport()
ss << "dds_::" << message_name << "_";
this->setName(ss.str().c_str());
char full_bounded;
bool full_bounded = true;
m_typeSize = 4 + callbacks_->max_serialized_size(full_bounded);
}
+4 -21
View File
@@ -4,9 +4,7 @@ version: git
summary: Bridge between Micro ROS client applications and ROS 2
description: |
Micro-ROS, whose default implementation is based on eProsima's
Micro XRCE-DDS middleware, is composed of client applications
which interact with the ROS 2 world by means of an Agent.
This agent keeps tracks of the entities created by means of
Micro XRCE-DDS middleware, is composed of client applications which interact with the ROS 2 world by means of an Agent. This agent keeps tracks of the entities created by means of
requests performed on the microcontroller side, and uses them
to communicate with the ROS 2 dataspace.
@@ -110,22 +108,7 @@ 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: .
@@ -142,9 +125,6 @@ parts:
build-packages: [make, gcc, g++]
stage-packages: [ros-foxy-ros2launch]
build-environment:
- ROS_VERSION: '2'
- ROS_DISTRO: foxy
runner:
plugin: dump
@@ -159,6 +139,7 @@ apps:
environment:
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
plugs: [network, network-bind, serial-port]
extensions: [ros2-foxy]
daemon:
command: usr/bin/micro-ros-agent-daemon
@@ -166,3 +147,5 @@ apps:
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
daemon: simple
plugs: [network, network-bind, serial-port]
extensions: [ros2-foxy]