Humanoid software architecture from high to low level in ROS
Hello,
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 ?
Thanks!
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.
Thanks for your reply Mehdi.