Skip to content

Releases: LeoRover/core2_firmware

v2.1.1

05 Jul 14:38
Compare
Choose a tag to compare

What's Changed

  • Fix wheel topics functionality by @bjsowa in #10

Full Changelog: v2.1.0...v2.1.1

v2.1.0

30 Oct 15:00
Compare
Choose a tag to compare

What's Changed

  • Adding mecanum wheels handling to firmware for Husarion core2 board by @Bitterisland6 in #9

New Contributors

Full Changelog: v2.0.0...v2.1.0

v2.0.0

04 Mar 18:24
Compare
Choose a tag to compare
Update diff_drive_lib

v1.2.0

23 Apr 15:45
631bd56
Compare
Choose a tag to compare

Summary

  • Added robot position estimation
  • Added robot_frame_id and odom_frame_id parameters
  • Mitigate the issue with persistent config loading.
  • Reversed the wheel effort values sent with the joint states
  • Imported the newest version of rosserial client libraries
  • Fixed compilation issues
  • Various stylistic changes and optimizations.

A detailed description of changes:

Added robot position estimation

The firmware now estimates pose of the robot in a 2D plane based on the wheel velocities. The pose is pubished on the wheel_pose topic and the core2/reset_odometry service allows resetting it to zero.

Added robot_frame_id and odom_frame_id parameters

These parameters lets you customize the values of the frame_id field in the published wheel_odom and wheel_pose messages.

Mitigate the issue with persistent config loading.

There is an issue with loading the configuration from persistent storage on some CORE2 devices, where sometimes incorrect bit values are set. This resulted in the configuration reset due to incorrect checksum. The problem has been mitigated by trying to load the config 3 times before giving up.

Reversed the wheel effort values sent with the joint states

The effort values published on the joint_states topic were reversed so that they are positive when the wheels are moving forward and negative when moving backward.

Imported the newest version of rosserial client libraries

The project now uses rosserial client libraries generated from the upstream version of rosserial, instead of the libraries bundled with the husarion VSCode extension.

v1.1.0

30 Jul 16:58
Compare
Choose a tag to compare

Summary

  • fixed an issue with sudden changes in encoder count values
  • modified the ROS API to use services instead of topics for settings config options
  • added service for getting the current firmware version
  • fixed the issue with building the firmware on Windows

A detailed description of changes:

fixed an issue with sudden changes in encoder count values

There was an issue which caused sporadic huge changes in wheel position and velocity spikes if there is noise in encoder signal. This has been fixed by implementing a detection of abnormal wheel velocities in update function of wheel controllers.

modified the ROS API to use services instead of topics for settings config options

All of the functionalities which were available on /core2 topics are now provided by services instead. For example, to turn the IMU functionality on, you now have to run:

rosservice call /core2/set_imu true

instead of:

rostopic pub /core2/set_imu std_msgs/Bool true

added service for getting the current firmware version

The service /core2/get_firmware_version returns a String with the current firmware version which is set in the params.h file.

fixed the issue with building the firmware on Windows

The previous version of the firmware did not build successfully on Windows due to missing std::to_string function in standard library.

v1.0.0

24 Mar 18:32
Compare
Choose a tag to compare

Summary

  • added GPS module support
  • added ROS logging
  • added ROS parameters
  • added angular_velocity_multiplier parameter
  • added frame_id parameters for IMU and GPS
  • style-formatted and restructured code

A detailed description of changes:

added GPS module support

The feature has been tested on Waveshare UART GPS NEO-6M module, but should work with any UART GPS module that supports NMEA protocol. The port on which the device is connected can be adjusted by setting GPS_HSENS variable in params.h file and the feature can be toggled by publishing on core2/set_gps topic. Upon receiving each GPGGA message, a new NavSatFix will be published on gps_fix topic.

added ROS logging

The firmware now publishes log messages (on different verbosity levels) to the ROS network via rosserial. To enable debug level logging, send true on core2/set_debug topic.

added ROS parameters

