Edit on GitHub

THORMANG3 ROS Packages

MPC Packages


CAUTION : There are two versions of thormang3 manager depending on the version of THORMANG3.

  • DXL PRO version : thormang3_manager in ROBOTIS-THORMANG-MPC
  • DXL PRO+ version : thormang3_p_manager in ROBOTIS-THORMANG-P-MPC

NOTE: DYNAMIXEL PRO+ is renamed as DYNAMIXEL-P.

  • Revised Date: Jan 2th, 2020.
  • Revised Model Name: See the following table.

    Previous New
    H54P-200-S500-R PH54-200-S500-R
    H54P-100-S500-R PH54-100-S500-R
    H42P-020-S300-R PH42-020-S300-R
    M54P-060-S250-R PM54-060-S250-R
    M54P-040-S250-R PM54-040-S250-R
    M42P-010-S260-R PM42-010-S260-R

thormang3_manager

thormang3_manager is a package to apply ROBOTIS Framework to THORMANG3. Refer to the below link to create a new robot manager.

Download & Build

Reference : MPC Installation

Run

Execute the program with a .launch file in order to load ROS parameters. The command should be executed from the root account to configure the attribute of Thread.

$ sudo bash
[sudo] password for robotis:
# roslaunch thormang3_manager thormang3_manager.launch

ROS API

thormang3_p_manager

thormang3_p_manager is a package to apply ROBOTIS Framework to THORMANG3(DXL Pro+ Ver). Refer to the below link to create a new robot manager. It’s almost same with thormang3_manager. The difference is the actuator-related settings.

Download & Build

Reference : MPC Installation

Run

Execute the program with a .launch file in order to load ROS parameters. The command should be executed from the root account to configure the attribute of Thread.

$ sudo bash
[sudo] password for robotis:
# roslaunch thormang3_p_manager thormang3_p_manager.launch

ROS API

thormang3_kinematics_dynamics

thormang3_kinematics_dynamics is a kinematics and dynamics library that provides joint & link information and basic robotics function. To use this library, it is necessary to set the CMakeList.txt and package.xml of each module

In CMakeList.txt,

find_package( thormang3_kinematics_dynamics )
target_link_libraries( thormang3_kinematics_dynamics )

In package.xml,

<build_depend>thormang3_kinematics_dynamics</build_depend>

Functions

  1. LinkData.cpp
    • name : Joint name
    • parent : Parent joint ID
    • sibling : Sibling joint ID
    • child : Child joint ID
    • mass : Mass
    • relative_position : Joint relative position (relative to parent)
    • joint_axis : Joint axis vector (relative to parent)
    • center_of_mass : Center of mass (Link Local)
    • inertia : Moment of Inertia (Link Local)
    • joint_limit_max : Joint upper limit
    • joint_limit_min : Joint lower limit
    • joint_angle : Joint angle
    • joint_velocity : Joint velocity
    • joint_acceleration : Joint acceleration
    • position: Link position
    • orientation : Link orientation
    • transformation : Link transformation matrix
  2. ThorMang3KinematicsDynamics.cpp

thormang3_action_module

thormang3_action_module is one of the Motion Module. This module can load and play a motion file. The motion file is edited with thormang3_action_editor

Download & Build

Reference : MPC Installation

ROS API

Subscribed Topics
Published Topics
Services

thormang3_base_module

thormang3_base_module is a module for initial posture. This module is included in thormang3_manager as a library.

Download & Build

Reference : MPC Installation

The motion module is used in the manager as a form of library.

Reference : Creating new robot manager

ROS API

Subscribed Topics
Published Topics

thormang3_manipulation_module

THORMANG3 manipulation module for the upper body.

Download & Build

Reference : MPC Installation

ROS API

Subscribed Topics
Published Topics
Services

thormang3_walking_module

As seen from the above figure, thormang3_walking_module is one of the MotionModules from ROS Framework. THROMANG3 can be controlled with Topics and Services. Users can designate almost all Step Parameters.(thormang3_walking_module_msgs/StepData)

  1. Pattern Generation

    thormang3_walking_module includes online walking pattern generator. The pattern is generated from Foot Step Data input.

  2. Balance Algorithm

    The balance algorithm is included as shown below.(thormang3_walking_module_msgs/BalanceParam)

Download & Build

Reference : MPC Installation

ROS API

Subscribed Topics
Published Topics
Services

thormang3_head_control_module

This module is to control the head. This module is included in the Thormang3 Manager as a library.

Download & Build

Reference : MPC Installation

Reference : Creating new robot manager

ROS API

Subscribed Topics
Published Topics

thormang3_tuning_module

This module is for tuning gain and offset of THORMANG3. Users can tune gain and offset under thormang3_p_manager.(Users no longer have to run the offset tuner server separately.)

Download & Build

Reference : MPC Installation

Reference : Creating new robot manager

ROS API

Subscribed Topics
Published Topics
Services
Services Called
Parameters

ati_ft_sensor

This is a library to use ForceTorque Sensor(FT Sensor) of ATI Inc in the ROS.
The library can load saved Calibration Matrix and Unloaded Voltage from the YAML File.
The library does not include functions to communicate with hardwares. It can convert voltage output from the FT sensor to N or Nm.

Functions

  1. ATIForceTorqueSensorTWE Class
bool Initialize(const std::string& ft_data_path,
                const std::string& ft_data_key,
                const std::string& ft_frame_id,
                const std::string& ft_raw_publish_name,
                const std::string& ft_scaled_publish_name)

thormang3_feet_ft_module

The sensor module of THORMANG3 that uses ati_ft_sensor library.
Acquired sensor values when the robot is hanging on the lift and standing on the ground can be used for the Calibration feature.

Download & Build

Reference : MPC Installation

ROS API

  1. Subscribed Topics
    • /robotis/feet_ft/ft_calib_command (std_msgs/String)
      FT Calibration Command
  2. Published Topics

thormang3_alarm_module

The sensor module of THORMANG3 reads the present current of leg joints and checks if the joint is overloaded.

Download & Build

Reference : MPC Installation

ROS API

  1. Subscribed Topics
    • /robotis/overload/command (std_msgs/String)
      Alarm module Command : reset, load_limit
  2. Published Topics
  1. Config file
    • thormang3_alarm_module/data/overload.yaml

thormang3_balance_control

Library for using Balance Algorithm of THORMANG3 in ROS. There is two kinds of algorithm.

Download & Build

Reference : MPC Installation

Functions and Variables

