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 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
Subtask
task type has been introduced to distribute parts of a task over different prioritiesRicher API
The
ControlMode
property which could task values amongPosition
,Velocity
,Disabled
is now splitted intoan
ActivationState
which is defined for all tasks, and can be eitherEnabled
orDisabled
a
ControlMode
which is defined for Cartesian tasks only, and can be eitherPosition
orVelocity
ROS
task_name/state
topic has been renamed totask_name/current_reference
world_odom
TF frame has been removed, and the standardworld
is used instead
C++
The ROS Client has been renamed, from
RosImpl
toRosClient
. The same applies to the header file name.A new
Context
object has been introduced to gather together a struct ofParameters
(among which the control rate), and theModelInterface
Almost all constructors which would take a
ModelInterface
an input, now take aContext
shared pointerImplementations of
CartesianInterfaceImpl
are 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