After an extensive research, we decided to use the Arduino based robotic manipulator called Tinkerkit* Braccio Robotic Arm. Braccio, is an Italian word for an "arm". The Braccio robotic arm is a six degree of freedom (6-DOF) robotic arm made from plastic materials. The kit comes with BRACCIO motor shield that will allow us to hook up and control the the six servo motors. The kit also contains a 5V power supply with different electrical outlet adapters.
Figure 1. Braccio robotic arm (6DOF)
According to the manufacturer, the TinkerKit Braccio is a fully operational robotic arm that can be controlled by Arduino micro-controller. Braccio robotic arm can be assembled in several ways for multiple tasks as shown in picture bellow. Braccio can also support various objects on the end effector which makes it versatile in its functions.
Figure 2. Arduino Braccio assembly configurations and end-effector options. Image courtesy of Arduino.org/braccio
The robotic arm kit consists of:
Assembly video
Braccio robotic arm comes with a detailed assembly instruction manual that can be found here, download an electronic copy. Besides, Arduino.org has also provided a video that shows step by step instructions on how to assemble the robotic arm.
The Braccio Motor shield is used to drive the six servo motors. The shield will be installed stacked directly onto the Arduino UNO or Arduino Mega 2560 boards. The Braccio shield connectors labeled M1 through M6 are connected to the PWM capable outputs of the Arduino board and are used to drive the six servo motors of the Braccio robotic arm.
Besides, the 4-pin TWI connector (yellow) allows the Arduino board to communicate with devices that support the TWI (Two Wire Interface) or I2C (Inter-Integrated Circuit) protocol through the Wire library in Arduino.
Figure 4. Braccio motor shield
The 4-pin SERIAL connector allows the board to communicate with other devices that support serial communication. Ground and 5 volt connections are provided on the connector for your convenience.
NOTE: If you’re sending or receiving data to and from the computer this serial connector is not available.
Figure 3. Braccio motor shield and Arduino uno. Image courtesy of Arduino.org/braccio
Motor M1-M6 serve as digital outputs.
10: gripper is open, 73: the gripper is closed.
Note: Do not use Pin 12. It is used to manage the voltage level of the Soft-start (on the shield there’s a dot instead of “12”).
In order to use your TinkerKit Braccio robotic arm, we have to download the Braccio library from either Arduino website or using the Library manager of the Arduino Software (IDE).
The only two functions from the downloaded library are Braccio.Begin()
and Braccio.ServoMovement (step delay, M1, M2, M3, M4, M5, M6)
. By using these two functions, the basic movements of the arm can be performed.
The function Braccio.servoMovement
will be used to set all the servos motors to their desired positions including a milliseconds delay between the movements. Please refer to the paragraph above, "Braccio shield connectors" to set the parameters for the step delay and to identify each motors.
The following code is taken from Arduino IDE example folder. Open Arduino sketch and locate the example file.
File => examples => simpleMovements
/*
simpleMovements.ino
This sketch simpleMovements shows how they move each servo motor of Braccio
Created on 18 Nov 2015
by Andrea Martino
This example is in the public domain.
*/
#include <Braccio.h>
#include <Servo.h>
Servo base;
Servo shoulder;
Servo elbow;
Servo wrist_rot;
Servo wrist_ver;
Servo gripper;
void setup() {
//Initialization functions and set up the initial position for Braccio
//All the servo motors will be positioned in the "safety" position:
//Base (M1):90 degrees
//Shoulder (M2): 45 degrees
//Elbow (M3): 180 degrees
//Wrist vertical (M4): 180 degrees
//Wrist rotation (M5): 90 degrees
//gripper (M6): 10 degrees
Braccio.begin();
}
void loop() {
/*
Step Delay: a milliseconds delay between the movement of each servo. Allowed values from 10 to 30 msec.
M1=base degrees. Allowed values from 0 to 180 degrees
M2=shoulder degrees. Allowed values from 15 to 165 degrees
M3=elbow degrees. Allowed values from 0 to 180 degrees
M4=wrist vertical degrees. Allowed values from 0 to 180 degrees
M5=wrist rotation degrees. Allowed values from 0 to 180 degrees
M6=gripper degrees. Allowed values from 10 to 73 degrees. 10: is open, and 73: is closed.
*/
//(step delay, M1, M2, M3, M4, M5, M6);
Braccio.ServoMovement(20, 0, 15, 180, 170, 0, 73);
//Wait 1 second
delay(1000);
Braccio.ServoMovement(20, 180, 165, 0, 0, 180, 10);
//Wait 1 second
delay(1000);
}
Declaimer:
The text of the Arduino getting started guide is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the guide are released into the public domain.