Comments (7)
Have you tried using the nav2_velocity_smoother
? It is designed to take potentially infeasible commands from nav2_controller and output feasible commands given a set of acceleration or velocity constraints. Think of it as a post-processing stage in case something is misconfigured or the technique you use in the controller doesn't strictly promise feasible continuity.
That should square you away :-) Its also enabled by default since Iron and newer
If that's not workable, I'm sure we could expose the controller plugin another option for what to do on cancellation for reducing speed. But, I'll admit that seems overkill unless there's more you want to do than just decelerate by dynamic limits.
from navigation2.
The idea is to decelerate by dynamic limits whilst tracking the path.
When following a turn, it would be undesired to slow down in a straight line upon a cancel action, which I think/guess is what the nav2_velocity_smoother
does?
from navigation2.
I also don't think that's actually a generically safe solution? Deceleration in turns could cause the kinds of "throwing loads off my robot top" that the instantaneous braking could due to centrifugal forces. I imagine as well there are techniques where reducing the velocity scale will actually make it deviate off the path due to its internal modeling (thinking MPC/MPPI which are maintaining some state)
This isn't my opposition to your request - just throwing out some additional constraints perhaps that weren't considered giving me pause
from navigation2.
When following a turn, it would be undesired to slow down in a straight line upon a cancel action, which I think/guess is what the nav2_velocity_smoother does?
The Vel Smoother will ramp down from the last request to the zero velocity. It won't necessarily be a straight line. If there's some non-zero angular component, that will be ramped down too by its own deceleration constraints. The eta
scaling mechanics I wrote will also make sure the velocities are proportionally scaled to the last command's vector when that command has infeasible request (e.g. stopping from full speed), so it won't deviate from the last command's outlined path it would have taken if that last command continued forward.
The eta scaling was written so that invalid acceleration profile jumps wouldn't create different than intended motion vectors (which previous ROS 1 velocity smoothers did). I don't think its the role of the velocity smoother to make the robot change direction, even if ever so slightly - its role is to scale the intent down to what's possible. It wasn't written with the intention of this stoppage case in mind, but I think that is also beneficial here.
So if moving straight, it'll be a straight line. If turning, it'll continue with the turning maneuver's velocity from the last command sent. It is obviously not predictive for different path-tracking behavior beyond that last non-zero command, but perhaps that's sufficient? I'd say so for many applications, but I don't know what your stopping distances are with your set deceleration constraints. If you're stopping distance is 5m in dense shelving, then yeah, probably not π
from navigation2.
Related Issues (20)
- Planner Benchmark not working due to condition in if clause HOT 1
- Bug in smoothPath Function of Simple Commander API on Humble Branch HOT 2
- Simple commander build issue HOT 2
- BT XML Idea: Stop replanning when near the goal if path is valid HOT 3
- BT "node" port remapping does not work with subtrees HOT 15
- User misconfiguration of parameters may cause instantaneous crashs HOT 8
- Create arc-shaped path HOT 3
- Nav2 with other programming languages HOT 1
- nav2_mppi_controller colcon build error HOT 3
- Using composition doesn't load costmap parameters from yaml file HOT 12
- Way to do 2.5D navigation HOT 1
- The response to action cancellation is delayed. HOT 1
- set size_x_ and size_y_ in method initMaps HOT 4
- [humble binary] BT: βmissing port [value]β for blackboard β{goal}β HOT 5
- DriveOnHeading in SimpleCommander HOT 1
- Add DCO requirements + bot to tell people how to fix if not used HOT 1
- SimpleActionServer may call `nullprt` callback when executing the transition to deactivate HOT 3
- navigation not working HOT 8
- Add github action linters to find those issues sooner than full CI jobs HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from navigation2.