Skip to content

1.1.0

Compare
Choose a tag to compare
@Kotochleb Kotochleb released this 18 Sep 12:58

General

Warning
This release required changes in the low level of the Built-in Computers operating system.
You need to install system image version 1.1.0 to use this update!

  • Updated documentation, fixing broken links and adding more in-depth information about nodes.
  • All nodes are now launched with the postfix _node.
  • All dependencies are now fully encapsulated within rosdep and do not require installing anything manually.
  • Raspberry Pi-specific dependencies were removed and replaced with general, standard Linux libraries.
  • Some of the code was rewritten in C++ to improve efficiency.
  • Hardware access to the nodes was modified to allow for strict confinement of containerized applications.
  • Added RViz plugin visualizing the Bumper Lights animation. See rviz_textured_quads.

panther_battery

New Features

  • The robot will not find itself charging when the charger is not connected to a wall socket.
  • Extended logging of battery state.

API Changes

  • sensor_msgs/BatteryState field power_supply_health is now populated.
  • In the case of can_net_err battery state is not updated.

Bug fixes

  • Added thread locks to prevent race conditions.
  • Changed battery type from LIPO to LION.
  • Percentage values are now clamped to a range between 0 and 1.
  • The discharge current is now negative.
  • The race condition, sometimes occurring when nodes start killing it, is now resolved.

panther_bringup

New Features

  • Added default EKF configuration for fusion of IMU and wheel odometry.
  • The system now checks whether the detected system configuration matches the one read from the EEPROM. If a mismatch occurs, the user will be notified, and ROS nodes will be prevented from launching.
  • New node welcome_msg_node.py greets the user with a friendly welcome message and printing information about detected hardware, the currently running software version, and possible launching errors such as hardware mismatch.

API Changes

  • New topic odometry/filtered publishing the odometry fused by the EKF.
  • The gravity vector is now removed in imu/data message.
  • New launch parameters:
    • bt_project_file: custom behavior tree project used by manager_bt_node.
    • exit_on_wrong_hw: specify if all ROS nodes from the launch file should be killed if incorrect hardware is detected.
    • use_ekf: enable or disable EKF (see documentation for more information).
  • Removed launch parameters:
    • launch_lights_scheduler

Bug fixes

  • PhidgetsSpatialNodelet now runs as a separate node to improve robustness.

panther_description

New Features

  • Wheel config has a new parameter odom_stderr: { vel_x: 0.0, vel_y: 0.0, vel_yaw: 0.0 } allowing to specify the standard deviation of odometry for different wheel types. Those parameters are used by panther_driver_node.

API Changes

  • front_light_link and rear_light_link were renamed to front_bumper_link and rear_bumper_link.
  • front_light_link and rear_light_link are now at the height of the Bumper Lights LED panels and are meant to be reference frames for the animation images.

Bug fixes

  • Meshes are now resolved by package name and not by the local file path, evaluated by Xacro.

panther_driver

New Features

  • Added a velocity smoother, limiting velocities and accelerations.

API Changes

  • New driver_node.py parameters:
    • ~max_vel_x: maximum velocity in the X direction.
    • ~max_vel_y: maximum velocity in the Y direction.
    • ~max_vel_theta: maximum angular velocity about the Z axis.
    • ~acc_lim_x: maximum linear acceleration in the X direction.
    • ~acc_lim_y: maximum linear acceleration in the Y direction.
    • ~acc_lim_theta: maximum angular acceleration about the Z axis.
    • ~decel_lim_x: maximum linear deceleration in the X direction.
    • ~decel_lim_y: maximum linear deceleration in the Y direction.
    • ~decel_lim_theta: maximum angular deceleration about the Z axis.
    • ~emergency_decel_lim_x: maximum linear deceleration in the X direction when emergency breaking occurs.
    • ~emergency_decel_lim_y: maximum linear deceleration in the Y direction when emergency breaking occurs.
    • ~emergency_decel_lim_theta: maximum angular deceleration about the Z axis when emergency breaking occurs.
    • ~odom_stderr/vel_x: standard deviation used in odometry for velocity in the X direction.
    • ~odom_stderr/vel_y: standard deviation used in odometry for velocity in the Y direction.
    • ~odom_stderr/vel_yaw: standard deviation used in odometry for angular velocity around the Z axis.
  • Transforms based on wheel odometry are now disabled by default in driver_node.py and are published by the EKF node.
  • Covariance in odom/wheels topic are now set values determined during experiments.

