Skip to content
ROS metapackage containing the core software needed for running a Blue robot arm
C++ Python CMake Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
blue_bringup Merge pull request #87 from berkeleyopenarms/offset_calibration_refactor Sep 8, 2019
blue_descriptions Merge pull request #77 from berkeleyopenarms/v2_merge Jul 18, 2019
blue_hardware_drivers Control mode recovery following board timeout Sep 24, 2019
.gitignore posture control working on old urdf Dec 3, 2017
LICENSE Update Jun 27, 2019

Blue Core Software

This repository provides all of the mid-level software needed to run a Blue robot arm with ROS.

The stack is set up as a ROS metapackage, which organizes our codebase into the following packages:

  • blue_bringup
    • Launch files, configurations, and scripts used to start up the robot
  • blue_controller_manager
    • Higher level control code, built off the ros_control framework
    • Provides infrastructure for dynamically starting and stopping different types of controllers: end effector pose control, joint position control, velocity control, etc.
  • blue_hardware_interface
    • Abstraction barrier between joint messages and actuator messages (see ros_control)
  • blue_controllers
    • Source code for our custom controller plugins
  • blue_hardware_drivers
    • Lower-level code for communicating with hardware (ie motor drivers) and providing a ROS interface to them
  • blue_descriptions
    • Physical descriptions of our robot, in the form of URDF files and associated 3D models
  • blue_msgs
    • Message types and service descriptions

How do I set up the computer to run my arm?

  • Install Ubuntu 16.0.4 or 18.0.4

  • Install ROS Kinetic (16.0.4) or Melodic (18.0.4)

    • For step 1.4, use Desktop-Full if unsure
  • Create a workspace:

    mkdir -p ~/blue_ws/src && cd "$_"
  • Clone the code:

    git clone
  • Install dependencies:

    cd ~/blue_ws
    rosdep install --from-paths src --ignore-src -r -y
  • Build:

    catkin_make install
  • Source:

    echo "source ~/blue_ws/devel/setup.bash" >> ~/.bashrc
    source ~/blue_ws/devel/setup.bash
  • Set up user permissions (for serial port access -- you'll need to log out and back in for this take effect):

    sudo addgroup $USER dialout
  • Set up a configuration file (see the blue_configs repo for examples)

  • Proceed to setup the arm with power supply and USB adapter ("Electrical Setup" in Quick Start Guide)

The robot is now turned on, connected via USB, and in the proper startup position -- how do I run the control stack?

After running the above setup steps, the following will boot the arm and put it into gravity compensation mode:

  • For a right arm (default setup):
    roslaunch blue_bringup right.launch param_file:=blue_params.yaml
  • For a left arm (yaml file will need to be namespaced relative to left_arm instead of right_arm):
    roslaunch blue_bringup left.launch param_file:=blue_params.yaml

How do I calibrate the gripper?

At startup, the software stack assumes the gripper is open. If Blue was started with the gripper open, then no additional steps are needed!

However, if the gripper is started in any other position, then an optional gripper calibration service should be called before using the gripper. This service will automatically determine the gripper position by apply a closing torque and detecting when the gripper has fully closed.

From the command line:

  • rosservice call /<left or right>_arm/calibrate_gripper "{}"
  • Gripper controllers should not be started when this service is called.
  • This functionality is also supported by blue_interface

Experimental two arm

  • For the experimental two arm setup, the .yaml file should contain parameters for both the left and right arms:
          serial_port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A506MP4W-if00-port0
          motor_ids: [40, 76, 65, 70, 77, 20, 21, 52]
          simple_startup_angles: [-0.785398, -2.19, -1.570796, 0.0, 1.570796, -0.23, 0.0, 0.0]
          serial_port: /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI057K87-if00-port0
          motor_ids: [30, 62, 69, 16, 33, 51, 50, 55]
          simple_startup_angles: [-0.785398, -2.19, -1.570796, 0.0, 1.570796, -0.23, 0.0, 0.0]
  • To run:
    roslaunch blue_bringup full.launch param_file:=blue_params.yaml


roslaunch blue_bringup rviz.launch
You can’t perform that action at this time.