一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ROS的機(jī)器人建圖與導(dǎo)航仿真全過(guò)程

3D視覺(jué)工坊 ? 來(lái)源:古月居 ? 2023-03-06 18:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

之前一直想寫一篇關(guān)于ROS機(jī)器人建圖與導(dǎo)航仿真全過(guò)程的教程,終于有時(shí)間來(lái)做這個(gè)事啦,本人也拿過(guò)吉林省高校機(jī)器人大賽—ROS競(jìng)速組的冠軍,第十六屆全國(guó)智能車比賽—訊飛餐廳組線上賽二等獎(jiǎng),我想這個(gè)教程對(duì)接下來(lái)的一些參賽者多多少少也會(huì)有一些貢獻(xiàn)。

當(dāng)然我覺(jué)得你已經(jīng)會(huì)ROS的一些基本操作了,本文章只是簡(jiǎn)單扼要的介紹這個(gè)過(guò)程,其中細(xì)節(jié)部分難免可能不會(huì)太詳細(xì)還請(qǐng)見(jiàn)諒,當(dāng)人后續(xù)也會(huì)有更多這方面的文章,也會(huì)傳授一些ROS機(jī)器人建圖與導(dǎo)航方面的經(jīng)驗(yàn),當(dāng)然我也在學(xué)習(xí)的過(guò)程,難免一些不足之處,話不多說(shuō)啦,讓我先把這個(gè)全過(guò)程的思維導(dǎo)圖放在下面。

36ac3dae-bbd6-11ed-bfe3-dac502259ad0.png

文章所用的代碼已經(jīng)開(kāi)源:https://gitee.com/xiaolong_ROS/Map_construction-Navigation_simulation.git

一、環(huán)境

1.機(jī)器人建模

我個(gè)人習(xí)慣把機(jī)器人本體放在單獨(dú)的一個(gè)package下,讓我們先看看里面的所有東西。

36bf9b92-bbd6-11ed-bfe3-dac502259ad0.png

可以看到這個(gè)機(jī)器人的URDF模型還有它所擁有的傳感器,相機(jī)、慣性測(cè)量單元、激光雷達(dá)。


我們對(duì)URDF文件進(jìn)行檢查,check_urdf命令會(huì)解析URDF文件,并且顯示解析過(guò)程中發(fā)現(xiàn)的錯(cuò)誤,如果一切正常,就會(huì)顯示如下信息:

36d6e450-bbd6-11ed-bfe3-dac502259ad0.png

當(dāng)然我們也可以在rviz中查看這個(gè)模型:

370d66ec-bbd6-11ed-bfe3-dac502259ad0.png

也可以看看機(jī)器人的TF關(guān)系:

371e1848-bbd6-11ed-bfe3-dac502259ad0.png

2.運(yùn)動(dòng)控制器配置

接下來(lái)我們主要在gazebo環(huán)境下操作,我們?cè)賱?chuàng)建一個(gè)單獨(dú)的package,同樣我們先看看完整的內(nèi)容:

3730e3c4-bbd6-11ed-bfe3-dac502259ad0.png

我們?cè)赾onfig下可以看到一個(gè)racecar_control.yaml文件:

racecar:


 left_rear_wheel_velocity_controller:
  type: effort_controllers/JointVelocityController
  joint: left_rear_axle
  pid: {p: 1000.0, i: 0.00, d: 0.0}




 right_rear_wheel_velocity_controller:
  type: effort_controllers/JointVelocityController
  joint: right_rear_axle 
  pid: {p: 1000.0, i: 0.00, d: 0.0}




 left_front_wheel_velocity_controller:
  type: effort_controllers/JointVelocityController
  joint: left_front_axle
  pid: {p: 1000.0, i: 0.00, d: 0.0}




 right_front_wheel_velocity_controller:
  type: effort_controllers/JointVelocityController
  joint: right_front_axle
  pid: {p: 1000.0, i: 0.00, d: 0.0}
  
 left_steering_hinge_position_controller:
  type: effort_controllers/JointPositionController
  joint: left_steering_joint
  pid: {p: 10000.0, i: 0.1, d: 500.0}
 
 right_steering_hinge_position_controller:
  type: effort_controllers/JointPositionController
  joint: right_steering_joint
  pid: {p: 10000.0, i: 0.1, d: 500.0}




 joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50

這個(gè)文件便定義了機(jī)器人所有的運(yùn)動(dòng)控制器以及參數(shù),我們通過(guò)launch文件添加以下內(nèi)容便可以加載這些控制器:

374f75f0-bbd6-11ed-bfe3-dac502259ad0.png

3.world創(chuàng)建

world的創(chuàng)建方法有很多了,你可以自己畫一個(gè)世界,也可以導(dǎo)入,這里可以給大家安利另外一個(gè)仿真神器:Webots,你會(huì)發(fā)現(xiàn)不一樣的東西。

給大家看看比賽的官方賽道吧,使用gazebo racecar_runway_original.world 打開(kāi):

3769b3e8-bbd6-11ed-bfe3-dac502259ad0.png

4.launch文件啟動(dòng)并測(cè)試

我們先通過(guò)roslaunch racecar_gazebo racecar.launch 來(lái)打開(kāi)小車所在的仿真環(huán)境:

377b0b34-bbd6-11ed-bfe3-dac502259ad0.png

我們可以看到racecar_gazebo/scripts下有一個(gè)XL_keyboard_remote.py的,我們可以通過(guò)rosrun racecar_gazebo XL_keyboard_remote.py運(yùn)行它,然后我們的機(jī)器人就可以前后左右移動(dòng)并且轉(zhuǎn)向啦(注意運(yùn)行之后彈出來(lái)的窗口需要鼠標(biāo)點(diǎn)擊一下再控制機(jī)器人)。

37933bf0-bbd6-11ed-bfe3-dac502259ad0.png

二、建圖

建圖的話我們以Gmapping算法功能包為例子進(jìn)行地圖構(gòu)建,當(dāng)然可以用其它的算法,比如:hector,cartographer等。

1.參數(shù)配置

首先我們創(chuàng)建一個(gè)gmapping.launch,這個(gè)主要是負(fù)責(zé)配置參數(shù)的:


  


  
    
    
     
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  


然后我們需要?jiǎng)?chuàng)建一個(gè)gmapping_demo.launch用來(lái)打開(kāi)gazebo,rviz等并建圖:




  


  
 
   
  
  


   
  




代碼第一塊就是建圖參數(shù)的配置,第二塊就是打開(kāi)之前的gazebo環(huán)境等,第三塊是打開(kāi)鍵盤控制,第四塊是打開(kāi)一個(gè)已經(jīng)配置好的rviz(配置的方法很簡(jiǎn)單的,就是添加一些東西)。

2.launch文件啟動(dòng)并建圖

之所以創(chuàng)建一個(gè)gmapping_demo.launch是想直接啟動(dòng)一個(gè)launch就可以開(kāi)始建圖,我們直接在終端輸入roslaunch racecar_gazebo racecar.launch就可以開(kāi)始建圖啦:

37a9e56c-bbd6-11ed-bfe3-dac502259ad0.png

建圖過(guò)程需要有耐心,最好速度不要太快,當(dāng)然不同的算法適應(yīng)性也不太一樣,我們可以看看建圖效果還是可以的:

37cbbb6a-bbd6-11ed-bfe3-dac502259ad0.png

最后建成的地圖我們需要及時(shí)保存。保存的地圖一共有兩個(gè)文件,map.pgm和map.yaml。

讓我們看一下建好的地圖效果還是蠻不錯(cuò)的:

37de8e5c-bbd6-11ed-bfe3-dac502259ad0.png

三、導(dǎo)航

我們先來(lái)看一下導(dǎo)航的launch啟動(dòng)文件,第4行就是啟動(dòng)之前的launch文件;第6~8行是加載配置好的rviz;第10行是加載地圖;注意第13行,我們加載了一個(gè)amcl.xml文件,這個(gè)是我們配置的定位方法參數(shù)。

自主定位即機(jī)器人在任意狀態(tài)下都可以推算出自己在地圖中所處的位置,ROS為開(kāi)發(fā)者提供了一種自適應(yīng)(或kld采樣)的蒙特卡羅定位方法(amcl),這是一種概率統(tǒng)計(jì)方法,針對(duì)已有地圖使用粒子濾波器跟蹤一個(gè)機(jī)器人的姿態(tài);第16~32行是導(dǎo)航需要的配置文件;第34行是一個(gè)導(dǎo)航腳本(自定義的一個(gè)ROS節(jié)點(diǎn)),初學(xué)者可以不用深究其內(nèi)容。

37eedb0e-bbd6-11ed-bfe3-dac502259ad0.png

1.代價(jià)地圖的配置

導(dǎo)航功能包使用兩種代價(jià)地圖存儲(chǔ)周圍環(huán)境中的障礙信息:一種用于全局路徑規(guī)劃(global_costmap),一種用于本地路徑規(guī)劃和實(shí)時(shí)避障(local_costmap)。

兩種代價(jià)地圖需要使用一些共用的或獨(dú)立的配置文件:通用配置文件、全局規(guī)劃配置文件和本地規(guī)劃配置文件。config/navigation下這三個(gè)文件分別與之對(duì)應(yīng)。

37fee6e8-bbd6-11ed-bfe3-dac502259ad0.png

代價(jià)地圖用來(lái)存儲(chǔ)周圍環(huán)境的障礙信息,其中需要聲明地圖關(guān)注的機(jī)器人傳感器消息,以便于地圖信息的更新。

針對(duì)兩種代價(jià)地圖通用的配置選項(xiàng),創(chuàng)建名為costmap_common_params.yaml的配置文件。全局規(guī)劃配置文件用于存儲(chǔ)配置全局代價(jià)地圖的參數(shù),命名為global_costmap_params.yaml,本地規(guī)劃配置文件用來(lái)存儲(chǔ)本地代價(jià)地圖的配置參數(shù),命名為local_costmap_params.yaml。

2.本地規(guī)劃器的配置

比賽一般都需要實(shí)時(shí)避障的,我們導(dǎo)航所用的地圖都是加上錐桶的,當(dāng)然我們?cè)诮▓D的時(shí)候是不允許掃描錐桶的信息的,所以我們需要配置本地規(guī)劃器,我們通過(guò)gazebo racecar_runway.world 打開(kāi)環(huán)境如下:

38129346-bbd6-11ed-bfe3-dac502259ad0.png

常用的本地規(guī)劃算法有TEB算法和DWA算法,這篇教程主要用的TEB算法,本地規(guī)劃器當(dāng)然也是用的TEB算法的參數(shù),具體可以查看最后一個(gè)配置文件teb_local_planner_params.yaml。

3.launch文件啟動(dòng)并導(dǎo)航

我們通過(guò)roslaunch racecar_gazebo racecar_navigation.launch來(lái)開(kāi)始導(dǎo)航前所有準(zhǔn)備工作:

382fcfb0-bbd6-11ed-bfe3-dac502259ad0.png

通過(guò)rviz上2D Nav Goal來(lái)給機(jī)器人發(fā)布導(dǎo)航終點(diǎn)信息,可以看出機(jī)器人已經(jīng)開(kāi)始實(shí)時(shí)掃描信息并規(guī)劃路徑向著終點(diǎn)出發(fā)啦:

3846d782-bbd6-11ed-bfe3-dac502259ad0.png

我們可以通過(guò)rosrun rqt_tf_tree rqt_tf_tree來(lái)查看導(dǎo)航過(guò)程中的TF樹(shù):

386bd5fa-bbd6-11ed-bfe3-dac502259ad0.png

