Porting code from v1.x ====================== Some of the differences w.r.t. version 1.x are summarized hereafter. General design -------------- - Almost all functionalities of CartesIO are now provided **task-wise**, rather than from a global ``CartesianInterface`` object as before. The old API has been preserved for backward compatibility. A task object is obtained by name with the ``getTask()`` method, and is then dynamically casted with ``std::dynamic_pointer_cast``. - The most part of the implementation has been moved to task-specific classes implementing - reference management (e.g. time-out, filtering, trajectory generation, ...) - ROS API - translation into OpenSoT tasks/constraints - ... - A ``Subtask`` task type has been introduced to distribute parts of a task over different priorities - Richer API - The ``ControlMode`` property which could task values among ``Position``, ``Velocity``, ``Disabled`` is now splitted into - an ``ActivationState`` which is defined for all tasks, and can be either ``Enabled`` or ``Disabled`` - a ``ControlMode`` which is defined for Cartesian tasks only, and can be either ``Position`` or ``Velocity`` ROS --- - ``task_name/state`` topic has been renamed to ``task_name/current_reference`` - ``world_odom`` TF frame has been removed, and the standard ``world`` is used instead C++ --- - The ROS Client has been renamed, from ``RosImpl`` to ``RosClient``. The same applies to the header file name. - A new ``Context`` object has been introduced to gather together a struct of ``Parameters`` (among which the control rate), and the ``ModelInterface`` - Almost all constructors which would take a ``ModelInterface`` an input, now take a ``Context`` shared pointer - Implementations of ``CartesianInterfaceImpl`` are now created with the static factory ``::MakeInstance``, rather than manually looking for the shared object and invoking its ``extern "C"`` factory method by name Python ------ TBD