一、先看效果
二、导入地板模型
这个我之前的教程里面有,参考这里:
只需要把my_ground_plane放到了.gazebo中那一步就可以了,那个三轮的车模不用管,这一节使用新的车模racecar!
三、创建工作区间
工程是在上一篇室外光电创意组的博客上改的,所以大家,创建工作区间这一部分可以看这篇博客:
参考其中的创建工作区间部分!
四、启动仿真模型
4.1 启动常规赛道:
roslaunch racecar_gazebo racecar_normal_runway.launch
4.2 修改车模位置
4.3 查看摄像头数据(勾选图示话题)
rqt_image_view
4.4 启动巡线脚本
cd ~/racecar_ws/src/racecar_gazebo/scripts
python findLine.py
左边的图像框是HSV过滤的二值化图片,这里色相环的参数没怎么调就像噪点一样,不过没啥影响,图片中间有一个圆形,那是表示当前算法计算的跑道中心。
4.5 监视误差
rqt_plot /err/data
五、代码讲解
5.1 修改HSV参数:
lower_yellow = numpy.array([ 0, 0, 221])
upper_yellow = numpy.array([180, 30, 255])
HSV参数参考:
5.2 修改处理图片的高度
这是图片处理的有效宽度也是显示图片的范围,适当的修改可以选择合适的前瞻距离。
search_top = h/4 + 100
search_bot = h
5.3 修改方向环的PID参数
这里我就写了简单的用KP控制,同时速度定速
err = cx - w/2
self.ack.drive.speed = 0.5
angle = -float(err) / 25
max_angle = 0.6
if angle > max_angle :
angle = max_angle
elif angle < -max_angle:
angle = -max_angle
self.ack.drive.steering_angle = angle
self.cmd_vel_pub.publish(self.ack)
5.4 修改最大转向角
max_angle = 0.6
if angle > max_angle :
angle = max_angle
elif angle < -max_angle:
angle = -max_angle
x修改max_angle的值即可
六、模型参数讲解
6.1 摄像头的俯仰角
gedit ~/racecar_ws/src/racecar_description/urdf/racecar.xacro
修改图中231行0.2那个参数
6.2 修改摄像头高度
gedit ~/racecar_ws/src/racecar_description/urdf/racecar.xacro
修改图中231行0.1那个参数
七、修改可视化观察数据
代码中已经写好了观察err值的代码如下图,大家可以自己参考着加入想观察的数据,观察多个可以用命令:
rqt_plot /err/data /sin/data ...