1.1.0
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
andrear_light_link
were renamed tofront_bumper_link
andrear_bumper_link
.front_light_link
andrear_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, andport
,timeout
andping_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 tomotor_power
. hardware/motor_on
topic in relays_node.py was removed, and its functionality was moved to the emulatedhardware/io_state
topic in the message filedmotor_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.