Robot controller that performs some basic safety task on top of the Husqvarna
driver node (am_driver_safe).
This node:
- Puts the Husqvarna driver into a known good state (loop detection off, manual control, ...)
- Performs keep alive handling on cmd_vel for safety.
- Handles collisions.
- Translates idiosyncratic battery & system status messages to more useful information for other components.
- Implements functionality to exit the charging station, as that is non-obvious.
Subscribed from front end:
cmd_vel(geometry_msgs/Twist) - Commanded driving speed. Keep-alive by repeated messages required or the robot will automatically stop.
Published to front end:
battery/a(sensor_msgs/BatteryState) - Battery state for battery Abattery/b(sensor_msgs/BatteryState) - Battery state for battery Bbattery/status(oru_ipw_controller/SimpleBatteryStatus) - Simplified battery status for web GUI.
Subscribed from Husqvarna driver:
hrp/battery_status(am_driver/BatteryStatus) - Low level battery statushrp/current_status(am_driver/CurrentStatus) - Low level system statushrp/sensor_status(am_driver/SensorStatus) - Low level system status
Published to Husqvarna driver:
hrp/cmd_mode(std_msgs/UInt16) - Mode controlhrp/cmd_vel(geometry_msgs/Twist) - Velocity command
For usage from front end:
exit_charging_station(std_srvs/Trigger) - Trigger an attempt to exit the charging station.
Called on the Husqvarna driver:
hrp/tif_command(am_driver_safe/TifCmd) - Used to control headlights.
~drive_timeout(double, default: 0.5) - Stop if no velocity command received within this time period [s]~low_battery_level(double, default: 18.0) - Voltage below which batteries are considered low.