STAR法则在上文中已提到,不再赘述,在这里再整理另外一个项目。
项目简介:
项目目标是研制一款能够实时显示并存储点云信息的隧道勘探智能车。主要由激光雷达,STM32单片机,三星arm开发板与小车主体等部分构成。二维的激光雷达,放在竖直平面,用于获得竖直平面内的距离。用STM32做小车的控制器,可以控制小车前进的速度,继而获得向前方向的位移距离。用Odroid向小车发送指令并接受雷达数据和位移数据,然后上传至笔记本,再用笔记本进行数据处理和三维重建。项目采用ROS作为系统框架,利用ROS的消息传递机制进行多进程通讯与分布式系统开发,同时利用pcl点云库进行点云的去噪处理与三维重建。
situation(情景):
项目的背景是研发一款可以通过上位机控制的智能车,在隧道中可以重建出点云数据、
Task(任务):
由于小车的底层部分已有现成实物,因此主要的任务有
1 通过上位机完成对小车的远程遥控
2 通过小车采集雷达扫描数据,传输至上位机完成点云的重建
Action(行动)
上位机遥控部分:采用Python的Tkinter库编写简单的GUI界面,之后将前进与停止信号发送到topic,在开发板创建接收结点,收到上位机发来的消息时,通过串口向stm32单片机发送速度信号,完成小车的启动与制动。
信号采集部分;采用neato xv-11 激光雷达激光雷达,雷达可以扫面0.15到6米内的距离,扫描角度为360°。创建结点,订阅雷达提供的scan信息,同时结合速度与时间信息得到位移信息,雷达的距离信息结合小车的位移,得到在小车坐标系下的坐标,再将每次扫描得到的点的坐标转换成世界坐标系下的坐标,发布给转化点云节点
点云重建部分:得到的点云信息可以直接转换到原始,但是为了达到更好的效果,点云图通过pcl库处理,先采用邻域修剪法对数据进行去噪,平滑,即利用统计滤波滤除离群点,大概思路是对于每一个点计算它到它的所有临近点的平均距离,在平均距离在标准范围之外的点,定义为离群点并从数据中去除。之后通过贪婪三角化投影算法,点云的三角化就是对给定的点云数据将其按照一定的选点规则连成三角面片。具体方法是先将有向点云投影到某一局部二维坐标平面内,再在坐标平面内进行平面内的三角化,再根据平面内的三位点的拓扑连接关系得到一个三角网络曲面模型。
Result(结果):
在上位机输入速度信息(0-10m/10S,默认0.57m/s),小车进入行驶状态,激光雷达开始工作,此时上位机可以接收到来自小车的点云数据并显示,按下停止按钮,小车停止行驶,点云数据会以pcd文件的形式存储在指定的文件目录下。
项目遇到的问题:
1 对开发包的不熟悉
项目一开始使用的是利用matlab进行信号处理,即把原始雷达数据上传到电脑后手动解析为三维坐标点,再利用画图工具建模,最终效果不好。后改用ROS下的pcl库解决。
2 坐标转换的问题
点云重建中涉及到坐标的转换,开始手动编写函数构建一维坐标最后效果不理想,后采用tf库解决
3 信号问题
局域网信号不稳定,采用独立路由器解决
4 隧道堵塞问题
一开始设计中只有start与stop两个按钮。后来遇到隧道堵塞问题后加入后退等功能
5 速度调节问题
遇到路面不平坦时候,高速运动很可能会产生采集信号不稳以及其他危险情况,因此加入了振动检测模块,即用mems传感器判断行驶过程中的震颤情况,将速度分为三档,在平坦时候以较高速度形式,反之则降低速度,若震颤情况超过阈值,则向上位机发出警报,便于人工采取进一步行动
6 障碍物问题
有时候会隧道中会出现一些阻碍小车前进的障碍物,XXX