How hucebot/seiko_controller_code works
SEIKO is a Talos whole-body, multi-contact controller for position-controlled robots. The principal workflow runs a 500 Hz task that processes Cartesian commands and contact changes, retargets motion, estimates contact wrenches, and solves the SEIKO controller optimization; its commands pass to a 2 kHz ROS_Control layer for interpolation, safety checks, and hardware output. The graph reflects documented subsystem responsibilities and sampled calls; some internal wiring is not visible in the excerpts.
Main entry points: TaskSEIKO.cpp SEIKO task pipeline · ControllerBase.cpp ROS low-level control · Model.cpp Robot model · ControllerTalos.cpp Talos controller
Components 17
Runtime control
- ROS low-level control
inria_controller/src/ControllerBase.cpp - Talos controller
inria_controller/src/ControllerTalos.cpp - Task thread manager
inria_controller/src/ThreadManager.cpp - SEIKO task pipeline
inria_controller/src/TaskSEIKO.cpp
SEIKO optimization
- Retargeting wrapper
inria_model/src/SEIKOWrapper.cpp - SEIKO retargeting
inria_model/src/SEIKORetargeting.cpp - Talos retargeting config
inria_model/src/SEIKOTalos.cpp - SEIKO controller QP
inria_model/src/SEIKOController.cpp
Robot model
- Talos description
inria_talos_description - Robot model
inria_model/src/Model.cpp - Pinocchio interface
inria_model/src/PinocchioInterface.cpp
Math and utilities
- Pose processing
inria_maths/src/PoseCommandProcessing.cpp - Command and state filters
inria_maths/include/inria_maths/FilterExponential.hpp - Motion trajectories
inria_maths/src/TrajectoryBangBangAcc.cpp
Other components
- Operator
- RhIO interface
- Talos hardware
Connections 21
- Operator → RhIO interface: sends commands
- RhIO interface → SEIKO task pipeline: provides commands
- SEIKO task pipeline → Retargeting wrapper: processes targets
- Retargeting wrapper → SEIKO retargeting: updates contacts
- SEIKO task pipeline → SEIKO controller QP: solves control
- SEIKO task pipeline → Robot model: updates state
- SEIKO task pipeline → Pose processing: processes poses
- SEIKO task pipeline → Command and state filters: filters estimates
- SEIKO task pipeline → Motion trajectories: generates motion
- SEIKO task pipeline → Talos retargeting config: configures retargeting
- SEIKO controller QP → Robot model: reads kinematics
- SEIKO controller QP → Pinocchio interface: uses derivatives
- Robot model → Talos description: loads robot model
- ROS low-level control → Robot model: updates state
- ROS low-level control → Task thread manager: exchanges state and commands
- Talos controller → Task thread manager: starts task thread
- Talos controller → SEIKO task pipeline: selects SEIKO task
- Talos hardware → ROS low-level control: provides sensor state
- ROS low-level control → Talos hardware: sends joint commands
- Talos controller → RhIO interface: publishes monitoring
- SEIKO task pipeline → RhIO interface: exposes task controls