ROS Reference
ROS Package Description
manipulator_h_base_module
This package describes basic function to control ROBOTIS MANIPULATOR-H. This module is based on position control.
manipulator_h_base_module_msgs
This package includes ROS messages and services for manipulator_h_base_module_msgs.
manipulator_h_bringup
This package includes launch file to describe robotis in Rviz.
launch
: launch file to bring up the robot in Rviz
robotis_manipulator_description
This package includes URDF model of ROBOTIS MANIPULATOR-H.
Additionally, we provide full kinematics and dynamics information of each link.
doc
: document for robotis manipulator joint & link information
launch
: launch file to confirm the urdf model
meshes
: STL files of each link
urdf
: urdf files to create robot model
robotis_manipulator_gazebo
This package provides GAZEBO simulation environment for ROBOTIS MANIPULATOR-H.
We provides two controllers such as position and effort controllers.
config
: yaml files of gazebo simulation controller
launch
: launch files to execute gazebo simulation
worlds
: world file for gazebo simulation
robotis_manipulator_gui
This package provides simple GUI to control ROBOTIS MANIPULATOR-H.
This GUI is connected to manipulator_h_base_module.
GUI program using qt creater
robotis_manipulator_kinematics_dynamics
This packages provides library of kinematics and dynamics information for ROBOTIS MANIPULATOR-H. Additionally, there are some function to calculate kinematics and dynamics.
robotis_manipulator_manager
This package describes robot manager to execute manipulator_h_base_module.
ROS Message Type
ROS Message Type
- JointPose.msg
name
: target joint name (std_msgs/String)value
: target joint value (std_msgs/Float64)
- KinematicsPose.msg
name
: target kinematics group (std_msgs/String)pose
: target Pose (geometry_msgs/Pose)
ROS Service Type
- GetJointPose.srv
- Request :
joint_name
: joint name (std_msgs/String) - Response :
joint_value
: joint value (std_msgs/Float64)
- Request :
- GetKinematicsPose.srv
- Request :
group_name
: kinematics group (std_msgs/String) - Response :
group_pose
: kinematics pose (geometry_msgs/Pose)
- Request :
ROS API
manipulator_base_module
Subscribed Topics
/robotis/base/ini_pose_msg
(std_msgs/String)
Message for initial pose
/robotis/base/set_mode_msg
(std_msgs/String)
Message for set mode
/robotis/base/joint_pose_msg
(manipulator_manipulation_module_msgs/JointPose)
Message for joint space control
/robotis/base/kinematics_pose_msg
(manipulator_manipulation_module_msgs/KinematicsPose)
Message for task space control
Published Topics
/robotis/status
(robotis_controller_msgs/StatusMsg)
Message for current state
Services
/robotis/base/get_joint_pose
(manipulator_manipulation_module_msgs/GetJointPose)
Service to read current joint value
/robotis/base/get_kinematics_pose
(manipulator_manipulation_module_msgs/GetKinematicsPose)
Service to read current end effector’s pose
manipulator_manager
Overview
manipulator_manager
is a package to apply ROBOTIS Framework to ROBOTIS Manipulator.
If you want to create new manager, please refer the link as below.
Ref. : Creating new robot manager
Parameters
launch parameters
gazebo
(bool, default: false)
Select using simulation (gazebo) mode or real robot mode.
gazebo_robot_name
(string, default: “”)
robot name for joint_states topic name using gazebo mode.
ex) If the gazebo_robot_name
is robotis_manipulator
, subscribing topic is
/robotis_manipulator/joint_states
.
offset_file_path
(string, default: “”)
The file path that includes joint offset information and initial pose of tuning offset.
robot_file_path
(string, default: “”)
The file .robot
‘s path that includes robot information.
manipulator_kinematics_dynamcis
Getting started
To use this library, it is necessary to set the CMakeList.txt
and package.xml
of each module
In CMakeList.txt
,
find_package( manipulator_kinematics_dynamics )
target_link_libraries( manipulator_kinematics_dynamics )
In package.xml
,
<build_depend>manipulator_kinematics_dynamics</build_depend>
Functions
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 orienataion
transformation
: Link transformation matrix
ManipulatorKinematicsDynamics.cpp
ManipulatorKinematicsDynamics(TREE_SELECT tree)
- description : ROBOTIS MANIPULATOR joint & link information
std::vector<int> findRoute( int to )
- description : find kinematics tree
- arguments : start joint id
- return value : vector ( n x 1 )
std::vector<int> findRoute( int from , int to )
- description : find kinematics tree
- arguments : start joint id and end joint id
- return value : vector ( n x 1 )
double TotalMass( int joint_ID )
- description : calculate total mass
- arguments : start joint id
- return value : total mass
Eigen::MatrixXd CalcMC( int joint_ID )
Eigen::MatrixXd CalcCOM( Eigen::MatrixXd MC )
- description : calculate center of mass
- arguments : start joint id
- return value : 3 x 1 matrix
void ForwardKinematics( int joint_ID )
- description : calculate forward kinematics
- arguments : start joint id
Eigen::MatrixXd CalcJacobian( std::vector<int> idx )
- description : calculate forward kinematics
- arguments : vector ( n x 1 )
- return value : 6 x n matrix
bool InverseKinematics
( int to,
Eigen::MatrixXd tar_position, Eigen::MatrixXd tar_orientation,
int max_iter, double ik_err )
- description : calculate inverse kinematics
- arguments : end joint id, target position, target orientation, max iteration, calculation error
- return value : true or false
bool InverseKinematics
( int from, int to,
Eigen::MatrixXd tar_position, Eigen::MatrixXd tar_orientation,
int max_iter, double ik_err )
- description : calculate inverse kinematics
- arguments : start joint id, end joint id, target position, target orientation, max iteration, calculation error
- return value : true or false