micro-ROS / micro-ROS/micro_ros_arduino

Retry client entities creation

Open
#1,238 1 comment 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

Hi,
We have an issue that during the micro-ros agent and client connection some of the entities (pub/sub) are not created, therefore part of the micro-ros messages (pub/sub) are not available (dead). We would like to have a way to react to this situation and execute an entity creation retry. Is there a way to do that? We read about the HARD_LIVELINESS_CHECK and added this to our micro-ros Arduino as described here [https://discourse.ros.org/t/our-concl...](https://discourse.ros.org/t/our-conclusions-on-trying-to-implement-micro-ros-in-our-robot/24690/4) this change gives us more LOG information, but the entities' creation not improved. When we tried to create the entities in "blocking" mode as described below

Under microxrcedds_client change the following values:

"-DUCLIENT_MAX_SESSION_CONNECTION_ATTEMPTS=3",
"-DUCLIENT_MIN_SESSION_CONNECTION_INTERVAL=100"
Under rmw_microxrcedds

Replace: "-DRMW_UXRCE_ENTITY_CREATION_DESTROY_TIMEOUT=0",
With: "-DRMW_UXRCE_ENTITY_CREATION_TIMEOUT=1000", "-DRMW_UXRCE_ENTITY_DESTROY_TIMEOUT=1000",
This mode solved the issue, but using this mode force us to stop the other tasks which we don't want. Do you have any other way of partially "blocking" that we can get the entities' creation status without blocking the other tasks?
Thanks

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

Start by reviewing the microxrcedds_client connection-attempt settings and the rmw_microxrcedds entity-creation and destroy timeout settings described in the issue. Determine whether the existing APIs expose entity-creation status or support retrying without blocking other tasks. Done would be a defined, usable approach for partial blocking or asynchronous entity-creation retries.

Written by the indexing model from the issue text.

Assessment

Tech stack
arduino, c
Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.