0
0
0
0
分享

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

2023-05-16000
笔记来源于:实验
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消息,分别控制了左右后轮速度,左右前轮速度和转向角度。 在加载...

评论

登录后可评论