Software Updates

This topic’s purpose is to notify about updates of various software components related to Leo Rover.

Leo Image

Ubuntu image that is running on the robot’s main computer (Raspberry Pi 3 or 4).
The releases can be downloaded from here.

Summary of changes

2020-05-18

  • added support for wifi modules that are based on rtl88XXau chipsets
  • modified hostapd config to enable High-Throughput mode (IEEE 802.11n)

2020-04-23

  • added source /etc/ros/setup.bash line to ~/.bashrc file
  • fixed the issue with /var/log/ros directory permissions
  • updated leo_bringup and leo_ui
  • updated the leo service (files under /etc/ros)
  • downloaded newest leo_firmware binary to the home directory

2020-02-12

  • changed the way ROS nodes are started at boot to provide a more user-friendly mechanism for adding new functionalities
  • updated leo_bringup and leo_description packages

2020-02-08

  • fixed the issue that caused the Access Point to not start
  • installed python-catkin-tools package

2019-11-27

  • added support for Raspberry Pi 4 (fixed wi-fi problem, updated boot config)
  • updated leo ROS packages

2019-10-02

  • disabled Bluetooth
  • increased UART clock frequency to maximum
  • updated leo_bringup

2019-09-04

  • disabled husarnet-configurator service
  • updated Raspberry Pi kernel
  • updated leo_bringup and leo_ui

2019-07-15

2019-06-07

  • added fictionlab repository to apt lists
  • added ROS environment variables exports in .bashrc file
  • leo_bringup and raspicam_node ROS packages are now installed from fictionlab repository
  • DNS server (dnsmasq service) now resolves husarion hostname to 10.0.0.1 IP address
  • /opt/leo_ui directory is now owned by husarion user

leo_firmware

A program that is running on the CORE2 board. It exposes the robot’s capabilities, such as differential drive controller or servo control, to the main computer.
The release files and detailed description of changes can be found here

Summary of changes

v1.0.0 - 2020-03-24

  • 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

v0.5.1 - 2019-10-21

  • [IMU] added gyro bias to persistent config

v0.5 – 2019-10-02

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

v0.4 – 2019-09-04

  • 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

v0.3 – 2019-08-07

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

v0.2 – 2019-07-08

  • added torque limit parameter
  • updated servo parameters default values

v0.1 – 2019-06-02

  • added support for the informative LED
  • added power limit parameter
  • added debug variable
  • [fix] check array length in PWM callback

leo_bringup

A ROS package that contains scripts, launch files and configuration that enables starting the base functionality of Leo Rover.
The package sources are available here.

Summary of changes

1.0.0 - 2020-03-24

  • fixed leo_system shutdown command
  • added configuration files for camera and core2 firmware
  • added motors_model argument to the launch file

0.6.0 - 2020-02-12

  • changed camera frame id to camera_frame
  • added upload_description argument to leo_bringup.launch file

leo_description

A ROS package that contains Leo Rover’s model in URDF format.
The package sources are available here.

Summary of changes

0.2.0 - 2020-02-12

  • exported new, more up-to-date part models in COLLADA format
  • added rviz.launch file
  • changed camera link name to camera_frame

2020-02-08 updates

New Leo Image released! Download it from here.

Leo Image

fixed the issue that caused the Access Point to not start

NetworkManager sometimes took control of the external wireless interface due to udev not changing the interface name in time. The issue was resolved by delaying the start of the NetworkManager service at boot.

installed python-catkin-tools package

The package that provides catkin commands is now installed by default.

2020-02-12 updates

New Leo Image released! Download it from here.

leo_description

exported new, more up-to-date part models in COLLADA format

The new part models resemble more the current version of Leo Rover. They are more detailed and contain color information as opposed to the previous version. The model of the base link was exported in such a way that the origin is placed in a known, fixed location to provide a good point of reference for child links.

added rviz.launch file

This launch file starts RViz with the configuration that shows the current robot model. It provides a quicker way to visualize the current state of Leo.

changed camera link name to camera_frame

The link name was changed to comply with the established naming conventions which say that the names of links that don’t have any visual properties and are only used as a reference frame, should end with a _frame keyword.

leo_bringup

changed camera frame id to camera_frame

The camera images are now published with the frame_id parameter set to camera_frame. The change was made to comply with the newer version of leo_description.

added upload_description argument to leo_bringup.launch file

This parameter controls whether to upload the URDF model to the Parameter Server. Setting this to false is useful when the robot description is provided externally.

Leo Image

changed the way ROS nodes are started at boot to provide a more user-friendly mechanism for adding new functionalities

The user now can easily modify the set of nodes that are started at boot and the robot description that is uploaded to the Parameter Server without building any packages. The behavior can be adjusted by modifying the files located at the /etc/ros/ directory. More of that will be covered soon at the ROS Development tutorial.

updated leo_bringup and leo_description packages

2020-03-24 updates

leo_firmware

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.

leo_bringup

fixed leo_system shutdown command

Previously, the leo_system node performed a reboot on /system/shutdown command. This has been fixed and now the RPi properly shuts down upon receiving the shutdown command.

added configuration files for camera and core2 firmware

The launch file now loads the parameters for the raspicam_node and leo_firmware from the YAML files located in the config/ directory. The firmware parameters are required starting from the v1.0.0 version of leo_firmware. For the camera node, the ISO, contrast and saturation parameters have been slightly adjusted to work better in darker environments.

added motors_model argument to the launch file

The argument specifies the motor parameters to load for the leo_firmware. The supported values are buehler (default) and pololu. The argument can be set either by passing the value to the launch file or by setting the LEO_MOTORS environment variable.

2 Likes

2020-04-23 updates

leo_bringup

used relative topic names in leo_system node

The leo_system node now uses relative names instead of global for the reboot and shutdown topics. This makes it easier to run the node under a namespace.

Leo Image

added source /etc/ros/setup.bash line to ~/.bashrc file

As the /etc/ros/setup.bash can be considered the global setup file for Leo’s ROS installation, it is now sourced at the start of every console session.

fixed the issue with /var/log/ros directory permissions

When using the /etc/ros/setup.bash, starting a node without root privileges resulted in an error due to not sufficient permissions to the /var/log/ros directory which is used as a global ROS logging directory. This has been fixed by adding write permissions to this directory for all users.

updated leo_bringup and leo_ui

The leo_ui has got two minor changes:

  • the angular velocity scale has been modified to work better with the newest leo_firmware.
  • the topic names have been changed to relative (removed the leading /) to support putting the nodes into a namespace.

updated the leo service (files under /etc/ros)

The /etc/ros/setup.bash file has been expanded a little. The /etc/ros/robot.launch now sets the tf_prefix parameter (which defaults to ROS_NAMESPACE environment variable) to fully support multi-robot setup.

downloaded newest leo_firmware binary to the home directory

1 Like

2020-05-18 updates

Leo Image

added support for wifi modules that are based on rtl88XXau chipsets

The image now contains drivers for Realtek rtl8812au, rtl8811au, rtl8821au and rtl8814au usb wifi devices. An udev rule configures the module as an access point, so it can be used to replace the ralink rt2800 wifi dongle. The support was tested on the Alfa AWUS036ACS device.

modified hostapd config to enable High-Throughput mode (802.11n)

The new configuration makes use of the IEEE 802.11n standard which should allow for a throughput of around 100Mb/s when using a 40MHz channel. It also enables WMM which provides Quality of service features.

USB-WiFi-Modul UM8812AU-EX Alfa Network 802.11 ac. Not allowed in Germany !!!