Code Monkey home page Code Monkey logo

quadbot's Introduction

QuadBot

Purpose

I'm building a quadrupedal robot (think a Starcraft Dragoon, not a robot dog), with the intention of eventually using it as a platform to play with image recognition and control by an AI. The first version of the code is built to be controlled by a bluetooth gamepad.

Architecture

Hardware

I'm using a Raspberry Pi model A+ with an Adafruit PWM hat (based on an NXP PCA9685 IIC bus 16ch LED controller) to offload servo timing to actual hardware. The Pi provides network, bluetooth, and USB capabilities for future extensibility, and the servo hat avoids glitchiness stemming from using a non-realtime OS (i.e. Linux) in a partially-realtime application. The robot itself uses 12 9g micro servos among 4 legs, offering 3 degrees of freedom per leg (one to swing the hip, one to raise the hip, one to raise the knee). The body and leg components are cut from birch plywood. Obviously, some of these details impact the software itself, and some are just implementation-specific design choices. I'd expect the software to be useful for building a Pi-based quadruped, regardless of the actual scale or materials used for the robot itself.

Software

Control interface -> body/gait+timing+movement control -> individual legs/servo position interpolation/IK -> individual servos

The initial "Control interface" will use the Linux joystick API because I end up with a /dev/input/js0 when I connect an Ouya control over bluetooth. The output will be higher-level commands to the "body" component (like "set height to 5cm", "move forward", "set tilt 20 degrees left", or "turn CW"). Those will be translated into speed and foot positions and sent to the legs. The legs determine the actual angles that the servos need to be at (using a non-general, trigonometry-based IK calculation). The servos will have individual trim/min/max information, and will translate an angle into a PWM timing value and output the positioning values to the PWM controller.

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.