<<PackageHeader(open_manipulator_with_tb3_tools)>>
<<TOC(4)>>

''ROS Software Maintainer: [[ROBOTIS|ROBOTIS]]''

== ROBOTIS e-Manual ==
 * [[http://emanual.robotis.com/docs/en/platform/turtlebot3/manipulation/#manipulation|ROBOTIS e-Manual for OpenManipulator with TB3]]

== ROS API ==
{{{
#!clearsilver CS/NodeAPI
node.1 {
name= pick

sub{
  0{
   name= open_manipulator_with_tb3/arm_state
   type= open_manipulator_msgs/State
   desc= Subscribe state of manipulator
  }
  1{
   name= open_manipulator_with_tb3/gripper_state
   type= open_manipulator_msgs/State
   desc= Subscribe state of gripper
  }
  2{
   name= ar_pose_marker
   type= ar_track_alvar_msgs/AlvarMarkers
   desc= Subscribe marker pose
  }
}

srv{
  0{
    name= open_manipulator_with_tb3/set_joint_position
    type= open_manipulator_msgs/SetJointPosition
    desc= Set present joint position
  }
  1{
    name= open_manipulator_with_tb3/set_kinematics_pose
    type= open_manipulator_msgs/SetKinematicsPose
    desc= Set present kinematics pose of manipulator
  }
  2{
    name= open_manipulator_with_tb3/set_gripper_position
    type= open_manipulator_msgs/SetJointPosition
    desc= Set present gripper posotion
  }
  3{
    name= open_manipulator_with_tb3/pick
    type= open_manipulator_with_tb3_msgs/Pick
    desc= Commands starts pick up task
  }
  4{
    name= open_manipulator_with_tb3/result_of_pick_up
    type= open_manipulator_with_tb3_msgs/Pick
    desc= Show results of pick up task
  }
}

param{
  0{
    name= /use_robot_name
    type= string
    default= open_manipulator_with_tb3
    desc= Set robot name
  }
  1{
    name= /marker_id
    type= int
    default= 8
    desc= Set marker id
  }
  2{
    name= /offset_for_object_height
    type= float
    default= 0.150
    desc= Set offset for object height
  }
  3{
    name= /dist_ar_marker_to_object
    type= float
    default= 0.049
    desc= Set distance between ar marker to object
  }
}

}

node.2 {
name= place

sub{
  0{
   name= open_manipulator_with_tb3/arm_state
   type= open_manipulator_msgs/State
   desc= Subscribe state of manipulator
  }
  1{
   name= open_manipulator_with_tb3/gripper_state
   type= open_manipulator_msgs/State
   desc= Subscribe state of gripper
  }
  2{
   name= ar_pose_marker
   type= ar_track_alvar_msgs/AlvarMarkers
   desc= Subscribe marker pose
  }
}

srv{
  0{
    name= open_manipulator_with_tb3/set_joint_position
    type= open_manipulator_msgs/SetJointPosition
    desc= Set present joint position
  }
  1{
    name= open_manipulator_with_tb3/set_kinematics_pose
    type= open_manipulator_msgs/SetKinematicsPose
    desc= Set present kinematics pose of manipulator
  }
  2{
    name= open_manipulator_with_tb3/set_gripper_position
    type= open_manipulator_msgs/SetJointPosition
    desc= Set present gripper position
  }
  3{
    name= open_manipulator_with_tb3/place
    type= open_manipulator_with_tb3_msgs/Place
    desc= Set task start commands
  }
  4{
    name= open_manipulator_with_tb3/result_of_place
    type= open_manipulator_with_tb3_msgs/Place
    desc= Show results of place
  }
}

param{
  0{
    name= /use_robot_name
    type= string
    default= open_manipulator_with_tb3
    desc= Set robot name
  }
  1{
    name= /marker_id
    type= int
    default= 8
    desc= Set marker id
  }
  2{
    name= /offset_for_object_height
    type= float
    default= 0.200
    desc= Set offset for object height
  }
  3{
    name= /dist_ar_marker_to_object
    type= float
    default= 0.070
    desc= Set distance between ar marker to object
  }
}

}

node.3 {
name= controller_for_pick_and_place

pub{
  0{
   name= move_base_simple/goal
   type= geometry_msgs/PoseStamped
   desc= Publish goal pose 
  }
  0{
   name= /cmd_vel
   type= geometry_msgs/Twist
   desc= Publish velocity
  }
}

sub{
  0{
   name= open_manipulator/node_control_trigger
   type= std_msgs/String
   desc= Subscribe commands to start controller node
  }
  1{
   name= move_base/result
   type= move_base_msgs/MoveBaseActionResult
   desc= Subscribe result of move base
  }
  2{
   name= ar_pose_marker
   type= ar_track_alvar_msgs/AlvarMarkers
   desc= Subscribe marker pose
  }
  3{
   name= odom
   type= nav_msgs/Odometry
   desc= Subscribe odometry data
  }
}

srv{
  0{
    name= open_manipulator_with_tb3/result_of_pick_up
    type= open_manipulator_with_tb3_msgs/Pick
    desc= Show results of pick up task
  }
  1{
    name= open_manipulator_with_tb3/result_of_place
    type= open_manipulator_with_tb3_msgs/Place
    desc= Show results of place
  }
  2{
    name= open_manipulator_with_tb3/pick
    type= open_manipulator_with_tb3_msgs/Pick
    desc= Set task start commands
  }
  3{
    name= open_manipulator_with_tb3/place
    type= open_manipulator_with_tb3_msgs/Place
    desc= Set task start commands
  }
}

param{
  0{
    name= /use_robot_name
    type= string
    default= open_manipulator_with_tb3
    desc= Set robot name
  }
  1{
    name= /marker_id
    type= int
    default= 8
    desc= Set marker id
  }
  2{
    name= /distance_btw_base_to_ar_marker
    type= float
    default= 0.170
    desc= Set distance between base to ar marker
  }
  3{
    name= /rotate_after_pick_up
    type= float
    default= 175.0
    desc= Set degree for rotating after pick up
  }
  4{
    name= /position_x_in_front_up_an_object
    type= float
    default= -1.393
    desc= Set goal position(x)
  }
  5{
    name= /position_y_in_front_up_an_object
    type= float
    default= 3.545
    desc= Set goal position(y)
  }
  6{
    name= /position_z_in_front_up_an_object
    type= float
    default= 0.0
    desc= Set goal position(z)
  }
  7{
    name= /orientation_w_in_front_up_an_object
    type= float
    default= 0.705
    desc= Set goal orientation(w)
  }
  8{
    name= /orientation_x_in_front_up_an_object
    type= float
    default= 0.0
    desc= Set goal orientation(x)
  }
  9{
    name= /orientation_y_in_front_up_an_object
    type= float
    default= 0.0
    desc= Set goal orientation(y)
  }
  10{
    name= /orientation_z_in_front_up_an_object
    type= float
    default= 0.709
    desc= Set goal orientation(z)
  }
  11{
    name= /position_x_in_front_up_a_box
    type= float
    default= 0.760
    desc= Set goal position(x)
  }
  12{
    name= /position_y_in_front_up_a_box
    type= float
    default= 3.670
    desc= Set goal position(y)
  }
  13{
    name= /position_z_in_front_up_a_box
    type= float
    default= 0.0
    desc= Set goal position(z)
  }
  14{
    name= /orientation_w_in_front_up_a_box
    type= float
    default= 0.705
    desc= Set goal orientation(w)
  }
  15{
    name= /orientation_x_in_front_up_a_box
    type= float
    default= 0.0
    desc= Set goal orientation(x)
  }
  16{
    name= /orientation_y_in_front_up_a_box
    type= float
    default= 0.0
    desc= Set goal orientation(y)
  }
  17{
    name= /orientation_z_in_front_up_a_box
    type= float
    default= 0.709
    desc= Set goal orientation(z)
  }
}

}}}