Limit rotation speed/acc in Navigation/base_local_planner
We are trying to use the navigation stack on a segway_rmp200. Currently we have configurated everything as said in this tutorial, we are not using a map yet, and we are sending a goal through rviz which can be reached going in a straight way (no obstacles between the robot and the goal).
Then, the segway starts doing weird translations and rotations, leaving the desired path, rotating, returning to the path, etc. Although it finally reaches the goal, the way it has moved is very weird. This is our first problem, and may result in a new question if the second problem is solved.
The second problem is that all these rotations are done with too high speed/acceleration and abrupt changes of direction, making it dangerous and not desirable to continue doing tests/debug to solve the first problem.
The parameters of the base_local_planner_params.yaml related to velocity and acceleration are set with low values (which seem to be ignored):
TrajectoryPlannerROS:
max_vel_x: 0.5
min_vel_x: 0.1
max_rotational_vel: 0.2
min_in_place_rotational_vel: 0.1
acc_lim_th: 0.05
acc_lim_x: 0.1
acc_lim_y: 0.1
holonomic_robot: false
In addition, running the dynamic reconfigure there are other similar parameters with different names as: max_vel_theta, min_vel_theta, min_in_place_vel_theta, acc_lim_theta; which have default higher values than the previous ones. We have modified them, but nothing has changed.
- Why is the rotation speed/acc not being limited with the configuration parameters?
- Why are there different parameter names (config yaml vs dynamic reconfigure) and which of them are the correct ones to tune? (3. Maybe related to 1, if not, future question: Why is our platform moving so weird to reach easy goals? How can we debug this behavior/state to see what is happening?)
Edited (after KruseT answer)
Now we are sure using the trajectory planner (dwa:false in base_local_planner_params.yaml), and can see the same values for yaml and dynamic-reconfigure parameters.
The problem continues. We set max_vel_th: 0.2 and acc_lim_th: 0.05, and the robot performs faster rotations. For example, the platform has received this two consecutive commands, where those limits have not been respected, and this is happening most of the time:
New Command Received: vT=0.100000 vR=0.000000
New Command Received: vT=0.117907 vR=1.371679
Translations are working fine. We have disabled recovery_behaviors, but there are no obstacles in the way so they shouldn't be used. We don't know how to continue debugging this to find out what's happening.
Any ideas?
Have you resolved this issue? I am having the exact same problem. Even if I command the robot to drive to a goal directly in front of it, it starts turning and (eventually)...gets to the goal after following a convoluted path.
We haven't resolved it yet. Now it's not our first priority issue, but we'll get back into it soon. We will try to do some debug and we also found some messages "Control loop missed its desired rate of 20.0000Hz..." so we will try decreasing the controller frequency.
If it's any help, I found that my problem was actually caused by latency in our localization algorithm's orientation estimate. Our global planner uses a fixed frame of /map and the local planner uses /odom, so bad (i.e. laggy) transformation from /map -> /odom was causing all of the issues.