Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add max vel linear #346

Merged
merged 10 commits into from
Feb 8, 2022
Merged

add max vel linear #346

merged 10 commits into from
Feb 8, 2022

Conversation

renan028
Copy link
Collaborator

@renan028 renan028 commented Jan 11, 2022

Problem Description

When we use holonomic robots, we should limit the maximum linear velocity (L-inf, L-1 or L-2 norm), not only max_vel_x and max_vel_y, because they are coupled.

Otherwise, the optimization for vx and vy results in max_vel_x and max_vel_y in open / collision-free paths. The robot will always move diagonally because the resultant (linear velocity) is greater. However, the maximum velocity is coupled and bounded to the actual maximum linear velocity of the robot. This new constraint should be added to the optimizer.

The video below shows the robot moving diagonally and it fixes the orientation at the end:

non_max_vel_linear_2.mp4

And one can see that the behaviour of the robot is not what we expect for a holonomic robot (changing orientation a lot, and moving diagonally):

vlc-record-2022-01-11-15h01m21s-non_max_vel_linear.mp4-.mp4

Solution

Add max_vel_linear for holonomic robots and add the constraint to the optimization.

Long path not moving diagonally:

max_vel_linear_2.mp4

Moving around:

max_vel_linear_2.mp4

@corot corot requested review from corot and siferati January 11, 2022 19:03
cfg/TebLocalPlannerReconfigure.cfg Outdated Show resolved Hide resolved
include/teb_local_planner/g2o_types/edge_velocity.h Outdated Show resolved Hide resolved
include/teb_local_planner/teb_config.h Outdated Show resolved Hide resolved
cfg/TebLocalPlannerReconfigure.cfg Outdated Show resolved Hide resolved
src/teb_config.cpp Outdated Show resolved Hide resolved
src/teb_config.cpp Outdated Show resolved Hide resolved
src/teb_local_planner_ros.cpp Outdated Show resolved Hide resolved
src/teb_local_planner_ros.cpp Outdated Show resolved Hide resolved
src/teb_config.cpp Outdated Show resolved Hide resolved
src/teb_config.cpp Outdated Show resolved Hide resolved
Copy link
Collaborator

@corot corot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still requires some refinements, but nice fix!

@SteveMacenski, I think this can be interesting also for Nav2 version, so please, take a look if u have time

Copy link
Collaborator

@corot corot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm, but I would remove the L1, L2 param

Copy link
Collaborator

@corot corot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q

src/teb_config.cpp Outdated Show resolved Hide resolved
Copy link
Collaborator

@corot corot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cool!

src/teb_config.cpp Outdated Show resolved Hide resolved
src/teb_config.cpp Outdated Show resolved Hide resolved
@corot corot requested a review from croesmann January 21, 2022 00:01
@corot corot merged commit f737130 into rst-tu-dortmund:melodic-devel Feb 8, 2022
@renan028 renan028 deleted the holonomic_max_vel_linear branch February 8, 2022 08:16
@corot
Copy link
Collaborator

corot commented Mar 11, 2022

There was an old issue for this #89

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants