ArduCAM 品牌还销售一种用于 Raspberry Pi 的摄像头模块,有些人可能已经用过了。
这一次,它是同一个摄像头模块,但采用了一种略微特殊的摄像头,称为 ToF,简单地说,这是一种可以分辨被拍摄物体深度的摄像头。

照片显示的是用于工业级 Raspberry Pi(CM5)的 PL-R5 BASE BOARD。也可使用 FPC 电缆连接市售的 Raspberry Pi。
与普通摄像头模块不同的是,摄像头本身也需要电源,因此需要将其连接到 GPIO 引脚上以获得电源。
ToF 与激光雷达的区别
与 ToF 相机类似的还有激光雷达(LiDAR)。
很难区分两者,因为两者都是利用激光的反射。
在某些情况下,两者并无太大区别,但由于它们的特性不同,各有各的适用环境。
一般来说,较小的站点更可能选择 ToF,而较大的站点更可能选择 LiDAR。
不过,根据使用方式的不同,它可以适用于任何一种情况。
例如,根据性能的不同,激光雷达也有中间类别。根据产品的不同,会出现 “小型激光雷达可以适应 “或 “大型激光雷达使用 ToF 即可 “的情况。
最终的决定将基于各种环境条件,例如您希望达到的范围和精度,以及安装和运行成本。
| 比较项目 | 小型场地(ToFs 易于使用) | 大型场地(激光雷达易于使用) |
|---|---|---|
| 距离范围 | 几厘米至几十米范围内 | 几十米到几百米以上 |
| 所需的精确度 | 几厘米到几十厘米 | 高精度厘米订单 |
| 数据请求 | 单点距离测量、中低分辨率深度图 | 高密度三维点云,大范围测绘 |
| 主要制约因素 | 成本低、耗电少、体积小、安装方便 | 安装空间、供电能力、激光安全措施、可维护性 |
| 安装费用 | 相对较低 | 相对较高 |
| 设备尺寸 | 易于微型化 | 体积往往较大 |
| 首选环境 | 室内、短距离、嵌入式应用 | 室外、大面积、高海拔、大空间 |
| 典型应用 | 近距离检测、短距离避障、手势识别、货架管理、嵌入式传感器 | 自动驾驶、地形测量、户外监控、仓库整体测绘 |
| 与 Raspberry Pi 兼容 | 好 | 良好,取决于应用(昂贵且易受高负荷影响) |
| 适合以下情况的决策轴心 | 我想轻松获取距离。 | 我想用高精度 3D 测量仪测量大面积区域。 |
ArduCAM ToF 摄像机 “产品规格
以下是 ArduCamToF 摄像头的详细信息。
与 Raspberry Pi 摄像头模块终端的连接非常简单,它与基于 V4L2 的视频内核设备兼容,因此你可以立即试用。

