代碼鏈接:
https://github.com/osrf/car_demo
博文的視頻和截圖:
https://www.osrfoundation.org/simulated-car-demo/
該程序是基于ros和gazebo的岭皂。ros簡單來講就是一個(gè)robot OS(機(jī)器人操作系統(tǒng)),它使你簡單方便地制作機(jī)器人(具體優(yōu)點(diǎn)就不說了婆翔,感興趣的可以自己google)。gazebo是一個(gè)仿真環(huán)境(平臺(tái))蜈抓,可以進(jìn)行三位機(jī)器人動(dòng)力學(xué)仿真等。
那么這個(gè)代碼都做了哪些事呢? 該程序在gazebo中構(gòu)建了簡單的世界模型作為大環(huán)境贼涩,構(gòu)建了一個(gè)robot(無人車model)放在這個(gè)世界模型中運(yùn)動(dòng)茅逮,在車中添加了各種傳感器璃赡,讓無人車對(duì)環(huán)境可以做良好的感知判哥。
car_demo目錄:
worlds文件夾主要是描述我們?cè)趃azebo中建立的世界模型 models文件夾中包含本項(xiàng)目中用到的所有模型,你在gazebo中所看到的草坪碉考、樹木塌计、房屋、道路等等一切的一切侯谁,都是在這個(gè)文件夾中定義的锌仅。
launch文件夾相當(dāng)于這個(gè)項(xiàng)目的“入口”,調(diào)用.launch文件墙贱,就可以批量激活ros中的節(jié)點(diǎn)(node)热芹。什么是node?我的理解是類似與進(jìn)程嫩痰,也類似于docker中的容器剿吻,每個(gè)node都有自己的分工。(可能理解得比較白話也比較片面串纺,想深入理解的小伙伴還是要去看ros官網(wǎng)啊哎呦喂)
我想把我的傳感器接受的信息都可視化出來該怎么辦丽旅?這就用到rviz了,rviz是一個(gè)強(qiáng)大的3D可視化工具纺棺,你想看的傳感器信息都可以在.rviz文件中配置榄笙。
等等,我的無人車怎么開起來祷蝌?茅撞??plugins目錄幫你解決巨朦,由于本項(xiàng)目中的laser傳感器不是直接調(diào)用已有的模型米丘,所以這里也為它寫了cpp文件。一句話概括糊啡,該文件夾中是激活你的車和傳感器拄查,賦予他們生命。
prius_description文件夾:
該文件夾是定義我們的主角robot無人車的(主角model和配角models真的不是一個(gè)待遇啊哈哈哈)棚蓄。通過寫配置文件堕扶,讓它有了一個(gè)車的樣子,想自己造robot的小伙伴趕緊去看官網(wǎng)吧梭依。
prius_msgs文件夾:幫你實(shí)現(xiàn)用手柄控制汽車稍算。
整體就是這個(gè)情況了,最后作者寫了一個(gè)dockerfile役拴,在docker中裝了ros和gazebo糊探,把該代碼復(fù)制到docker中運(yùn)行。