micro-ROS / micro-ROS/micro_ros_arduino

Unable to invoque a service if MicroRos agent is compiled with -DRMW_UXRCE_CREATION_MODE=refs

Open
#1,789 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
576
Forks
146
PR merge metrics
No merged PRs in 30d

Description

Hardware description: Portenta H7
Installation type:github,linux command line
Version or commit hash: humble

I use MicroRos to communicate a Portenta H7 with ROS2 Humble in a Ubuntu 22.04 PC. Portenta H7 has subscrivers and publisers and, also, request to services that are hosted in the PC.

If MicroRos Agent is compiled WITHOUT "-DRMW_UXRCE_CREATION_MODE=refs" option, system works as expected. But if agent is compiled WITH "-DRMW_UXRCE_CREATION_MODE=refs" option, Portenta is unable to perform request to any service. Publishers and subscribers work correctly in this scenerario.

Agent is launched with this command line:

`ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyACM0 --middleware dds -v6 ROS_DOMAIN_ID=$ros_domain_id -r /root/TestServices/custom_qos_test.refs`

The content of custom_qos_test.refs file is:

```



default_xrce_participant



rt/TestInt32
std_msgs::msg::dds_::Int32_

KEEP_LAST
5


PREALLOCATED_WITH_REALLOC


RELIABLE


VOLATILE



NO_KEY
rt/TestInt32
std_msgs::msg::dds_::Int32_

KEEP_LAST
5




```

The problem ocurrs as soon portenta tries to send the request of the service:

![image](https://github.com/micro-ROS/micro_ros_arduino/assets/148915846/e7528cb7-45bb-47f4-91b0-3e9200c865ef)

In fact, when the error occurs, the data of frame shown in the agent is the following:

![image](https://github.com/micro-ROS/micro_ros_arduino/assets/148915846/4821ee77-e6c7-41fd-ae1c-26e0836b087c)

Translating the hex code to ASCII, the result is:

`€r d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the service request with the micro_ros_agent command, comparing builds with and without RMW_UXRCE_CREATION_MODE=refs. Start with custom_qos_test.refs and the verbose agent frame shown in the issue; verify how the requester profile is serialized and whether the frame is complete. Done means service requests work with refs enabled and the configuration is documented or corrected.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux, ubuntu, xml
Domain
embedded-iot, networking, robotics
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.