也可以通過(guò)rosrun rqt_graph rqt_graph來(lái)查看導(dǎo)航過(guò)程中的各節(jié)點(diǎn):

388fef12-bbd6-11ed-bfe3-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2565

    文章

    52995

    瀏覽量

    767369
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    213

    文章

    29735

    瀏覽量

    212859
  • 仿真
    +關(guān)注

    關(guān)注

    52

    文章

    4286

    瀏覽量

    135835
  • 導(dǎo)航
    +關(guān)注

    關(guān)注

    7

    文章

    555

    瀏覽量

    43156
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    288

    瀏覽量

    17742

原文標(biāo)題:基于ROS的機(jī)器人建圖與導(dǎo)航仿真全過(guò)程

文章出處:【微信號(hào):3D視覺(jué)工坊,微信公眾號(hào):3D視覺(jué)工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ROS機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    的快速發(fā)展,智能機(jī)器人設(shè)備已成為工業(yè)自動(dòng)化體系的佼佼者,而智能機(jī)器人設(shè)備核心—ROS系統(tǒng),是機(jī)器人領(lǐng)域的集大成者,主要應(yīng)用于機(jī)器人控制領(lǐng)域,
    發(fā)表于 07-09 11:38

    名單公布!【書籍評(píng)測(cè)活動(dòng)NO.58】ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐

    ROS的成熟,加快了其普及的步伐。 ROS的發(fā)展歷程 回顧2007年,ROS的創(chuàng)始團(tuán)隊(duì)原本只想做一款個(gè)人服務(wù)機(jī)器人,卻意外成就了一款被
    發(fā)表于 03-03 14:18

    【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】+內(nèi)容初識(shí)

    、Gazebo仿真(含RGBD相機(jī)/激光雷達(dá)仿真)、實(shí)物機(jī)器人運(yùn)動(dòng)控制,實(shí)現(xiàn)\"仿真→實(shí)物\"的無(wú)縫銜接 高階應(yīng)用篇(7-9章) 聚焦視覺(jué)SLAM、自主
    發(fā)表于 04-27 11:24

    【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】+ROS2應(yīng)用案例

    地圖構(gòu)建,包括算法原理介紹、安裝與配置方法、仿真環(huán)境中的SLAM以及真實(shí)機(jī)器人上的SLAM。 這一過(guò)程不僅涉及到計(jì)算機(jī)視覺(jué)和機(jī)器人學(xué)的知識(shí),還需要對(duì)
    發(fā)表于 04-27 11:42

    【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】視覺(jué)實(shí)現(xiàn)的基礎(chǔ)算法的應(yīng)用

    閱讀心得體會(huì):ROS2機(jī)器人視覺(jué)與地圖構(gòu)建技術(shù) 通過(guò)對(duì)本書第7章(ROS2視覺(jué)應(yīng)用)和第8章(ROS2地構(gòu)建)的學(xué)習(xí),我對(duì)
    發(fā)表于 05-03 19:41

    激光導(dǎo)航AGV底盤定制 巡檢機(jī)器人,服務(wù)機(jī)器人,智慧物流搬運(yùn)AGV

    ` 激光導(dǎo)航AGV底盤定制蘇州智偉達(dá)機(jī)器人科技有限公司坐落于-蘇州相城經(jīng)濟(jì)開(kāi)發(fā)區(qū)陽(yáng)澄湖國(guó)際科創(chuàng)園,是一家致力于機(jī)器人的研發(fā)、設(shè)計(jì)、銷售、安裝的的一體化企業(yè)。公司目前與大學(xué)科研機(jī)構(gòu)以及相關(guān)企業(yè)展開(kāi)緊密
    發(fā)表于 06-10 14:24

    走到哪都不會(huì)迷路,全自動(dòng)機(jī)器人是怎么導(dǎo)航的?

    (Control):控制機(jī)器人按照導(dǎo)航走。定位(狀態(tài)估計(jì))和這兩部分經(jīng)常被一起提起,他們就是大名鼎鼎的SLAM(Simultaneous Localization And Mapp
    發(fā)表于 05-11 11:51

    機(jī)器人完美的SLAM 3.0到底是何方神圣?

    等功能,讓機(jī)器人提供更好的自主定位導(dǎo)航服務(wù)?!    實(shí)時(shí)存儲(chǔ)地圖數(shù)據(jù)  優(yōu)化引擎是SLAM 3.0 的一部分,具有實(shí)時(shí)存儲(chǔ)地圖數(shù)據(jù)的能力。在建
    發(fā)表于 01-21 10:57

    如何保存機(jī)器人,用于后續(xù)定位導(dǎo)航

    在地圖構(gòu)建之后,下一步要考慮的就是如何保存地圖,便于下次開(kāi)機(jī)直接使用,省時(shí)省力省心 ~    如何保存地圖  RoboStudio與機(jī)器人連接之后,在機(jī)器人過(guò)程中,RoboStu
    發(fā)表于 01-28 17:27

    棗陽(yáng)市工程BIM軟件全過(guò)程建筑咨詢單位

    涉及前期場(chǎng)地平整BIM應(yīng)用、主體施工(如鋼筋工程、混凝土工程、質(zhì)量安全管理等)BIM應(yīng)用。經(jīng)過(guò)不斷的實(shí)踐和發(fā)展,BIM技術(shù)與各類硬件設(shè)備的集成應(yīng)用在土建施工過(guò)程中發(fā)揮作用,如三維激光掃描儀器、測(cè)量機(jī)器人
    發(fā)表于 05-20 11:22

    基于ROS系統(tǒng)實(shí)現(xiàn)導(dǎo)航機(jī)器人的精確方向和距離控制

    本實(shí)驗(yàn)箱以大載重的全向麥輪車為載體,基于ROS系統(tǒng)作為開(kāi)發(fā)平臺(tái),使用雙驅(qū)和四驅(qū)兩種不同的結(jié)構(gòu)作為機(jī)器人本體,最終通過(guò)地面二維碼實(shí)現(xiàn)導(dǎo)航機(jī)器人的精確方向和距離控制...
    發(fā)表于 09-03 07:29

    ROS機(jī)器人定位導(dǎo)航仿真

    大作業(yè)——ROS機(jī)器人定位導(dǎo)航仿真一、安裝插件與相關(guān)配置1.下載源碼包2.安裝相應(yīng)插件(1)ros-kinetic-driver-base(
    發(fā)表于 12-17 06:15

    如何對(duì)ROS機(jī)器人的定位導(dǎo)航進(jìn)行仿真

    怎樣去實(shí)現(xiàn)ROS機(jī)器人的定位導(dǎo)航呢?如何對(duì)ROS機(jī)器人的定位導(dǎo)航進(jìn)行
    發(fā)表于 12-23 09:22

    如何搭建實(shí)體機(jī)器人ros底盤

    目錄介紹一、底盤主控板二、嵌入式開(kāi)發(fā)板1. 與上位機(jī)pc的關(guān)系2. 與STM32主控板的關(guān)系介紹自下而上的分析實(shí)體機(jī)器人(差分輪速機(jī)器人)搭建中的關(guān)鍵過(guò)程。一、底盤主控板本部分搭建實(shí)體機(jī)器人
    發(fā)表于 01-20 07:36

    朱老師出新書了!!《ROS機(jī)器人編程零基礎(chǔ)入門》

    Ubuntu操作系統(tǒng)安裝和使用為起點(diǎn),依次介紹了ROS安裝、實(shí)體/仿真機(jī)器人搭建、機(jī)器視覺(jué)、SLAM
    的頭像 發(fā)表于 03-03 14:53 ?1889次閱讀
    朱老師出新書了?。 ?b class='flag-5'>ROS</b><b class='flag-5'>機(jī)器人</b>編程零基礎(chǔ)入門》