理想情况下,我想使用便宜的传感器或传感器组合来检测房间内的人并定位该人。我希望机器人进入房间,检测是否有人员在场,然后移至检测到的人。精度不必是100%,因为成本是一个重要因素。我希望这种传感器的计算要求能够在Arduino上运行,尽管如果不可能的话,我愿意使用具有更大人力的东西,例如Raspberry Pi或BeagleBone Black。我有一些想法;但是,它们都不是理想的:PIR传感器-可以检测大视野(即通常为120度或更大)内的运动。可能是我所知道的最接近“人类”探测器的事物。但是,在如此大的视野下,需要移动并定位/三角剖分将很难(不可能?)的人。
超声波-可以高精度检测物体。具有较窄的视野;
红外探测器-(例如,锐利的距离传感器)可以再次以非常高的精度,非常狭窄的视场检测物体。但是,它再次无法区分对象。
网络摄像头+ OpenCV-可能使用面部检测来检测房间中的人。这可能是最好的选择。但是,OpenCV在计算上很昂贵,并且运行起来比arduino要多得多。
Kinect-使用Kinect的特征检测功能,相对容易识别区域内的人;但是,Kinect太贵了,我认为它不是“便宜”的解决方案。
也许有人意识到调整到体热的廉价“热量检测器”和/或通过上述(#1-4)的某种组合获得了成功,并且想分享他们的结果?
#1 楼
被动红外探测器(PIR)和声纳测距仪(SRF)的组合应该可以解决问题。以前对我有效的方法(找不到人,但非常相似)是在左侧和右侧分别指定两个PIR,以便它们在中间有一点重叠。 >然后您可以确定人是在左,右还是在前面(当两个都打开时)。然后,您基本上将其堆叠在SRF的顶部,它将告诉您范围等信息。它有点脏,您需要做一些假设,但为了简单起见,它很好地工作。
伪代码2个PIR可能非常简单:
amount = 60; //degrees
while (notCloseEnough)
{
if (bothActive)
forward;
else
{
if (leftActive)
turnLeftByAmount(amount);
else
turnRightByAmount(amount);
amount = amount - 5;
//recalibrate
if (amount <= 0)
amount = 60;
}
checkIfCloseEnough();
}
想法是,如果您在该区域看到某物,则将其转到一侧(60度)很多。如果转弯后它们不在您的面前,请向您看到它们的一侧稍微转一点。不断重复并缩小转弯量,直到它们在您面前,然后再向前。请记住,一旦它们出现在前面,您就不会转动太多(重新设置角度),因为这样不会很快移出“范围”。
我真的为该算法的实际效果感到惊讶(我们将其用于自动追逐玩具,由于使其太容易打败/抓住人类控制的机器人,因此不得不降低/降低速度)。
Pololu均提供两种传感器(无隶属关系):
无源红外探测器声呐测距仪
评论
$ \ begingroup $
您能张贴一些伪代码或进一步的细节,说明如何使用PIR传感器和声纳来检测和定位人吗?
$ \ endgroup $
– Yahma
2013年6月6日4:32在
$ \ begingroup $
此解决方案的范围是多少?是否可以将其追踪到300英尺外的人员?并且可以容纳180度无移动部件的视场吗?感谢您的建议!
$ \ endgroup $
– Crashalot
16-10-11在5:52
$ \ begingroup $
PIR数据表没有列出范围(pololu.com/file/0J250/SE-10.pdf),但是根据传感器的大小,似乎范围会受到限制,并且肯定没有可以检测100-300英尺外的人体运动?
$ \ endgroup $
– Crashalot
16-10-11在5:59
$ \ begingroup $
这在短距离(大约2-3米(6-9英尺))下效果很好。我也认为该算法无法很好地扩展到更大的距离,例如因为这实际上取决于这样一个事实,即即使是较大的“错误”或波动,也可以在机器人或主体分离得太远之前予以纠正。
$ \ endgroup $
– profMamba
16-10-11在21:26
#2 楼
可以使用的最新传感器类型是欧姆龙(D6T系列)或Excelitas(DigiPile)的基于MEMS的温度阵列。与PIR元件相反,它们可以测量绝对温度,从而可以区分背景温度和前景温度,并检测温度源的运动和静态存在。评论
$ \ begingroup $
您知道这些传感器是否可以跟踪300英尺外的人吗?
$ \ endgroup $
– Crashalot
16-10-11在5:51
$ \ begingroup $
我认为那不行。我说最多5-10m。分辨率非常低,因此处于此距离的人只是一个像素内的一个小点。
$ \ endgroup $
– kjyv
16-10-12在10:18
$ \ begingroup $
感谢您的答复!除了高分辨率的计算机视觉之外,还有什么能在300英尺的范围内起作用?由于CV的计算量如此之大,您是否可以通过将CV与其他传感器(如PIR(或热))耦合以跟踪100-300英尺远的人来降低计算成本?
$ \ endgroup $
– Crashalot
16-10-12在19:25
#3 楼
电容式传感器可以工作,制造起来确实很便宜,只需铝箔和一些电阻器,它就能检测到肉,但是我不确定是否除了肉以外我什么都检测不到,您可以使用3进行三角测量评论
$ \ begingroup $
嗯?这个范围是多少?毫米?
$ \ endgroup $
–RoboKaren
2014年6月25日14:13
#4 楼
我不能说这是否最简单,但是可以想象,您可以使用欧拉视频放大库来检测人的脉搏。在这种情况下,您将需要在视频中找到与预期的人脉相匹配的波动。您还需要显示可见脉冲的身体部位的清晰图像。
还有一些工作(示例1,示例2)探索了基于硬件的面部检测。几年前的数码相机具有此功能,它本质上是高度优化的神经网络,旨在说“这个正方形是否包含人脸”……然后您只需在捕获的图像中遍历一组预定义的正方形即可。
评论
$ \ begingroup $
噢,你建议我写我的时候做的同样的事情!您也看过电影《尖叫者》(1995)吗? = P
$ \ endgroup $
– jzx
2014年2月14日15:31
$ \ begingroup $
我看过预告片,但从未看过电影...很高兴知道我可能会遇到一些事情。但是Yahma在做什么? :)
$ \ endgroup $
–伊恩
2014年2月14日下午16:48
#5 楼
我尝试使用PIR,但是它在处理和延迟方面存在问题。坦率地说,这不是一种有效的人类检测选择。可以使用电容传感技术,因为它是最便宜,最简单的人类检测方法(明智的选择),并且也不太复杂。您可以以非常低的成本为自己制造传感器,这对小型项目非常有用。我在“人类检测机器人”项目中使用了一个。您可以在以下位置观看我的视频:基于电容的人体检测
#6 楼
在未来几年中可能会越来越流行的非金属解决方案是将繁重的数据处理任务(例如,识别图像中的人)转移到Cloud服务。假设您的设备已连接到互联网。以下是Raspberry Pi和Google Cloud Vision API的示例:https://www.dexterindustries.com/howto/use-google-cloud-vision-on -the-raspberry-pi /。请注意,它需要在试用期内订阅Google Cloud,但是如果您每月向其服务器提交的请求少于N个,则某些其他Cloud Vision API(Amazon,Microsoft Azure等)可能甚至免费提供其服务。 。
在小型平台上进行大数据处理的另一种解决方案是将工作转移到机器人上具有专用于运行已训练过的机器学习模型的专用处理器单元的类似thumbdrive的设备具有Raspberry PI的神经计算棒:https://medium.com/deep-learning-turkey/a-brief-guide-to-intel-movidius-neural-compute-stick-with-raspberry-pi-3-f60bf7683d40) 。这也可以离线使用。对于爱好项目,它们仍然有些昂贵,但是我希望它们的成本会像其他事物一样下降。
评论
是人类吗?还是应该认识埃德先生?任何热身的哺乳动物。它会在室内使用,所以埃德先生不应该在那里。但是,如果他在场,就会被发现。 =)
当我寻求类似的东西时,我被领会到Kinect实际上并不那么昂贵。但是,它确实需要最小距离才能正常运行。仍然可以满足您的要求,它可能会起作用,并且我相信那里有很多代码。
您采取了什么解决方案?您碰巧找到了更长距离的东西吗?
其实我有一个问题。我们可以使用红外传感器在Audrino的模拟引脚中检测人脉率吗?如果是这样,那又如何?请帮帮我