The Desktop Robot Arm (better name TBD) is the complete package of a ROS2-based robot controller and the Moveo, a small-medium-sized fully 3D printable Open source 6 axis robotic arm.
It is functionally and aesthetically similar to other amazing robot arms like the KUKA KG Agilus or the Fanuc LR Mate robotic arms in the robotics industry but is aimed for personal use, research, education and anyone interested in making their own robotic arm, at an affordable price!
The main "selling points" of this arm that separate it from other existing DIY arms are:
- Raspberry Pi 4 Model B - main processing unit for motion planning and listener routines
- Arduino Mega microcontroller to interface with the robot systems
- Runs on ROS2 (with Moveit2 for motion planning)
- All 3D printable components (aside from nuts & bolts)
- Less that $1,000 with the B.O.M
- Capacity to integrate more features
This Github repository contains Installation and Quick Start instructions for the Desktop Robot Arm project running ROS2 Humble off a Raspberry Pi 4, and contains folders for scripts, libraries, examples, and readme files. If you want to make the arm yourself, start with Hardware.
- Hardware
- Raspberry PI 4 Installation
- Arduino Setup
- Dance Demo
- XBox Teleop
- Simulated Model
- Voice Control - Coming Soon!
- Home Assistant Integration - Coming Soon!
- HTC Vive Integration - coming Soon!
-
Building the arm
-
The full list of parts needed to assemble the arm can be found in the B.O.M.
-
Instructables has a greate step-by-step guide on 3D printing and assembling the arm pieces.
-
-
Electrical wiring
- A wiring diagram for the RAMPS 1.4 shield and Arduino Mega can be found in the Electrical folder.
- A reference for the RAMPS 1.4 shield can be found on their website which shows the pin assignments. Please be sure to refer only to the 1.4 version of the shield.
These instructions were tested on Ubuntu 22.04.1 LTS running on a Raspberry Pi 4 64-bit 4Gb. If starting with a brand new Raspi and a blank microSD card, start with step 1 if you need to set up hardware.
-
Download the following software packages for flashing and writing to a new microSD card
-
Setting up Raspberry Pi 4
- Follow the Imager instructions on writing the Ubuntu server image on Raspi 4. Please select Ubuntu 22.04 LTS. DO NOT install Ubuntu 22.10 LTS as the ROS2 humble debian packages aren't supported yet.
-
Install packages
-
Clone the Desktop Arm Github repository onto the specific
ros2_ws
folder which we createmkdir -p ~/ros2_ws/src cd ~/ros2_ws/src git clone https://github.com/Jshulgach/Desktop-Arm.git
-
Run the
install.sh
bash script, which also includes installation steps for ROS2 Humble, Moveit2, SSH, and other packages.cd Desktop-Arm chmod +x install.sh ./install.sh
-
-
DDNS Setup (Optional)
- To allow access and remote control over the internet, we need to set up a Dynamic DNS. I've used the service no-ip to create a free account and host a domain for the Raspberry Pi. First create an account. More detailed instructions on setup are available on their support page
- Download and install the no-ip software. You will be prompted to login with your No-IP account username and password. After logging into the DUC answer the questions to proceed. When asked how often you want the update to happen you can select the default number 30 (the interval is listed in minutes).
mkdir ~/noip cd ~/noip wget https://www.noip.com/client/linux/noip-duc-linux.tar.gz tar vzxf noip-duc-linux.tar.gz cd noip-2.1.9-1 sudo make sudo make install
- Launch the client in the background and enable startup on boot
sudo /usr/local/bin/noip2 -C systemctl enable noip2.service
An Arduino Mega microcontroller is used to fit with the RAMPS 1.4 Shield. Since the shield was designed to control a 3D printer or CNC machine with various stepper motor controllers and servos (along with limit switches and sensor readings), it was a great existing product to utilize. The primary microcontroller firmware needs to be uploaded onto the Arduino Mega, but it is RECOMMENDED to flash some of the test scripts first to make sure the arm works, like the dancing demo!
- Add yourself to the dialout user group to enable usb serial communication. Replace USER with your username. You will need to log out and log in again for this change to take effect.
sudo groupadd dialout sudo gpasswd -a USER dialout sudo usermod -a -G dialout USER sudo chmod a+rw /dev/ttyACM0
- Once you're satisfied with testing, flash the 'desktop_arm_serial_control.ino' firmware (check for latest version) onto the microcontroller. I used the Arduino IDE since it makes it easy to directly test and flash code.
Flash the 'desktop-arm-dancing-demo.ino' script onto the Arduino and enable power to the arm. It should slowly run through random positions with the joints and verify that the system works.
There are 2 versions with the Teleop control demo:
-
For manual joint control with an xbox controller, run the local teleop program by plugging in an xbox controller to the Raspberry Pi, then in a terminal run the launch command:
ros2 launch desktop_arm teleop.launch.py
-
For remote control over the internet, the robot will run the same teleop program but with additional parameters:
- Run the teleop program and start the remote control server
ros2 launch desktop_arm teleop.launch.py start_server:=true manual:=false
- On the client computer, connect the xbox controller and run the 'client-controller.py' python script.
- Run the teleop program and start the remote control server
Coming Soon!
Coming Soon!
Coming Soon!
Coming Soon!
This project is completely open source and free to all. Any help or advice is really appreciated. Thank you!