Giter Site home page Giter Site logo

alishug / evoarm Goto Github PK

View Code? Open in Web Editor NEW
128.0 9.0 42.0 38.26 MB

An open-source 3D-printable robotic arm

Arduino 1.32% C++ 41.32% Python 57.36% Batchfile 0.01%
robotics inventor python pygame 3d-printing robot design robot-arm arduino inverse-kinematics

evoarm's Introduction

EvoArm is an open-source, 3D-printable, desktop-sized, 3+2DOF robot arm design which uses serially controlled Dynamixel smart servos. It is based in part on the LiteArm i2 design by "Armatec".

Licensed under CC-BY-SA 3.0

Core Action

Swing Main Arm Actuator/Forearm
Swing GIF Main GIF Actuator GIF

The arm is actuated using 3 Dynamixel smart servos, either the AX-12 or 18A, which both have identical casings and control protocols - I recommend using AX-18A motors, as the 12s are a bit underpowered.

Effector

The design presented here has a flat touchpad actuated using 2 Dynamixel XL-320 servos, providing an additional 2DOF at the arm's "wrist". The design inherently keeps the base wrist joint level with the floor.

Inverse Kinematics

The inverse kinematics application is written in Python with PyGame, and takes the form of a graphical control app which also accepts simple streamed commands from other programs via UDP. It serves the purpose of calculating the desired target servo positions for the arm, given a 3D target position and orientation for the end-effector. It also provides linear interpolation on the target position and basic bounds-checking to prevent self-interference on the motors or mechanical failure of the design (the reachable volume is visualised in green).

Start the application with python PyIK from the root directory. Unfortunately the application may not be usable on smaller screens, since the size is fixed. To enable control, press the spacebar, and watch the command window in which the app was started for additional information.

Inverse Kinematics program

The IK app is configured to connect to the arm through a properly configured Arduino Mega2560 controller, from a Windows machine. More details to come!

Hardware

The current system interfaces with the servos using an Arduino Mega2560, which provides multiple hardware UARTs in addition to the one used for PC/Arduino communications. The AX and XL series servos use different control protocols, so they are connected to the Arduino on physically separate lines, with one UART Tx/Rx pair for each set of servos. Since the servos use only a single (synchronous) data line, the Tx/Rx lines are multiplexed using a 74LS241 tri-state buffer. The multiplexing is controlled using an additional transmit enable line from the Arduino.

Breadboard diagram of hardware

Circuit diagram of serial communications

The data lines should be pulled high (to +5V) to stop them from "floating" while not in use.

Experimentally, it's possible to interface with these servos using only an Arduino Uno (or equivalent, e.g. Arduino Nano), without preventing the use of the single hardware UART for PC/Arduino communications. The ATMega328p in those boards is clocked high enough to allow basic software-based synchronous serial at 1 megabaud, using only one pin for each data line, and no additional hardware. The downside is interfering with the interrupts on the board, which can break some of the normal Arduino timing routines. If all you want to do is communicate with the servos from a PC, this doesn't matter. I'll explore this option further when I have the chance.

evoarm's People

Contributors

alishug avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

evoarm's Issues

Error Regarding File PyIK.py from PyIk/src/PyIK.py

hie AliShug,
I refered your code and trying to use in my system(UBUNTU 14.04). when I compile PyIK.py file I'm getting Error as follows:

No 'Logs/' folder available: Performance logging disabled
Warning: shoulder servo not connected
Warning: elbow servo not connected
Warning: wrist_y servo not connected
Warning: wrist_x servo not connected
Warning: swing servo not connected
Rendering reachable volume...
Note: Spacebar toggles movement enable/disable
Traceback (most recent call last):
File "PyIK.py", line 413, in
app.tick()
File "PyIK.py", line 361, in tick
self.tickComms()
File "PyIK.py", line 223, in tickComms
self.sockOut.send(self.arm.getIKPose().serialize() + sensor)
socket.error: [Errno 111] Connection refused

since i'm trying to solve these errors but can you please explain why this happens.
Regards me,
As early as possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.