All of the parameters regarding motors, servos and differential drive controller are now loaded at runtime from ROS Parameter Server. A complete list of the parameters and their description can be found on the ROS API section of the README file.

added angular_velocity_multiplier parameter

This parameter was added to account for a difference between a two-wheel robot model and the real robot (check the README for more info). The wheel odometry should now be closer to the real velocity.

added frame_id parameters for IMU and GPS

The core2/imu_frame_id and core2/gps_frame_id parameters specify the tf frame ids associated with IMU and GPS modules.

v0.5.1

21 Oct 17:32
Compare
Choose a tag to compare

Summary

  • [IMU] add gyro bias to persistent config

A detailed description of changes:

[IMU] add gyro bias to persistent config

Previously, after gyroscope calibration, the bias was written to IMU registers which were reset after the board was restarted. Now the bias is added to the persistent config.

v0.5

02 Oct 14:18
Compare
Choose a tag to compare

Summary

  • lowered serial communication baudrate
  • abandoned the use of covariance matrices to reduce bandwidth

A detailed description of changes:

lowered serial communication baudrate

To mitigate losing synchronization issues in Raspberry Pi, the serial communication baudrate was changed from 500Kbps to 250Kbps. This makes this version of firmware not compatible with older versions of Leo image. For the firmware to work, please flash the newest image, or do the following:

sudo apt update
sudo apt upgrade ros-kinetic-leo-bringup
sudo systemctl disable husarnet-configurator

and reboot the Rover.

abandoned the use of covariance matrices to reduce bandwith

The firmware will no longer send covariance matrices with Odometry and Imu messages. This reduces the used bandwidth to below 100Kbps.

v0.4

04 Sep 14:53
Compare
Choose a tag to compare

Summary

  • abandoned hCloud support
  • added parameter preset for Buehler motors
  • added covariance to wheel odometry
  • added MPU9250 IMU support
  • added persistent storage config
  • added system topics

A detailed description of changes:

abandoned hCloud support

The firmware will no longer use hCloudClient for communication. The reasons are better serial communication quality and a lack of interest in the feature. This makes this version of firmware not compatible with older versions of Leo image. For the firmware to work, please flash the newest image, or do the following:

sudo apt update
sudo apt install ros-kinetic-leo-bringup
sudo systemctl disable husarnet-configurator

and reboot the Rover.

added parameter preset for Buehler motors

You can now choose between Pololu and Buehler presets for encoders and PID regulators by modifying the parameters.h file. Both compiled versions are also available for download below.

added covariance to wheel odometry

Odometry publisher now uses TwistWithCovarianceStamped messages instead of Twist. The new messages contain timestamp, frame id and covariance matrix that is configurable in parameters.h file. This type of messages can be used, for example, with ekf_localization_node.

added MPU9250 IMU support

The firmware now supports MPU9250 IMU connected to I2C port on hSens2 (can be changed to hSens1 in parameters.h). When IMU is active, new topics should appear: imu/data_raw (accelerometer and gyroscope readings) and imu/mag (magnetometer readings in North-West-Up world frame), as well as services for calibration.

added persistent storage config

The firmware now stores configuration in Core2 persistent storage (STM's flash). For now, the configuration stores IMU config and calibration data. It supports checksum checking and resetting to default values.

added system topics

added topics in core2 namespace for: resetting the board, resetting the configuration in persistent storage and enabling/disabling IMU.

v0.3

07 Aug 11:47
Compare
Choose a tag to compare

Summary

  • more accurate speed measurement
  • improved odometry calculation
  • added joint states publishing
  • changed some coding conventions

A detailed description of changes:

more accurate speed measurement

Previously, the velocity was measured by calculating the difference in wheel position between each regulator update (each 10ms). Now, 10 last wheel positions are memorized and each 10ms, the velocity is calculated using the sliding window approach. This results in much more accurate measurements.

improved odometry calculation

Odometry calculation now uses the improved speed measurement

added joint states publishing

Wheel joint states are now published to joint_states topic. For each joint, there is velocity (rad/s), position (rad) and effort (PWM duty).