Bug fixes

  • Added thread locks to prevent race conditions.
  • Improved robustness of CAN network error detection.
  • Power-related errors and warnings to motor drivers are now suppressed if motors are powered off.

Backend Changes

  • CAN abstraction layer was refactored.
  • CAN network error now relies on motor controllers' heartbeat.

panther_gazebo

API Changes

  • New launch parameters:
    • use_gpu: whether to use GPU acceleration for sensors.
    • wheel_type: wheel type to use with the robot.
    • publish_robot_state: whether to publish the default robot model.
    • pos_x: initial position of the robot in the X direction.
    • pos_y: initial position of the robot in the Y direction.
    • pos_z: initial position of the robot in the Z direction.
    • rot_yaw: initial rotation of the robot alongside Z axis.
    • world_file: file path to world to be loaded.

panther_lights

New Features

  • Improved checks regarding received animation image frames.
  • Added thread locks to prevent race conditions.
  • A dimming sequence after the battery animation was added to improve its readability.

Bug fixes

  • Bumper Lights will not stop ambient animation until the first animation frame arrives. This includes all black frames.
  • Animation queue sorting by time is fixed.

Note
Bugfixes regaring scheduler can be found in panther_manager.

Backend Changes

  • scheduler_node.py was removed, and its responsibilities were moved to panther_manager.
  • APA102C driver was rewritten in C++ for better performance.
  • The driver now uses two separate virtual SPI buses to switch between LED panels.
  • RPi.GPIO library was replaced with Libgpiod.
  • Pin numbers are now stored in the kernel and are accessed via their labels.

panther_manager

New Features

  • The safety of the robot is now managed by behavior trees based on the BehaviorTree.CPP 4 library.
  • Software shutdown now have new options:
    • ping_for_success: if false, assume the computer is shutdown after receiving the command and there is no need to verify it.
    • port: port used to ssh into the device.
    • timeout: timeout waiting for given host to shutdown.
  • Custom BT nodes you can use in your project for:
    • Shutting down a single computer.
    • Shutting down many computers specified in shutdown_hosts.yaml.
    • Calling ROS service of type std_srvs/Trigger.
    • Calling ROS service of type std_srvs/SetBool.
    • Calling ROS service of type panther_msgs/SetLEDAnimation.
    • Signalling the main tree, the robot can shutdown itself.
  • Separate, executed in parallel, trees for:
    • Bumper Lights animations scheduling.
    • Robot's internal safety measures.
    • Software shutdown procedures.
  • Preconfigured behavior tree trees for all Panther versions.
  • Vastly improved internal temperature-related safety, including procedures related to overvoltage and overheating components.
  • Ability to modify the behavior of the manager and monitor its state in real time with the visual tool Groot2.
  • System errors are now displayed on the Bumper Lights.

API Changes

  • manager.launch file is now manager_bt.launch.
  • manager_node.py is replaced by manager_bt_node.
  • The launch file has new parameters:
    • bt_project_file: behavior tree project file.
    • manager_bt_config_file: manager_bt_config.yaml file.
  • In shutdown hosts yaml file syntax was changed. identity_file was removed, and port, timeout and ping_for_success parameters were added. See the table below for a side-by-side comparison:
Old format New format
hosts:
 - ip: 10.15.20.3
   username: husarion
   cmd: /home/husarion/my_custom_shutdown.sh
   identity_file: /home/husarion/.ssh/id_rsa
hosts:
 - ip: 10.15.20.3
   username: husarion
   command: /home/husarion/my_custom_shutdown.sh
   port: 22
   timeout: 5.0
   ping_for_success: true

Bugfixes

  • Faster response to displaying charging animation when charger is unplugged.

Backend Changes

  • Scheduling animations is now held by manager_bt_node instead of lights_schedular.py.
  • system_status_node.py is now compatible with the older apt-based version of psutil and does not require a separate pip installation.

panther_power_control

New Features

  • hardware/motor_power_enable service of type std_srvs/SetBool was added to all Panther revisions.

API Changes

  • panther_msgs/IOState message field motor_on was changed to motor_power.
  • hardware/motor_on topic in relays_node.py was removed, and its functionality was moved to the emulated hardware/io_state topic in the message filed motor_power.

Bug fixes

  • Added thread locks to prevent race conditions.

Backend Changes

  • RPi.GPIO library was replaced with Libgpiod.
  • Pin numbers are now stored in the kernel and are accessed via their labels.