The full motion-control stack from encoder to ROS 2 topic.
FOC firmware running at 400 Hz on STM32. ROS 2 / micro-ROS node pre-configured. MoveIt 2 SRDF files included. EtherCAT and CANopen on the same PCB. No middleware porting required from your side.
FOC control loop architecture
Current sensor → Park/Clarke Transform → PI Controllers → SVPWM → BLDC Motor → Encoder feedback — all running on a single STM32 MCU at 400 Hz.
FOC implementation specs
Current control loop running at 400 Hz on STM32G474 (170 MHz Cortex-M4). Torque bandwidth sufficient for compliant contact and impact recovery.
Magnetic absolute encoder with 524,288 counts/rev. SPI interface with CRC error detection. No index pulse needed.
Space-vector PWM at 48 kHz carrier. Dead-time compensation and current ripple cancellation built-in.
Torque command to physical output step latency under 2 ms. Verified on dyno with known inertia load.
Full CiA 402 motion profile. PDO mapping configurable via ESI file. Compatible with TwinCAT, SOEM, and LinuxCNC EtherCAT drivers.
Over-the-air firmware updates via USB or EtherCAT bootloader. Signed firmware images, rollback on verification failure.
Native ROS 2 support. No driver writing.
Each Tendonkindle actuator ships with a pre-compiled micro-ROS node that publishes sensor_msgs/JointState and subscribes to std_msgs/Float64 torque commands. Launch files and example configurations for ROS 2 Humble and Iron are included.
MoveIt 2 SRDF files and example moveit_config packages for single-joint and multi-joint assemblies are available in the firmware download package.
# Start micro-ROS agent on USB serial ros2 run micro_ros_agent micro_ros_agent \ serial --dev /dev/ttyUSB0 -b 921600 # List joint state topics ros2 topic list | grep joint # Echo joint states ros2 topic echo /tk120/joint_states
joint_state_broadcaster: ros__parameters: joints: - tk120_joint_0 interface_names: - position - velocity - effort
Framework and protocol support
| Framework / Protocol | TK-120 | TK-240 | TK-480 | Notes |
|---|---|---|---|---|
| ROS 2 Humble | ✓ | ✓ | ✓ | micro-ROS node included |
| ROS 2 Iron | ✓ | ✓ | ✓ | Same micro-ROS node |
| MoveIt 2 | ✓ | ✓ | ✓ | SRDF + config pkg included |
| EtherCAT (CoE) | ✓ | ✓ | ✓ | ESI file + CiA 402 profile |
| CANopen (CiA 402) | ✓ | ✓ | ✓ | Object dictionary included |
| SOEM (open-source EtherCAT) | ✓ | ✓ | ✓ | Example C code provided |
| TwinCAT 3 | Partial | Partial | ✓ | TK-480 fully tested; others via ESI |
| Gazebo / gz-sim | ✓ | ✓ | ✓ | URDF + transmission plugin |
The Tendonkindle motion stack is not a generic motor controller framework. It is purpose-built for compact harmonic-drive BLDC joints running at high torque density — the kind used in humanoid robot limbs and exoskeleton frames. If your application is a standard industrial servo with point-to-point PLC control, TK firmware will be more than you need. If your application requires backdrivability, impedance control, and a real-time ROS 2 joint state topic, you are in the right place.