Compare commits

..
Author SHA1 Message Date
Antonio cuadros 2ee51a45f3 Update graph destructor 2021-07-28 12:28:48 +02:00
Antonio cuadros a86d883128 Keep graph manager alive until destruction 2021-07-28 10:01:55 +02:00
Antonio cuadros 1b606c7e92 Add clear to graph manager 2021-07-28 07:51:36 +02:00
Antonio Cuadros 7f9913a8ff Update micro_ros_agent/include/agent/graph_manager/graph_manager.hpp 2021-07-27 16:02:09 +02:00
Antonio Cuadros 54cfa606aa Merge branch 'main' into feature/stop_agent 2021-07-27 15:48:45 +02:00
Antonio cuadros 107dea729e Add missing declaration 2021-07-27 11:00:01 +02:00
Antonio cuadros f7fca51e2e Update graph manager 2021-07-27 10:31:07 +02:00
Antonio cuadros 9564b943ee Modify callbacks init 2021-07-26 13:43:57 +02:00
Antonio cuadros 7294ba66d7 Update agent as singleton 2021-07-26 13:10:04 +02:00
Antonio cuadros 76c39a39be Add aux micro-ros publishers delete 2021-07-23 07:54:25 +02:00
Antonio cuadros e9bf7fa65b Update Graph manager destructor 2021-07-22 15:46:47 +02:00
Antonio cuadros 3eb34010f0 Delete unnecesary command 2021-07-22 09:08:36 +02:00
Antonio cuadros 790c937dc2 Change back binary name to micro_ros_agent 2021-07-22 07:59:53 +02:00
Antonio cuadros 43a1ce2283 Delete void returns 2021-07-22 07:57:54 +02:00
Antonio cuadros ce149628b4 Add cmake config file 2021-07-22 07:46:36 +02:00
Antonio cuadros 4bcd9f2337 Add library build to cmake 2021-07-21 15:26:52 +02:00
Antonio cuadros ff3b6f3b64 Add stop functionality 2021-07-21 13:22:20 +02:00
mergify[bot]andPablo Garrido 256424b7ec Fix graph manager datawriters behaviour (#84) (#85)
* 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:31 +02:00
Pablo Garrido 646ca52aab Fix graph manager datawriters behaviour (#84)
* Fix graph manager datawriters


Fixes


Fix


Fix destruction

* Revert "Fix graph manager datawriters"

This reverts commit 2847a2ebc3.

* Initial
2021-07-09 13:36:31 +02:00
mergify[bot]andPablo Garrido e43cde14ae Graph manager: Fix participant mask for listener callbacks (#81) (#82)
(cherry picked from commit 95fecd77ae)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-08 15:33:15 +02:00
Pablo Garrido 95fecd77ae Graph manager: Fix participant mask for listener callbacks (#81) 2021-07-08 15:21:01 +02:00
mergify[bot]andPablo Garrido a8caaa1b72 Fix agent launch (#78) (#80)
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:22 +02:00
Pablo GarridoandYour Name 69f17c28a8 Fix agent launch (#78)
Co-authored-by: Your Name <you@example.com>
2021-07-05 10:49:11 +02:00
mergify[bot]andPablo Garrido ee955ed01e Fix graph manager node namespaces (#75) (#77)
* Fix graph manager node namespaces

* Update

(cherry picked from commit f6a2aa3b60)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-02 13:42:25 +02:00
Pablo Garrido f6a2aa3b60 Fix graph manager node namespaces (#75)
* Fix graph manager node namespaces

* Update
2021-07-02 13:28:22 +02:00
mergify[bot]andPablo Garrido a313a088bd Fix graph manager node namespaces (#72) (#74)
(cherry picked from commit a623308505)

Co-authored-by: Pablo Garrido <pablogs9@gmail.com>
2021-07-02 09:48:38 +02:00
Pablo Garrido a623308505 Fix graph manager node namespaces (#72) 2021-07-02 09:44:20 +02:00
Pablo Garrido e133754746 Fix Rolling agent (#61)
* Initial

* Remove deprecated FastDDS entities methods


Remove headers

* Add conversion functions
2021-06-21 16:15:47 +02:00
3 changed files with 57 additions and 73 deletions
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
microros_agent_ci:
runs-on: ubuntu-20.04
container: microros/base:foxy
container: microros/base:rolling
steps:
- uses: actions/checkout@v2
@@ -87,11 +87,11 @@ public:
if (microros_graph_publisher_.joinable())
{
exit = true;
cv_.notify_one();
cv_.notify_one();
microros_graph_publisher_.join();
}
subscriber_->delete_datareader(ros_discovery_datareader_);
subscriber_->delete_datareader(ros_discovery_datareader_);
publisher_->delete_datawriter(ros_to_microros_graph_datawriter_);
participant_->delete_subscriber(subscriber_);
@@ -154,21 +154,6 @@ 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.
@@ -202,21 +187,6 @@ 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.
@@ -331,6 +301,7 @@ private:
eprosima::fastdds::dds::DataWriterQos datawriter_qos_;
rmw_dds_common::GraphCache graphCache_;
ParticipantListener participant_listener_;
DatareaderListener datareader_listener_;
@@ -34,6 +34,7 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
, microros_graph_info_typesupport_()
{
eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->load_profiles();
participant_info_typesupport_ = (eprosima::fastdds::dds::TypeSupport) new graph_manager::ParticipantEntitiesInfoTypeSupport();
microros_graph_info_typesupport_ = (eprosima::fastdds::dds::TypeSupport) new graph_manager::MicrorosGraphInfoTypeSupport();
@@ -54,6 +55,7 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
eprosima::fastrtps::rtps::PREALLOCATED_WITH_REALLOC_MEMORY_MODE;
eprosima::fastdds::dds::StatusMask par_mask = eprosima::fastdds::dds::StatusMask::none();
participant_ = eprosima::fastdds::dds::DomainParticipantFactory::get_instance()->
create_participant(domain_id_, participant_qos, &participant_listener_, par_mask);
@@ -97,6 +99,7 @@ GraphManager::GraphManager(eprosima::fastdds::dds::DomainId_t domain_id)
eprosima::fastdds::dds::DataWriterQos ros_to_microros_datawriter_qos_ = datawriter_qos_;
ros_to_microros_datawriter_qos_.history().kind =
eprosima::fastdds::dds::HistoryQosPolicyKind::KEEP_ALL_HISTORY_QOS;
ros_to_microros_graph_datawriter_ =
publisher_->create_datawriter(ros_to_microros_graph_topic_, ros_to_microros_datawriter_qos_);
@@ -378,24 +381,6 @@ 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)
{
@@ -433,24 +418,6 @@ 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)
{
@@ -583,7 +550,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)
if (sample_info.instance_state == eprosima::fastdds::dds::InstanceStateKind::ALIVE_INSTANCE_STATE)
{
graphCache_.update_participant_entities(entities_info);
}
@@ -668,6 +635,52 @@ 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)
@@ -684,7 +697,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_info.info.m_qos);
iHandle2GUID(reader_info.info.RTPSParticipantKey()), reader_qos_conversion(reader_info.info.m_qos));
break;
}
default:
@@ -711,7 +724,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_info.info.m_qos);
iHandle2GUID(writer_info.info.RTPSParticipantKey()), writer_qos_conversion(writer_info.info.m_qos));
break;
}
default:
@@ -753,4 +766,4 @@ void GraphManager::DatareaderListener::on_data_available(
} // namespace agent
} // namespace uros
#endif // _UROS_AGENT_GRAPH_MANAGER_CPP
#endif // _UROS_AGENT_GRAPH_MANAGER_CPP