1.实验环境
ubuntu18.04(ros-melodic)
2.代码资源
登录GitLab,找到Rockauto-tourbus目录,切换到feature/yzy_Rockauto_Tourbus分支。
3.安装流程
gitclone代码以后,采用catkin build编译,之后运行compile-scripts/build-matching.sh脚本(我已经对脚本进行了处理,目前可以正常运行。该脚本主要涉及gnss-processer等部分,如不编译程序无法正常运行。)
4.运行步骤
1.运行rockauto-tourbus/src/rockauto_common/launch/rockauto.launch文件。(该launch文件中与web接口有关的部分注释掉了,因为暂时用不到。启动后可能会有一些warning,暂时不用管。)
2.启动雷达驱动,VLP-32C_points.launch文件(教育无人车上安装的是velodyne32线的雷达,相关驱动自行下载。)
3.打开rviz,将Fixed Frame设置为map。左下角add-by topic添加visualization。
4.检查visual/points_map这个topic是否正常启动,是否能正常显示map地图。(地图的pcd文件放在resource/map文件夹下)
5.检查velodyne_points节点是否正常启动,点击rviz工具栏中的2D Pose Estimate,在地图上进行点云配准。
6.检查global_waypoints_mark和local_waypoints_mark两个topic是否正常启动,地图上是否能正常显示waypoints。
7.如果上述一切正常,将车停靠在waypoints起点附近。启动rockauto-tourbus/vehicleSwitch.sh脚本,该脚本功能是启动线控。小车即可正常启动。
5.调试过程遇到的问题及解决方法
1.catkin build以后启动rockauto.launch报错。
解决:启动build-matching.sh脚本。原因是catkin build无法完全编译,有些部分需要强制编译。
2.rviz中无法正常显示地图
解决:代码中设置了map的默认读取路径为resource/map,如果不把pcd文件放置在这个目录下就无法正常读取到。另外注意Launch文件中的写法,虽然本车没有gnss,但是跟gnss有关的不能全部注释掉,因为里面也涉及到地图读取和ndt_matching等环节。World2local参数全部设置为0。Lidar_raw改为:“/velodyne_points”,gnss设置为”false”。
3.rviz中无法正常显示waypoints
解决:检查waypoints_loader节点是否正常启动,topic是否能正常发出数据。我当时是因为这个节点一直挂掉,然后通过不断的打断点(ros日志也可以)调试,最后找到了waypoints_loader_core.cpp中的某个函数的某一行的某个参数不合适,最后才得以解决。
4.rviz一切正常,但是启动后小车没反应
解决:可能有很多原因。我们当时是端口号写反了,然后可能是PID控制的问题。
5.小车有反应了,但是动不起来
解决:可能是油门值(Throttle)设置的太小了,把最小值调大一点。
6.Can_parser、Can_control等文件修改
车辆不同,Can帧解析的协议就不同,所以需要对车辆进行针对性修改。另外有些不需要的功能如反向开车等可以先注释掉。同样的Launch文件中的vehicle_type设置为“weisi_bus_ningde”等细节需要注意。
6.调试方法总结
如果小车无法正常启动:
1.遇到问题首先检查安装和启动流程有没有遗漏。Ping一下雷达(192.168.1.110)和线控(192.168.1.201)检查连接是否正常。
2.查看启动过程中的报错信息,这个很重要。有些是自定义的log信息,可以复制了去代码里找。有些是系统的信息,需要去网上查找。
3.检查相关节点和话题有没有正常启动。相关命令有rostopic list,rosnode list,rostopic info xx,rostopic echo xx,rostopic bw xx,rostopic hz xx,rosnode info xx等。
4.还要查看rqt_graph里面的节点话题图,寻找相关的依赖关系,以及tf转换关系。
5.必要时遇到一些细微的错误,需要打断点对出错位置进行定位修改。
6.剩下的有些就是经验问题了,需要多看代码多思考,有不懂的多问师兄。