#################################### ## note = ## note.0 = [[qb_device_control/Tutorials/Communication Handler|Communication Handler]] ## title = Control ## description = Details on the control Node ## next = ## next.0.link = ## next.1.link = ## level = BeginnerCategory ## keywords = qbrobotics SoftHand qbmove control #################################### <<IncludeCSTemplate(TutorialCSHeaderTemplate)>> As shown in [[qb_device_control/Tutorials/Details|Details]] the control Node exploits the [[ros_control]] Controller Manager which loads and runs the device controllers. Each controller provides an Action Server that, together with the Hardware Interface structure, allows the user to send commands to the relative device and get its measurements. From an API point of view, it is implemented an Action Client which matches the relative trajectory controller and provides a method to send Goals, i.e. command references, directly to the given device. Additionally the Action Client is subscribed to a Topic (`*_controller/command`) that can be used to send reference commands from outside the code, e.g. asynchronously from the command line, or from a higher level control Node, e.g. as a result of a planning algorithm. {{{#!wiki caution It is recommended not to mix these two control modes: choose either to control the device directly from the code by extending our API or through this command Topic. }}} Regardless the control mode chosen for the given application, and apart form a customization of the API, the following launch file templates can be used respectively to control several devices or a single one: {{https://bitbucket.org/qbrobotics/qbhand-ros/raw/ddbccc369d6846549e9b03c9dce0c2dc6c1115e1/qb_hand_media/overview_launch.svg|overview_launch|width=755}} ## TutorialCategory