日期:2014-05-16 浏览次数:20627 次
在写第一篇激光雷达的日志我就说,激光雷达的算法开发的最终的目标是移植到嵌入式设备上,
因为在机器人定位时,不可能用一个很大很重的设备,因此最理想的还是ARM平台,(工控机也可以
考虑,几乎不存在移植的问题,在工控机上直接安装Windows,连开发都可以在上面完成),裸奔还
是跑操作系统呢?如果激光雷达的接口是串口,那么裸奔是一个好的选择,可以最大限度的利用CPU,
但是URG-04LX的接口是USB-Serial和串口,UTM-30LX的接口只有USB-Serial,所以为了提高开发
效率,最终还是准备移植到ARM-Linux平台。
一、移植面临的问题
1、驱动程序
ARM-Linux平台是否有激光雷达USB-Serial的驱动程序?
2、交叉编译
如何将上位机的程序编译到ARM-Linux平台上?
3、算法优化
ARM-Linux硬件的能力有限,PC端的程序如果要在ARM上运行必须进行优化,
减少内存消耗和时间消耗。
4、实时显示
在ARM上运行时为了向PC端一样能实时显示计算的效果,最好能够实时显示
计算的结果
下面就会围绕这几个问题逐步去解决,(目前只是解决了一部分,还需继续努力)
二、驱动程序
1、Linux下驱动测试
首先在的电脑上进行Linux驱动测试,系统是Ubuntu10.04,插上电脑。
查看设备: ls /dev
dev下多了ttyACM0的设备
安装串口调试助手或者minicom,进行串口通信,向激光雷达发送命令II,
此时成功返回数据,说明在PC-Linux下设备驱动是有的,开发起来没有太大的难度,显示控件选的是
OpenCV,刚好也是跨平台的,显示控件也不是问题。
2、ARM-Linux下驱动测试
ARM:mini2440
将激光雷达查到ARM上,识别为USB device而不是USB-Serial,说明ARM-Linux下没有设备需要
的驱动程序。
没有驱动的话,有两种解决方式,一种是找到对用的驱动文件,编译为.ko文件,拷贝到ARM并加
载驱动模块,另一种是重新定制Linux内核,定制Linux时勾选上需要的驱动,重新编译Linux Kernal。
我是直接选择的第二种方法,将ARM-Linux重新编译了一遍。
URG的官网上有提到Linux下驱动的事,URG-Series has CDC-ACM device
controller. Thus ACM class driver is used for the device.
因此我猜测增加对cdc-acm的支持应该就可以识别激光雷达为USB-Serial,实际确实是如
此。