Skip to content

Reverse motion consistently triggers BACKUP_LIMIT (hazard type: 0) and inhibits wheel operation (pwm: -32767) #697

@QuangMDoan

Description

@QuangMDoan

Robot Model

Turtlebot4 Standard

ROS distro

Jazzy

Networking Configuration

Discovery Server

OS

Ubuntu 24.04

Built from source or installed?

Built from Source

Package version

ubuntu@turtlebot4:~$ dpkg -s ros-jazzy-turtlebot4-navigation
Package: ros-jazzy-turtlebot4-navigation
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 2472
Maintainer: rkreinin rkreinin@clearpathrobotics.com
Architecture: arm64
Version: 2.0.1-1noble.20241028.132320
Depends: ros-jazzy-nav2-bringup, ros-jazzy-nav2-simple-commander, ros-jazzy-slam-toolbox, ros-jazzy-ros-workspace
Description: Turtlebot4 Navigation

Type of issue

Other

Expected behaviour

The ros2 action send_goal command below should work

ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: -0.8}

Summary

Create3 base consistently latches BACKUP_LIMIT (hazard type 0) when commanding reverse. Robot moves back a little, then stalls with PWM inhibited. Forward can work, but reverse often re-latches. This blocks /drive_distance reverse commands and leaves wheels inhibited.

Environment

  • OS: Ubuntu 24.04.4 LTS
  • ROS 2: Jazzy
  • Platform: TurtleBot4 / Create3 base
  • RMW: FastDDS
  • Safety override: set to FULL in Create3 web UI

Steps to Reproduce

  1. Run reverse using action:
    ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: -0.8}"
  2. Robot moves back briefly, then stalls.

Expected

Robot completes reverse distance.

Observed

Robot stalls; hazard_detection shows BACKUP_LIMIT (type: 0) and wheels are inhibited (pwm: -32767)

Evidence / Logs

$ ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: -0.8}"  
Waiting for an action server to become available...
Sending goal:
     distance: -0.8
max_translation_speed: 0.3

Goal accepted with ID: cab390187ce243a99b11561f3986d36e

<The robot moves back a little, then stalls...>


$ ros2 topic echo /hazard_detection --once 
header:
  stamp:
    sec: 1779595667
    nanosec: 69189120
  frame_id: base_link
detections:
- header:
    stamp:
      sec: 1779596186
      nanosec: 964498194
    frame_id: base_link
  type: 0
---

# to decode what type: 0 means, run ' ros2 interface show ' command 

$ ros2 interface show irobot_create_msgs/msg/HazardDetection
# This message describes a detected hazard.
# The frame ID allows to retrieve the location of the sensor that made the detection.

# The robot has reached its backup limit. It will not drive further backward for safety reasons.
# You can disable this limit through the Create3 "safety_override" parameter by setting it
# to "backup_only" or "full".
# The Create3 webserver can be used to set a default value for the parameter.
uint8 BACKUP_LIMIT=0
# The robot has bumped against an obstacle
uint8 BUMP=1
# The robot detected a cliff
uint8 CLIFF=2
# The wheels of the robot are stalled against an obstacle
uint8 STALL=3
# The wheels of the robot are fully dropped
uint8 WHEEL_DROP=4
# The robot detects an obstacle in close proximity
uint8 OBJECT_PROXIMITY=5

std_msgs/Header header
	builtin_interfaces/Time stamp
		int32 sec
		uint32 nanosec
	string frame_id
uint8 type



$ ros2 topic echo /wheel_status --once
header:
  stamp:
    sec: 1779596232
    nanosec: 711027775
  frame_id: base_link
current_ma_left: 0
current_ma_right: 0
pwm_left: -32767
pwm_right: -32767
wheels_enabled: true
---

Actual behaviour

Robot stalls; hazard_detection shows BACKUP_LIMIT and wheels are inhibited.

Error messages

$ ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: -0.8}"  
Waiting for an action server to become available...
Sending goal:
     distance: -0.8
max_translation_speed: 0.3

Goal accepted with ID: cab390187ce243a99b11561f3986d36e

Result:
    pose:
  header:
    stamp:
      sec: 0
      nanosec: 0
    frame_id: ''
  pose:
    position:
      x: 0.0
      y: 0.0
      z: 0.0
    orientation:
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0

Goal finished with status: ABORTED

To Reproduce

  1. undock the turtlebot 4
ros2 action send_goal /undock irobot_create_msgs/action/Undock
  1. move the turtlebot 4 forward
ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: 1.0}"  
  1. move the bot backward
ros2 action send_goal /drive_distance irobot_create_msgs/action/DriveDistance "{distance: -0.8}"  

<The robot moves back a little, then stalls...>
  1. While reverse motion is being stuck: ssh into turtlebot 4 and print out messages from /hazard_detection and /wheel_status topics
$ ros2 topic echo /hazard_detection --once 
header:
  stamp:
    sec: 1779595667
    nanosec: 69189120
  frame_id: base_link
detections:
- header:
    stamp:
      sec: 1779596186
      nanosec: 964498194
    frame_id: base_link
  type: 0

<To decode what type: 0 means, run 'ros2 interface show irobot_create_msgs/msg/HazardDetection'>

$ ros2 interface show irobot_create_msgs/msg/HazardDetection
# This message describes a detected hazard.
# The frame ID allows to retrieve the location of the sensor that made the detection.

# The robot has reached its backup limit. It will not drive further backward for safety reasons.
# You can disable this limit through the Create3 "safety_override" parameter by setting it
# to "backup_only" or "full".
# The Create3 webserver can be used to set a default value for the parameter.
uint8 BACKUP_LIMIT=0
# The robot has bumped against an obstacle
uint8 BUMP=1
# The robot detected a cliff
uint8 CLIFF=2
# The wheels of the robot are stalled against an obstacle
uint8 STALL=3
# The wheels of the robot are fully dropped
uint8 WHEEL_DROP=4
# The robot detects an obstacle in close proximity
uint8 OBJECT_PROXIMITY=5

std_msgs/Header header
	builtin_interfaces/Time stamp
		int32 sec
		uint32 nanosec
	string frame_id
uint8 type

$ ros2 topic echo /wheel_status --once
header:
  stamp:
    sec: 1779596232
    nanosec: 711027775
  frame_id: base_link
current_ma_left: 0
current_ma_right: 0
pwm_left: -32767
pwm_right: -32767
wheels_enabled: true
---

Metadata

Metadata

Labels

troubleshootingSystem not working as expected, may be user error.

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions