ROS Motion Planning運(yùn)動規(guī)劃庫采用了非常靈活和簡易的方式來按照我們的需求去進(jìn)行配置和使用,在我們對一些必要參數(shù)進(jìn)行設(shè)定后,可使用庫中的main_generate.py文件自動生成我們設(shè)定的參數(shù)對應(yīng)的執(zhí)行文件main.launch。
這些需要設(shè)定的參數(shù),存放在user_config.yaml、pedestrians_config.yaml、obstacles _config.yaml這三個文件中,這三個文件均位于下圖所示的目錄下,下面依次進(jìn)行詳細(xì)的介紹
1、編寫user_config.yaml參數(shù)配置文件
首先,我們來看作者提供的示例程序,如下所示:
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"
接下來,我們對每個參數(shù)的作用以及可選的選項有那些進(jìn)行逐個介紹
(1)、map
map參數(shù)用于設(shè)定運(yùn)動規(guī)劃所使用的靜態(tài)地圖的名字,也就是rviz界面看到的靜態(tài)全局地圖,這些可用的靜態(tài)地圖文件存放在該運(yùn)動規(guī)劃庫的src/sim_env/map/文件夾下,目前該運(yùn)動規(guī)劃庫中僅提供了名為warehouse的靜態(tài)地圖文件
如下圖所示,當(dāng)然,我們可以利用SLAM建圖算法自行生成其他的靜態(tài)地圖文件,然后同樣存放在src/sim_env/map/文件夾下,并將參數(shù)map設(shè)定為該靜態(tài)地圖的名字,即可進(jìn)行調(diào)用。
注:該參數(shù)設(shè)為“ ”,則表示不使用靜態(tài)地圖
(2)world
world參數(shù)用于設(shè)定要調(diào)用的Gazebo仿真環(huán)境的文件名,該文件存放在該運(yùn)動規(guī)劃庫的src/sim_env/worlds/文件夾下,示例中調(diào)用的是warehouse.world。
當(dāng)然,我們也可以在Gazebo中搭建自己的仿真環(huán)境,并導(dǎo)出對應(yīng)的world文件,然后存放到該目錄下,通過修改參數(shù)world來進(jìn)行調(diào)用
注:需要注意的是參數(shù)map與world要對應(yīng)起來,這里的對應(yīng)是指環(huán)境內(nèi)容的對應(yīng),一般是先在Gazebo中搭建仿真環(huán)境,保存為xxx.world文件,然后使用SLAM建圖算法,比如最常用的gampping,對該仿真環(huán)境進(jìn)行建圖,將建好的圖作為靜態(tài)地圖保存,然后使用。
(3)rviz_file
rviz_file參數(shù)用于設(shè)定打開rviz時的配置文件,這些配置文件存放在src/sim_env/rviz/目錄下,目前庫中提供了cache.rviz、sim_env.rviz、view_multi.rviz這三個可選內(nèi)容,同樣我們可以在rviz中自行調(diào)整,并導(dǎo)出對應(yīng).rviz文件,存儲在該目錄下,然后通過對rviz_file參數(shù)進(jìn)行修改來調(diào)用
比如,我修改了全局路徑的話題及線型等,可以直接save config覆蓋原有設(shè)置,也可以導(dǎo)出新的.rviz配置文件,從而保留原有設(shè)置,如下圖所示:
(4)robot1_type
robot1_type用于設(shè)定編號為robot1的機(jī)器人所使用的機(jī)器人的模型,模型文件在庫的src/sim_env/urdf/目錄下庫中提供了nanocar、turtlebot3_burger、turtlebot3_waffle 、turtlebot3_waffle_pi四種可選的機(jī)器人模型
當(dāng)然,我們也可以自行創(chuàng)建或者從網(wǎng)上找其他的機(jī)器人模型的urdf或xacro文件,放到該目錄下,通過修改參數(shù)robot1_type的值來進(jìn)行調(diào)用。
庫中提供的這四種機(jī)器人模型如下圖所示:
(5)robot1_global_planner
robot1_global_planner用于設(shè)定編號為robot1的機(jī)器人所使用的全局路徑算法,全局路徑算法的實現(xiàn)文件在庫的src/planner/global_planner/目錄下,庫中提供了三大類共同16個全局路徑規(guī)劃算法,對應(yīng)三個全局路徑規(guī)劃器插件,詳細(xì)如下:
① 基于圖搜索的全局路徑規(guī)劃器插件graph_planner/GraphPlanner包含的算法有:
a_star、jps、gbfs、dijkstra、d_star、lpa_star、voronoi、d_star_lite、theta_star、lazy_theta_star
② 基于采樣的全局路徑規(guī)劃器插件sample_planner/SamplePlanner包含的算法有:
rrt、rrt_star、informed_rrt、rrt_connect
③、基于智能的路徑規(guī)劃器插件evolutionary_planner/EvolutionaryPlanner包含的算法有:
aco、ga
三大類共16種全局路徑規(guī)劃算法可供我們選擇,上面的示例文件中使用的是theta_star算法,我們可以嘗試修改為以上其他16種算法中的任意一個來測試其效果
當(dāng)然,我們也可以編寫自己的全局路徑規(guī)劃器算法,較容易的方式,是直接在以上16種算法中最接近的1種的源文件上進(jìn)行修改,若創(chuàng)建自己的算法名和源文件,則還需要修改庫的src/sim env/ launch /include /navigation/目錄下的move base.launch.xml等文件
(6)robot1_local_planner
robot1_local_planner用于設(shè)定編號為robot1的機(jī)器人所使用的局部路徑算法,局部路徑算法的實現(xiàn)文件在庫的src/planner/local_planner/目錄下,庫中提供了四個局部路徑規(guī)劃算法,對應(yīng)四個局部路徑規(guī)劃器插件,詳細(xì)如下:
①、插件dwa_planner/DWAPlanner對應(yīng)的算法是:dwa
②、插件pid_planner/PIDPlanner對應(yīng)的算法是:pid
③、插件apf_planner/APFPlanner對應(yīng)的算法是:apf
④、插件static_planner/StaticPlanner對應(yīng)的算法是:static
四個局部路徑規(guī)劃器插件對應(yīng)4種局部路徑規(guī)劃算法可供我們選擇,上面的示例文件中使用的是apf算法,我們可以嘗試修改為以上其他4種算法中的任意一個來測試其效果
當(dāng)然,我們也可以編寫自己的全局路徑規(guī)劃器算法,較容易的方式,是直接在以上4種算法中最接近的1種的源文件上進(jìn)行修改,若創(chuàng)建自己的算法名和源文件,則還需要修改庫的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分別用于設(shè)定編號為robot1的機(jī)器人的初始位置和姿態(tài)角,對于位置設(shè)定為地圖中任意一個非障礙物點都行
經(jīng)過我的測試,目前不支持任意修改初始姿態(tài)角robot1_yaw,其值保持為0即可,若修改為其他值rviz中顯示的雷達(dá)坐標(biāo)系將出現(xiàn)問題。
(8)行人插件 pedestrians
除了上述必備的配置參數(shù)外,庫中還提供了行人插件pedestrians,若想啟用該功能,則需要取消對該插件的注釋
如下所示,該插件可以在仿真環(huán)境中添加動態(tài)的行人來充當(dāng)動態(tài)障礙物,對規(guī)劃算法的性能進(jìn)行測試,使用該插件同樣需要提供一個名為pedestrian_config.yaml參數(shù)配置文件,將在本文第三部分的第2小節(jié),也就是下一小節(jié)中對該參數(shù)配置文件進(jìn)行詳細(xì)的介紹。
plugins:
pedestrians: "pedestrian_config.yaml"
(9)新增障礙物插件 obstacles_config
除了行人插件,庫中還提供了新增障礙物插件 obstacles_config,若想啟用該功能,則需要取消對該插件的注釋
如下所示,該插件可以在仿真環(huán)境中添加新的靜態(tài)障礙物,新增的障礙物在SLAM建圖產(chǎn)生的靜態(tài)地圖map中并不存在
因此,可以用來測試規(guī)劃算法對新感知到的障礙物的避障能力,使用該插件同樣需要提供一個名為obstacles_config.yaml參數(shù)配置文件,將在本文第三部分的第3小節(jié)中對該參數(shù)配置文件進(jìn)行詳細(xì)的介紹。
plugins:
obstacles: "obstacles_config.yaml"
-
仿真
+關(guān)注
關(guān)注
50文章
4124瀏覽量
133993 -
插件
+關(guān)注
關(guān)注
0文章
336瀏覽量
22492 -
ROS
+關(guān)注
關(guān)注
1文章
280瀏覽量
17098
發(fā)布評論請先 登錄
相關(guān)推薦
使用用于MCS-51的IAR嵌入式平臺編寫的一個示例程序程序免費(fèi)下載
![使用用于MCS-51的IAR嵌入式平臺<b class='flag-5'>編寫</b>的一個<b class='flag-5'>示例程序</b><b class='flag-5'>程序</b>免費(fèi)下載](https://file.elecfans.com/web1/M00/A3/60/o4YBAF1VBtOAVjWPAAKM1y4hkoY622.png)
Python使用示例程序和工程文件免費(fèi)下載
![Python使用<b class='flag-5'>示例程序</b>和工程<b class='flag-5'>文件</b>免費(fèi)下載](https://file.elecfans.com/web1/M00/BE/FA/pIYBAF7m0PGAEiBvAAE8dH4MKIc115.png)
STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動庫詳解(架構(gòu)+文件+函數(shù)+使用說明+示例程序)
![STM32 之 標(biāo)準(zhǔn)外設(shè)版USB驅(qū)動庫詳解(架構(gòu)+<b class='flag-5'>文件</b>+函數(shù)+使用說明+<b class='flag-5'>示例程序</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
配置文件和例程文件的使用
![<b class='flag-5'>配置文件</b>和<b class='flag-5'>例程</b><b class='flag-5'>文件</b>的使用](https://file.elecfans.com/web2/M00/3B/B3/poYBAGJOXtOANRmpAAJURFn1h-o738.png)
SpringBoot配置文件application
linux修改網(wǎng)卡ip配置文件
springboot的全局配置文件有幾種
zookeeper的核心配置文件是什么
php的配置文件是什么
支持CiA402驅(qū)動器配置文件的示例程序用于通過EtherCAT?通信進(jìn)行電機(jī)控制
![支持CiA402驅(qū)動器<b class='flag-5'>配置文件</b>的<b class='flag-5'>示例程序</b>用于通過EtherCAT?通信進(jìn)行電機(jī)控制](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論