Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随的实验报告




笔记来源于:实验
Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随
实现四辆车的多车跟随
孟涵宇 522031910693
跟车程序使用的是multicars场景,由multicars.launch文件启动。找到/root/aliyun_demo/src/raceworld-master/launch文件夹中的multicars.launch文件并打开。
在launch文件内加载了deepracer1到deepracer4四个组,每个组加载多个控制器,其中各个组中的left_rear_wheel_velocity_controller,right_rear_wheel_velocity_controller,left_front_wheel_velocity_controller, right_front_wheel_velocity_controller,left_steering_hinge_position_controller和right_steering_hinge_position_controller接收ROS消息,分别控制了左右后轮速度,左右前轮速度和转向角度。
在加载控制器代码的下面,还加载了一个名为servo_comannds.py的代码文件。
打开servo_comannds.py文件我们可以看到,代码中新建了一个名为servo_comannds的节点,他订阅并接收/robot_name(deepracer1到deepracer4)/ackermann_cmd_mux/output消息。
在接收到消息后,经过适当的转换,将速度和转向信息发布给之前所述六个控制器。
跟车程序由multi_follow1.launch文件启动。其中调用了lane_master.py,pure_master.cpp和main_master.cpp三个程序。
其中main_master.cpp的功能比较简单,新建一个/status主题的发布者,将leader和follower的名字设置好后就可以发布出去。
follower的跟车由pure.cpp实现。首先订阅/status,/deepracer1/base_pose_ground_truth到/deepracer4/base_pose_ground_truth主题,获取leader和follower的名字信息以及四辆车的位姿和转角信息。
将前车的位置信息作为目标进行跟随。
在计算并设置好速度与转角之后,将AckermannDriveStamped类型的消息发布出去。
leader的巡线由lane_master.py实现。在代码中首先新建了lane节点,并且订阅了名为/deepracer1/camera/zed_left/image_rect_color_left的消息。该消息通过Gazebo中的deepracer1小车上的左摄像头获取。在获取到摄像头图像信息后,把它转换为cv2图像数据。此外,还创建了一个/deepracer1/ackermann_cmd_mux消息的发布者。
获得的图像信息通过了高斯滤波,HSV图像转换,腐蚀,二值图转换,视角转换,灰度值处理等一系列操作。
原始图像如下。

we_ui_refresh
腐蚀操作后图像如下。

we_ui_refresh
视角转换后图像如下。

we_ui_refresh
随后根据图像大小设置滑动窗口的参数。
并且在视角转换后的图像中绘制出来。
随后绘制车道线,计算出质心坐标后绘制两个定位用的圆形。其中蓝色圆形位于车道线上,绿色圆形使用的是质心的坐标。
绘制后的图像如下。

we_ui_refresh
计算目标点的真实坐标。并根据偏差计算转角数据。
新建一个AckermannDriveStamped类型数据,给速度和转角信息复制后即可发布。
打开终端,输入如下命令启动multicars场景。
场景如下所示。关闭场景阴影。

we_ui_refresh
新建终端,输入如下命令启动follow.launch。
随后可以看到多车跟随程序的运行情况。

we_ui_refresh
上一篇
实验主题:Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随
实验时间:2023/5/16
姓名:高凌峰 522031910282
实验内容:
1. 创建资源
2. 进入docker镜像
3. 终端里输入
cd aliyun_demo
source devel/setup.bash
roslaunch raceworld_master multicars.launch
打开场景如下图
4. 关闭场景阴影
5.新开终端输入
cd aliyun_demo
source devel/setup.bash
roslaunch raceworld_master multi_follow1.launch
可看到多车跟随程序的运行
实验总结:
1. 学习了多车跟随的代码
2. 加深了对ros系统的了解
下一篇
王瑞坤 周二 522031910201
实验名称:Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随
实验目的:尝试实现Gazebo环境下基于ROS和OpenCV的阿克曼小车多车跟随,并理解其原理。
实验原理:
跟车程序使用的是multicars场景,由multicars.launch文件启动。找到/root/aliyun_demo/src/raceworld-master/launch文件夹中的multicars.launch文件并打开。
<node name="controller_manager" pkg="controller_manager" type="spawner" respawn="false" output="screen" args="left_rear_wheel_velocity_controller right_rear_wheel_velocity_controller
left_front_wheel_velocity_controller right_front_wheel_velocity_controller
left_steering_hinge_position_controller right_steering_hinge_position_controller
joint_state_controller" />
在launch文件内加载了deepracer1到deepracer4四个组,每个组加载多个控制器,其中各个组中的left_rear_wheel_velocity_controller,right_rear_wheel_velocity_controller,left_front_wheel_velocity_controller, right_front_wheel_velocity_controller,left_steering_hinge_position_controller和right_steering_hinge_position_controller接收ROS消息,分别控制了左右后轮速度,左右前轮速度和转向角度。
在加载...
评论