代码链接:
https://github.com/osrf/car_demo
博文的视频和截图:
https://www.osrfoundation.org/simulated-car-demo/
该程序是基于ros和gazebo的。ros简单来讲就是一个robot OS(机器人操作系统),它使你简单方便地制作机器人(具体优点就不说了,感兴趣的可以自己google)。gazebo是一个仿真环境(平台),可以进行三位机器人动力学仿真等。
那么这个代码都做了哪些事呢? 该程序在gazebo中构建了简单的世界模型作为大环境,构建了一个robot(无人车model)放在这个世界模型中运动,在车中添加了各种传感器,让无人车对环境可以做良好的感知。
car_demo目录:
worlds文件夹主要是描述我们在gazebo中建立的世界模型 models文件夹中包含本项目中用到的所有模型,你在gazebo中所看到的草坪、树木、房屋、道路等等一切的一切,都是在这个文件夹中定义的。
launch文件夹相当于这个项目的“入口”,调用.launch文件,就可以批量激活ros中的节点(node)。什么是node?我的理解是类似与进程,也类似于docker中的容器,每个node都有自己的分工。(可能理解得比较白话也比较片面,想深入理解的小伙伴还是要去看ros官网啊哎呦喂)
我想把我的传感器接受的信息都可视化出来该怎么办?这就用到rviz了,rviz是一个强大的3D可视化工具,你想看的传感器信息都可以在.rviz文件中配置。
等等,我的无人车怎么开起来???plugins目录帮你解决,由于本项目中的laser传感器不是直接调用已有的模型,所以这里也为它写了cpp文件。一句话概括,该文件夹中是激活你的车和传感器,赋予他们生命。
prius_description文件夹:
该文件夹是定义我们的主角robot无人车的(主角model和配角models真的不是一个待遇啊哈哈哈)。通过写配置文件,让它有了一个车的样子,想自己造robot的小伙伴赶紧去看官网吧。
prius_msgs文件夹:帮你实现用手柄控制汽车。
整体就是这个情况了,最后作者写了一个dockerfile,在docker中装了ros和gazebo,把该代码复制到docker中运行。