Skip to content

Angular acceleration envelope is violated under safe /cmd_vel commands #99

Description

@147258369ymc

Robot Model

Turtlebot4 Standard

ROS distro

Jazzy

Networking Configuration

Simple Discovery

OS

Ubuntu 24.04

Built from source or installed?

Installed

Package version

ros-jazzy-turtlebot4-simulator: 2.0.2-1noble.20260616.091643
ros-jazzy-turtlebot4-gz-bringup: 2.0.2-1noble.20260616.085653
ros-jazzy-irobot-create-control: 3.0.4-1noble.20260616.082318
ros-jazzy-irobot-create-gz-bringup: 3.0.4-1noble.20260616.083553
ros-jazzy-irobot-create-nodes: 3.0.4-1noble.20260615.161556
ros-jazzy-ros-gz: 1.0.22-1noble.20260616.074726
Gazebo: Harmonic / gz

Expected behaviour

The TurtleBot4/Create3 simulation stack should limit `angular.z` acceleration to the configured value:

```yaml
angular.z.has_acceleration_limits: true
angular.z.max_acceleration: 7.725
angular.z.min_acceleration: -7.725

Under safe /cmd_vel commands, both /diffdrive_controller/cmd_vel.angular.z and /odom.twist.twist.angular.z should satisfy:

|d(angular.z)/dt| <= 7.725 rad/s^2

### Actual behaviour

```markdown
The angular channel exceeds the configured acceleration limit even though the input angular velocity remains safe.

Latest 1000-round campaign:

- `angular_acceleration` oracle label appeared **517** times
- max odom angular acceleration ratio: **2.33x**
- max `/diffdrive_controller/cmd_vel` angular acceleration ratio: **6.62x**
- max external command `|angular.z|`: **0.800 rad/s**, below the configured `1.9 rad/s` limit

Representative frame `1782642590.4508777`:

```text
TB4 angular acceleration envelope violated:
  odom accel = -10.506 rad/s^2
  odom ratio = 1.36x
  limit      = [-7.725, 7.725] rad/s^2

Supporting /diffdrive_controller/cmd_vel angular ratio = 3.59x

Representative angular odom-only frame 1782633493.955823:

TB4 angular acceleration envelope violated:
  odom accel = -10.011 rad/s^2
  odom ratio = 1.30x
  limit      = [-7.725, 7.725] rad/s^2

### Error messages

```bash
TB4 angular acceleration envelope violated: accel=-10.506 rad/s^2 ratio=1.36 limit=[-7.725, 7.725]
TB4 angular acceleration envelope violated: accel=-10.011 rad/s^2 ratio=1.30 limit=[-7.725, 7.725]

To Reproduce

1. Start TurtleBot4 Standard simulation on ROS 2 Jazzy.
2. Record `/cmd_vel`, `/diffdrive_controller/cmd_vel`, `/odom`, `/wheel_vels`, and `/clock`.
3. Publish a safe angular command sequence such as:

```text
(+0.000,+0.800)x8
(+0.000,-0.800)x8
(+0.000,+0.800) -> (+0.000,-0.800) repeated

or this representative 8-step sequence:

step linear.x (m/s) angular.z (rad/s)
1 -0.123 -0.171
2 +0.050 -0.553
3 -0.018 -0.250
4 +0.112 +0.261
5 -0.050 +0.141
6 +0.130 -0.127
7 -0.050 +0.407
8 +0.005 -0.650
  1. Compute adjacent-sample acceleration on the angular.z component.
  2. Observe angular acceleration above 7.725 rad/s^2.


### Other notes


```markdown
This shows that the acceleration-limit problem is not only a linear forward/reverse issue. Angular-only and angular-dominant cases should be included in regression testing.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Fields

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