Shedding Light on the ROS Navstack 西北工业大学ROS开发者与学习者廖欣祎 Navigation 进阶 Shedding Light on the ROS Navstack 西北工业大学ROS开发者与学习者廖欣祎
Cornerstone of ROS Open Source Platform Robots Using ROS Cornerstone of ROS Open Source Platform Dozens of Supported Hardwares
Overview of ROS Navigation
Overview of ROS Navigation
Overview of ROS Navigation
如何理解 ROS navigation nav_core: 使用 pluginlib 定义了 各个组件的接口, 框架重用性的来源,使用dynamic_reconfigure实现 组件行为动态变化 . costmap: 作为 planner 的信息输入, 通过不同的costmap cost 取值方法, 不同的传感器输入, 不同的layer 叠加可以最大程度上定制navigation stack planners: 针对不同的应用场景可以使用不同的planner 或者自己定制
Costmap Data Sources
Obstacle Inflation
Global Costmap and Plan
Standard Navigation
Social Navigation
Monolithic Costmap
Costmap Overlap
Limited Update Information
Layered Costmaps
Two Pass Update Process
Layer Combination + = + =
Costmap Layers Obstacles Layer Inflation Layer Static Layer Range Sensor Layer Proxemic Layer Claustrophobic Layer
void initialize( LayeredCostmap* parent, std::string name, Implementing a Layer class Layer { public: void initialize( LayeredCostmap* parent, std::string name, tf::TransformListener *tf ); virtual void updateBounds( double robot_x, double robot_y, double robot_yaw, double* min_x, double* min_y, double* max_x, double* max_y) {} virtual void updateCosts(Costmap2D& master_grid, int min_i, int min_j, int max_i, int max_j) {}
Layered Costmaps github.com/ros-planning/navigation github.com/wg-perception/people github.com/DLu/navigation_layers
Overview of ROS NavStack
global_planner
BaseLocalPlanner vs. DWALocalPlanner
+ goal_alignment_cost + path_alignment_cost Scoring Trajectories Weighted Sum = oscillation_cost + costmap_cost + goal_distance_cost + path_distance_cost + goal_alignment_cost + path_alignment_cost
Scoring Different Trajectories Vary x position and x velocity
Implementing a Cost Function class TrajectoryCostFunction { ... virtual double scoreTrajectory(Trajectory &traj); }
navigation 逻辑部分---move_base
DWA Plugin Planner and MoveBase2 https://github.com/DLu/navigation /tree/groovy_plugin_planner /tree/groovy_mbsplit
ROS Navigation https://github.com/ros-planning/navigation