Humanoid software architecture from high to low level in ROS

asked 2016-09-28 04:43:45 -0600


I have a question regarding software architecture in ROS for humanoid robots.

Let say I have a humanoid robot that can do various tasks. Ultimately each task publishes motor control commands in order to move the robot in a certain way. If the robot tries to do 2 tasks at the same time, that means 2 nodes publish motor commands on the same topic, the commands will be mixed and the robot will fail at both tasks. Is there a common used way to organize this in a higher level architecture ?

What I tried so far was :

  • Using a "conductor" node to allow only one task at a time to execute.
  • Each task is a set of nodes linked to a service, and the "conductor" can send a request to that service which is turning ON or OFF this task.
  • As each complex task is divided into multiple small steps, the "conductor" then acts as a state-machine.

Does anyone has experience/knowledge on software architecture for robots, or is there any package that would help doing so ?


edit retag flag offensive close merge delete


I would say the first option is the way to go. Something similar exists for mobile bases where command velocities are filtered with priorities depending on the sender.

Mehdi. gravatar imageMehdi. ( 2016-09-28 06:46:22 -0600 )edit

Thanks for your reply Mehdi.

Cyril_J gravatar imageCyril_J ( 2016-09-29 10:25:24 -0600 )edit