Releases: husarion/panther_ros
2.1.2-beta
What's Changed
- Ros2 lights tests by @pawelirh in #407
- Add panther_codebase_version to docker image build payload by @pawelirh in #410
- Ros2 lights integration tests by @pawelirh in #408
- Fix safety_manager path by @delihus in #411
- Ros2 fix led bug by @KmakD in #441
- Release 2.1.2 by @github-actions in #449
- Release 2.1.2 to ros2 by @github-actions in #450
Full Changelog: 2.1.1...2.1.2
2.1.1-beta
What's Changed
- New format of documentation by @rafal-gorecki in #369
- Change scheme theme by @pawelirh in #380
- unify CMakeLists.txt files by @KmakD in #381
- Ros2 increase bt service timeout by @pawelirh in #382
- Ros2 estop sim gui by @rafal-gorecki in #384
- Fix links in documentations by @pawelirh in #387
- Ros2 battery estimation by @BOOTCFG in #376
- Ros2 unify filenames by @pawelirh in #386
- Add missing module configuration by @pawelirh in #389
- E-stop functionalities to Gazebo simulation by @rafal-gorecki in #383
- add nmea gps by @KmakD in #388
- Testing new approach - panther_diagnostics by @pawelirh in #349
- Add pre-commit workflow by @rafal-gorecki in #395
- Namespace refactor by @rafal-gorecki in #374
- LEDStrip plugin to Gazebo by @rafal-gorecki in #391
- gz_estop_gui by @rafal-gorecki in #400
- Remove deprecated --namespace arg by @rafal-gorecki in #403
- Update pr template by @pawelirh in #402
- Release 2.1.1 by @github-actions in #405
- Release 2.1.1 to ros2 by @github-actions in #406
New Contributors
Full Changelog: 2.1.0...2.1.1
2.1.0-beta
What's Changed
- Update release-repository.yaml by @pawelirh in #358
- battery node reads from /dev/battery | lights are read from symlink by @delihus in #347
- Update symlink names by @KmakD in #359
- Update driver_node.cpp by @rafal-gorecki in #363
- Ros2 api reorganization by @pawelirh in #362
- ROS 2 update release workflow by @KmakD in #364
- Remove battery symlink by @pawelirh in #366
- ROS 2 lights initialization by @KmakD in #365
- Ros2 fix lights build by @KmakD in #367
- Update-vcs by @rafal-gorecki in #368
- Process noise update by @rafal-gorecki in #361
- Ros2 fix wheels friction by @delihus in #370
- FIx timestamp calculation and implement some minor changes by @pawelirh in #371
- Fix imu tf frame by @rafal-gorecki in #373
- Ros2 system status tf namespace by @delihus in #372
- Hotfix handle can timeout by @pawelirh in #375
- Fixed gazebo lights tfs by @delihus in #377
- Release 2.1.0 by @github-actions in #378
- Release 2.1.0 to ros2 by @github-actions in #379
Full Changelog: 2.0.4...2.1.0
2.0.4-alpha
What's Changed
- Enable full history by @pawelirh in #338
- Remove date arg from release docker repo payload by @pawelirh in #339
- ROS 2 remove obsolate tests by @KmakD in #333
- Readme - add built-in animation table by @rafal-gorecki in #341
- Merge panther_lights tables by @rafal-gorecki in #342
- Update README.md by @delihus in #345
- Update readmes from ros2 upstream by @delihus in #346
- Move antenna to ros-components-description by @rafal-gorecki in #340
- Move GPIO driver to hardware_interfaces by @pawelirh in #343
- ROS 2 e-stop fixes by @KmakD in #348
- Ros2 update msgs by @delihus in #352
- Simulate LED Strip in Gazebo by @rafal-gorecki in #337
- Add EKF GPS configuration by @rafal-gorecki in #351
- Update vcs by @rafal-gorecki in #354
- Ros2 battery charger topic by @pawelirh in #353
- Update release-repository.yaml by @pawelirh in #355
- Release 2.0.4 by @github-actions in #356
- Release 2.0.4 to ros2 by @github-actions in #357
Full Changelog: 2.0.3...2.0.4
2.0.3-alpha
2.0.2-alpha
What's Changed
- Release project workflow hotfix by @pawelirh in #298
- Ros2 diagnose charging current by @pawelirh in #299
- Package rename by @rafal-gorecki in #300
- Multi robot spawn working by @rafal-gorecki in #256
- Patches with: gazebo, ekf and readme fixes by @rafal-gorecki in #302
- Panther Controller Patch by @rafal-gorecki in #303
- Ros2 control fix by @rafal-gorecki in #304
- Ros2 add components by @delihus in #277
- Removed test with wrong imu sensor name by @delihus in #305
- added diagnostics remapping and namespace to system_status by @delihus in #306
- Remove dummy scheduler header by @KmakD in #270
- YAML worflow 2 spaces format by @delihus in #309
- Increase the timeout and notify outside the scope by @pawelirh in #312
- Cleaned up VCS repos by @delihus in #315
- Ros2 logging by @delihus in #314
- Fix circular dependency in lights driver_node by @KmakD in #311
- Panther manager refactor by @KmakD in #301
- Use weak_ptr to avoid circular dependency in panther_battery package by @KmakD in #310
- Launch refactor by @rafal-gorecki in #307
- Fix default components config path by @KmakD in #318
- Ros2 fix battery and manager tests by @delihus in #319
- Release 2.0.2 by @github-actions in #324
- Release 2.0.2 to ros2 by @github-actions in #325
Full Changelog: 2.0.1...2.0.2
2.0.1-alpha
What's Changed
- Ros2 control imu hardware by @delihus in #236
- Add readme to panther_controller by @rafal-gorecki in #261
- Absolute URL by @rafal-gorecki in #264
- Ros2 os diagnostics by @delihus in #259
- ROS 2 add disable manager argument by @pawelirh in #265
- Ros2 fix imu reconnection by @delihus in #267
- Add unit test workflow by @pawelirh in #266
- Manager launch fix by @rafal-gorecki in #269
- Add E-Stop manager by @pkowalsk1 in #268
- Unify version and add changelog for panther_diagnostics by @pawelirh in #274
- Temporarily disable unit test workflow by @pawelirh in #275
- Fix battery discharge by @rafal-gorecki in #273
- Ros2 automatize release process by @pawelirh in #272
- Ros2 reorganize release candidate workflow by @pawelirh in #281
- Remove spatial args by @pawelirh in #283
- Add PR body by @pawelirh in #284
- Prevent unwanted PR by @pawelirh in #285
- FIx typo in release workflow by @pawelirh in #288
- Ros2 fix workflow by @pawelirh in #292
- Add missing quotes by @pawelirh in #293
- Ros2 handle boolean args by @pawelirh in #294
- Fix release workflow by @pawelirh in #295
- Release 2.0.1 by @github-actions in #296
- Release to ros2 by @github-actions in #297
New Contributors
- @github-actions made their first contribution in #296
Full Changelog: 2.0.0...2.0.1
2.0.0-alpha
What's Changed
- ROS 2 add panther package by @KmakD in #123
- ROS 2 panther utils package by @KmakD in #125
- ROS 2 panther battery package by @KmakD in #128
- fix current for roboteq republisher by @KmakD in #133
- Baterry capacity unmeasured to nan by @Kotochleb in #136
- Fix battery type from li-pol to li-ion by @Kotochleb in #138
- Ros2 gazebo by @pkowalsk1 in #201
- Update external_antenna.urdf.xacro by @pkowalsk1 in #203
- Add panther_gazebo launch params docs by @pkowalsk1 in #204
- ROS 2 adc node by @KmakD in #135
- Add pre-commit, clang-format and license to files by @Kotochleb in #207
- ROS 2 add Roboteq Battery by @KmakD in #206
- ROS 2 imu node by @KmakD in #212
- fix branch merge error by @KmakD in #209
- ROS 2 panther lights by @KmakD in #210
- ROS 2 - Add GPIO driver package by @pkowalsk1 in #211
- ROS 2 lights gpio handle by @KmakD in #213
- ROS 2 ekf update by @KmakD in #214
- Manuall merge of ros2-prealpha to ros2-dev by @KmakD in #218
- ros2_control PDO commands by @macstepien in #219
- Move ros test utils to separate file and add ExpectThrowWithDescription by @KmakD in #228
- Ros2 - Add GPIO Tests by @pkowalsk1 in #220
- Gazebo - fix collisions by @rafal-gorecki in #225
- Ros2 diagnostics by @pawelirh in #224
- Ros2 code style fixes by @macstepien in #215
- Update readme in battery and lights after diagnostics changes by @pawelirh in #230
- Add IMU noise + basic EKF configuration by @rafal-gorecki in #229
- Add GPIO controller by @macstepien in #222
- Add ros2 control by @macstepien in #208
- Add mecanum controller by @rafal-gorecki in #227
- ROS 2 - Update Service Wrapper by @pkowalsk1 in #233
- Ros2 diagnostics hardware interfaces by @pawelirh in #231
- Fix dependencies by @rafal-gorecki in #235
- ROS 2 control liblely instalation by @KmakD in #239
- ROS2 - Fix Power Motor Service by @pkowalsk1 in #238
- ROS2 - Fix Pointer Cyclic Dependencies by @pkowalsk1 in #242
- Ros2 lights controller by @KmakD in #241
- ROS 2 - Fix Roboteq Battery by @pkowalsk1 in #245
- undo test remove by @KmakD in #244
- ROS2 - Update CAN Filter Parameters by @pkowalsk1 in #243
- Changed controllers spawn timeout to 10 by @delihus in #248
- Hardware / Sim Dependencies by @rafal-gorecki in #251
- Dependency simulation fix by @rafal-gorecki in #252
- Ekf optimalization by @rafal-gorecki in #240
- ROS 2 - Fix Motor States QoS by @pkowalsk1 in #250
- ROS 2 - Fix estop threads by @pkowalsk1 in #249
- ROS 2 disable liblely debug logs by @pawelirh in #254
- Ros2 manager plugins by @delihus in #232
- Ros2 panther manager by @KmakD in #246
- Ros2 lights tests by @rafal-gorecki in #234
- Ros2 control add tests by @KmakD in #253
- ROS 2 - Add GPIOController Tests by @pkowalsk1 in #247
- Divide Headers into std and local liblaries by @rafal-gorecki in #257
- Ros2 namespace by @rafal-gorecki in #255
- ROS 2- Fix Error Clearing Mechanism for Roboteq Controllers by @pkowalsk1 in #258
- Release 2.0.0 alpha by @pawelirh in #260
New Contributors
- @macstepien made their first contribution in #219
- @pawelirh made their first contribution in #224
- @delihus made their first contribution in #248
Full Changelog: 1.1.0...2.0.0
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 file...
1.0.0
Panther ROS v1.0.0
This software is compatible with all Panther versions, the only requirement is an update to the latest system image. The software automatically detects the hardware revisions of robots and launches the correct software stack according to the configurations.
Panther Battery
Battery logging has been improved, with the ability to self-detect the presence of a second battery and estimate the battery state accurately.
Panther Bringup
All launch files and global robot configurations are now stored in a single package.
Panther Description
A revised version of the URDF model of the robot has been included with the following features:
- Optimized visual meshes for good appearance and low resource consumption.
- A simplified yet accurate collision mesh.
- A user interface for non-standard wheels.
- Transforms aware of robot revisions.
- Predefined user-space transforms to simplify the attachment of user components.
- A predefined variety of sensor models found in husarion/ros_components_description.
Panther Driver
The driver node has been improved with the following features:
- CAN bus logging with extended motor controller information.
- Accurate
/joint_state
message with torque estimation. - Extended error handling.
Panther Gazebo
The URDF-based simulation model has been tightly integrated with the simulation model for best performance and sim2real accuracy.
Panther Lights
A new scalable LED animation system has been introduced with the following features:
- A priority queue of animations.
- Easily scalable animation definitions with YAML syntax.
- Animations can be dynamically defined based on images or Python 3 functions.
- Predefined animations for:
- Ready robot,
- Emergency stop,
- Charging,
- Battery state,
- Low battery,
- Critical battery.
- Ability to test animations in RViz without a physical robot.
- Animations can be defined at runtime.
Panther Manager
A new system monitor has been added, extending the safety of the robot with the following features:
- Automatic temperature control of internal components.
- Automatic detection of critical conditions and emergency stopping.
- Soft shutdown of user computers.
Panther Power Control
The network usage has been optimized with reduced numbers of sent messages via ROS topics. The safety has been improved with false-positive pin state detection filtering.