| 项 | 目录 |
|---|---|
| 产品概览 | ToF 方法 深度相机模块 |
| 主要功能 | 实时点云(点云)和深度图输出 |
| 有效像素数 | 240 × 180 |
| 传感器尺寸 | 1/6 英寸 |
| 树莓派的分辨率/FPS | 240 × 180 @ 30fps |
| 传感器最大帧频 | 120fps |
| 最大深度帧速率(Raspberry Pi) | 30fps (4 相) |
| 最大深度帧速率(NVIDIA Jetson) | 30fps (4 相) |
| 测量距离 | 远摄模式:4 米 / 近摄模式: 2 米 |
| 调制频率 | 75MHz / 37.5MHz |
| 视角 | 对角线角度 70°。 |
| 光源 | 内置 940nm VCSEL 激光器 |
| 室内和室外使用 | 是(无需外部照明) |
| 界面 | MIPI(双通道) |
| 输出格式 | 四相 RAW/深度帧/灰度振幅帧 |
| Linux 支持 | 基于 V4L2 的视频内核设备 |
| SDK | C / C++ / Python |
| ROS 支持 | 已支持 |
| 支持的操作系统 | 树莓派操作系统书虫/牛眼(32 位/64 位),自 2022/01/28 起 |
| 支持的硬件 | Raspberry Pi 5 / 4 / 2 / 3 / CM3 / CM4 / Zero W / Zero 2 W / NVIDIA Jetson |
| 功耗(TDP) | 3.5W |
| 推荐电源 | 5V / 4A 或以上 |
| 基底尺寸 | 38 毫米 x 38 毫米 |
当时的环境
- 工业级 Raspberry Pi (CM5)PL-R5 底板
- ArduCAM ToF 摄像机(需要电源)
- Raspberry Pi OS Trixie
– 型号:Raspberry Pi Compute Module 5 Rev 1.0
– OS:Debian GNU/Linux 13 (trixie)
– 内核:6.12.54-v8-16k+
– Python3.13
注:我们尝试过使用最新的 Trixie,但目前书虫或牛眼的早期版本运行得更稳定。
添加到 Config.txt
您需要在 config.txt 中添加摄像机模块的说明。该说明在重启时有效。
sudo nano /boot/firmfare/config.txt
dtoverlay=arducam-pivariety,cam0
试用示例程序(C/C++)
./Install_dependencies.sh
通过 git 克隆并运行 shell 脚本进行安装和构建,即可启动示例应用程序。
C/C++ 示例程序可以正常运行,因为我们找到了 C/C++ 示例程序使用的共享库libArducamDepthCamera.so 和libArducamDepthCamera4C.so 。
在Trixie 环境中,Python 示例程序和 C++ 点云需要额外的支持和代码修改。
github: https://github.com/ArduCAM/Arducam_tof_camera/
SDK: https://docs.arducam.com/Raspberry-Pi-Camera/Tof-camera/Arducam-ToF- Camera-SDK/
git clone https://github.com/ArduCAM/Arducam_tof_camera.git
cd Arducam_tof_camera
./Install_dependencies.sh
./compile.sh
示例程序(C/C++)可以单独运行,但运行所有三个程序的命令会在./compile.sh 之后出现在终端中。
/home/$USER/Arducam_tof_camera/build/example/cpp/example
个案:
cd build/example/cpp
./preview_depth
# or
./capture_raw
执行屏幕
执行后,屏幕上会出现三个窗口。

如果将手放在镜头前,就能通过颜色分辨出深度的不同。

需要支持 Python 示例程序
Python 示例程序 (preview_depth.py) 在此环境下无法正常运行。
错误:
ModuleNotFoundError: No module named 'ArducamDepthCamera'
# or
ModuleNotFoundError: No module named 'cv2'
Python 示例import ArducamDepthCamera 需要一个为 Python 构建的扩展模块。
使用 Python 3.13 的 Raspberry Pi OS Trixie 没有为 Python 提供或安装该模块,这就是为什么ModuleNotFoundError 没有提供或安装该 Python 模块的原因。
我检查了一下,发现 PyPI 中有一个名为 arducamdepthcamera 的 Python 软件包,截至 2026 年 3 月的最新版本是 0.1.24 (https://pypi.org/project/arducamdepthcamera/)
即使是 Python 3.13,我也能通过--system-site-packages 创建虚拟环境,将 Python 绑定与 apt 版本的 OpenCV 和 pip 版本的 ArduCAM 一起使用。
由于 pip 版本的 opencv-python 在 Raspberry Pi 上可能比较笨重且不稳定,因此可以在虚拟环境中使用系统的 apt 版本。
pip install --upgrade pip
python3 -m venv --system-site-packages ~/venv-arducam # Create only once (initial setup)
source ~/venv-arducam/bin/activate # Run every time, or add an alias to .bashrc
pip install arducamdepthcamera # Install only once
我会检查的。
python3 -c "import numpy; print(numpy.__version__, numpy.__file__)"
python3 -c "import cv2; print(cv2.__version__)"
python3 -c "import ArducamDepthCamera as ac; print(ac)"
因此,numpy 在 venv 内使用,cv2 在 4.10.0 和系统端使用,最后一个 ArducamDepthCamera 也在 venv 内使用。
1.26.4 /home/pi/venv-arducam/lib/python3.13/site-packages/numpy/__init__.py
4.10.0
<module 'ArducamDepthCamera' from '/home/pi/venv-arducam/lib/python3.13/site-packages/ArducamDepthCamera/__init__.py'>
运行 Python 示例程序
重建后,我运行了 Python 示例程序并成功启动。
python3 ~/Arducam_tof_camera/example/python/preview_depth.py

arducamdepthcamera 安装在虚拟环境中,必须在运行 Python 示例之前激活。
source ~/venv-arducam/bin/activate
如果不在这种状态下运行,系统侧 Python 将无法找到ArducamDepthCamera ,并将再次ModuleNotFoundError 。
点云
经过调查,我们发现 Raspberry Pi OS Trixie 中的 Open3D API 规范发生了变化,通过修改示例代码端的描述以符合当前的 Open3D,问题得以解决。
需要纠正的问题
在发生错误的~/Arducam_tof_camera/open3d_preview/preview_pointcloud.cpp第 159~ 行的 case 语句中,需要替换第 160 行起的六行。
case 's': {
open3d::io::WritePointCloudToPCD( //
"pointcloud.pcd", pcd,
{
open3d::io::WritePointCloudOption::IsAscii::Ascii,
open3d::io::WritePointCloudOption::Compressed::Uncompressed,
});
} break;
case 's': {
open3d::io::WritePointCloudOption option(
"pcd",
true, // write_ascii
false, // compressed
false // print_progress
);
open3d::io::WritePointCloudToPCD(
"pointcloud.pcd",
pcd,
option);
} break;
再次建设。
./compile_pointcloud.sh
/home/$USER/Arducam_tof_camera/build/open3d_preview/preview_pointcloud下面是一个程序的示例,该程序可以使用
[ 50%] Building CXX object open3d_preview/CMakeFiles/preview_pointcloud.dir/preview_pointcloud.cpp.o
[100%] Linking CXX executable preview_pointcloud
[100%] Built target preview_pointcloud
== Build success
== Run /home/pi/Arducam_tof_camera/build/open3d_preview/preview_pointcloud

深度图像
在深度图像中,物体的距离用颜色表示。
最大范围的默认值为 4,000/6,000。

对比三张并排图像(分别为 1,378、2,082 和 4,000),我们可以发现,最大值越高,红色调越多,而值越低,黑色和蓝色调越多。
将一只手放在眼前,当最大范围为 4000 时,距离透视不是那么清晰,但当最大范围为 1378 左右时,前后的颜色差异就清晰可见了。透视就是这么简单。
观看滑动条的操作视频。
另外,你能从视频中看到手由近到远的颜色变化吗?
ToF 相机的工业应用
ToF 相机可在中近距离空间提供低功耗和实时深度测量。
在工业应用中,它适用于 “希望轻松获取 3D 信息的场所”。
例如,可以假设以下情况
- 确定输送线(传送带)上的物体(有无和位置)
- 简单的对象-对象对齐
- 简单的库存控制(如空货架检测)
- AGV 和机器人避障
- 监测人与人之间的距离,以了解何时人多拥挤
它适用于需要节省空间、低成本和易于集成的设施和设备。
与传统相机(RGB)不同的是,人体检测是基于距离信息(颜色)而不是脸部或衣服,因此可以轻松确定人数和位置,同时保持隐私。
虽然激光雷达在大范围、高精度测量方面具有优势,但作为一种可集成到野外设备中的实用传感器,简单的 ToF 相机也是一种可行的选择。
文章由拉斯必达提供
非工程师也能愉快使用的 Raspberry Pi 信息网站 raspida.com一个非工程师也能享受和使用的 Raspberry Pi 信息网站。他还为 PiLink 网站提供有关工业用 Raspberry Pi 的技术博客文章。

