Skip to content

An Arduino controlled robotic arm with facetracking capabilities

Notifications You must be signed in to change notification settings

tfeldmann/Biorobotic-Arm

Repository files navigation

Biorobotic Arm

This is a collaborative project for the course "biorobotics and locomotion". It contains the source files for the firmware, graphical control software, scripting (automation) software, mobile control- and face recognition software.

BioRoboter

Documentation

The folder "Documentation" contains screenshots, the board layout and schematics.

Driver

This folder contains the driver which is needed on older windows versions (installation instructions). As of Windows Vista the Arduino is recognized automatically.

On Mac OS X everything should work out of the box. It should work on Linux, too (although this is yet untested).

Firmware

Here you find the robot's firmware. It is written for an Arduino Mega 2560 R3. To compile and upload use the Arduino Software unless you know what you are doing. The SerialCommand library must be installed. An archive of the SerialCommand library and the modified Servo library is included in Firmware/libraries.

RemoteInterface

This folder contains the setup file for the remote interface (iOS / Android). You will need the software "Control".

Make sure that you are in the same network as the PC running the RobControl-software and enter the given IP-adress as destination. Install and start the RobControl Remote interface (the .js file in the folder "RemoteInterface").

RemoteInterface

RobControl

RobControl

The graphical robot control software. Start it after you connected the robot to the PC, select the right port and you're good to go. You can control the robot by clicking and dragging. Everything should be quite self-explanatory.

ScriptingSoftware

ScriptingSoftware

The programmatical robot control software. Here you can enter any command from the section "API" as well as the command "WAIT [seconds]". Click on start to run the script. Additionally you can send single commands in the entry field on the bottom.

The ScriptingSoftware is written in Python 2.7.4 and uses no external modules except for PySerial.

API

Connect to the robot via a 19200 baud, 8N1 serial connection. Monitoring data as well as commands must be sent in plain uppercase ASCII.

Receiving data

Control characters

A hash (#) indicates that a output is for logging purposes only and can be dismissed. Examples:

# Collision sensor found
# Ready

An exclamation mark (!) indicates an error and should always be shown to the user. Possible errors are:

!01 Unknown command
!02 Collision detected [Axis]
!03 Could not connect to MMA8452Q

The question mark (?) is used as the identifier (see chapter "Identify").

? BIOROBOTIC_ARM

Position monitoring

About every 50ms (20Hz) the robot sends a P followed by five integers separated by ; which describe the robot's position. For example:

P130;45;-90;30;1
  |  |   |  |  |
  |  |   |  |  + - grip opened/closed
  |  |   |  +- - - wrist angle    (γ)
  |  |   + - - - - elbow angle    (β)
  |  + - - - - - - shoulder angle (α)
  +- - - - - - - - base angle     (δ)

The robot automatically constrains sent values to mechanically possible angles.

geometry

Commands

A short introduction to the commands the robot supports. Please notice that every line beginning with >> indicates a command you can send. Do not send >>.

Base

Controls the angle of the base. Send only the command name to see how it is used.

>> BASE
# BASE [ANGLE]

Example usage:

>> BASE -30  <-- turn base 30 degrees counterclockwise (seen from above)
>> BASE 0    <-- sets base to center position

Shoulder

Controls the DC-Motor for the shoulder joint. POSITION can be any integer value between 0 and 350 Send only the command name to see how it is used.

>> SHOULDER
# SHOULDER [ANGLE]

Example usage:

>> SHOULDER 0   <-- sets the shoulder perfectly horizontal
>> SHOULDER 30  <-- turns the shoulder 30 degrees to ground

Elbow

Controls the DC-Motor in the base. POSITION can be any integer value between 55 and 1023 Send only the command name to see how it is used.

>> ELBOW
# ELBOW [ANGLE]

Example usage:

>> ELBOW 0    <-- sets the elbow in line with the shoulder
>> ELBOW -45

Wrist

Controls the robot's wrist. ANGLE can be any integer value between -80 and 90. Send only the command name to see a overview:

>> WRIST
# WRIST [ANGLE]

Example usage:

>> WRIST 60   <-- sets wrist to 60 degrees up
>> WRIST 0    <-- sets wrist in line with the underarm
>> WRIST -50  <-- sets wrist 50 degrees down

Grip

Control the robot's grip with the grip command. You can send the command name to see a overview:

>> GRIP
# GRIP ["OPEN" | "CLOSE" | "TOGGLE"]

Example usage:

>> GRIP OPEN
>> GRIP CLOSE
>> GRIP TOGGLE

Autolevel

The robot is able to automatically maintain a specific wrist angle. To enable this use the autolevel command.

>> AUTOLEVEL
# AUTOLEVEL ["ON" | "H" | "V" | "OFF"]

Example usage:

>> AUTOLEVEL ON   <-- keep the angle the wrist currently has
>> AUTOLEVEL H    <-- Keep the wrist parallel to the ground (horizontal)
>> AUTOLEVEL V    <-- Keep the wrist orthogonal to the ground (vertical)
>> AUTOLEVEL OFF  <-- disables autolevel

The H and V options enable autolevel automatically.

Identify

A single question mark is the identify command. You can use this to check your connection settings and whether you're talking to the correct device.

>> ?
? BIOROBOTIC_ARM

Contributors

Fehmer, Manuel
Feldmann, Marlene
Feldmann, Thomas
Hussmann, Carsten
Neuhaus, Alexander

Logo

About

An Arduino controlled robotic arm with facetracking capabilities

Resources

Stars

Watchers

Forks

Packages

No packages published