Giter VIP home page Giter VIP logo

robodog's Introduction

ROBODOG PROJECT

PRIMER

I am creating an industrial 12 degree of freedom robotic quadruped. By leveraging Hoverboard motors for many of the actuators, as well as a processor and FPGA on a single System on Chip (SoC) for the main processing system, I am hoping to create an affordable and flexible quadruped that myself and others can leverage as a universal testbed. There are three main motivations for this project: promoting engineering and robotics within the community by (hopefully) explaining things in layman's terms, creating an affordable, flexible, and reproducible quadruped system that can be used for testing various algorithms from navigation to machine learning and everything in-between, pushing the boundary of non-linear control system theory.

Promoting engineering and robotics within the community:

The first motivation behind this project is to help educate the community and try to get more people involved in Science, Technology, Engineering and Mathematics (STEM). This is being accomplished through documenting all steps for this project on my YouTube channel as well as open-sourcing everything.

Creating an affordable, flexible, and reproducible quadruped system:

The second motivation is for the quadruped system to be used as a universal testbed for testing a myriad of algorithms and control system techniques. Incorporating an FPGA helps with this endeavor since it presents a reconfigurable platform that can conform to a variety of user requirements. Many algorithms that are traditionally carried out on processors for a quadruped can be off-loaded to the FPGA resulting in increased efficiency, power-savings, and reliability. Furthermore, IP cores can be added to the code base from the community to seamlessly facilitate additional capabilities/features within the system.

Pushing the boundary of non-linear control system theory:

The third motivation behind this project is to help contribute journal papers to the academic community for creating fluid motion movement using non-linear control system principles while primarily using common hobbyist and Commercial Off The Shelf (COTS) components.

PROJECT STATUS

Current progress for the RoboDog build can be found on the RoboDog Playlist located on my YouTube channel, AustinTronics.

I am doing this completely on my free time so if you support what I'm doing, subscribe to my YouTube channel and share my videos with anyone you think would be interested. I appreciate the support! ❤️

WHAT'S IN THIS REPO

To promote better version control practices, dependency management, and extensibility of the RoboDog project, different elements of the RoboDog software are stored in their own repositories. These software repositories are modular in nature and can be repurposed for other projects if desired.

Google's git-repo tool is used to help manage the different combinations and revisions of repositories together in this RoboDog repo. Here are some useful write-ups for learning about the git-repo tool:

USAGE

To get all the software, you will need Google's git-repo tool.

git-repo install

Many distros include repo, so you might be able to install from there.

Debian/Ubuntu:

$ sudo apt-get install repo

You can install git-repo manually as well since it's a single script:

$ mkdir -p ~/.bin
$ PATH="${HOME}/.bin:${PATH}"
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
$ chmod a+rx ~/.bin/repo

Getting a new SSH key

GitHub documentation provides a good write-up for how to generate new SSH keys:

Optional: Using SSH with git-repo

If SSH is being used to fetch repositories instead of HTTPS, you may be asked to enter your SSH passphrase for every repository using SSH. To avoid entering the passphrase every time, you can securely save your passphrase in an SSH agent, such as keychain.

To use keychain with your SSH key, you must first install it on your system:

Debian/Ubuntu

sudo apt-get install keychain

Then perform the following command to sync your key with the SSH agent:

eval `keychain --eval ~/.ssh/id_ed25519`

Where ~/.ssh/id_ed25519 is the path to your private key.

More information on keychain or how to store your keys with other SSH agents can be found here:

Downloading RoboDog Repos

The RoboDog repo currently contains one manifest file:

  • default.xml - The default manifest file that's used if no manifest file is provided to the repo init command (shown below). This particular manifest file grabs the latest code on each branch for all repositories that make up the RoboDog project. For example, if you are using the langdale branch, then the latest code on the langdale branch will be used from all repositories that make up the RoboDog project.

When the RoboDog project becomes a little more mature, I will add other manifest files that point to specific hashes across all the repositories that make up the RoboDog project. This will ensure that if there are code-breaking changes that get pushed to the branch, the manifest files that contained specific hashes would still be stable since it will not be pulling the latest code on any repositories branch.

The branches used in the RoboDog repo match the Yocto projects branching scheme. This is because the RoboDog project heavily leverages the Yocto project and having similar naming conventions make it easy to check which branches of the RoboDog project is compatible with which branches of the Yocto project.

Step 1 - Make a project directory

mkdir ~/robodog_project
cd ~/robodog_project

Step 2 - Initialize your project directory

To initialize your project directory with the default.xml manifest file:

repo init -u https://github.com/AustinOwens/robodog.git -b langdale

Step 3 - Sync your project directory with all the repos specified by the manifest file

repo sync

Step 4 (optional) - Start local branches for development

By default, all repos will be in a detached state that matches the revision as specified in the manifest file.

You can use git how you would expect in all repos that have been downloaded. Due to the number of repos that may be checked out, repo offers a convenient command to checkout or create a new a local branch for development for all repos:

repo start --all <branch_name>

To set back all repos to their detached state as specified in the manifest file, issue the following command:

repo sync -d

NOTE: The repo tool does NOT replace git. You can still use git like normal in each repository. The repo tool simply helps you manage multiple git repositories at the same time.

Step 5 - Build and run the Docker container

docker build --build-arg USERNAME=<user_name> --build-arg UID="$(id -u)" -t yocto-img .
./docker.run -u <user_name> -s $(pwd)/workspace -i yocto-img /bin/bash

# Use <user_name> for the password below
sudo chown -R <user_name> workspace

Where <user_name> is the username you want to create inside the docker container.

Step 6 - Prepare and run Yocto build

To prepare the shell environment and build the robodog-image for the Zybo Z7-20, run the following command:

source build.sh

robodog's People

Contributors

austinowens 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

robodog's Issues

Images to HDMI out

Create a mux in PL that's controlled by switches to facilitate piping image data to HDMI out during various image processing stages.

Image Stitching

Stitch the two stereo vision images together before in PL before passing to PS. This eliminates the need to track individual frames on the PS side since it will come over all in one go.

Clean up Vitis project so that it can be imported

Right now, the whole entire Vitis project I covered in RoboDog Video 7 and Video 9 are being tracked by git. This should be cleaned up so that the project can be easily imported by the Vitis Import functionality and the src code specific to RoboDog should be the only thing being tracked by git.

Limit Switches

Implement limit switch logic in PL to cut power to motors if hit.

Configuration Web Server

Place web server on PS side to facilitate configuring/controlling various elements of RoboDog.

Customizable OS

Facilitate a customizable OS so users can easily customize different components of the OS.

question: make a video on how to mount the 14 bit encoder

Hello AustinOwens i love your plan using a hoverboard motor.
in our communit where doing something different using that motor making a forcefeedback steering wheel.
this is doable and there are people using this already also with odrive.
what im interested in is how your planning on mounting your 14 bit encoder.
this would be very usefull where all exploring here
i also saw https://discourse.odriverobotics.com/t/hoverboard-motor-with-built-in-encoder/790 this solution.
can you share more?

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.