妙算 3 系统配置说明
本文档用于说明妙算 3 当前开发环境、系统版本、常用查询命令、应用安装目录和开发注意事项,便于项目部署、问题定位和后续维护。
1. 基础系统信息
| 项目 | 当前配置 | 说明 |
|---|---|---|
| 设备平台 | DJI 妙算 3 | 面向 PSDK 应用开发与部署。 |
| JetPack 版本 | JetPack 5.1.3 | 当前暂不支持升级。 |
| CUDA 版本 | V11.4.315 | 可通过 nvcc -V 查看。 |
| CMake 版本 | 3.16.3 | 系统默认 CMake 版本。 |
| 应用开发和安装目录 | /open_app |
用户开发应用和安装应用建议放在该目录。 |
| 系统可用空间 | 约 99 GB | 实际空间以设备当前查询结果为准。 |
2. CUDA 版本查看
nvcc -V当前环境 CUDA 版本为:
V11.4.3153. 应用开发和安装目录
妙算 3 用户开发应用和安装应用的推荐目录为:
/open_app建议项目部署时将可执行程序、配置文件、运行脚本和必要资源统一放在 /open_app 或其子目录下,便于后续维护和升级。
示例目录结构:
/open_app/
mavlink_app/
bin/
config/
logs/
scripts/4. 获取设备唯一编码
4.1 产品 Serial Number
cat /factory/device_id.txt4.2 SOC Serial Number
cat /sys/firmware/devicetree/base/serial-number说明:
- 产品 Serial Number 可用于设备识别、部署记录和售后追踪。
- SOC Serial Number 可用于底层硬件识别。
- 注意命令路径中
devicetree/base之间只需要一个/。
5. 系统时间与同步
妙算 3 已通过 PPS 硬件引脚与飞机系统完成毫秒级时间同步,应用层无需额外开发时间同步功能。
5.1 Bash 查看 UTC 时间
date -u '+%Y-%m-%d %H:%M:%S.%3N'输出示例:
2026-07-08 03:20:15.1235.2 C/C++ 程序中获取时间
C/C++ 程序中建议使用系统实时时钟:
CLOCK_REALTIME或使用 C++ 标准库:
std::chrono::system_clock说明:
CLOCK_REALTIME和std::chrono::system_clock获取的是系统实时时间。- 在本平台上,系统时间已由飞机系统同步,适合用于日志时间戳、MAVLink 时间戳和业务事件记录。
6. 码流硬件编解码
妙算 3 已封装基于硬件编解码的接口,应用开发中无需手动实现底层硬件编解码流程。
6.1 获取硬件解码后的码流
DjiLiveview_StartImagestream6.2 将码流硬件编码为 H264
DjiLiveview_EncodeAFrameToH264说明:
- 推荐优先使用 PSDK 已封装接口获取、编码和处理视频流。
- 不建议在应用层重复实现底层硬件编解码逻辑。
- 若需要转发到 QGC、播放器或网络端,应重点确认编码格式、分辨率、帧率、RTP/UDP 地址和端口配置。
7. USB 转串口通信
妙算 3 支持接入常见 USB 转串口设备,例如:
- FT232
- CP2102
接入设备后,可通过以下命令查看串口设备节点:
ll /dev/ttyUSB*如果系统未识别到设备,可检查:
- USB 转串口模块是否连接正常。
- 设备是否被系统识别。
- 用户权限是否允许访问
/dev/ttyUSB*。 - 串口波特率、数据位、停止位、校验位配置是否与外设一致。
8. 系统 OpenCV 版本查看
查看系统 OpenCV 相关安装包:
dpkg -l | grep -E 'libopencv|opencv' | head说明:
- 系统 OpenCV 版本以设备实际查询结果为准。
- 如果项目需要指定 OpenCV 版本,应在 CMake 中明确查找和链接路径,避免误链接到不符合预期的系统库。
9. CMake 版本
当前系统 CMake 版本:
cmake version 3.16.3查看命令:
cmake --version开发注意事项:
- CMakeLists.txt 中不要使用高于 3.16.3 才支持的语法。
- 如果需要跨平台构建,应在
cmake_minimum_required()中选择与妙算 3 环境兼容的版本。
示例:
cmake_minimum_required(VERSION 3.16)10. 头文件依赖索引路径
在 C/C++ CMake 工程中,应让头文件依赖索引和搜索路径优先指向项目自己的目录,而不是系统目录,例如 /usr/include。
推荐使用:
target_include_directories()示例:
target_include_directories(my_target
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_SOURCE_DIR}/src
)不推荐在项目中全局滥用:
include_directories(...)原因:
- 全局 include 路径容易影响其它 target。
- 容易误引用系统头文件或旧版本头文件。
- 不利于定位依赖关系。
11. 开发环境检查命令汇总
| 功能 | 命令 |
|---|---|
| 查看 CUDA 版本 | nvcc -V |
| 查看产品 Serial Number | cat /factory/device_id.txt |
| 查看 SOC Serial Number | cat /sys/firmware/devicetree/base/serial-number |
| 查看 UTC 时间 | date -u '+%Y-%m-%d %H:%M:%S.%3N' |
| 查看 USB 串口设备 | ll /dev/ttyUSB* |
| 查看 OpenCV 安装信息 | dpkg -l | grep -E 'libopencv|opencv' | head |
| 查看 CMake 版本 | cmake --version |
12. 开发建议
- 应用程序、脚本、配置文件和日志建议统一放在
/open_app或其子目录下。 - 不要自行升级 JetPack,当前环境固定为 JetPack 5.1.3。
- 涉及 CUDA、OpenCV、GStreamer、PSDK 的工程,应明确 CMake include 和 link 路径。
- 视频流处理优先使用 PSDK 已封装的硬件编解码接口。
- 与飞机系统时间相关的功能优先使用系统时间,不需要额外实现时间同步。
- 串口外设接入后,先确认
/dev/ttyUSB*是否出现,再调试协议层。 - 交付部署时建议记录设备 Serial Number、应用版本、配置文件版本和启动命令。
作者:孙渝泓 创建时间:2026-06-12 08:32
最后编辑:bai 更新时间:2026-07-08 09:44
最后编辑:bai 更新时间:2026-07-08 09:44