前言
这个暑假参加了全国智能车竞赛讯飞组的比赛,因为准备时间不足加之人手不足,在初赛中取得了赛区倒数的优异成绩[doge],比完赛之后车也收回去了。为了一雪前耻,我决定在仿真中把这个比赛做出来,并且要做到最终用时小于零(有减时任务)。由于本人有拖延症,因此开个blog来监督自己。如有观众,记得催更。
比赛规则
比赛规则在这里这里。
Gazebo仿真入门
学习资料
之前没用过Gazebo仿真,所以只好现学现卖,从古月居网站上找到了资料,放到下面了(著作权归原作者所有): gazebo入门教程(一) 安装,UI介绍 gazebo入门教程(二) 建立简单模型 gazebo入门教程(三) 创建 Velodyne HDL-32 LiDAR传感器模型 gazebo入门教程(四) 改善Velodyne模型外观 gazebo入门教程(五) 添加传感器噪声& 简单控制插件 后面的还有,但是我这几天只弄到了这里,等有了新进度再更。
遇到的bug和解决方法
FreeCAD无法保存dae文件
报错为:pycollada not found, collada support is disabled.
但是我已经安装了 pycollada 的库,在 python 中可以 import
解决方法: 不要用sudo apt install freecad 安装 FreeCAD,在官网下载最新版的 FreeCAD,里面已经自带了 pycollada,没有这个问题。
vscode不明报错但编译可以成功
在gazebo入门教程(五) 添加传感器噪声& 简单控制插件中写到了添加插件的代码。在
virtual void Load(physics::ModelPtr _model, sdf::ElementPtr _sdf)
这句中vscode报错,提示gazebo::physics 中没有ModelPtr 但是我顺着引用文件找到了这个,但用vscode打开引用文件之后在
typedef boost::shared_ptr<Model> ModelPtr;
处报错,提示变量模板 "boost::shared_ptr" 的参数太少 经过多方查找,结果为vscode的cpp标准为 gnu++14 标准,而编译器为g++ 9.3.0 ,即 gnu++17 标准,因此在c_cpp_properties.json 中修改即可。
Velodyne雷达不旋转
添加插件之后雷达并没有旋转,报错为:Topic [.../joint_cmd] is not valid. Goolge没有结果,经过排查发现 plugin 文件夹的位置放到了 ~/.gazebo/model/ 中,原因不明,但移至 ~/ 之后问题解决了。
解决这几个网上搜不到的奇怪bug废了好长的时间。
|