This guide will teach you how to setup and use your RobotGeek Snapper Robot Arm.
This guide will refer to the RobotGeek Geekduino, the Arduino Compatible microcontroller recommended for use with RobotGeek products. However this kit will also work with the Arduino Uno, or other Arduino variants like the Seeeduino.
The Snapper Arm Kit comes with a RobotGeek Gripper Kit. We recomend that you go through the RobotGeek Gripper Getting Started Guide before proceding. The guide will show you how to build and test your gripper, as well as configure the other servos for your arm.
If you have not already set up your Geekduino/ Arduino compatible board, please see the Geekduino Getting Started Guide. This guide will assist you in getting set up with the Arduino software as well as install libraries and test sketches for the Snapper Arm.
During the assembly of the Snapper Arm, you should have wired up your servos to the sensor shield. Please take a moment to double check your connections and jumper match the following diagram.
|Device||Sensor Shield Port|
|Base Rotation RobotGeek Servo||Digital 3|
|Shoulder RobotGeek Servo||Digital 5|
|Elbow RobotGeek Servo||Digital 6|
|Wrist RobotGeek Servo||Digital 9|
|Gripper 9G Servo||Digital 10|
|Base Rotation Knob||Analog 0|
|Shoulder Joystick (Vertical)||Analog 1|
|Elbow Joystick (Vertical)||Analog 2|
|Wrist Joystick (Vertical)||Analog 3|
|Gripper Rotation Knob||Analog 4|
When you installed the RobotGeek Tools and Libraries, you installed the test sketch for the snapper arm. You can find the
File -> Sketchbook -> RobotGeek sketches -> Tests -> snapperArmTest
Now load the sketch onto your Geekduino. The Arm should complete the following movements:
- Arm Moves to 'centered' position
- Base Servo
- Base servo moves 90 degrees clockwise (right)
- Base servo moves 180 degrees counterclockwise (left)
- Base servo moves 90 degrees clockwise to 'centered' position (right)
- Shoulder Servo
- Shoulder servo moves 90 degrees clockwise (back)
- Shoulder servo moves ~120 degrees counterclockwise (forward)
- Shoulder servo moves ~30 degrees clockwise (back) to 'centered' position
- Elbow Servo
- Elbow servo moves ~30 degrees clockwise (down)
- Elbow servo moves ~120 degrees counterclockwise (up)
- Elbow servo moves 90 degrees clockwise (down)to 'centered' position
- Wrist Servo
- Wrist servo moves 90 degrees clockwise (down)
- Wrist servo moves 180 degrees counterclockwise (down)
- Wrist servo moves 90 degrees clockwise (down)to 'centered' position
- Gripper Servo
- Gripper servo moves ~60 degrees clockwise (open)
- Gripper servo moves ~120 degrees counterclockwise (closed)
- Gripper servo moves ~60 degrees clockwise (half open) to 'centered' position
The Arm will then repeat this sequence.
To control the Snapper Arm with the included analog inputs you will need to load the RobotGeek Snapper Arm Control Sketch onto your Geekduino. For easy access we recommend that you put the
RobotGeekArmAnalog folder in
Documents -> Arduino -> RobotGeek sketches
You will then be able to access the sketch from
File -> Sketchbook -> RobotGeek sketches ->RobotGeekArmAnalog
After you've restarted your Arduino IDE. Otherwise you can open the file
The two rotational knobs will control the base servo and the gripper servo directly. Rotating the first knob counter-clockwise will rotate the base servo counter-clockwise, and rotating the knob clockwise will rotate the base clockwise. Rotating the second knob counter-clockwise will open the gripper all the way, and rotating the knob clockwise will close the gripper all the way.
The three joysticks will incrementally move the shoulder, elbow and wrist joint. Moving the joystick up will slowly move the joint in one direction, while moving the joystick down will move it in the opposite direction. Moving the joysticks left/right will have no effect, as these axes are not connected.
These servos have no over-current protection. Trying to lift to large of a load or applying to much force to the gripper may damage the servos.
Analog Input Mapping
This code uses a combination of direct and incremental code for converting analog inputs into servo positions
Absolute positioning is used for the knobs controlling the base and gripper servo. This means that the value of the knob is mapped directly to the corresponding servo value. This method is ideal for sensors that stay at static positions such as knobs and sliders.
Incremental code is used for the joysticks controlling the shoulder, elbow and gripper servo. Each joystick value is mapped to a small relatively small positive or negative value. This value is then added to the present position of the servo. The action of slowly moving the joystick away from its center position can slowly move each joint of the robot. When the joystick is centered, no movement is made
The choice for using Direct/Incremental mapping for each joint was made based on usability, however the code can be modified so that any joint can use either direct or incremental mapping
The servos' positions will be tracked in microseconds, and written to the servos using .writeMicroseconds().
For RobotGeek servos, 600ms corresponds to fully counter-clockwise while 2400ms corresponds to fully clock-wise. 1500ms represents the servo being centered
For the 9g servo, 900ms corresponds to fully counter-clockwise while 2100ms corresponds to fully clock-wise. 1500ms represents the servo being centered