Skip to content

Ackermann steering odometry bug? #878

Closed
@franzrammerstorfer

Description

@franzrammerstorfer

In my understanding, the current computation of the steering angles (left vs. right) in the ackermann odometry is wrong.

Disclaimer

Unfortunately, I could not find documentation on the frames/sign convention used for that calc, so this is more a question than a bug report.

IMO, we need to change the signs in the current implementation

double numerator = 2 * wheelbase_ * std::sin(alpha);
double denominator_first_member = 2 * wheelbase_ * std::cos(alpha);
double denominator_second_member = wheel_track_ * std::sin(alpha);
double alpha_r = std::atan2(numerator, denominator_first_member - denominator_second_member);
double alpha_l = std::atan2(numerator, denominator_first_member + denominator_second_member);
steering_commands = {alpha_r, alpha_l};

to something like

      double alpha_r = std::atan2(numerator, denominator_first_member + denominator_second_member);
      double alpha_l = std::atan2(numerator, denominator_first_member - denominator_second_member);

Here is why (sorry for not providing a proper formatted document, hopefully somebody is able to read this ...)
ackermann

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