嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

Intel Joule和Intel RealSense提供了深度传感以及更多

 

加速了强大的,感官的电脑应用的进程

在以前的一篇文章里,我第一次看到了Intel Joule 570X的开发工具包, 它包含了令人印象深刻的微小的、非常强大的Joule 570X模块、配套的突破板和参考Linux O/S。在这篇文章中,一个Interl RealSense R200相机被加入到这个组合中,连同支持库和示例一起,看看在这样的组合能带来什么样的成果。

Intel RealSense R200

Intel RealSense R200 是一个轻量级的USB 3.0外设,带有一个RGB传感器、两个红外传感器、红外激光投影仪和一个用于机载处理的ASIC。这是一个长范围深度/3D相机开发工具包,用于平板电脑和多功能设备。它并不是针对终端用户,而是作为工程师在创建新的应用程序和硬件平台时使用的工具。

这是英特尔的另一款令人印象深刻的设备,从文件中可以引用:

“R200是一款具有70毫米基线的有源立体相机。在室内,R200使用了一种一级激光装置,将额外的纹理投射到一个场景中以获得更好的立体效果。R200在视差空间中工作,最大搜索范围为63个像素,最终结果是以72cm的最小深度距离为628x468分辨率。在320x240中,最小深度距离可降至32厘米。来自多个R200设备的激光纹理产生了建设性的干涉,使得R200可以在相同的环境中被找到。双红外相机是全局快门,而1080p的RGB成像器是滚动快门。共3个图像传感器作为一个组在这个内部时钟触发,为这个库提供匹配的帧集。.”

图形化桌面

有twm窗口管理器的Windows X系统

在此之前,我首先通过突破板的USB UART访问了Joule模块,然后配置了无线网络,随后通过SSH访问它。出人意料的是,已经被写入到Micro SD卡的引用的Ostro Linux发行版的XT版本中包含了一个X服务器,甚至桌面软件来支持这个版本的发布

如果我输入:

startx

X Windows服务器启动,我们只需与twm窗口管理器进行一个基本会话,它具有一定的回溯性,甚至可能会受到更为苦行主义的程序员的青睐,但显然缺乏我们所期望的现代桌面所具备的那种特性。通过在终端窗口中键入 pkill X ,可以终止这段会话。

要获得一个更熟悉的现代桌面环境,我们只需输入:

startxfce4

随后我们会获得一个文件管理器和其他有用的工具。

建设Librealsense

近期GitHub提交了librealsense

Intel表示,Joule确实支持对RealSense摄像头的支持,如果我们看一下 /usr/lib, 这里肯定会有一个名为librealsense.so的支持库.然而,在撰写当前参考Linux映像的时候是v1.0,这是在今年早些时候发布的,而 GitHub上的librealsense开源项目 似乎经常更新。.

有一点要注意的是,参考Linux O / S不包括包管理器,虽然这样可能看上去很奇怪甚至有些倒退,但是在当你考虑创建使用项目的必要工具时它非常行得通,那么对于包含所需应用程序和库的大规模市场设备,使用定制的Linux映像很容易就可以实现,而对于它来说只有这些要求。

正如所发生的那样,提供的Linux映像完整地包含了我们需要克隆的所有工具和软件依赖项,并从源代码构建一个新的librealsense。

首先,我们需要确保相机没有被插入,以此我们可以得到最新的来源,建立和安装。

# git clone https://github.com/IntelRealSense/librealsense.git
# cd librealsense
# mkdir build
# cd build

# cmake .. -DBUILD_EXAMPLES:BOOL=true
# make && sudo make install

通过udev配置USB子系统,还需要另外两个步骤,这样,在插入和配置适当的配置时,就可以识别RealSense摄像头。

# cp config/99-realsense-libusb.rules /etc/udev/rules.d/
# udevadm control --reload-rules && udevadm trigger

当摄像头被插入时,我们现在应该看到消息,表明它已经被检测到被打印到控制台。

[ 4923.102810] usb 2-2: new SuperSpeed USB device number 3 using xhci_hcd
[ 4923.124075] uvcvideo: Found UVC 1.10 device Intel RealSense 3D Camera R200 (8086:0a80)

在Linux、Windows和Mac OS X上安装librealsense的指南可以在GitHub上使用, 但是请注意,在使用参考Linux时,没有必要更新或修补内核,因为支持已经内置到提供映像的版本中。

蓝牙键盘

早些时候,我们使用了USB无线键盘和鼠标,但由于我们现在使用USB接口连接RealSense摄像头,需要一个键盘和指向设备来控制桌面,因此它决定使用一个带有轨迹点的蓝牙键盘。蓝牙设备的配对 很简单.另一种选择是使用一个带有键盘、鼠标和SR200的USB集线。

运行的例子

来自librealsense枚举设备程序的部分输出

由于库被安装到/usr/local/lib64,我们需要定义一个环境变量,这样它就会被链接器拾取:

# export LD_LIBRARY_PATH=/usr/local/lib64

如果在启动X Windows之前完成此操作,则意味着在Xfce中打开的任何终端会话都将设置环境变量。

这些示例安装到/usr/loca/bin,并且都以cpp-*开头。

cpp-headless

生成的文件:cpp-headless-COLOR

这个简单的示例 捕获了30个框架并将最后一个写到磁盘,结果在运行时创建了4个文件。上面可以看到彩色摄像机的图像。

生成的文件:cpp-headless-INFRARED

下一个是来自第一个红外摄像机。

 

生成的文件:cpp-headless-INFRARED2

第三个是来自第二个红外摄像机。

 

生成的文件:cpp-headless-DEPTH

最后的图像有计算的深度。

cpp-tutorial-1-depth

前面的例子被命名为“无头”因为它不需要安装监视器。 但是,这个例子和它同样可以通过SSH会话或UART连接运行,因为深度是通过使用ASCII字符表示的。

cpp-pointcloud

这个 point cloud 示例只显示在一定深度内的对象。

cpp-stride

这个例子是一个低延迟,多线程的演示与回调,并显示视频从RGB和两个红外摄像机,加上深度合成。

还有其他的一些例子,但是我不会让每个人都看到其中的一个,我至少会留下一些惊喜!

总结

让Intel Jouel和运行的RealSenseR200根本没有时间和例子运行顺利,提供了几乎即时的经验,与硬件平台的能力。有趣的是,所有的例子都只有100到200行代码,在较厚的一端包含一个GUI窗口和多个视频流。

当使用这种硬件组合时,我们很容易忘记,不可思议的微小Jouel模块正在完成所有的重任——而且它也做了令人钦佩的工作,提供了非常棒的性能。与Intel RealSenseR200配合使用,这提供了强大的感知计算能力,可用于开发下一代的物联网应用、增强现实应用,以及更多的功能。

Andrew Back

Open source (hardware and software!) advocate, Treasurer and Director of the Free and Open Source Silicon Foundation, organiser of Wuthering Bytes technology festival and founder of the Open Source Hardware User Group.