Edit on GitHub

ROBOTIS MANIPULATOR ROS

ROBOTIS MANIPULATOR Common

robotis_manipulator_bringup

launch : launch file to bring up the robot in Rviz

robotis_manipulator_description

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

config : yaml files of gazebo simulation controller
launch : launch files to execute gazebo simulation
worlds : world file for gazebo simulation

robotis_manipulator_gui

GUI program using qt creater

ROBOTIS MANIPULATOR Module

manipulator_base_module

Overview

manipulator base module

ROS API

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_base_module_msgs

Overview

manipulator_base_module’s Message & Service

ROS Message Type

ROS Service Type

manipulator_kinematics_dynamcis

Overview

manipulator_kinematics_dynamics provides joint & link information and basic robotics function.

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

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

ROS API

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.

How to Execute ROS Package

How to run ROBOTIS MANIPULATOR

Overview

How to operate GUI program

Overview

How to operate

  1. Click set mode
  2. Click go to initial pose
Joint Space Control
  1. Change the values in joint space control tab
  2. Click send button`
Task Space Control
  1. Change the values in task space control tab
  2. Click send button

How to execute Gazebo

Overview

How to execute Gazebo simulation

Additional installation for Gazebo

[[Gazebo installation|Gazebo installation]]

How to execute Gazebo

manipulator_manager for Gazebo


* manipulator_h_manager execution

$ roslaunch manipulator_h_manager manipulator_h_manager.launch ```