Advanced topics
The QP controller
Inside the robocop-qp-controller package, the framework provides a generic QP controller scheme that can be used and adapter for different robots.
This controller architecture allows task priority and weights at the same time, so we refer to it as mixed, in opposition to the typical weighted or hierarchical controllers.
Currently, two controllers are based on that:
robocop::qp::KinematicTreeController: for kinematic and/or dynamic control of kinematic trees (e.g serial manipulators, humanoids, etc)robocop::qp::AUVController: for autonomous underwater vehicles with any number of fixed or moving thrusters
To learn more about this control architecture, the provided controllers and how to go about adding a new one, head over to this page.
Multiple worlds
Sometimes using a single controller for implementing an application is not possible of wished. This particularly true when one wants to put in place a cascading controllers architecture: a top level controller generates commands that are used as targets by one or more lower level controllers, and this process can be recursive.
When those controllers can all execute at the same frequency without breaking real-time constraints then users can probably perform the cascade on the same world but most of time each controller will behave asynchronously, in its own execution thread. At this time one will need to manage multiple worlds.