PhantomX Pincher

In this tutorial, we will show you how to configure and remotely control PhantomX Pincher Robot connected to the Rover.

In this tutorial, we will show you how to configure and remotely control PhantomX Pincher Robot connected to the Rover.

source: trossenrobotics.com

Prerequisites

Before you begin, make sure you have internet connection on your Rover.

Also, you need to have ROS installed on your computer.

And, of course, assembled Pincher Arm together with ArbotiX-M Robocontroller connected to your Rover.

Set servo IDs

To properly communicate with the Dynamixel servos, you will need to set the servo IDs like in the picture below:

source: trossenrobotics.com

To do this, you can follow our guide for the Arbotix controller here:

In there, you will also find how to configure and use the arbotix ROS driver.

Install the ROS driver package

The turtlebot_arm packages contain very useful utilities for PhantomX Pincher arm such as:

  • configuration for the arbotix driver

  • URDF model of the arm

  • Moveit! configuration package

  • IKFast Kinematics solver plugin

  • MoveIt! pick and place demo

To use the mentioned features, you need to build the packages and run the driver on your Rover first.

Start by logging into your Rover's console:

and creating an empty catkin workspace, if you don't have one yet:

mkdir -p ~/ros_ws/src && cd ~/ros_ws
catkin init
catkin config --extend /opt/ros/kinetic

Clone the packages into the source space:

cd ~/ros_ws/src
git clone https://github.com/corb555/arbotix_ros.git
git clone https://github.com/turtlebot/turtlebot_arm.git

To fully support the PhantomX Pincher arm, we clone the unofficial 0.11.0 release of the arbotix driver, which adds support for prismatic joints.

Install dependencies:

cd ~/ros_ws
rosdep update
rosdep install --from-paths src -yi

Build the workspace:

catkin build

Source the result space:

source ~/ros_ws/devel/setup.bash

To use the packages with PhantomX Pincher arm, set the TURTLEBOT_ARM1environment variable to pincher.

export TURTLEBOT_ARM1=pincher

Add this line to ~/.bashrc if you don't want to run it on every terminal session you open:

echo "export TURTLEBOT_ARM1=pincher" >> ~/.bashrc

Now, you can use roslaunch to run the bringup launch file:

roslaunch turtlebot_arm_bringup arm.launch

This should run the Arbotix driver, robot_state_publisher and set therobot_description parameter to the URDF model of the arm.

You should then see new topics to which you can send position commands:

/arm_shoulder_pan_joint/command
/arm_shoulder_lift_joint/command
/arm_elbow_flex_joint/command
/arm_wrist_flex_joint/command
/gripper_joint/command

as well as services for setting speed and relaxing joints. You can learn more about them in the ArbotiX-M Robocontroller tutorial.

The driver will also provide controllers for FollowJointTrajectory and GripperCommand actions (see the actionlib wiki for more information).

Visualize and control the arm with MoveIt

You will need to have ROS installed on your computer and properly configured to communicate with the nodes running on your Rover. To learn how to do this, you an follow Connecting other computer to ROS network section of ROS Development tutorial:

To view robot arm model with actual position:

  • Open rviz

  • For Fixed Frame select arm_base_link

  • Click Add in Displays panel

  • Select RobotModel and click Ok

To test Motion Planning with MoveIt! :

  • Run turtlebot_arm_moveit launch file:

    roslaunch turtlebot_arm_moveit_config turtlebot_arm_moveit.launch sim:=false
  • Click on Planning tab in Motion Planning display

  • Move interactive marker to intended position

  • Click on Plan to see Motion visualization and then Execute or just click on Plan and Execute

  • Run pick and place demo (in another terminal session)

    rosrun turtlebot_arm_moveit_demos pick_and_place.py