ROS感觉挺吃资源的,有办法基于C++做开发吗

文档资料汇总

1. 官方文档

在线文档(推荐):

  • RDK X5 多媒体开发指南D-Robotics RDK套件 | RDK DOC
    • 路径:RDK X5多媒体开发摄像头应用开发
    • 包含:VIO初始化、帧获取、ISP配置等完整API说明

开发板本地文档

# 文档通常在以下位置
/opt/horizon/doc/
/usr/share/doc/horizon/

2. 示例代码路径

开发板上的官方示例

# VIO 取图示例
/opt/horizon/vio_sample/
/opt/horizon/media_sample/

# 编译后的可执行文件
/usr/bin/vio_demo
/usr/bin/media_demo

查看示例代码

# 进入示例目录
cd /opt/horizon/vio_sample

# 查看源码
ls -la
cat main.cpp

# 编译示例
mkdir build && cd build
cmake ..
make

3. 关键头文件位置

# VIO API 头文件
/usr/include/horizon/vio/hb_vio_interface.h
/usr/include/horizon/vio/hb_vio_common.h

# 媒体 API 头文件
/usr/include/horizon/media/hb_media_interface.h

# ISP 配置头文件
/usr/include/horizon/isp/hb_isp_interface.h

4. 社区相关帖子

帖子 链接 内容
摄像头输入处理 查看 X5摄像头旋转/去畸变处理
资源优化讨论 查看 本帖(你的问题)

5. 最小可用代码模板

取图 + 推流 简化版

// file: simple_capture_stream.cpp
#include "hb_vio_interface.h"
#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 1. 初始化 VIO
    HB_VIO_Init();
    
    // 2. 配置通道(双目需要配置两个通道)
    HB_VIO_CHANNEL_ATTR_S stAttr;
    stAttr.enPixelFormat = HB_VIO_PIXEL_FORMAT_NV12;
    stAttr.u32Width = 1280;
    stAttr.u32Height = 720;
    HB_VIO_SetChannelAttr(0, &stAttr);
    
    // 3. 获取帧
    HB_VIO_FRAME_S stFrame;
    HB_VIO_GetFrame(0, &stFrame, -1);
    
    // 4. 处理图像数据
    // stFrame.viVFrame[0] 包含图像数据
    
    // 5. 释放帧
    HB_VIO_ReleaseFrame(0, &stFrame);
    
    return 0;
}

编译命令

g++ simple_capture_stream.cpp -o demo \
  -I/usr/include/horizon/vio \
  -L/usr/lib -lhbio_vio \
  -lopencv_core -lopencv_imgproc

6. 快速验证步骤

# 1. 确认开发板上有示例
ls /opt/horizon/vio_sample/

# 2. 运行官方示例
/opt/horizon/vio_sample/vio_demo

# 3. 查看资源占用
top -p $(pgrep vio_demo)

# 4. 对比 ROS 节点资源占用
top -p $(pgrep -f ros2)

需要进一步帮助?

如果上述路径在你的开发板上不存在,请告诉我:

  1. 你的RDK X5系统版本cat /etc/horizon_version
  2. 是否安装了完整的SDKdpkg -l | grep horizon

我可以帮你找对应版本的文档和示例。