Skip to content

RPP-related Improvements/questions #5248

Open
@mini-1235

Description

@mini-1235

Hi, I have recently tried RPP on my omnidirectional robot, according to the tuning guide https://docs.nav2.org/tuning/index.html, it is not supported for omnidirectional robot, so I have tried to modify the code and played with it for a couple of hours.

I have two questions about it:

  • Are there any reason that RPP cannot support omnidirectional robot? I tried to add linear.y in the following part:

    double RegulatedPurePursuitController::getLookAheadDistance(
    const geometry_msgs::msg::Twist & speed)
    {
    // If using velocity-scaled look ahead distances, find and clamp the dist
    // Else, use the static look ahead distance
    double lookahead_dist = params_->lookahead_dist;
    if (params_->use_velocity_scaled_lookahead_dist) {
    lookahead_dist = fabs(speed.linear.x) * params_->lookahead_time;
    lookahead_dist = std::clamp(
    lookahead_dist, params_->min_lookahead_dist, params_->max_lookahead_dist);
    }

    geometry_msgs::msg::TwistStamped cmd_vel;
    cmd_vel.header = pose.header;
    cmd_vel.twist.linear.x = linear_vel;
    cmd_vel.twist.angular.z = angular_vel;
    return cmd_vel;

    and set the allow_reversing as true, it seems that it is working properly on my robot, I can share a video and my config if needed

  • The only thing I noticed is, since my robot has a ~3.0rad/s angular velocity, the orientation turns a little bit more than my goal and does not always match with the yaw_tolerance in goal checker, for xy, we have approach_velocity_scaling_dist that slows down the robot if close enough to the goal, is it reasonable to do the same thing for wz?

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