Is there documented best practice for design of the interface to a robot?
Hi,
Apologies if this is covered somewhere, but I can't find it on ROS Answers nor under wiki.ros.org/ROS/Patterns, and I lack the exposure to other ROS stacks to be confident of figuring it out for myself.
If I am aiming to provide a ROS interface to my robot, for others in the community to use, how should I be guided to meet best practice for the design of that interface?
Specific questions that have come up include:
- If I am controlling a common degree-of-freedom (e.g. body movement) which control signal should I use? (such as the use of Twist() for body velocity)
- ...and how should I name the topic? (such as "cmd_vel", I think, for body movement)
- If I have to expose a degree-of-freedom that is bespoke to my robot, is there anything I can do other than use my common sense in designing the interface?
- If I have many DOFs to expose, and many sensors, where should the granularity be set? Should each individual DOF be represented by a topic? Or each actuator? Or each facet of the robot (such as kinematic actuators, high-frequency sensors, etc.)?
Obviously, it's straightforward to design "an interface" to my robot, but I want it to be the interface that the community would have designed, had they been involved.
I would welcome input on any of those specific questions (particularly the last), though I have seen hints at answers to some of them already scattered around, but my main question is where do I find guidance on best practice for interface design, in general?
Thanks.
Asked by benjmitch on 2017-06-27 07:13:21 UTC
Comments
The answers will probably depend a bit on what type of robot you are targeting. Can you clarify whether you're looking for advice for humanoids, mobile bases, drones, agv, auv, etc?
Asked by gvdhoorn on 2017-06-27 08:31:58 UTC
I can, yes (I can add this to the question if necessary, the robot in question is a differential drive mobile base with internal multi-DOF mobile neck and various cosmetic DOFs, plus multiple sensor types) but I'm really interested in whether there is a general, community-agreed, answer/resource.
Asked by benjmitch on 2017-06-27 08:42:27 UTC