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
CartesianInterfaceobject as before. The old API has been preserved for backward compatibility. A task object is obtained by name with thegetTask()method, and is then dynamically casted withstd::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
Subtasktask type has been introduced to distribute parts of a task over different prioritiesRicher API
The
ControlModeproperty which could task values amongPosition,Velocity,Disabledis now splitted intoan
ActivationStatewhich is defined for all tasks, and can be eitherEnabledorDisableda
ControlModewhich is defined for Cartesian tasks only, and can be eitherPositionorVelocity
ROS
task_name/statetopic has been renamed totask_name/current_referenceworld_odomTF frame has been removed, and the standardworldis used instead
C++
The ROS Client has been renamed, from
RosImpltoRosClient. The same applies to the header file name.A new
Contextobject has been introduced to gather together a struct ofParameters(among which the control rate), and theModelInterfaceAlmost all constructors which would take a
ModelInterfacean input, now take aContextshared pointerImplementations of
CartesianInterfaceImplare now created with the static factory::MakeInstance, rather than manually looking for the shared object and invoking itsextern "C"factory method by name
Python
TBD