What is the standard way of performing overall/main control with ROS robots?
I am working on a team putting together a simple robot and we've done our nodes individually that ccomplish single tasks.
We've reached the point where we need to combine everything to work together but this is where I'm stuck. How do we coordinate when certain tasks get done and others get started?
We came to the conclusion that a state machine is needed so I looked into the smach package but I cannot understand it.
Actions tutorials made sense but not smach.
Is this the standard way of overall control of ROS robots? Are their simpler alternatives? Better smach tutorials that explain things more detailed?
A more clearer example of what I'm asking is for robots such as the turtlebot3 or PR2 there are multiple things happening at the same time. For example navigation and sending out signals to motors. What did they use to coordinate all these tasks, ornplan out when they happen?
Thanks!
SMACH or other state machines.
These days, you'd probably want to look at either BehaviorTree/BehaviorTree.ROS, something like py_trees_ros or smacc (ignore all the whacky marketing gimmicks).
In general: if you're not really familiar with the formalisms behind these tools, it may help reading some (online) books or articles about that first. Learning new tools and theory at the same time is not always the most efficient.