• 143
本项目设计了一种基于ROS (机器人操作系统)的自动驾驶小车。在传统智能车的基础上,加入了搭载ROS 操作系统的上位机控制系统,通过SLAM 视觉算法(即时定位与地图构建),能够即时建立坐标,规避障碍,从而进行对目标的导航,规划最优路线。
一、设计框架
激光雷达==>收集环境信息==>输入到Jetson TX2,通过SLAM 算法处理==>转换成轮速数据==>通过串
口输送到STM32==>操控小
车进行驾驶。
图1一汽幸福使者
二、模块介绍9月汽车销量排行榜
本项目模块主要分为两大部分:STM32单片机主控的下位机小车,激光雷达传感器以及搭载ROS 操作系统的Jetson-TX2单片机的上位机。
楼兰(1)STM32单片机主控的下位机小车模块
本项目选用STM32单片机控制的4轮驱动的小车作为下位机。对于直流减速电机的控制,我们采用TB6612FNG 驱动芯片来驱动电机,通过控制驱动芯片的AIN1,AIN2,BIN1,BIN2,PWMA,PWMB 的
基于ROS的自动驾驶小车的设计
东南大学成贤学院  邹贵豪  叶金鑫  梁嘉钰
高低电平来控制电机的正转,反转,停止,通过控制PWMA,PWMB 在0-255之间控制小车的速度。一路PWM 控制小车一侧电机的速度。
(2)激光雷达传感器搭载ROS 操作系统的Jetxon-TX2单片机上位机模块
我们在Jetson-TX2单片机搭建了ROS 操作系统进行进一步的控
制。参考ROS 中文:“ROS 是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。”然而更确切地说,ROS 是一个元操作系统。元操作系统不是一个明确定义的术语,而是一个利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。
在此之上,小车实现自主导航应该至少需要如下几种条件:①地图
②确定自身位置的功能③识别障碍物的功能④计算出最优行驶路线的功能
1、地图
当我们来到一个陌生的地方,我们首先需要的就是一张地图来
给我们指引方向。如果要小车实现自主导航或者避障的功能,那么首先我们就需要一张供小车使用的地图。因此我们用到了SLAM 技术(机器人同时定位与建图)。SLAM 就是为了让我们的小车自己(
或接受人的一些帮助)绘制地图而出现的技术。这是在机器人移动到未知空间时通过探测周围环境来估计当前位置并同时绘制地图的方法。
2、确定自身位置的功能:
在ROS 中,机器人的位置(position :x ,y ,z )和方向
• 144
(orientation :x ,y ,z ,w )被定义为姿态。该位置由x 、y 和z 三个向量描述,而方向使用四元数形式的x 、y 、z 和w 。对于一台车来说,的姿态=位置(坐标)+方向。
3、识别障碍物的功能:
我们使用激光雷达检测墙壁和物体等障碍物。4、计算出最优行驶路线的功能:
也就是导航功能,这是计算到达目的地的最优路径,并且驱动机器人按照最优路径到达目的地的功能。实现这个功能的算法有很多种:称为路径搜索和规划的A*算法、势场算法、粒子过滤算法和RRT 算法等。
三、功能的实现
该项目主要实现了三个功能:下位机控制电机以及对把里程计数据传递给上位机,中间层负责通信(和下位机制定通信协议、模式的选择、数据的转换并以topic 的形式发布),上位机负责融合下位机传递的里程计数据和外传感器采集的数据,构建地图、定位、以及导航。出于实际情况考虑,我们将中间层和上位机合并起来。
(一)下位机控制:
下位机的控制原理以及在前文给出。这里不再赘述。(二)上位机数据收集和中层通信:①ROS 的通信机制:
ROS 是以节点的形式开发的,而节点是根据其目的细分的可执行程序的最小单位。节点则通过消息(message )与其他的节点交换数据,最终成为一个大型的程序。
②ROS 和STM32
之间的通信方式
图2
1、串口发送
(1)内容:左右轮速度,单位为mm/s
(2)格式:5个字节,[帧头0x68,0x01  2字节][模式1字节] [帧尾0x0d,0x0a  2字节]
表1
串口发送右轮速度(4字节)
左轮速度(4字节)
单位
mm/s
mm/s
2、串口接收
(1)内容:小车X,Y 坐标(mm),方向角(rad),线速度(mm/
s),转弯角速度(rad/s)
(2)格式:24字节,[帧头0x68,0x01  2字节] [X坐标4字节][Y坐标4字节][方向角4字节][线速度4字节][角速度4字节][ 帧尾0x0d,0x0a  2字节]
表2
串口接收
X坐标(position_x=0)Y坐标(position_y=0)方向角
宝马车主花800元还没加满油
(oriention=0)
线速度(表示机器人平移速度)(vel_linear=0)角速度(表示
机器人的转弯
速度)
(vel_
t60配置angular=0)
单位u宝马改装
mm
mm
rad
mm/s
rad/s
3
、控制思想
图3
图4
导航推测所需要的信息(中心位置(x ,y),车轮间距离D ,车轮半径r 。
设D 是车轮之间的距离,r 是车轮的半径。当机器人在时间内移动很短距离时,利用左右电机旋转量(当前编码器值和之前的编码器值)来计算出左右车轮的转速:
(下转第147页)
• 147
时傅里叶变换(STFT),对声音信号分段进行变换。图5 基于频域的多通道系统
经STFT后的频域信号是离散的频率点,对其进行分频带较为灵活。由于各个频率点是等间隔,对于实现等带宽的多通道系统,只需平均分配,使各个频带包含同样数量的频率点即可。对于不等带宽的多通道系统,需要按照需求,给每个频带分配不同的频率点数。例如,如果要按照巴克度量划分频带,只需按照式(1)将以Hz为单位的频率点转换成以巴克为单位的频率点,然后,进行以巴克为度量的频带划分。
频率的分辨率取决于进行的变换的采样点数,如果要增加频率分辨率,就需要增加分段的点数,从而,引起时域的延迟增加。对于助听器来说,时间的延迟是一项重要的性质,延迟过大直接影响佩戴的效果,其最大可接受的总的延迟大约为10ms。因此,采用频域的多通道系统时,要充分考虑频率分辨率和延迟的关系,在两者
之间进行权衡,合理选择参数。
如果直接在频域进行数字处理,频域计算的等效滤波器的长度过长,可能引起转换到时域后产生混叠的现象。一种解决方法是在频域进行分频,并计算频域的处理的滤波器,再将频域的滤波器经FFT逆变换,转换到时域,在时域上对信号进行处理。
4.结语
本文对数字助听设备的多通道系统进行了研究,阐述了其频带划分尺度和实现方法。由于数字助听设备本身系统性能和电池容量的限制,以及对延迟的要求,在设计其多通道系统时,一方面要考虑动态范
围压缩和降噪等算法对多通道系统结构的需求,另一方面还要考虑其功耗和对系统资源的占用率,并且尽可能的降低系统的延迟。这些要求可能是相互矛盾的,这就要求设计者在对多通道系统进行选型时,综合考虑各种因素,在各项指标之间做出权衡,以达到最优的效果。
作者简介:
张恩勤,男,陕西宝鸡人,从事于消费类电子产品行业,专注于智能语音硬件产品研发。
程雯,女,河北石家庄人,从事电子行业研发近8年,具有丰富的电子产品开发从业经历。
姜德军,男,江苏南通人,从事无线通信软件件开发18年以上。吴海全,男,湖北省鄂州市人,负责企业电子产品项目总体开发管理,对人工智能应用和智能终端开发进行研究探索。
(上接第144页)
求出左右轮的移动速度,并求出机器人的平移速度和旋转速度:
最后用上面计算的数据来得出小车的位置和方向:
四、总结
本课题主要对如何搭建ROS 自动导航避障小车进行了研究。利用激光雷达和RGB 深度相机收集环境数据,通过视觉SLAM 算法进
行处理,避开障碍物并且规划出最优路径。我们采用STM32单片机接收上层算法传递的指令,经过SLAM 算法实时地分解为两轮的速度指令,通过该信号驱动电机达成对小车的控制,从而实现了小车的自主导航与避障。并且由实物验证了本项目的可行性。本文从设计角度分析了ROS 小车的各个模块,在研究的过程中仍然存在诸多可以加以思考拓展改进的方面:
1.SLAM 算法和路径规划算法的选择。
2.转弯方式的制定。
3.数据拼接问题。
4.四元数计算问题。
5.对tf 坐标的理解。