Skip to content

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

License

Notifications You must be signed in to change notification settings

adityakamath/akros2_firmware

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

akros2_firmware

GitHub License X (formerly Twitter) Follow

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.

About

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

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 94.6%
  • C 4.4%
  • Processing 1.0%