Giter Club home page Giter Club logo

chariot's Introduction

The Chariot Python Package

This is a control library that was developed for testing during the development of the Chariot robot platform. Specifically, it targets control of an abitrary number of ODrive controllers over the CAN protocol the ODrive firmware supports.

It is not designed to be used in production, so use at your own risk.

Building this package

This package uses Poetry to manage dependencies. To get started, I first recommend:

  • installing pyenv
  • using pyenv to install python3.9 and create a virtual environment
  • installing poetry while in the venv:
pip install poetry
  • finally, install dependencies in this package by changing directories to the package root and running
$ poetry install

While this package doesn't exactly require Python 3.9 it is strongly recommended in the case that you wish to use ODrive Robotics' odrivetool front end. This requires a USB connection to the controller, but allows for simple configuration and debugging of the controller.

Style

This package requires linting and strongly emphasizes type checking. There are currently some issues with third party libraries and their lack of typing support, but it must be used when possible.

Package breakdown

CanSimplerInterface

This package is responsible for the "low level" interfacing with CAN. At the moment this package uses SocketCan as the arbiter between CAN and the PC. This limits the use to Linux, which has Kernel support for SocketCan, but other Operating Systems do not.

OdriveMotorManager

This is an intermediary library that is intended to be client facing. It is slightly geared towards the Chariot platform, but can easily be generalized by making kinematic dataclasses implement a protocol.

This class should expand over time to fufill the requirements of running the motors on the platform.

Joystick Support

Additionally this package includes a python-only interpreter for commanding motors using an Xbox gamepad. This bootstraps off of Pyjoystick, and can easily be generalized to other gamepad devices.

Porting To Other Languages

To port the Chariot interface to other languages, you will need an implementation of the cantools library, ...

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.