视觉跟踪项目(一)

视觉跟踪项目(一)

之前的文章介绍了一些定位方面的工作,这个项目与定位异曲同工。通过处理深度图像和RGB图像,完成对人的跟踪。介绍一下硬件平台+软件平台。

1.硬件介绍

主控选择了raspberry pi 3b,开发嘛,先选择一个简单的快速验证功能。这里记录一下捅咕树莓派的一些经历,以后忘记了可以查询。

(1)首先到手板子,最方便的还是像普通arm一样,在pc机编译完,烧入树莓派。首先设置树莓派的静态IP,按照之前的经验修改了/etc/network/interfaces,并无卵用。在网上搜索了一会,按照大神们提示,修改/etc/dhcpcd.conf文件,在尾部添加了

static ip_address=10.10.2.102/24
static routers=10.10.2.1
static domain_name_server=8.8.8.8 再次ifconfig查看,发现IP设置正确。在pc机运行putty,选择SSH输入IP即可远程操控。

如果树莓派上不去外网,但是能ping通主机和ip。应该是dns设置不正确,在/etc/resolv.conf里添加

nameserver 8.8.8.8 重启或重新打开网络,如果发现resolv.conf重置内容。使用命令 chattr +i /etc/resolv.conf ,这样可以避免该文件被重写。

(2)显示器,买了一根HDMI转VGA的连接线,淘宝也要了相应的config.txt文件,但是并无卵用,显示器还是漆黑一片,淘宝店家说我的线不兼容。又买了他家的一根,等到货了我再写上。

(3)深度传感器,这个是与我们合作过的一家公司拿来的,通过openni驱动,usb接口,硬件没什么好说的,主要是openni移植的问题。下面软件部分会介绍

2.软件介绍

现阶段软件部分主要分为两块,1.图像采集及处理 2.驱动电机

(1)深度图像采集,依赖深度传感器,通过openni驱动设备,openni在这里的作用主要就是初始化设备,及调用其捕获深度图像。得到图像后进行一个处理,找出目标人物的质心,进行跟踪。

PS:openni的移植也是我费了不少心思,首先移植到一块arm9的板子上,刚开始一直说是找不到.so文件,后来换了一个版本的重新烧进去又说illegal instruction。估计是编译的版本和arm9不匹配。正好手边有一块树莓派,一看是A53的索性拿来用,基于之前的教训,觉得下载源码自己在树莓派下编译了一下。编译生成.so文件,也拷进系统目录了,环境变量也添加了,就是他妈的显示打不开设备。无语无语无语。。。然后试着把官方提供的编译好的 OpenNI-Linux-ARM-2.2拷贝到板子里,复制.so文件到/usr/lib,在/etc/profile 里将/OpenNI-Linux-ARM-2.2中的Redist依赖添加到LD_LIBRARY_PATH路径。终于。。。可以通了。。。 我越来越发现,每次调通一个东西,都觉得这么简单的一个玩意之前像傻逼一样搞不定。但是我相信,做过傻逼的事越来越多,以后犯得傻逼就越来越少0.0

(2)驱动部分,我是通过一个da转换芯片输出模拟电压控制两个电机。da芯片原理很简单,片选打开,根据时序往IO口依次写1写0就好了。树莓派下可以直接使用wiringPi的驱动,API非常简单,几条语句就完成了对gpio的控制,底层的源码可以在github上clone下来学习一下,和arm下的驱动大同小异。

(3)硬件,软件都调好了,要放在自己做的一个小木板车上跑,需要添加开机启动项,总不能抱着电脑跟着。本来以为很简单的事,在/etc/rc.local里面填个路径就好了,没想到一直不成功。后来仔细看发现,在普通用户下程序不能运行说是找不到libOpenNI2.so和libOpenNI2.jni.so。我就日了狗了,改了用户组,改了权限都不行,到现在我也不明白,希望哪个大神指导我一下。我想的蠢办法,那就改成默认root登陆,但是又发现在/etc/rc.local添加的东西是在你以root登陆之前执行的,所以还是显示哪个错误。最后采用的方法是,把用户改成了root权限,在根目录下,/.bashrc中添加后面添加要执行程序的目录,我是直接拷贝到了根目录。再次重启,一切顺利跑起来了。


总结,基本功能是实现了,但是由于设计到图像处理,程序运行的非常慢,大概3hz的样子,这个速度控制电机跟踪肯定是有问题的,根本反应不过来。so,树莓派说是有一个400M的GPU,正好下一步搞一搞,看看能不能提高程序速度,了解一些之后会更新后续文章。

你可能感兴趣的:(嵌入式开发,linux)