micro-ROS / micro-ROS/micro_ros_arduino
Unable to invoque a service if MicroRos agent is compiled with -DRMW_UXRCE_CREATION_MODE=refs
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:

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

Translating the hex code to ASCII, the result is:
`rd
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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