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 tofalse
, as the sensor already provides measurements in ENU convention.
- Gain values (
- 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.