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

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions