5.2.7 工具
图像发布工具
功能介绍
图片发布工具支持批量读取本地图片或视频文件,并按照ROS消息格式发布,从而提高算法调试和部署效率。
对于图片发布,支持读取JPEG/JPG/PNG/NV12格式的图片,发布压缩图片或者将压缩图片转换为NV12格式进行发布。
对于视频发布,支持H264/H265/MP4格式,读取视频文件后提取相关的视频流进行发布。
代码仓库: (https://github.com/D-Robotics/hobot_image_publisher.git)
支持平台
| 平台 | 运行方式 |
|---|---|
| RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) |
| RDK X5, RDK X5 Module, RDK S100 | Ubuntu 22.04 (Humble) |
| RDK S600 | Ubuntu 24.04 (Jazzy) |
| X86 | Ubuntu 20.04 (Foxy) |
X86平台不支持将H.264、H.265视频解码为NV12格式,因此H.264、H.265视频发布功能无法在X86平台展示。
准备工作
RDK平台
-
RDK已烧录好Ubuntu系统镜像
-
RDK已成功安装tros.b
-
可以通过网络访问RDK的PC
X86平台
-
X86环境已配置Ubuntu 20.04系统镜像
-
X86环境已安装X86版本 tros.b
图片发布使用介绍
循环读取本地的一张NV12格式图片并发布,使用图像编解码模块将图片压缩编码成JPEG格式,在PC的Web端展示图片。
RDK/X86平台
- Foxy
- Humble
- Jazzy
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 配置tros.b环境
source /opt/tros/jazzy/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的图片文件
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_image_publisher/config/ .
# 启动launch文件
ros2 launch hobot_image_publisher hobot_image_publisher_demo.launch.py
图片发布结果分析
在运行终端输出如下信息:
[INFO] [launch]: All log files can be found below /root/.ros/log/2022-08-19-12-58-02-288516-ubuntu-24492
[INFO] [launch]: Default logging verbosity is set to INFO
webserver has launch
[INFO] [hobot_image_pub-1]: process started with pid [24511]
[INFO] [hobot_codec_republish-2]: process started with pid [24513]
[INFO] [websocket-3]: process started with pid [24519]
输出log显示出webserver已启动,hobot_image_pub、hobot_codec_republish、websocket都正常运行
在PC端的浏览器输入 http://IP:8000 即可查看图像展示效果(IP为RDK/X86设备的IP地址):

视频发布使用介绍
读取本地video.list文件,获取list文件中的视频文件路径,循环读取视频文件并发布,先使用图像编解码模块将视频流解码成NV12格式图片,再使用图像编解码模块将图片压缩编码成JPEG格式,在PC的Web端展示图片。
RDK平台
- Foxy
- Humble
- Jazzy
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/setup.bash
# 配置tros.b环境
source /opt/tros/jazzy/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的图片文件
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_image_publisher/config/ .
# 启动launch文件
ros2 launch hobot_image_publisher hobot_image_publisher_videolist_demo.launch.py
X86平台
# 配置tros.b环境
source /opt/tros/setup.bash
# 从tros.b的安装路径中拷贝出运行示例需要的图片文件
cp -r /opt/tros/${TROS_DISTRO}/lib/hobot_image_publisher/config/ .
# 启动图片发布节点,使用本地MP4格式视频文件进行发布(可以根据自己的需求进行参数配置),暂不支持Web端显示
/opt/tros/${TROS_DISTRO}/lib/hobot_image_publisher/hobot_image_pub --ros-args -p image_source:=./config/video.list -p fps:=30 -p image_format:=mp4
视频发布结果分析
在运行终端输出如下信息:
[INFO] [launch]: All log files can be found below /root/.ros/log/2022-10-22-21-44-03-663907-ubuntu-702475
[INFO] [launch]: Default logging verbosity is set to INFO
webserver has launch
[INFO] [hobot_image_pub-1]: process started with pid [702597]
[INFO] [hobot_codec_republish-2]: process started with pid [702599]
[INFO] [hobot_codec_republish-3]: process started with pid [702601]
[INFO] [websocket-4]: process started with pid [702603]
输出log显示出webserver已启动,hobot_image_pub、hobot_codec_republish、websocket都正常运行。
如果输出log显示如下告警信息: [HobotVdec]: findSPSPPSVPS fail. ret: -1, nSPSLen: 0, nLen: 59 并且PC端的浏览器不显示图像,属于正常现象,解码器正在对视频码流进行检查,稍等片刻即可正常显示图像。
在PC端的浏览器输入 http://IP:8000 即可查看图像展示效果(IP为RDK/X86设备的IP地址):

Trigger记录工具
功能介绍
所谓Trigger,是在设定好已有Trigger机制基础上,监测Trigger模块订阅的消息变化,例如检测框结果数量变化,小车控制信息变化等,触发对应Trigger事件,记录指定时间区间内的ROS2消息,从而帮助开发人员定位和复现机器人场景中的感知、规控等问题。
trigger_node package 是D-Robotics基于ROS2开发的Trigger基础模块,用于在触发Trigger事件后,获取指定rosbag数据的功能包。package支持直接订阅ai_msg/msg/PerceptionTargets类型的话题,在话题回调函数中,判断是否触发Trigger事件,并记录Trigger事件相关的rosbag包,最后将Trigger事件信息保存,并发布std_msg/msg/String类型的Trigger事件话题。
本章节展示的示例,是D-Robotics在自定义trigger基础模块基础上,开发的Trigger模块使用示例。本示例展示的功能,是订阅垃圾检测框信息,根据垃圾检测框的数量是否大于等于3,判断是否触发Trigger事件。若检测框数量大于等于3,则触发Trigger事件。
代码仓库:(https://github.com/D-Robotics/hobot_trigger.git)
应用场景:机器人数据闭环链路,机器人Trigger事件上报场景,可配合感知、规控等任务,记录Trigger事件发生时的rosbag数据。