giraffe

A low-cost robotic manipulator

View on GitHub

giraffe: a low-cost robotic manipulator 🦒

                                   __             ___  ___
                            .-----|__.----.---.-.'  _.'  _.-----.
                            |  _  |  |   _|  _  |   _|   _|  -__|
                            |___  |__|__| |___._|__| |__| |_____|
                            |_____|

                               Why should fun be out of reach?

A Koch v1.1 inspired even more cost-effective, ROS2-compatible, Open-Source robotic manipulator designed to lower the barriers of entry for Embodied AI and whatever else your robotic dreams may be.

To achieve these outcomes, we implemented the following significant changes:

Servo Selection

We redesigned the arm around cost-efficient Waveshare servos replacing Dynamixel servos, effectively doubling the torque while reducing costs.

Design Enhancements


Assembly Instructions

Image of Giraffe Rendered

Sourcing Parts

Order the off the shelf parts for the arm using the links below.

Part Amount Unit Cost (India) Total Cost (India) Buying Link (India)
WaveShare ST3215 30Kg 6 ₹1,949.00 ₹11,694.00 Robu.in
Waveshare Serial Bus Servo Driver Board 1 ₹499.00 ₹499.00 Robu.in
12V 20A Power Supply 1 ₹895.00 ₹895.00 Sharvi Electronics
Barrel Jack 1 ₹48.00 ₹48.00 Robu.in
Power cord 1 ₹95.00 ₹95.00 Sharvi Electronics
USB-C cable 1 ₹60.85 ₹60.85 Sharvi Electronics
Table clamp 1 ₹349.00 ₹349.00 Amazon.in
Total     ₹14,490  

Printing The Parts

A variety of 3D printers can be used to print the necessary parts for the arm. Follow these steps for optimal printing results.

1. Select A Printer

When choosing a printer, keep the following recommended specifications in mind. While other printers may work, these spececifications are a good starting point:

2. Prepare The Printer

3. Print The Parts

Print one of each part found in CAD/STL

List of Parts:

  • base_retainer
  • base
  • driver_mount
  • elbow
  • gripper
  • shoulder_lift
  • shoulder_pan
  • wrist_1
  • wrist_2

4. Take Down

Assembling The Parts

Construct the arms using this Assembly Video (Note: Follow the assembly instructions provided for Follower Arm starting at 08:20 of the video). After you assemble the arms from the video, power the arm using the 12V power supply. In addition, plug the arm into your computer using a USB-C cable.

The Arm after assembly should look like this:

Image of Giraffe


Hardware Setup Instructions

NOTE: Configurator and the rest of the high-level software stack is presently only compatible with Python.

Clone The giraffe Repository

git clone https://github.com/carpit680/giraffe.git
cd giraffe

Install Dependencies

pip install -r requirements.txt
pip install .

Setup Permissions

sudo usermod -a -G dialout $USER
sudo newgrp dialout

Setup Servo IDs

Use the configurator script in scripts/ directory

python3 scripts/st_configurator.py

Optional ROS2 Docker Development Environment Setup

Follow the instructions given here to set up a ROS2 Docker development environment: ros2_docker_env

ROS2 Worksapce Setup

  1. Install ROS2 Humble following these installation instructions.
  2. Install Gazebo Ignition Fortress(LTS) following these instructions.
  3. Install Moveit 2

    # Install MoveIt 2 for ROS 2 Humble
    sudo apt update
    sudo apt install -y ros-humble-moveit
    
  4. Install other dependencies

    sudo apt install -y ros-humble-ros2-control ros-humble-ros2-controllers
    sudo apt install -y python3-colcon-common-extensions python3-rosdep
    
  5. Set Up giraffe_ws

    # Clone giraffe repository if you have not done so already
    
    # Update dependencies using rosdep
    cd <path-to-giraffe-repo>/giraffe_ws
    sudo rosdep init  # Only if not already initialized
    rosdep update
    rosdep install --from-paths src --ignore-src -r -y
    
  6. Build and source the workspace

    cd <path-to-giraffe-repo>/giraffe_ws
    colcon build --symlink-install
    
    source install/local_setup.zsh
    # OR
    source install/local_setup.bash
    

ROS2 Workspace Description

giraffe_moveit_sim.webm

giraffe_description

This package contains URDF for giraffe robotic manipulator along with ros2 control xacro, ros2 controller config files, and the launch files for the entire workspace.

giraffe_moveit_config

The giraffe_moveit_config package provides the MoveIt! 2 configuration for the 5-DoF robotic arm named “Giraffe,” designed for use with ROS 2 Humble. It includes essential files for motion planning and execution, such as:

This package is utilized by the giraffe_description package’s launch file to enable simulation and motion planning for the Giraffe arm in Gazebo and MoveIt! 2 environments.

giraffe_control

The giraffe_control package provides hardware-level control for the 5-DoF Giraffe robotic arm. It includes a ROS 2 node, giraffe_driver, and a corresponding launch file to facilitate communication between ROS 2 and the physical hardware.

Features

  1. Giraffe Servo Driver (giraffe_driver):

    • Implements direct communication with the Giraffe arm’s servos using the Feetech motor bus.
    • Processes incoming command messages to set motor positions.
    • Read motor position feedback from the servos to publish feedback.
    • Supports homing offsets, acceleration settings, and position conversion from radians to motor steps.
    • Subscribes to /command for joint commands and publishes feedback to /feedback topic.
    • Interfaces with six motors:
      • base_link_shoulder_pan_joint
      • shoulder_pan_shoulder_lift_joint
      • shoulder_lift_elbow_joint
      • elbow_wrist_1_joint
      • wrist_1_wrist_2_joint
      • wrist_2_gripper_joint
  2. Launch File:

    • Starts the giraffe_driver node.
    • Configures parameters for easy integration with other ROS 2 packages.

Usage:

The giraffe_control package is used by the giraffe_description package’s launch file to provide hardware control during simulations and real-world operation. It ensures seamless integration of the Giraffe robotic arm into ROS 2 for both motion execution and feedback.

giraffe_hardware

The giraffe_hardware package provides a ros2_control hardware interface for the Giraffe 5-DoF robotic arm plus a gripper joint. This interface lets you control and monitor the arm through standard ROS 2 controllers and topics, simplifying integration with motion planning frameworks like MoveIt.

Features:

  1. Giraffe Hardware Interface (GiraffeInterface):
    • Implements a hardware_interface::SystemInterface plugin.
    • Subscribes to feedback (sensor_msgs/msg/JointState) for joint position updates.
    • Publishes to command (sensor_msgs/msg/JointState) to send joint commands.
    • Handles all six joints of the arm.

Usage: