dwa local planner: deceleration limit?
Looking at http://wiki.ros.org/dwa_local_planner I see the config parameter acc_lim_x
(x acceleration limit) which is needed for forward simulation.
Why is there no parameter dec_lim_x
(x deceleration limit) which would be equally important for forward simulation? Wouldn't it be crucial to know how fast the robot can come to a halt? One cannot simply assume that the deceleration is the same as the acceleration, the dec limit is likely higher than the acc limit.
AFAIK the navigation stack and ros itself was made with service robots (indoor) in mind. Slow speed, low inertia, even ground, highly geared motors, auto brakes (NULL locks). This assumptions would make near instant stop capabillity a given (collision avoidance), accurate deceleration just wouldnt be a concern. Its the engineers job to make the mechanics beeing able to follow the commands. Zero linear_x should lock the wheels or give max deceleration (anti lock system). Also there are the parameters "scaling_speed" (The absolute value of the velocity at which to start scaling the robot's footprint, in m/s ) and "max_scaling_factor" (The maximum factor to scale the robot's footprint). Iam not 100% sure but as I understand them, they are for implementing a save stoping distance, or point of deceleration. The faster you go the earlier the footprints "cost" increses near obstacles and the less costly slower linear_x trajectory is ...(more)
I see. So based on the assumption of near instant stop capability it makes sense that
dec_lim_x
is not needed. However, it seems that the dwa local planner is not making this assumption right now but instead assumes that decelaration is equal to the negative acceleration, as pointed out by David Lu. Regardless, the parametersscaling_speed
andmax_scaling_factor
seem useful for implementing a save stoping distance. I'll play around with those a bit. Thanks!Clarification. My idea about "near instant" stop was because of the usual usecase of indoor service robots and the practical outcome. ROS was originally made for pr2 AFAIK. Its dwa paramaters state 0.55m/s max x vel, but its x acceleration is 2.5 m/s^. Neglecting controller update rate that would mean it stopps in ~0.2 seconds, or ~0.1 meters. Also I never seen pr2 move at speeds that I would estimate to be near 0.55m/s more like 0.25m/s. The practical outcome I would consider "near instant". With its 220kg I wouldnt be surprised if it cant be slowed much faster due to traction (specially on marble floors or similar). As your question was "Why is there no dec_lim_x" I think this historic/practical insight might be interesting. I came across some similar cases with ros, its just that many packages were ...(more)
Historic/practical insights are always helpful! Understanding that the navigation stack was implemented with one specific usecase in mind helps to see why certain config parameters are not there. Thanks.