Home

Awesome

AR3 Core Software

This repository provides the software for control of the AR3 arm with ros_control and MoveIt. I hope to provide fellow robotic arm enthusiasts with a starting point to explore using ROS for controlling the arm. The baseline implementation is designed to accomodate the original hardware and firmware, including the message structures for communication. Moving forward, I will do my best to continue to keep it accessible. I plan to explore some interesting concepts that I have in mind for on-arm vision, grippers and human-robot interaction and I will share my projects here if possible.

You may also wish to check out some hardware modifications that I've made for joint encoders at ar3_hardware_mods.

Overview

Installation

Actively developed and tested on ROS Melodic on Windows 10 with limited testing on Ubuntu 18.04.

Windows


Ubuntu

Setup

Usage

There are two modules that you will always need to run:

  1. Arm module - this can be for either a real-world or simulated arm

    • For controlling the real-world arm, you will need to run the ar3_hardware_interface module
    • For the simulated arm, you will need to run the ar3_gazebo module
    • Either of the modules will load the necessary hardware descriptions for MoveIt
  2. MoveIt module - the ar3_moveit_config module provides the MoveIt interface and RViz GUI, and the ar3_control module provides the MoveIt user interface for programmatically setting goals

The various use cases of the modules and instructions to run them are described below:


MoveIt Demo in RViz

If you are unfamiliar with MoveIt, it is recommended to start with this to explore planning with MoveIt in RViz. This contains neither a real-world nor a simulated arm but just a model loaded within RViz for visualisation.


Control real-world arm with MoveIt in RViz

You can now plan in RViz and control the real-world arm. Joint commands and joint states will be updated through the hardware interface.


Control simulated arm in Gazebo with MoveIt in RViz

You can now plan in RViz and control the simulated arm.


Control arm with Move Group Interface

It is recommended to run this demo with the simulated arm first to make sure that the programmed goals are safe for your environment (and your arm). Needless to say, the same applies when programming your own tasks.

This is a demo modified from the official MoveIt tutorials. As opposed to manually setting goals through RViz, the move group interface allows us to programmatically plan and execute movements, and provides more functionality such as specifying path constraints and planning Cartesian movements. This also enables much more complex tasks, planning around obstacles etc.