BalanceLowPassFilter Class
void initialize(double control_cycle_sec_, double cut_off_frequency)
void setCutOffFrequency(double cut_off_frequency)
double getCutOffFrequency(void)
double getFilteredOutput(double present_raw_value)
Damping Controller Class
double getFeedBack(double present_sensor_output)
double desired_
double gain_
double time_constant_sec_
double output_
double control_cycle_sec_
BalancePDController Class
double getFeedBack(double present_sensor_output)
double desired_
double p_gain_
double d_gain_
BalanceControlUsingDampingConroller Class
void initialize(const int control_cycle_msec)
void setGyroBalanceEnable(bool enable)
void setOrientationBalanceEnable(bool enable)
void setForceTorqueBalanceEnable(bool enable)
void process(int *balance_error, Eigen::MatrixXd *robot_to_cob_modified, Eigen::MatrixXd *robot_to_right_foot_modified, Eigen::MatrixXd *robot_to_left_foot_modified)
void setDesiredPose(const Eigen::MatrixXd &robot_to_cob, const Eigen::MatrixXd &robot_to_right_foot, const Eigen::MatrixXd &robot_to_left_foot)
void setDesiredCOBGyro(double gyro_roll, double gyro_pitch)
void setDesiredCOBOrientation(double cob_orientation_roll, double cob_orientation_pitch)
void setDesiredFootForceTorque(double r_force_x_N,      double r_force_y_N,       double r_force_z_N,  
                             double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm,  
                             double l_force_x_N,      double l_force_y_N,       double l_force_z_N,  
                             double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
void setCurrentGyroSensorOutput(double gyro_roll, double gyro_pitch)
void setCurrentOrientationSensorOutput(double cob_orientation_roll, double cob_orientation_pitch)
void setCurrentFootForceTorqueSensorOutput(
  double r_force_x_N,      double r_force_y_N,       double r_force_z_N,  
  double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm,  
  double l_force_x_N,      double l_force_y_N,       double l_force_z_N,  
  double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
void setMaximumAdjustment(
  double cob_x_max_adjustment_m, double cob_y_max_adjustment_m, double cob_z_max_adjustment_m,  
  double cob_roll_max_adjustment_rad, double cob_pitch_max_adjustment_rad, double cob_yaw_max_adjustment_rad,  
  double foot_x_max_adjustment_m, double foot_y_max_adjustment_m, double foot_z_max_adjustment_m,  
  double foot_roll_max_adjustment_rad, double foot_pitch_max_adjustment_rad, double foot_yaw_max_adjustment_rad)
void setCOBManualAdjustment(
  double cob_x_adjustment_m, double cob_y_adjustment_m, double cob_z_adjustment_m)
double getCOBManualAdjustmentX()
double getCOBManualAdjustmentY()
double getCOBManualAdjustmentZ()
void setGyroBalanceGainRatio(double gyro_balance_gain_ratio)
double getGyroBalanceGainRatio(void)
DampingController foot_roll_angle_ctrl_
DampingController foot_pitch_angle_ctrl_
DampingController right_foot_force_x_ctrl_
DampingController right_foot_force_y_ctrl_
DampingController right_foot_force_z_ctrl_
DampingController right_foot_torque_roll_ctrl_
DampingController right_foot_torque_pitch_ctrl_
DampingController left_foot_force_x_ctrl_
DampingController left_foot_force_y_ctrl_
DampingController left_foot_force_z_ctrl_
DampingController left_foot_torque_roll_ctrl_
DampingController left_foot_torque_pitch_ctrl_
BalanceControlUsingPDController Class
void initialize(const int control_cycle_msec)
void setGyroBalanceEnable(bool enable)
void setOrientationBalanceEnable(bool enable)
void setForceTorqueBalanceEnable(bool enable)
void process(
  int *balance_error,
  Eigen::MatrixXd *robot_to_cob_modified,
  Eigen::MatrixXd *robot_to_right_foot_modified,
  Eigen::MatrixXd *robot_to_left_foot_modified)
void setDesiredPose(
  const Eigen::MatrixXd &robot_to_cob,
  const Eigen::MatrixXd &robot_to_right_foot,
  const Eigen::MatrixXd &robot_to_left_foot)
void setDesiredCOBGyro(double gyro_roll, double gyro_pitch)
void setDesiredCOBOrientation(
  double cob_orientation_roll, double cob_orientation_pitch)
void setDesiredFootForceTorque(
  double r_force_x_N,      double r_force_y_N,       double r_force_z_N,
  double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm,
  double l_force_x_N,      double l_force_y_N,       double l_force_z_N,
  double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
void setCurrentGyroSensorOutput(double gyro_roll, double gyro_pitch)
void setCurrentOrientationSensorOutput(double cob_orientation_roll, double cob_orientation_pitch)
void setCurrentFootForceTorqueSensorOutput(
  double r_force_x_N,      double r_force_y_N,       double r_force_z_N,
  double r_torque_roll_Nm, double r_torque_pitch_Nm, double r_torque_yaw_Nm,
  double l_force_x_N,      double l_force_y_N,       double l_force_z_N,
  double l_torque_roll_Nm, double l_torque_pitch_Nm, double l_torque_yaw_Nm)
void setMaximumAdjustment(
  double cob_x_max_adjustment_m,  double cob_y_max_adjustment_m,  double cob_z_max_adjustment_m,
  double cob_roll_max_adjustment_rad, double cob_pitch_max_adjustment_rad, double cob_yaw_max_adjustment_rad,
  double foot_x_max_adjustment_m, double foot_y_max_adjustment_m, double foot_z_max_adjustment_m,
  double foot_roll_max_adjustment_rad, double foot_pitch_max_adjustment_rad, double foot_yaw_max_adjustment_rad)
void setCOBManualAdjustment(double cob_x_adjustment_m, double cob_y_adjustment_m, double cob_z_adjustment_m)
double getCOBManualAdjustmentX()
double getCOBManualAdjustmentY()
double getCOBManualAdjustmentZ()
BalancePDController foot_roll_gyro_ctrl_
BalancePDController foot_pitch_gyro_ctrl_
BalancePDController foot_roll_angle_ctrl_
BalancePDController right_foot_force_x_ctrl_
BalancePDController right_foot_force_y_ctrl_
BalancePDController right_foot_force_z_ctrl_
BalancePDController right_foot_torque_roll_ctrl_
BalancePDController right_foot_torque_pitch_ctrl_
BalancePDController left_foot_force_x_ctrl_
BalancePDController left_foot_force_y_ctrl_
BalancePDController left_foot_force_z_ctrl_
BalancePDController left_foot_torque_roll_ctrl_
BalancePDController left_foot_torque_pitch_ctrl_
BalanceLowPassFilter roll_gyro_lpf_
BalanceLowPassFilter pitch_gyro_lpf_
BalanceLowPassFilter roll_angle_lpf_;
BalanceLowPassFilter pitch_angle_lpf_;
BalanceLowPassFilter right_foot_force_x_lpf_;
BalanceLowPassFilter right_foot_force_y_lpf_;
BalanceLowPassFilter right_foot_force_z_lpf_;
BalanceLowPassFilter right_foot_torque_roll_lpf_;
BalanceLowPassFilter right_foot_torque_pitch_lpf_;
BalanceLowPassFilter left_foot_force_x_lpf_;
BalanceLowPassFilter left_foot_force_y_lpf_;
BalanceLowPassFilter left_foot_force_z_lpf_;
BalanceLowPassFilter left_foot_torque_roll_lpf_;
BalanceLowPassFilter left_foot_torque_pitch_lpf_;

imu-3dm-gx4

This module is for the IMU Sensor(MicroStrain 3DM-GX4-25).
This module exists in a separated Node, and this module is launched along with the thormang3_manager when executing .launch file of the thormang3_manager.
This is the modified version of KumarRobotics/imu_3dm_gx4.

Download & Build

Reference : MPC Installation

ROS API

Published Topics

/robotis/sensor/imu/imu (sensor_msgs/Imu) Present output of the IMU Sensor

microstrain_3dm_gx5_45

This package is for the IMU Sensor(MicroStrain 3DM-GX5-25).
The latest THORMANG3 is equipped with 3DM-GX5-25. Users have to check what version is eqipped and modify manager.launch file to operate THORMANG3.

Download & Build

Reference : MPC Installation

ROS API

Published Topics

/robotis/sensor/imu/imu (sensor_msgs/Imu) Present output of the IMU Sensor

PPC Packages

thormang3_sensors

Thormang3 sensor related package.
This package contains sensor related launch files.
The package also includes a node for assembling Laserscan(LaserScan to PointCloud)

Download & Build

Reference : PPC Installation

Run

Execute Launch file

$ roslaunch thormang3_sensors thormang3_sensors.launch

ROS API : assemble_laser_node

Subscribed Topics

/robotis/sensor/move_lidar (std_msgs/String)
Configures start and end time to assemble LaserScan
Set the start time when receiving start message.
Set the end time and assemble Pointcloud when receiving end message.

Published Topics

/robotis/sensor/assembled_scan (sensor_msgs/PointCloud2)
Assembled PointCloud

Services Called

/robotis/sensor/service/assemble_scan2 (laser_assembler/AssembleScan2)
Get assembled PointCloud from the Service with LaserScan start/end parameters.

thormang3_simple_demo

thormang3_manipulation_demo

Thormang3 manipulation simple demonstration

Download & Build

Reference : PPC Installation

Run

Reference : Manipulation Simple Demo from How to execute Simple Demonstration

ROS API
Subscribed Topics

/robotis/manipulation_demo/command (std_msgs/String)
The topic to run various Manipulation simple demo commands.

Published Topics

/robotis/base/ini_pose (std_msgs/String)
The topic to take initial posture of the Base Module

/robotis/enable_ctrl_module (std_msgs/String)
The topic to set upper body of the robot with the Manipulation Module

/robotis/manipulation/ini_pose_msg (std_msgs/String)
The topic to take initial posture of the Manipulation Module

/robotis/manipulation/kinematics_pose_msg (thormang3_manipulation_module_msgs/KinematicsPose)
   The topic to take initial posture of the Manipulation Module

thormang3_walking_demo

Thormang3 Walking simple demonstration

Download & Build

Reference : PPC Installation

Run

Reference : Walking Simple Demo of How to execute Simple Demonstration

ROS API
Subscribed Topics

/robotis/status (robotis_controller_msgs/StatusMsg)
Status message of THORMANG3

robotis/walking_demo/command (std_msgs/String)
Command for walking simple demo

Published Topics

robotis/base/ini_pose (std_msgs/String)
The command delivered to the thormang3_base_module to take the initial posture.

/robotis/enable_ctrl_module (std_msgs/String)
The topic to set lower body of the robot with the Walking Module.

Services Called

/robotis/walking/get_reference_step_data (thormang3_walking_module_msgs/GetReferenceStrpData)
The service obtains current location of THORMANG3 from the Walking Module in the Global space.

/robotis/walking/add_step_data (thormang3_walking_module_msgs/AddStepDataArray)
The service adds StepData created by the user.

/robotis/walking/set_balance_param (thormang3_walking_module_msgs/SetBalanceParam)
The service sets parameters related to the Balance Algorithm.

OPC Packages

humanoid_navigation

$ sudo apt-get install ros-kinetic-map-server
$ sudo apt-get install ros-kinetic-humanoid-nav-msgs
$ sudo apt-get install ros-kinetic-nav-msgs
$ sudo apt-get install ros-kinetic-octomap
$ sudo apt-get install ros-kinetic-octomap-msgs
$ sudo apt-get install ros-kinetic-octomap-ros
$ sudo apt-get install ros-kinetic-octomap-server

footstep_planner

The footstep planner for humanoids or bipedal robots.

RUN
$ roslaunch footstep_planner thormang3_footstep_planner.launch
Configurations

gridmap_2d

humanoid_localization

thormang3_demo

The package for THORMANG3 demonstration.
Initial posture, walking, manipulation, head control are available with this package.
Feet ft calibration, Pointcloud conversion are available with this package.

Download & Build

Reference : OPC Installation

Run

Execute the launch file

$ roslaunch thormang3_demo thormang3_demo.launch

ROS API

Subscribed Topics

/robotis/feet_ft/both_ft_value (thormang3_feet_ft_module_msgs/BothWrench)
FT value for calibration

/robotis/status (robotis_controller_msgs/StatusMsg)
Status message of THORMANG3

/robotis/present_joint_ctrl_modules (robotis_controller_msgs/JointCtrlModule)
Joint modules that are currently in use

/robotis/present_joint_states (sensor_msgs/JointState)
Degree of each joint(Unit in Degree)

/robotis/demo/pose (geometry_msgs/Pose)
Pose that are used for Walking and Manipulation

Published Topics

/robotis/set_joint_ctrl_modules (robotis_controller_msgs/JointCtrlModule)
Configuring each joint modules (configure for each joint, Not recommended to use)

/robotis/enable_ctrl_module (std_msgs/String)
Configure modules to control

/robotis/base/ini_pose (std_msgs/String)
Initial posture of Thormang3

/robotis/feet_ft/ft_calib_command (std_msgs/String)
FT Calibration related command

/robotis/head_control/move_lidar (std_msgs/String)
Head movement command for assembling LaserScan.

/robotis/head_control/set_joint_states (sensor_msgs/JointState)
Control for separate head joints

/robotis/demo/foot_step_marker (visualization_msgs/MarkerArray)
Visualized footstep messages created by footstep_planner

/robotis/manipulation/ini_pose_msg (std_msgs/String)
Initial posture command for Manipulation

/robotis/manipulation/joint_pose_msg (thormang3_manipulation_module_msgs/JointPose)
Control the robot in Joint Space

/robotis/manipulation/kinematics_pose_msg (thormang3_manipulation_module_msgs/KinematicsPose)
Control the robot in Task Space

/robotis/thormang3_foot_step_generator/walking_command (thormang3_foot_step_generator/FootStepCommand)
Create footsteps from the foot_step_generator with the walking parameter and direction.

/robotis/thormang3_foot_step_generator/footsteps_2d (thormang3_foot_step_generator/Step2DArray)
2D step array to create footsteps for THORMANG3

/robotis/thormang3_foot_step_generator/balance_command (std_msgs/Bool)
Balance On/Off of THORMANG3

Services Called

/robotis/get_present_joint_ctrl_modules (robotis_controller_msgs/GetJointModule)
Obtains module that is currently in use for each joint.

/plan_footsteps (humanoid_nav_msgs/PlanFootsteps)
Creates footsteps from map and footstep_planner

/robotis/manipulation/get_joint_pose (thormang3_manipulation_module_msgs/GetJointPose)
Obtains joint pose of selected manipulation group.

/robotis/manipulation/get_kinematics_pose (thormang3_manipulation_module_msgs/GetKinematicsPose)
Obtains end effector pose of selected manipulation group.

Parameters

~demo_config(string, default: /config/demo_config.yaml)
Configuration file path of the demo program.

thormang3_action_script_player

The Node that can play a action script.
The default action script is in the “thormang3_action_script_player/script/action_script.yaml”.
The user can specify the path of the action script file via rosparameter.
The thormang3_action_script_player is used with thormang3_action_module and ros_mpg321_player.

Download & Build

Reference : OPC Installation

Run

thormang3_action_script_player runs with thormang3_demo.

Reference : Remote Control(GUI Demo)

If user wants to run thormang3_action_script_player separately, user can run it from OPC with the following command.

$ rosrun thormang3_action_script_player thormang3_action_script_player

How to write action script

The default action script file is in the “thormang3_action_script_player/script/action_script.yaml”.
The action script has the following structure.

script2:
     cmd1: {cmd_name: play,  cmd_arg: 2}
     cmd2: {cmd_name: sleep, cmd_arg: 1800}
     cmd3: {cmd_name: mp3,   cmd_arg: "/home/robotis/Music/thormang_mp3/hello_kor.mp3"}
     cmd4: {cmd_name: sleep, cmd_arg: 1100}
     cmd5: {cmd_name: mp3,   cmd_arg: "/home/robotis/Music/thormang_mp3/i_am_thormang_kor.mp3"}

The action script is a list of cmd#, and scripts are executed in order of cmd#.
cmd# has two parameters. one is cmd_name, and the othrer is cmd_arg.
There are below four cmd_name in the action script.

ROS API

Subscribed Topics

/robotis/demo/action_index (std_msgs/Int32)
The action script number to play.

Parameters

/action_script_file_path(string, default : “thormang3_action_script_player/script/action_script.yaml”)
The location of action script file.

thormang3_foot_step_generator

The Node that can create a basic Step Data.
Based on the simple Parameter from Topic, the package creates StepData and transmit it to thormang3_walking_module.

Download & Build

Reference : OPC Installation

Run

Reference : How to operate walking module

ROS API

Subscribed Topics

/robotis/status (robotis_controller_msgs/Status)
Status message of THORMANG3

/robotis/thormang3_foot_step_generator/walking_command (thormang3_foot_step_generator/FootStepCommand)
The topic includes walking type and step length.

/robotis/thormang3_foot_step_generator/footsteps_2d (thormang3_foot_step_generator/Step2DArray)
Planar walking step data contains x, y, theta and moving_foot_flag

Services Called

/robotis/walking/get_reference_step_data (thormang3_walking_module_msgs/GetReferenceStepData)
The service obtains current location of THORMANG3 in the Global space from the Walking Module.

/robotis/walking/add_step_data (thormang3_walking_module_msgs/AddStepDataArray)
The service adds StepData created by the User.

/robotis/walking/set_balance_param (thormang3_walking_module_msgs/SetBalanceParam)
The service initiates walking.

/robotis/walking/is_running (thormang3_walking_module_msgs/IsRunning)
The service checks whether the robot is walking or not.

ROS Message Type

thormang3_offset_tuner_client

The GUI Node that can adjust offset of THORMANG3. It is used with the thormang3_offset_tuner_server.

Download & Build

Reference : OPC Installation

Run

$ rosrun thormang3_offset_tuner_client thormang3_offset_tuner_client

ROS API

Published Topics

/robotis/offset_tuner/joint_offset_data (thormang3_offset_tuner_msgs/JointOffsetData)
The topic transfers Joint offset

/robotis/offset_tuner/torque_enable (thormang3_offset_tuner_msgs/JointTorqueOnOffArray)
The topic executes Torque on/off command

/robotis/offset_tuner/command (std_msgs/String)
The topic transfers other commands(save, initial posture, etc).

Services

/robotis/offset_tuner/get_present_joint_offset_data (thormang3_offset_tuner_msgs/GetPresentJointOffsetData)
The service obtains saved joint offset

Parameters

~/ROBOTIS-THORMANG-MPC/thormang3_manager/config/offset.yaml
Saved offset value

thormang3_tuner_client

The GUI Node that can adjust gain and offset of THORMANG3.
It does not need to the server, it works with thormang3_tuning_module under the thormang3 manager.

Download & Build

Reference : OPC Installation

Run

$ rosrun thormang3_tuner_client thormang3_tuner_client

ROS API

Published Topics

/robotis/tuning_module/joint_offset_data (thormang3_tuning_module_msgs/JointOffsetData)
The topic transfers Joint offset

/robotis/tuning_module/joint_gain_data (thormang3_tuning_module_msgs/JointOffsetData)
The topic transfers Joint gain

/robotis/tuning_module/torque_enable (thormang3_tuning_module_msgs/JointTorqueOnOffArray)
The topic executes Torque on/off command

/robotis/tuning_module/command (std_msgs/String)
The topic transfers other commands(save, initial posture, etc).

/robotis/tuning_module/tuning_pose (std_msgs/String)
The topic transfers pose name to tune gain.

Subscribed Topics

/robotis/tuning_module/present_joints_data (thormang3_tuning_module_msgs/JointsOffsetPositionData)

/robotis/sensor/imu/imu (sensor_msgs/Imu)
It shows the orientation(roll, pitch) of the robot to the client.

/robotis/sensor/ft_right_foot/scaled (geometry_msgs/WrenchStamped)
The scaled force fo direction z is used to tune the offset considering the center of weight.

/robotis/sensor/ft_left_foot/scaled (geometry_msgs/WrenchStamped)
The scaled force fo direction z is used to tune the offset considering the center of weight.

Services

/robotis/tuning_module/get_present_joint_offset_data (thormang3_tuning_module_msgs/GetPresentJointOffsetData)
The service obtains saved joint offset

Parameters

/thormang3_tuner_client/config/tm3_joint_data.yaml
joint list for making UI

Common Packages

thormang3_description

Thormang3 URDF Model

thormang3_gazebo

Thormang3 Gazebo Simulation

Tools Packages

thormang3_offset_tuner_server

THORMANG3 Offset Tuner Node
Data related to the Offset can be Tuned, Loaded and Saved.
It is used with the thormang3_offset_tuner_client.

Download & Build

Reference : MPC Installation

Run

Execute the launch file.

$ roslaunch thormang3_offset_tuner_server thormang3_offset_tuner_server.launch

ROS API

Subscribed Topics

/robotis/base/send_tra (std_msgs/String)
The topic informs the start and end of trajectory following.

/robotis/offset_tuner/joint_offset_data (thormang3_offset_tuner_msgs/JointOffsetData)
The topic updates joint offset related parameters.

/robotis/offset_tuner/torque_enable (thormang3_offset_tuner_msgs/JointTorqueOnOffArray)
The topic transfers Torque enable/disable command for joints.

/robotis/offset_tuner/command (std_msgs/String)
The topic transfers command to the thormang3_offset_tuner_client.

Services

robotis/offset_tuner/get_present_joint_offset_data (thormang3_offset_tuner_msgs/GetPresentJointOffsetData)
The service obtains current offset data from the thormang3_offset_tuner_client.

thormang3_action_editor

THORMANG3 Action Editor Node
The action file can be edited by this action editor.
The action file will be used with thormang3_action_module.

Action File

The action file is in the “thormang3_action_module/data” folder. The action file is a file that contains THORMANG3’s poses and time data.
The data is written that the positions of dynamixels which converted from original resolution to 4,095 resolution. And the action file is binaries file you cannot view its contents directly. User can view its contents with thormang3_action_editor.
ROBOTIS currently supplies a default action file with the source code. They are located in “thormang3_action_module/data” directory.

The action file contains 256 pages. Each page can store up to 7 stages (or steps) of action data. In the default action file provided not all pages are used. User can add user’s own action by using of the empty pages.

Download & Build

Reference : MPC Installation

Run

Execute the launch file on the MPC.

$ roslaunch thormang3_action_editor thormang3_action_editor.launch

UI

It is strongly advised that when user tests user’s own newly-created or edited actions, there should be small incremental changes in position, speed/time, and pause values for the sake of THORMANG3’s stability.

The Contents of The Default Action File

The below table shows the contents of the default action file.

page number page title brief description of page number of pages
1 walki_init initial standing pose 1
2 hello greeting 1
3 thank_you Thank you 1
4 yes yes 1
5 no no 1
6 fighting fighting 1
7 clap clap 2
9 S_H_RE ready for shaking hands 1
10 S_H shaking hands 1
11 S_H_END move to initialpose fram ready pose for shaking hands 1
12 scanning looking around 1
13 ceremony ceremony 1

Basic Command of Action Editor

After typing “help”, the commend list will appear as shown below.

Example Action editing with thormang3_action_editor

  1. Run the thormang3_action_editor on MPC
  2. Find the page where the “walking_init page” is by typing “list”

  3. Exit the list and go to any blank page by typing “page [x]”(for example, page 15).

  4. And copy the page 1 to page [x].

  5. Go to “walking_init” pose by typing “play”
  6. Turn off the torque of ID 2, 4 and 8 by typing “off 2 4 8”

  7. After getting the desired pose turn torque on again by simple typing on. And insert the pose to step 1 by typing “i 1”

  8. Edit “Pause Time”, “Time” of STP1 and “Page Step” as shown below.

  9. Type “play” and check the THORMANG3’s action

THORMANG msgs Package

thormang3_action_module_msgs

The followings are Messages and Services used for the thormang3_action_module.

thormang3_feet_ft_module_msgs

Message used in the thormang3_feet_ft_module.

thormang3_manipulation_module_msgs

Messages and Services used in the thormang3_manipulation_module

thormang3_walking_module_msgs

Messages and Services used in the thormang3_walking_module.

thormang3_head_control_module_msgs

Messages used in the thormang3_head_control_module

thormang3_offset_tuner_msgs

The following are Messages and Service used for the thormang3_offset_tuner_server and the thormang3_offset_tuner_client.

thormang3_alarm_module_msgs

The following messages alert user to overloading of both legs.

thormang3_tuning_module_msgs

The following are Messages and Service used for the thormang3_tuning_module and the thormang3_tuner_client.