GithubHelp home page GithubHelp logo

adityakamath / akros2_firmware Goto Github PK

View Code? Open in Web Editor NEW

This project forked from linorobot/linorobot2_hardware

5.0 1.0 2.0 8.72 MB

micro-ROS firmware for the AKROS2 robot using micro_ros_arduino. Based on linorobot2

Home Page: https://adityakamath.github.io

License: Apache License 2.0

C++ 94.60% C 4.38% Processing 1.02%

akros2_firmware's Introduction

akros2_firmware

Firmware and libraries for the akros2 robot, based on linorobot2_hardware repository and the MECANUM config. Using a Teensy 4.1 with an expansion board from Tindie. I'm using the same libraries as linorobot2, but have added/changed a few things to the firmware:

  • Option for native ethernet transport (UDP4).
  • Option to set ROS_DOMAIN_ID.
  • Neopixel status and mode indicator using FastLED.
  • Compiling/uploading using Arduino IDE and modified micro_ros_arduino libraries instead of PlatformIO.
  • Mode subscriber with custom akros2_msgs/Mode type.
  • Joint State publishers to publish the measured and required joint states (velocities and positions) as separate sensor_msgs/JointState messages.
  • Parameter server reads the following:
    • Gain values (kp, ki, kd, scale) which are set on the ROS2 host, used for PID tuning.
      • Parameters are initialized using values defined in the configuration. These values are also used during re-initialization (when agent is reconnected)
      • Config needs to be updated and then the firmware needs to be recompiled with the tuned PID gains.
      • scale value is limited to the range [0.0, 1.0] with a step size of 0.01.
    • Boolean value ned_to_enu which is used to convert IMU representation from NED (North-East-Down) to ENU (East-North-Up) convention according to REP-103, if needed. The parameter value is passed down to the IMU interface, which does the conversion. Defaults to false, as the sensor already provides measurements in ENU convention.
  • TODO - Refactoring: Calibration sketch updated and moved to a separate repo arduino_sketchbook_ros.
    • Reports max RPMs (revolutions per minute) using pre-defined CPRs (counts per revolution), instead of the other way around.
    • Also reports the calculated CPRs and its deviation from the pre-defined CPRs.

Generic linorobot2 installation and setup instructions can be found on the galactic branch.

akros2_firmware's People

Contributors

grassjelly avatar adityakamath avatar jash101 avatar

Stargazers

Bhargav Srinivasan avatar Alan Millington avatar  avatar Atticus Russell avatar Serge Simard avatar

Watchers

James Cloos avatar

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.