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 | Ubuntu 22.04 (Humble) |
RDK Ultra | Ubuntu 20.04 (Foxy) |
X86 | Ubuntu 20.04 (Foxy) |
X86平台不支持将H.264、H.265视频解码为NV12格式,因此H.264、H.265视频发布功能无法在X86平台展示。 RDK Ultra不支持将H.264视频解码为NV12格式,因此H.264视频发布功能无法在RDK Ultra平台展示。
准备工作
RDK平台
-
RDK已烧录好Ubuntu 20.04/Ubuntu 22.04系统镜像
-
RDK已成功安装tros.b
-
可 以通过网络访问RDK的PC
X86平台
-
X86环境已配置Ubuntu 20.04系统镜像
-
X86环境已安装X86版本 tros.b
图片发布使用介绍
循环读取本地的一张NV12格式图片并发布,使用图像编解码模块将图片压缩编码成JPEG格式,在PC的Web端展示图片。
RDK/X86平台
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/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
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/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平台
- Foxy
- Humble
# 配置tros.b环境
source /opt/tros/setup.bash
# 配置tros.b环境
source /opt/tros/humble/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都正常运行
在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数据。
支持平台
平台 | 运行方式 | 示例功能 |
---|---|---|
RDK X3, RDK X3 Module | Ubuntu 20.04 (Foxy), Ubuntu 22.04 (Humble) | · 启动MIPI/USB摄像头,触发记录的rosbag数据记录在本地 |
使用说明
Trigger初始化配置说明
Trigger基础模块,定义了初始化配置需要的参数。
config_file配置文件格式为json格式,具体配置如下:
{
"domain": Trigger事件domain。如扫地机、人型机等,Trigger类型不同,通过domain区分不同领域类型机器人Trigger。
"desc": Trigger模块描述信息。
"duration_ts_back": 录制Trigger发生后持续时长。
"duration_ts_front": 录制Tirgger发生前持续时长。
"level": Trigger事件的优先级, 多个不同Trigger发生时, 可利用一个总节点,筛选一些高优或低优的Trigger事件。
"src_module_id": 发生Trigger的模块ID, 用于管理不同的Trigger模块, 满足业务不同Trigger模块管理需求。
"status": Trigger状态, '0': 关闭, '1': 打开。
"strategy_version": Trigger模块策略的版本号。
"topics": 需要记录的话题list,包含话题名。
"trigger_type": Trigger类型ID。每个Trigger模块并不是只有一种触发情况,比如检测到2个垃圾触发是一种类型,检测到3个垃圾是一种类型。
"unique_id": 设备唯一标识。
"version": Trigger模块版本信息。
"extra_kv": 其他冗余扩展信息可记录在此。
}