The robot uses ROS2 (Robot Operating System 2). Read the ROS2 wiki!. Tutorials and how-to guides are worth to check.
Read also controller documentation to understand why certain controllers are needed and how they control the motion. Here are ros2 control demo repositories and more documentation about controllers.
The robot uses dynamixel servos. Servos are controlled via the robot_hardware
ROS node, which implements the hardware interface for ros2_control. robot
package contains the servo controller configurations for the robot. See robot.yaml, for example. The head supports joint_trajectory_controller
. When using this controller, joints can be controlled by sending action messages to the trajectory controller. See bring up for an example of action message.
Joint -> Servo mappings are defined in two files. Configuration file connects servo ID with certain joint. dynamixel_arm.yaml is for servos of robot arm and dynamixel_head.yaml for servos of head.
client
- contains client to send actions for robot handconfig
- dynamixel servo configurationsrc
- all packagessrc/arm_pack
- not use in current configurationsrc/eye_movement
- runs action client to create eye motion commands based on the face tracking informationsrc/face_tracker
- tracks the faces using camera feed and calculates locations and distances of faces and detects mouth movement.src/head_gestures
- not use in current configurationsrc/inmoov_description
- robot files, which define the robot geometry and configuration for simulation (URDF, SRDF & rviz configuration)src/robot
- robot launch files & servo controller configurationssrc/robot_hardware
- hardware interface for ros2_controller, communicates with U2D2 via dynamixel workbenchsrc/tts_package
- Text-to-speech package for finnish speech synthesis
Note: Servos can be configured using Dynamixel Wizard 2.0
Baud rate: 57600, Voltage: 7.5
Note: You can use Dynamixel Wizard 2.0 to check that servos have enough voltage to operate normally.
Servo ID | Model | Joint name | Description |
---|---|---|---|
1 | XL430 | head_tilt_right_joint | Head tilt right-side |
2 | XL430 | head_tilt_vertical_joint | Head tilt up/down |
3 | XL430 | head_tilt_left_joint | Head tilt left-side |
4 | XL430 | head_pan_joint | Head turn left/right |
9 | XL320 | eyes_shift_horizontal_joint | Eyes shift left/right |
11 | XL320 | eyes_shift_vertical_joint | Eyes shift up/down |
12 | XL320 | head_jaw_joint | Open/close jaw |
31 | XL320 | r_thumb_joint | Open/close thumb |
34 | XL320 | r_index1_joint | Open/close index |
37 | XL320 | r_middle1_joint | Open/close middle |
40 | XL320 | r_ring_joint | Open/close ring |
44 | XL320 | r_pinky_joint | Open/close pinky |
47 | XL320 | unnamed joint | Rotate wrist |
Note: head tilt range of motion is poor
Note: wrist joint seems to overload very easily
- Reason for this detected during inspection of the mechanical assembly. The hand is installed wrong way to the wrist.
Note: servo angle limits are not configured
Note: Be careful not to move joints too much, limits are not set yet
- See Development
- See Robot bring-up