Comments (8)
Why are the obstacles inflated in the first place?
from path_tracking_pid.
Because you can either disable the inflation entirely, then you don't get the exponential decay cost either (and you do want that, for velocity scaledown and all that), or you can enable it, and that also gives you the footprint inflation. The concept is explained quite well here: http://wiki.ros.org/costmap_2d#Inflation
from path_tracking_pid.
cost_inscribed = definitely in collision
I assume that this is where the logic originated from. But they probably meant that the center-point is definitely in collision.
Am I summarizing this correctly?
from path_tracking_pid.
In that case the simple fix would be to modify the logic.
if nav_link is costmap2d::INSCRIBED_INFLATED_OBASTACLE
, early-out. Otherwise proceed to more expensive footprint-check.
from path_tracking_pid.
I assume that this is where the logic originated from. But they probably meant that the center-point is definitely in collision.
Am I summarizing this correctly?
Not sure who you mean by "they". The costmap2d authors, or the path_tracking_pid author(s).
If the center point (base_link) is within the costmap2d::INSCRIBED_INFLATED_OBASTACLE zone, the footprint definitely collides with an obstacle somewhere. If that's what you mean, you're correct.
if nav_link is costmap2d::INSCRIBED_INFLATED_OBASTACLE
, early-out. Otherwise proceed to more expensive footprint-check.
Sounds good, assuming those (predicted) poses are available. That avoids the need for the footprint check in case this is already in collision. This early return doesn't save you much computing power, though. In the nominal case there is no collision, so there won't be an early return.
In any case, the footprint check needs to use the condition >= costmap2d::LETHAL_OBSTACLE
instead of costmap2d::INSCRIBED_INFLATED_OBASTACLE
from path_tracking_pid.
In any case, the footprint check needs to use the condition >= costmap2d::LETHAL_OBSTACLE instead of costmap2d::INSCRIBED_INFLATED_OBASTACLE
Agreed! PR Welcome
from path_tracking_pid.
In any case, the footprint check needs to use the condition >= costmap2d::LETHAL_OBSTACLE instead of costmap2d::INSCRIBED_INFLATED_OBASTACLE
After inspecting the code a little further, I suggest making only this change. An early return based on checking base_link
with the inflated obstacle layer almost never occurs, so it makes the code more complex without adding any significant benefit. Additionally, you lose the visualization of where the obstacle is detected if you only check base_link
with the inflated obstacle layer.
from path_tracking_pid.
Agreed!
from path_tracking_pid.
Related Issues (20)
- `computeVelocityCommand` has nested function with the same name.
- Controller state doesn't need to be reset on reconfigure HOT 5
- `Controller::distToSegmentSquared()` should be refactored HOT 2
- `Controller::findPositionOnPlan()` should be refactored HOT 1
- `Controller::getControllerState()` should be refactored
- `Controller::mpc_based_max_vel()` and `Controller::update()` interaction should be refactored HOT 1
- Build fails when CATKIN_ENABLE_TESTING=OFF
- `Controller::distToSegmentSquared()` ignores z-component half the time HOT 3
- Documentation of `Controller::distToSegmentSquared()` incorrect HOT 5
- `path_tracking_pid::PidConfig config_` should be decoupled from dynamic reconfigure
- Angle calculation of closestPointOnSegment() should be changed HOT 5
- Does `Controller::findPositionOnPlan()` do what is intended? HOT 1
- UB in `TrackingPidLocalPlanner::projectedCollisionCost()` - partially uninitialized object used
- Controller's end phase distance is calculated wrong for backwards motion HOT 1
- Is the calculated stopping distance too conservative? HOT 5
- Global plan is statically transformed to the global frame
- Straight line into turn: starting turn too early
- about how use this package HOT 1
- how to use full_coverage_path_planner and path_tracking_pid? HOT 3
- How to run with the branch "first-ros2-conversion"
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 path_tracking_pid.