使用DWA算法,實現平面局部導航,給定全局規劃和代價地圖,局部規劃起產生速度指令,發送給移動底座。
本軟件支持所有底座可用閉包多邊形或者圓來描述的機器人。其配置參數可在launch文件中設置。這些參數
也可動態再配置。
###簡介
dwa_local_planner提供一個能夠驅動底座的控制器,該控制器連接了路徑規劃器和機器人。使用地圖,
規劃器產生從起點到目標點的運動軌跡,在移動時,規劃器在機器人周圍產生一個函數,用網格地圖表示。
控制器的工作就是利用這個函數來確定發送給機器人的速度dx, dy, dtheta
**DWA算法的基本思想**
1. 在機器人控制空間離散采樣(dx, dy, dtheta)
2. 對每一個采樣的速度進行前向模擬,看看在當前狀態下,使用該采樣速度移動一小段時間后會發生什么。
3. 評價前向模擬得到的每個軌跡,是否接近障礙物,是否接近目標,是否接近全局路徑以及速度等等。舍棄非法路徑
4. 選擇得分最高的路徑,發送對應的速度給底座
**發布的topics**
~<name>/global_plan(nav_msgs/Path) #局部規劃器所跟蹤的全局路徑部分。
~<name>/local_plan(nav_msgs/Path) #在評價函數中得分最高的局部路徑
**注冊的topics**
odom(nav_msgs/Odometry) #里程計信息給局部規劃器提供當前速度信息。
**可調參數**
**機器人本身參數**
~<name>/acc_lim_x(double, default:2.5) #x方向加速度的絕對值
~<name>/acc_lim_y(double, default:2.5) #y方向加速度的絕對值
~<name>/acc_lim_th(double, default:3.2) #旋轉加速度的絕對值
~<name>/max_trans_vel(double, default:0.55) #平移速度最大值絕對值
~<name>/min_trans_vel(double, default:0.1) #平移速度最小值的絕對值
~<name>/max_vel_x(double, default:0.55) #x方向最大速度的絕對值
~<name>/min_vel_x(double, default:0.0) #x方向最小值絕對值,如果是負值表示后退運動
~<name>/max_vel_y(double, default:0.1) #y方向最大速度的絕對值
~<name>/min_vel_y(double, default:-0.1) #y方向最小速度的絕對值
~<name>/max_rot_vel(double, default:1.0) #最大旋轉速度的絕對值
~<name>/min_rot_vel(double, default:0.4) #最小旋轉速度的絕對值
**目標點容錯參數**
~<name>/yaw_goal_tolerance(double, default:0.05) #到達目標點時偏航角誤差
~<name>/xy_goal_tolerance(double, default:0.10) #到達目標點時,在xy平面內與目標點的距離誤差
~<name>/latch_xy_goal_tolerance(double, default:false) #設置為true時,如果到達容錯距離內,則機器人就會原地旋轉,即便轉動時會跑出容錯距離外
**前進仿真參數**
~<name>/sim_time(double, default:1.7) #向前仿真軌跡的時間
~<name>/sim_granularity(double, default:0.025) #步長,軌跡上采樣點之間的距離
~<name>/vx_samples(integer, default:3) #x方向速度空間的采樣點數
~<name>/vy_samples(integer, default:10) #y方向速度空間采樣點數
~<name>/vth_samples(integer, default:20) #旋轉方向的速度空間采樣點數
~<name>/controller_frequency(double, default:20.0) #控制器被調用的頻率
**軌跡評分參數**
~<name>/path_distance_bias(double, default:32.0) #定義控制器與給定路徑接近程度
~<name>/goal_distance_bias(double, default:24.0) #定義控制器與局部目標點的接近程度,并控制速度
~<name>/occdist_scale(double, default:0.01) #定義控制器躲避障礙物的程度
~<name>/stop_time_buffer(double, default:0.2) #為防止碰撞,機器人必須提前停止的時間長度。
~<name>.scaling_speed(double, default:0.25) #啟動機器人底座的速度
~<name>/max_scaling_factor(double, default:0.2) #最大縮放參數
**防振蕩參數**
~<name>/oscillation_reset_dist(double, default:0.05) #機器人運動多遠距離才會重置振蕩標記
**全局參數**
~<name>/prune_plan(bool, default:true) #機器人前進時是否清除身后1m外的軌跡
- 前言
- 第一章 ROS簡介
- 機器人時代的到來
- ROS發展歷程
- 什么是ROS
- 安裝ROS
- 安裝ROS-Academy-for-Beginners教學包
- 二進制與源碼包
- 安裝RoboWare Studio
- 單元測試一
- 第二章 ROS文件系統
- Catkin編譯系統
- Catkin工作空間
- Package軟件包
- CMakeLists.txt
- package.xml
- Metapacakge軟件元包
- 其他常見文件類型
- 單元測試二
- 第三章 ROS通信架構(一)
- Node & Master
- Launch文件
- Topic
- Msg
- 常見msg類型
- 單元測試三
- 第四章 ROS通信架構(二)
- Service
- Srv
- Parameter server
- Action
- 常見srv類型
- 常見action類型
- 單元測試四
- 第五章 常用工具
- Gazebo
- RViz
- Rqt
- Rosbag
- Rosbridge
- moveit!
- 單元測試五
- 第六章 roscpp
- Client Library與roscpp
- 節點初始、關閉與NodeHandle
- Topic in roscpp
- Service in roscpp
- Param in roscpp
- 時鐘
- 日志與異常
- 第七章 rospy
- Rospy與主要接口
- Topic in rospy
- Service in rospy
- Param與Time
- 第八章 TF與URDF
- 認識TF
- TF消息
- tf in c++
- tf in python
- 統一機器人描述格式
- 附錄:TF數學基礎
- 三維空間剛體運動---旋轉矩陣
- 三維空間剛體運動---歐拉角
- 三維空間剛體運動---四元數
- 第九章 SLAM
- 地圖
- Gmapping
- Karto
- Hector
- 第十章 Navigation
- Navigation Stack
- move_base
- costmap
- Map_server & Amcl
- 附錄:Navigation工具包說明
- amcl
- local_base_planner
- carrot_planner
- clear_costmap_recovery
- costmap_2d
- dwa_local_planner
- fake_localization
- global_planner
- map_server
- move_base_msg
- move_base
- move_slow_and_clear
- navfn
- nav_core
- robot_pose_ekf
- rotate_recovery