ROS Motion Planning運動規劃庫采用了非常靈活和簡易的方式來按照我們的需求去進行配置和使用,在我們對一些必要參數進行設定后,可使用庫中的main_generate.py文件自動生成我們設定的參數對應的執行文件main.launch。
這些需要設定的參數,存放在user_config.yaml、pedestrians_config.yaml、obstacles _config.yaml這三個文件中,這三個文件均位于下圖所示的目錄下,下面依次進行詳細的介紹
1、編寫user_config.yaml參數配置文件
首先,我們來看作者提供的示例程序,如下所示:
map: "warehouse"
world: "warehouse"
rviz_file: "sim_env.rviz"
robots_config:
- robot1_type: "turtlebot3_waffle"
robot1_global_planner: "theta_star"
robot1_local_planner: "apf"
robot1_x_pos: "0.0"
robot1_y_pos: "0.0"
robot1_z_pos: "0.0"
robot1_yaw: "0.0"
# plugins:
# pedestrians: "pedestrian_config.yaml"
# obstacles: "obstacles_config.yaml"
接下來,我們對每個參數的作用以及可選的選項有那些進行逐個介紹
(1)、map
map參數用于設定運動規劃所使用的靜態地圖的名字,也就是rviz界面看到的靜態全局地圖,這些可用的靜態地圖文件存放在該運動規劃庫的src/sim_env/map/文件夾下,目前該運動規劃庫中僅提供了名為warehouse的靜態地圖文件
如下圖所示,當然,我們可以利用SLAM建圖算法自行生成其他的靜態地圖文件,然后同樣存放在src/sim_env/map/文件夾下,并將參數map設定為該靜態地圖的名字,即可進行調用。
注:該參數設為“ ”,則表示不使用靜態地圖
(2)world
world參數用于設定要調用的Gazebo仿真環境的文件名,該文件存放在該運動規劃庫的src/sim_env/worlds/文件夾下,示例中調用的是warehouse.world。
當然,我們也可以在Gazebo中搭建自己的仿真環境,并導出對應的world文件,然后存放到該目錄下,通過修改參數world來進行調用
注:需要注意的是參數map與world要對應起來,這里的對應是指環境內容的對應,一般是先在Gazebo中搭建仿真環境,保存為xxx.world文件,然后使用SLAM建圖算法,比如最常用的gampping,對該仿真環境進行建圖,將建好的圖作為靜態地圖保存,然后使用。
(3)rviz_file
rviz_file參數用于設定打開rviz時的配置文件,這些配置文件存放在src/sim_env/rviz/目錄下,目前庫中提供了cache.rviz、sim_env.rviz、view_multi.rviz這三個可選內容,同樣我們可以在rviz中自行調整,并導出對應.rviz文件,存儲在該目錄下,然后通過對rviz_file參數進行修改來調用
比如,我修改了全局路徑的話題及線型等,可以直接save config覆蓋原有設置,也可以導出新的.rviz配置文件,從而保留原有設置,如下圖所示:
(4)robot1_type
robot1_type用于設定編號為robot1的機器人所使用的機器人的模型,模型文件在庫的src/sim_env/urdf/目錄下庫中提供了nanocar、turtlebot3_burger、turtlebot3_waffle 、turtlebot3_waffle_pi四種可選的機器人模型
當然,我們也可以自行創建或者從網上找其他的機器人模型的urdf或xacro文件,放到該目錄下,通過修改參數robot1_type的值來進行調用。
庫中提供的這四種機器人模型如下圖所示:
(5)robot1_global_planner
robot1_global_planner用于設定編號為robot1的機器人所使用的全局路徑算法,全局路徑算法的實現文件在庫的src/planner/global_planner/目錄下,庫中提供了三大類共同16個全局路徑規劃算法,對應三個全局路徑規劃器插件,詳細如下:
① 基于圖搜索的全局路徑規劃器插件graph_planner/GraphPlanner包含的算法有:
a_star、jps、gbfs、dijkstra、d_star、lpa_star、voronoi、d_star_lite、theta_star、lazy_theta_star
② 基于采樣的全局路徑規劃器插件sample_planner/SamplePlanner包含的算法有:
rrt、rrt_star、informed_rrt、rrt_connect
③、基于智能的路徑規劃器插件evolutionary_planner/EvolutionaryPlanner包含的算法有:
aco、ga
三大類共16種全局路徑規劃算法可供我們選擇,上面的示例文件中使用的是theta_star算法,我們可以嘗試修改為以上其他16種算法中的任意一個來測試其效果
當然,我們也可以編寫自己的全局路徑規劃器算法,較容易的方式,是直接在以上16種算法中最接近的1種的源文件上進行修改,若創建自己的算法名和源文件,則還需要修改庫的src/sim env/ launch /include /navigation/目錄下的move base.launch.xml等文件
(6)robot1_local_planner
robot1_local_planner用于設定編號為robot1的機器人所使用的局部路徑算法,局部路徑算法的實現文件在庫的src/planner/local_planner/目錄下,庫中提供了四個局部路徑規劃算法,對應四個局部路徑規劃器插件,詳細如下:
①、插件dwa_planner/DWAPlanner對應的算法是:dwa
②、插件pid_planner/PIDPlanner對應的算法是:pid
③、插件apf_planner/APFPlanner對應的算法是:apf
④、插件static_planner/StaticPlanner對應的算法是:static
四個局部路徑規劃器插件對應4種局部路徑規劃算法可供我們選擇,上面的示例文件中使用的是apf算法,我們可以嘗試修改為以上其他4種算法中的任意一個來測試其效果
當然,我們也可以編寫自己的全局路徑規劃器算法,較容易的方式,是直接在以上4種算法中最接近的1種的源文件上進行修改,若創建自己的算法名和源文件,則還需要修改庫的src/sim env/ launch /include /navigation/目錄下的move base.launch.xml等文件
(7)robot1_x_pos、robot1_y_pos、robot1_z_pos、robot1_yaw
robot1_x_pos、robot1_y_pos、robot1_z_pos、robot1_yaw分別用于設定編號為robot1的機器人的初始位置和姿態角,對于位置設定為地圖中任意一個非障礙物點都行
經過我的測試,目前不支持任意修改初始姿態角robot1_yaw,其值保持為0即可,若修改為其他值rviz中顯示的雷達坐標系將出現問題。
(8)行人插件 pedestrians
除了上述必備的配置參數外,庫中還提供了行人插件pedestrians,若想啟用該功能,則需要取消對該插件的注釋
如下所示,該插件可以在仿真環境中添加動態的行人來充當動態障礙物,對規劃算法的性能進行測試,使用該插件同樣需要提供一個名為pedestrian_config.yaml參數配置文件,將在本文第三部分的第2小節,也就是下一小節中對該參數配置文件進行詳細的介紹。
plugins:
pedestrians: "pedestrian_config.yaml"
(9)新增障礙物插件 obstacles_config
除了行人插件,庫中還提供了新增障礙物插件 obstacles_config,若想啟用該功能,則需要取消對該插件的注釋
如下所示,該插件可以在仿真環境中添加新的靜態障礙物,新增的障礙物在SLAM建圖產生的靜態地圖map中并不存在
因此,可以用來測試規劃算法對新感知到的障礙物的避障能力,使用該插件同樣需要提供一個名為obstacles_config.yaml參數配置文件,將在本文第三部分的第3小節中對該參數配置文件進行詳細的介紹。
plugins:
obstacles: "obstacles_config.yaml"
-
仿真
+關注
關注
50文章
4070瀏覽量
133552 -
插件
+關注
關注
0文章
326瀏覽量
22440 -
ROS
+關注
關注
1文章
278瀏覽量
17001
發布評論請先 登錄
相關推薦
評論