2.人脸跟踪硬件平台搭建

0x00 概述

在我们进行代码编写调试之前,首先就是要把整个硬件平台搭建好。然后在这个硬件平台基础上进行开发调试,一般情况,硬件平台搭建就分为三部分。第一就是供电部分,这个是很重要的,一个系统要想正常运行,没有稳定的电源供应是不行的。第二就是主控系统,这是整个硬件平台的运算处理中心,负责数据的计算处理和分发,我们的代码就是需要运行在这里。第三就是整个平台的交互系统,它负责与外界环境进行交互,例如摄像头负责获取人脸图像,舵机负责驱动摄像头位置移动。

其实对于本项目来说整个硬件开发平台还是很简单的,下面就先来一张整体硬件平台构成的图,让大家先有个初步认识,后面再分别介绍各模块:


0x01 供电模块

这里的供电模块其实主要是为舵机供电的,因为舵机的线是连接在arduino上的。但是arduino的Pin供电大概只有4.5v左右,而一般的舵机要想正常工作,供电电压范围大多数是在5.5V-7.5V范围内。所以如果不外接供电模块的话,舵机就不能正常工作了。

我这里是自制了一个供电模块,使用三块锂电池进行串联组成。因为一般的锂电池输出电压都在3.7v-4.2v之间,其实使用两块锂电池串联就够这个舵机正常使用了,但是我这里使用三块是因为这里我加了一个降压模块,那么可以调节的输出电压范围很大。我就使用三块锂电池串联,这样锂电池组输出的最大电压可以有12.6V了,这样我就可以在5v-12v之间任意调节输出电压了。这个供电模块就不止可以用在这里了,使用范围就会大很多了。

为了方便控制输出电压,我这里给供电模块还加了个开关,这样方便我们控制电源输出。下面可以看看图片:


0x02 下位机控制板(arduino UNO)

这里的下位机控制板其实充当的就是单片机角色,说成下位机无非就是感觉这样更高大上一点。为什么需要下位机呢?为什么不能直接从上位机上来直接控制舵机呢?理论上说是完全可以的,只所以一般情况这些驱动硬件不直接跟主控制板相连接,就是因为主控板上可能没有这么多接外设的IO口。而且有时外设需要的电流电压都比较大,主控板不具备这样的额外供电能力,而且就算能供电这样接也比较危险,很有可能供电问题会将主控板给烧掉。

所以有一个较多IO口,可以单独供电,可以与主控板通过USB或串口等通信的低成本专用控制板就诞生了,这个就是单片机了。就算因为某些未知原因,不小心将这些单片机烧了,成本也是可以接受的。在一般情况下,单片机是没有操作系统的,只要一加电就会循环的执行写好的代码,执行特定的功能。

以前大家常用的单片机可能就是51系列的单片机了,使用汇编来编程。后来出来了stm32单片机,性能更好,功耗更低,可以使用高级语言C语言来编程了。但是stm32的使用还是有门槛的,需要了解各寄存器配置,熟读相应芯片的datasheet。最近几年越来越火的arduino单片机,简直是“傻瓜”操作了。上至古稀老人,下至黄口小儿,真的是人人都可以来使用的单片机。

我这里使用的就是arduino的入门款的开发板UNO,我这里为了方便接3Pin的舵机,就在arduino板子上外接一个扩展板,这样就非常方便专门给舵机供电和接线了。通过下图来了解:


0x03 交互系统

这里的交互系统可以认为就是整个系统与人进行交互的设备,一般分为输入设备和输出设备。这里的输入设备就是摄像头,摄像头来不断的采集图像传输给主控板进行处理,然后主控板的处理程序来检测图像中是否存在人脸。输出设备就是舵机了,舵机会移动使摄像头采集图像中的人脸始终在图像中心位置。

我这里为了方便舵机的左右、上下转动,我使用了二自由度的云台。这个云台可以装两个舵机,一个舵机装在下面可以控制摄像头左右移动,一个舵机装在上面控制摄像头上下移动。下面可以来看看这个云台的样子,如下图所示:


0x04 注意事项

1.这里搭建用的硬件都是可以在淘宝上搜到的,而且都是很常见的硬件。这里我就不给大家列出淘宝上链接了,大家可以根据自己喜欢来找相应的硬件就可以了。

2.注意这里连接arduino的舵机大家可以选用其他型号的,只要是180°旋转范围的就可以了,跟我们人脑袋旋转角度一样。其实淘宝上这样的舵机很多,只要是那种三线的舵机就可以了。


0x05 Feedback

如果大家认为在教程中有任何问题,可以关注ROS小课堂的官方微信公众号,在公众号中给我发消息反馈问题即可,我基本上每天都会处理公众号中的留言!或者直接在本网站文章末尾留言也可以的。最后,如果你要是顺便给ROS小课堂打个赏,我会万分感激,打赏30块还会邀请进ROS小课堂的微信群与更多志同道合的小伙伴一起学习和交流!

发表评论