Code Monkey home page Code Monkey logo

adham-elarabawy / open-quadruped Goto Github PK

View Code? Open in Web Editor NEW
345.0 35.0 65.0 82.42 MB

An open-source 3D-printed quadrupedal robot. Intuitive gait generation through 12-DOF Bezier Curves. Full 6-axis body pose manipulation. Custom 3DOF Leg Inverse Kinematics Model accounting for offsets.

Home Page: https://adhamelarabawy.com

License: Other

Python 3.34% C++ 96.00% CMake 0.66%
robotics quadruped quadruped-robots quadruped-robot gait gait-generation 3d-printing trajectory trajectory-generation bezier-path

open-quadruped's Introduction

open-quadruped

Maintenance PR Open Source Love png2 MIT license

An open-source 3D-printed quadrupedal robot. Intuitive gait generation through 12-DOF Bezier Curves. Full 6-axis body pose manipulation. Custom 3DOF Leg Inverse Kinematics Model accounting for offsets.

Current Status

To-Do List

  • Hardware // Redesign legs to move actuators closer to hip + reinforce all servo mounting.
  • Design // Research transition between gait & body pose.
  • Software // Implementing ROS infrastructure for all control processes (including cpp on teensy).
  • Software // Write & automate pytest unit tests.
  • Software // Integrate unit tests with github actions.
  • Simulation // Create URDF model. (or port collaborater's URDF: Maurice Rahme)
  • Simulation // Gazebo
  • Simulation // RViz Realtime Model
  • Design // Solve offset 3DOF IK model for right limbs OR validate that mirroring angles works for left/right legs
  • Simulation // Implement WebGazebo clientside support for non-linux users
  • Sim-to-Real // Joint servo calibration
  • Sim-to-Real // Refining gait parameters
  • Simulation // Reinforcement learning via ARS
  • Software // Raibert Huerestic for converting desired velocities into gait parameters
  • Software // ROS Nav Stack Layer

Papers

I've been formally documenting this project in the form of papers. You can find them here: adhamelarabawy.com/pdf/IK_Model.pdf

Documentation

You can find a summary of this project on my portfolio website's project page. I'm hosting most of the technical documentation for this project on this repo's wiki.

3D Model

In the model folder, you can find all of the step & stl files that I used for my build of OpenQuadruped. There, you can also find a Bill of Materials, and some guides (in progress).

Hardware

I made a custom pcb board to control the position and speed of 12 servos simultaneously, as well as interface with all of the sensors.

You can find the gerber files for the custom pcb in the hardware folder in this repository.

You can find the bill of materials for this project here.

Visualization Usage

NOTE: There are 3 different visualization tools: Gazebo Simulator (ROS + Physics), RViz (ROS), & my custom 3d-matplotlib visualization tool (body IK model + leg IK model). The latter tool is still under development, and I haven't ported it to use my new control library yet, so it is likely broken for the time being.

To try the visualization tool out, you'll need to run the animate.py python file with the proper libraries installed. (matplotlib 3.0.3 supported).

You can then use keyboard controls: use x, y, z, a, p, r to select (x axis, y axis, z axis, yaw, pitch, roll), and then the up and down buttons to increment the selected position. If you click '1' on your keyboard, it will reset the position.

Right now, if you try to go to an impossible pose that would result in collisions, the body will do some weird things. If that happens, just click "1" on your keyboard to reset the position.

Note: Pitch and Roll are currently not working. I am currently trying to fix that.

More Demos

Force Sensitive Leg TestIK Model Demo 0IK Model Demo 1IK Model Visualization

open-quadruped's People

Contributors

adham-elarabawy 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  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

open-quadruped's Issues

Installation Of Dependencies

the problem I m facing is installing the

ROS Melodic

  • Well for me, it is a bit difficult to find and install this particular dependency in Ubuntu OS.

  • please add the code line to install dependencies.

  • It is a request that please add an installation guide as well weather in read.me or wiki section.

Additional context

It would be a great help for people like me, who are still beginners or new to Open Source.

Idler stl missing

I see in both the leg folders, there is a idler mount stl. I also see in the CAD model that there is an idler. Yet, I don't see where the actual idler's stl file. Would you please mind uploading this? I assembled the rest, but tensioning the belt would definitely make the legs move better. Thank you

Integrating with ROS

In order to switch to using a ROS infrastructure, there needs to be significant work done on refactoring much of the codebase. It is as follows:

  • Jetson Nano Networking setup
    • autoconnect to laptop's network
    • document connection procedure
  • Install ROS melodic on Jetson Nano
  • Verify ROS functionality
    • sub & pub to topics using nodes on jetson nano
    • serial comm between jetson nano / teensy
    • sub & pub to topics using nodes on jetson nano / teensy
    • sub & pub to topics using nodes on teensy
      • Not possible. Teensy can only act as 1 node.
  • Based on the results of above task, determine proper node layout
  • Refactor codebase
    • Import ros libs in teensy lib dir
    • Implement base ROS init + callback in teensy
    • Test ros joy lib with ds4drv ps4 driver
    • Create custom message for 4 leg poses
    • Header files for custom message on teensy
    • Experiment with ROS ps4 controller packages
    • Minor refactoring for main jetson nano control process. Node-ify it.
    • Modify LLC c++ code to remove Leg IK from teensy (LLC should accept joint angles, not leg htf vectors).

Assembly specifically belt tensioner

Do you have any documents or guides on assembly. I'm not sure exactly how you did the belt tension. Also the alignment of the servos would also be helpful. If not guides them possibly some pictures.

Thank You.

Parts list link no longer working

Hi Adham
great project, just wondering if you have the parts list still available as it appears to have been deleted?

Cheers
Alex

Servo Detach() function

I wondered if you could add a function like this to the servo control code. It is to detach the servos and thus make them loose power. This is handy for shutting the robot down in an emergency for example. i am not familiar enough with your code yet so i can not implement it myself.

Here is the piece of code from the normal arduino Servo.cpp:

void Servo::detach() { servos[this->servoIndex].Pin.isActive = false; timer16_Sequence_t timer = SERVO_INDEX_TO_TIMER(servoIndex); if(isTimerActive(timer) == false) { finISR(timer); } }

initial pose at boot needed for servos placement !!

Hey, Adham, working on your package, and need to know what alignement servos need to be at teensy boot !!
Could you quickly tell me their position :

  • Hips right, and parallel to ground ?
  • shoulders // to others shoulders, and perpendicular to ground ?
  • wrist // to others wrists, and perpendicular to ground ?
    Thanks in avance, Adham
    Vincent

Inverse Kinematics Model revision

After using the IK model I created & documented, I have noticed some flaws with my implementation. I'd like to try out a couple of new things:

  • Error catching
    • Out of bounds
    • Ability to set custom limits on arm angles based on hardware restrictions
  • Use right hand rule model consistently
  • Update documentation

Documentation/Website

This project could definitely benefit from better made documentation and a website. The wiki is also sparse in terms of setup.

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.