2020级网络工程项目设计·ROS小车
项目说明:
本次项目为宁波工程学院2020级网络工程项目设计,目的为控制ROS小车实现定位并行进至指定目标。我们可以将任务分为以下几步:
小车底盘驱动(由键盘控制出发至小车全自动行动)
视觉识别Aruco码实现各个点位(码、车以及中心点等)
根据黑线进行巡线运动直至达到目标点
而考虑到项目本身等实际原因,省略第三步巡线内容,我们让小车行动到Aruco码前,然后径直行动到中心点处实现本次项目目的。
最终实现效果:

思路介绍:
首先,控制小车底盘驱动让小车自旋来使摄像头捕捉到Aruco码图像,根据订阅识别Aruco码软件包返回的坐标信息得到小车相对Aruco码的位姿,再根据实地测量得到的地图中心点相对于Aruco码的位置后计算得到小车到达Aruco码前一定距离后需要转过的角度以及行径的距离,从而实现小车达到目标点位。
ROS基本概念:
节点(Node)
节点就是一些执行运算任务的进程。
消息(Message)
节点之间通讯机制的实现就是通过发布和订阅消息,每一个消息都是严格的数据结构,支持标准数据类型、嵌套结构和数组,也可以根据需要自行定义。
话题(Topic)
消息以一种发布/订阅(Publish/Subscribe) 的方式传递。一个节点可以根据一个给定的话题发布消息(发布者),也可以关注某个话题并订阅特定类型的数据(订阅者),系统中可以同时有多个节点发布或者订阅同一个话题的消息。
节点管理器(ROS Master)
ROS Master 的功能是为了能够使所有的节点有条不素的执行,它通过远程过程调用(RPC) 提供登记列表和对其他图表的查找功能,帮助 ROS 节点之间相互查找、建立连接,同时还为系统提供参数服务器,管理全局参数。
1.Talker 与 Listener 的注册:
两个节点分别发布、订阅同一个话题,启动顺序没有要求2.ROS Master 进行信息匹配:
MASTER 根据发布者和订阅者的信息进行比对,一旦 ROS Master 找到了相互匹配的发布者和订阅者,就会进行匹配:通过 RPC 向 Listener 发 Talker 的 RPC 地信息。
3.Listener发送连接请求
Listener 接收到 Master 发回的 Talker 地址信息,尝试通过 RPC 向 Talker 发送连接请求,传输订阅的话题名、消息类型以及通讯协议。
4Talker确定连接请求
Talker 接收到 Listener 发送的连接请求后,继续通过 RPC 向 Listener 确认连接信息,其中包含自身 TCP 地址信息。
5.Listener尝试与Talker 建立网络连接
Listener 接收到确认信息后,使用 TCP 尝试与 Talker 建立网络连接。
6.Talker向 Listener 发布数据
成功建立连接后,Talker 开始向 Listener 发送话题消息数据。
结束总结:
本次项目圆满结束,过程十分坎坷,最后的结果也并非尽如人意,没有达到本次项目的最高要求。即使经过简化实现大致目标,最后呈现效果也并不满意,我们可以看到有明显的卡顿以及方向并不精确,而且系统鲁棒性也不足。针对车的巡线部分,在本身车摄像头视角限制以及场地的环境因素的影响下,虽然尝试巡线,但是无法到达中心点并停止,因此选择了放弃。
但是,本次项目综合了线性代数、机器视觉、相机模型、ROS系统、订阅以及发布式等其他许多综合性极强的知识,得到了很好的锻炼,学到了许多新奇的知识。