This work describes my contribution to manipulate the Cyton Gamma 300 from a web page using MoveIt and RWT.
- Host
www
folder in any HTTP server. - Check for the Host and ROS addresses, and set the correct values in
robot_gui.js
file - Launch
roslaunch cyton_gamma_300_moveit_config rwt_demo.launch
- From a web browser go to
<yourHostAddress>/www/cyton.html
Yet another repository that holds a collection of ROS packages to simulate and actuate the Cyton Gamma 300 7-DOF robotic arm. The simulation is done in Gazebo and the MoveIt! is used as a motion planning framework. The code has been tested with the kinetic distribution of ROS (as of mid March 2017).
-
cyton_gamma_300_controllers
: controllers for actuating gazebo model or the real robot using MoveIt framework; -
cyton_gamma_300_description
: xacro description of the URDF robot model; -
cyton_gamma_300_gazebo
: gazebo simulation of the robot; -
cyton_gamma_300_moveit
: configuration files of the setup assistant to enable MoveIt functionality.
The aforementioned cyton_gamma_300_*
packages enable
motion planning for the Cyton Gamma 300 arm.
These packages are not self-contained and the dependencies should
be met to successfully run the software.
First, one needs a full installation of ROS, otherwise
some other packages might be missing
(refer here for the full ROS
installation instructions).
Second, one needs to install MoveIt.
Third, for sensing one needs to install OpenCV
(refer here for
the installation instructions). Finally, these packages are
additionally required to be in your ROS workspace (or on your
$ROS_PACKAGE_PATH
):
-
dynamixel_motor
--cyton_gamma_300_controllers
depends on the package to actuate the robot motors; -
ros_controllers
-- are instantiated incyton_gamma_300_controllers
; -
ros_control
--ros_controllers
depend on this package; -
control_toolbox
--ros_controllers
depend on this package; -
realtime_tools
--ros_controllers
dependency; -
warehouse_ros
-- required if one wants to use the warehouse database server while using motion planning (included by default when runningmoveit setup_assistant
)
Fortunately, one can use available ROS tools to install missing dependencies:
rosdep install --from-paths WORKSPACE --ignore-src --rosdistro=ROSDISTRO
- In Gazebo simulation:
roslaunch cyton_gamma_300_controllers gazebo_moveit.launch
- On the real robot:
roslaunch cyton_gamma_300_controllers robot_moveit.launch
- Visualize the URDF model in RViz:
roslaunch cyton_gamma_300_description urdf_in_rviz.launch
- Spawn the URDF model in Gazebo:
roslaunch cyton_gamma_300_gazebo gazebo_world.launch
The model is subject to gravity forces and falls down from its original position.
- Test different types of ros_controllers in Gazebo simulation:
- E.g.
JointPositionController
fromeffort_controllers
:
roslaunch cyton_gamma_300_controllers gazebo_effort_controllers.launch
- Or another example of
JointPositionController
fromposition_controllers
:
roslaunch cyton_gamma_300_controllers gazebo_position_controllers.launch
JointTrajectoryController
fromposition_controllers
allows to control groups of joints:
roslaunch cyton_gamma_300_controllers gazebo_joint_trajectory_controllers.launch
roslaunch cyton_gamma_300_controllers gazebo_moveit.launch
- Run MoveIt on the actual robot:
- Make sure you are in the
dialout
group or you have read/write access to
/dev/ttyUSB0
(assuming that/dev/ttyUSB0
is your dynamixel bus address). The following launch file will start everything one needs to plan and execute the plan on the actual robot:
roslaunch cyton_gamma_300_controllers robot_moveit.launch
- Alternatively, it is possible to launch the same functionality separately (e.g. for debugging purposes):
First, we need to run a controller_manager.py
script from dynamixel
package that queries the stepper motors on the bus and initializes them.
We logically separate motors 0-6 for the arm (or the manipulator planning group)
and the stepper motor 7 for the gripper (the gripper planning group).
We start initialization with the manipulator planning group:
roslaunch cyton_gamma_300_controllers robot_manipulator_manager.launch
Second, we need to spawn controllers that would activate the manipulator joints (i.e. motors 0-6 on the bus):
roslaunch cyton_gamma_300_controllers robot_manipulator_controller_spawner.launch
Third, we need to repeat steps one and two for the gripper:
roslaunch cyton_gamma_300_controllers robot_gripper_manager.launch
roslaunch cyton_gamma_300_controllers robot_gripper_controller_spawner.launch
Finally, we bring up MoveIt:
roslaunch cyton_gamma_300_controllers robot_moveit_movegroup.launch
Andras Fekete pioneered in his work migrating Cyton Gamma 300 arm to open source software from manufacturer's proprietary one. I must confess that I was not able to run his code due to some errors, still he was a source of inspirations for the follow up projects. Tyler Slabinski created beautiful meshes of the Cyton Gamma 300 arm and wrote the URDF file that others extensively use. AssistiveRoboticsUNH and Andreas Lydakis provided here and here respectively the repositories for running the actual robot using MoveIt, but did not include Gazebo support for simulations of Cyton Gamma 300.
As already quite a lot of related sources exist on the github, the goal is (i) provide a functional step-by-step tutorial, (ii) to document the working setup for the current version of ROS.
Konstantin Selyunin, for suggestions/questions/comments please contact: selyunin [dot] k [dot] v [at] gmail [dot] com