OAK相机与树莓派

news2024/11/14 16:30:09

编辑:OAK中国
首发:oakchina.cn
喜欢的话,请多多👍⭐️✍
内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。

▌前言

Hello,大家好,这里是OAK中国,我是助手君。

我们的设备也能接在小型单板机上,如树莓派。为了在树莓派上安装depthai,你应该先安装依赖再用pip安装库,DepthAI库在piwheels上为RPi预装了wheels。

⚠注意!部分链接属于外网,国内可能打不开。

▌使用预设的树莓派系统镜像

我们提供了一个树莓派镜像,预先安装了DepthAI和所有依赖。镜像文件下载地址请查看。

  • OAK-D-CM4-POE,使用默认的树莓派操作系统,预安装了DepthAI。所需硬件:至少8GB的uSD卡,与OAK-D-CM3、OAK-D-CM4类似,镜像会烧录在这张卡上。要启用第二张uSD卡,请参见这里的解决方法。我们建议用户将此镜像用于所有OAK相机
  • KS_Rpi_OS_Full,使用树莓派完整操作系统,预装了DepthAI和CEP。所需硬件:至少32GB的uSD卡,带4GB RAM的树莓派。这张镜像被烧录在uSD卡上了,这张卡是在包装内的(会发给Kickstarter支持者)。如果你想用CEP平台,请仅使用此镜像!

可以在这里找到创建这些镜像和变更日志的步骤。

烧录uSD卡

  1. 从Google Drive下载树莓派镜像(上面的链接)。下载Balena Etcher程序。你也可以使用RPi Imager,但我们发现有时会有问题。
  2. 打开Balena Etcher。如果你已经下载了.AppImage,你可能需要右键单击它,然后单击run来启动程序。
  3. 点击 Flash from file并选择你以前下载的.zip镜像。
  4. 选择目标uSD卡。
  5. 点击Flash,一直等到它完成。
  6. flash完成后,安全取出uSD卡,将其插入树莓派,并给树莓派通电。

▌树莓派为OAK供电

树莓派文档声明树莓派2或更高型号可以通过USB提供高达1.2A的电流。即使在最大工作负载下,OAK相机的功耗也低于1A,这意味着你可以通过USB-C线直接从树莓派为OAK相机供电,除非:

  • 你有额外的USB设备连接到RPi USB端口,消耗太多电流。总的来说,RPi可以提供1.2A,因此如果所有USB设备消耗超过1.2A,将会断电。
  • 你使用Pro系列的OAK相机,红外激光发射器和红外照明LED将额外消耗高达0.25A。

我们仍然推荐给你的OAK相机外部供电,要么通过5V供电口(在OAK-D设备上),或者使用Y型转接头。原因是OAK有电流尖峰(特别是在使用视频编码器和运行AI推理时),这可能导致断电。

▌SSH进入RPi

如果你使用预先配置的RPi OS镜像,SSH服务器已经启用,否则你需要在这个boot内创建文件ssh,所以SSH服务器将在启动时启用(此处为教程)。

在这里插入图片描述

如果你的RPi 连接了WiFi,你可以在boot里通过创建(和编辑)wpa_supplicant.conf来设置WiFi SSID/密码(此处为教程)。

通过以太网/WiFi将RPi连接到与你的计算机相同的局域网后,你可以使用下面的命令SSH到RPi。如果RPi和计算机不在同一个局域网中,你必须指定RPi的IP,而不是luxonis.local-这是你的RPi在预先配置的RPi镜像上的默认名称。

ssh pi@luxonis.local -X

-X参数在Linux上启用X11转发——所以OpenCV的imshow图像将通过SSH转发到你的计算机。在MacOS上,默认情况下不会安装X11,所以你需要下载它,更多信息查看这里。

当你第一次SSH进入RPi时,它会警告你真实性,就像下面的日志一样。

The authenticity of host 'raspberrypi.local (192.168.1.222)' can't be established.
ECDSA key fingerprint is SHA256:stb5mbRQeX6veOq8Wzg81rz9IHonxJR2++Q8bDYryTo.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

输入yes继续。

在这个命令之后,你需要提供密码。默认RPi操作系统密码是 raspberry,你应该修改它。

SSH成功之后,让我们尝试运行一个示例应用程序python depthai-python/examples/MobileNet/rgb_mobilenet.py
在这里插入图片描述

▌已知镜像限制

  1. OAK-D-CM4-PoE,因为镜像V8,第二张uSD卡支持将被禁用。这是因为如果启用了uSD卡支(出于存储目的),WiFi连接将被禁用。要启用第二张uSD卡支持(并禁用WiFi连接),你可以编辑/boot/config.txt并取消注释该行dtoverlay=sdhost,poll_once=off然后重新启动系统。

▌向eMMC闪烁一个图像

OAK-D-CM4和OAK-D-CM4-PoE板载树莓派CM4。大多数OAK-D-CM4批次都有带eMMC内存的CM4,大多数OAK-D-CM4-PoE板都有CM4 Lite,它没有eMMC内存,而是从uSD卡启动。如何将镜像闪存到uSD卡非常简单,这里我们将介绍如何将镜像闪存到CM4上的eMMC上。

这里有一个OAK-D-CM4,它有CM4和红色箭头表示的eMMC闪存。CM4 Lite版本在那个位置不会有这个芯片。
在这里插入图片描述
要将镜像闪存到CM4 eMMC(官方RPi指南),首先需要用header引脚启用USB_BOOT。默认情况下,连接器位于指示为的2个接头引脚上DIS(禁用),所以我们必须将连接器移动到EN引脚(启用)。
在这里插入图片描述
切换连接器后,我们可以用microUSB线连接我们的主机与设备(上面的红色框所示位置)。OAK设备(具体来说是CM4)也必须通过5V电源孔供电。

连接microUSB和电源后,我们需要启用RPi USB boot。我们遵循了此处的教程,构建并运行程序后,你应该会看到类似的内容:

/Documents/usbboot$ sudo ./rpiboot
RPIBOOT: build-date Apr 21 2022 version 20220315~121405 445356e1
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Loading embedded: start4.elf
File read: start4.elf
Second stage boot server done

启动完成后,你应该在RPi Imager或Balena Etcher(如下面截图)中看到eMMC内存,这样你就可以很容易地将所需的镜像闪存到eMMC。闪存完成后,确保禁用USB启动(通过再次切换连接器)并重启设备。它应该从新刷新的镜像启动!
在这里插入图片描述

▌树莓派Zero

树莓派Zero就性价比而言是一款很棒的单板电脑(SBC),你可以花大约5美元得到一个。它有512MB内存,1GHz单核CPU,以及可选的板载蓝牙和WiFi连接(RPI Zero W,价格约为10美元),耗电0.5W左右。
在这里插入图片描述

RPi Zero对于流媒体元数据(NN结果)、低分辨率的编码视频或轻型计算来说是足够的。如果你打算传输高分辨率视频,执行繁重的计算(例如使用OpenCV)或后期处理,RPi Zero将不是主机的最佳选择。

将OA相机连接到RPi Zero

RPi Zero有一个外设的micro USB口,你可以使用标准的USB-C(转USB-A)线,但你需要OTG连接器/线把一台OAK相机连接到RPi Zero。
在这里插入图片描述
以上所有选项都有效。我们与这些公司没有联系/隶属关系。(大家可以在某宝自行搜索购买)
在这里插入图片描述
根据我们的测试,RPi Zero能够为OAK-D提供足够的电力,而无需外部电源(电源孔或Y型转接头)。

▌RPi故障排除

RPi锁定/RPi上的OAK崩溃

树莓派的所有USB端口的最大限制为1.2A,OAK相机可以达到1A(在最大功率下,通常接近500mA)。

因此,如果你看到锁定,可能是因为USB设备从树莓派汲取的总功率超过了1.2A的限制。使用有电源的hub(USB扩展坞)可以防止这种情况,或者通过USB从树莓派上给更少的其他东西供电。

这也可能表现为OAK在树莓派上随机崩溃。如果OAK被配置为一次做很多事情,这可能会变得特别频繁。随着我们让DepthAI同时做越来越多的事情–从而增加OAK可以拉动的最大功率,这种情况变得越来越有可能。看起来OAK的峰值功率(电流)可能超过了树莓派能够处理的范围,导致OAK断电并返回错误。

因此,如果你在树莓派上遇到了关于DepthAI稳定性的问题,请尝试通过电源和/或供电的USB扩展坞给OAK相机供电,看看错误是否会消失。

不带X11转发的SSH-ing

如果你进入RPi而没有-x参数并尝试显示一个框架(例如cv2.imshow()),你可能会得到如下所示的错误:

  • (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
  • qt.qpa.xcb: could not connect to display. qt.qpa.plugin: Could not load the Qt platform plugin "xcb".
  • This application failed to start because no Qt platform plugin could be initialized.
    解决方案是在连接到RPi时使用X11转发,请参见SSH进入RPi。

▌参考资料

https://www.oakchina.cn/product/oak-d-cm4-poe/
https://www.oakchina.cn/2023/01/28/oak-rpi/
https://docs.oakchina.cn/en/latest/
https://www.oakchina.cn/selection-guide/


OAK中国
| OpenCV AI Kit在中国区的官方代理商和技术服务商
| 追踪AI技术和产品新动态

戳「+关注」获取最新资讯↗↗

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/182256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器人中的数值优化之修正阻尼牛顿法

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 Newtons Method 2 Pratical Newtons Method 1 Newtons Method 当我们引入函数的二阶信息就考虑到了curvature info,这里先对函数进行泰勒展开,取二阶近似,对近似后的函数取最优解&#…

springboot 线程池

为什么要使用线程池 使用线程池之后,不需要频繁的去创建和销毁线程(比如项目中手动创建线程,new Thread 类,我们可以把创建和销毁的线程的过程去掉),从而让线程得到重复的使用。并且可以对线程进行统一的管…

手把手教你用 Python 搭建一个图像分类器

深度学习是使用人工神经网络进行机器学习的一个子集,目前已经被证明在图像分类方面非常强大。 尽管这些算法的内部工作在数学上是严格的,但 Python 库(比如 keras)使这些问题对我们所有人都可以接近。 在本文中,我将介绍一个简单的图像分类…

机器人中的数值优化之最速下降法

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 迭代方向 2 步长的选择 3 Armijo condition 4 非精确线搜索的优势 1 迭代方向 梯度方向是函数上升最快的方向,而负梯度方向则是函数下降最快的方向,因此最速下降法就是以负梯度方向为迭代方向…

二叉树的构造和相关功能的代码实现及解析

目录 一.二叉树类的定义 二.构造二叉树(构造函数) 三.为二叉树插入节点(insert_value) 四.移除根节点(remove_root,lchild_leaf) 五.移除二叉树中的某值(remove,remove_value) 六.清空二叉树 七.前、中、后序遍历 一.二叉树类的定义 二叉树类的定…

Django入门学习-了解基本模块

目录 MVT设计了解 认识MVT 实际操作 Template: View: 路由配置 Model: 默认的后台管理模块 初始化admin模块 应用中Admin注册 MVT设计了解 认识MVT Django的web设计模型是MVT: Model:数据存储层,处理所有数据相关的业…

idea+ApifoxUploader+Apifox真是内外双修,香

前言 最近部门为整合后端组、前端组、测试组、需求组、产品组等组之间的工作流程,旨在提高协调与高效,其中之一就是希望开发组(后端、前端)开发的接口能及时更新,测试组能做接口测试,后期方便出文档&#x…

大公司为什么禁止SpringBoot项目使用Tomcat?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…

【2】burpsuite屏蔽浏览器无用流量包方法

0x01 问题描述经常会使用火狐或者谷歌去burpsuite对站点进行测试,但是在测试的过程中burpsuite经常抓到火狐浏览器自身的数据包或者其他无用的数据包,这就对我们工作的效率大有影响,所以这里来告诉大家如何解决此类问题。0x02 问题复现访问网…

星环科技数据治理与数据价值评估实践分享

数据价值评估背景 自2015年8月国务院《促进大数据发展行动纲要》提出“数据已成为国家基础性战略资源”以来,我国出台了诸多政策和法案,推进数据的发展和数据要素的资产化。 2019年10月,第十九届四中全会关于《推进国家治理体系和治理能力现…

Node.js安装详细教程

安装 Node.js 官网下载安装包https://nodejs.org/zh-cn/,一直【下一步】安装即可。 设置Windows操作系统全局环境变量 为什么设置环境变量? 当我们在cmd命令行中输入命令时,系统首先会在当前目录下去找命令对应的可执行程序,如果…

后端校验(hibernate-validator)

目录一、介绍和依赖二、方法的 Model 参数校验三、方法的非 Model 参数校验四、常用注解五、快速失败六、自定义校验规则一、介绍和依赖 hibernate-validator 是 Java 中常用的后端校验框架 https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/【…

提取各种数据结构中的元素将提取结果合并为迭代对象 itertools.chain(*a,b)

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 提取各种数据结构中的元素 将提取结果合并为迭代对象 itertools.chain(*a,b) [太阳]选择题 以下python代码最后输出正确的一项是? from itertools import chain a[(1, A), (2, B), …

Java高效率复习-线程基础[线程]

内容大纲 线程相关概念 并发并行 当只有一个CPU时,会执行并发的效果,在多个应用程序之间快速切换,而有多个CPU时,则多个CPU独立执行,而当进程多于CPU个数时,则会出现并发并行的情况,总有一个CPU…

如何炼就数据分析的思维?

目录 前言结构化思维假说演绎思维指标化思维维度分析思维 前言 面对数据异常,我们经常会出现“好像是A原因引起的?”“貌似和B原因也相关?““有可能是 C操作不当“的主观臆测。 或者,拿到一个分析议题,分析”11 月销售…

@ConfigurationProperties注解使用方法(内含源代码)

ConfigurationProperties注解使用方法(内含源代码) 源代码下载链接地址:https://download.csdn.net/download/weixin_46411355/87400774 目录ConfigurationProperties注解使用方法(内含源代码)源代码下载链接地址&…

怎么识别截图中的文字?这三个方法让你轻松学会

在日常工作或学习中,我们会经常在网上查阅一些资料,当遇到一些优美的句子或者段落时,都会手动摘抄下来,这种记录方式不仅很耗时,还耗费精力,并且现在很多网站都已经不支持文本复制了,遇到这种情…

6.验证面试高频问题整理(附答案)

目录 Q126.top-down phase、bottom-up phase有哪些 Q127.为什么build_phase是top-down phase,connect_phase是bottom-up phase Q128.$size用于packed array和unpacked array分别得到的什么 Q129.class和struct的异同 Q130.class和module的异同 Q131.对象创建的…

MAC系统 LightGBM模型转为pmml格式

一、配置JAVA环境和Maven环境 参考以下两个博客即可 MAC 系统安装 JDK 及环境变量配置_蜗牛的博客-CSDN博客_mac jdk环境变量配置 MAC 系统安装 Maven 及环境变量配置_蜗牛的博客-CSDN博客_mac安装mpv 二、下载JPMML-LightGBM 先在Git上下载 直接下载或使用git clone http…

Aop切面编程原理和Spring实现

Aop切面编程概念 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理 为Dao层所有的add方法…