Skip to content

Inaccurate odometry at low speeds on Create 1 #28

Closed
@lopsided98

Description

@lopsided98

An annoying issue I am running into with my Create 1 is that at low speeds angular velocities, the odometry does not register that the robot is turning. After thinking about this for a while I realized this is because of the incremental nature and low resolution of the angle sensor field.

Since this field only has a resolution of 1 degree, and it is polled and reset to 0 every 15 ms, this means that any rotational speed below 67 deg/sec appears as no movement, assuming the value is rounded down. I haven't measured exactly, but this seems to match the behavior I have noticed.

Another side effect of this issue is that the odometry reading can drift significantly even at higher speeds, because of the rounding of the angle. In the worst case, this could mean that the heading is drifting 67 or 33 deg/sec, depending on whether the angle is rounded down or to the nearest whole number.

There are a few ways I can think of fixing this problem. Sampling at a lower rate would reduce the minimum speed at which rotation can be measured, but it really doesn't solve the problem. Another way to mitigate the problem is to integrate the wheel velocities, but this has its own issues. For one, the Create only exposes its requested wheel velocities, but these might be close enough to the actual velocities to make an improvement over the current situation.

I am really starting to see why the Turtlebot includes a gyroscope, and I might investigate this as another solution.

I'll test out a few solutions and submit a PR if I can make any improvements.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions