3.3. MIPI图像采集
功能介绍
为实现环境感知能力,机器人产品中通常会搭载摄像头、ToF等类型的传感器。为降低用户传感器适配和使用成本,TogetherROS会对多种常用传感器进行封装,并抽象成Sensor Hub模块,支持ROS标准图像消息以及自定义图像消息输出。用户只需要修改配置参数,即可实现传感器节点的创建和使用,目前已支持的传感器类型如下所示:
类型 | 型号 | 规格 |
---|---|---|
摄像头 | F37 | 200W |
摄像头 | GC4663 | 400W |
准备工作
确认摄像头正确接入旭日X3派,例如 F37 摄像头的接入方式如下图:
旭日X3派已烧录好地平线提供的Ubuntu20.0.4或Linux系统镜像。
旭日X3派已成功安装TogetherROS。
使用方式
下面以 F37 为例,介绍摄像头数据获取和预览的方法:
通过 SSH 登录旭日X3派,打开
/opt/tros/share/mipi_cam/launch/mipi_cam.launch.py
,修改video_device
字段为F37
或者GC4663
,配置摄像头型号,这里设置摄像头型号为F37
from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ # 启动图片发布pkg Node( package='mipi_cam', executable='mipi_cam', output='screen', parameters=[ {"out_format": "nv12"}, {"image_width": 960}, {"image_height": 544}, {"io_method": "shared_mem"}, {"video_device": "F37"} ], arguments=['--ros-args', '--log-level', 'error'] ) ])
并通过下述命令启动 Sensor Hub 节点
Ubuntu
# 配置 TogetherROS 环境: source /opt/tros/local_setup.bash # launch 方式启动 ros2 launch mipi_cam mipi_cam.launch.py
Linux
# 配置 TogetherROS 环境: export LD_LIBRARY_PATH=/opt/tros/lib:${LD_LIBRARY_PATH} # 参数设置: /opt/tros/lib/mipi_cam/mipi_cam --ros-args -p video_device:=F37 -p image_width:=960 -p image_height:=544
如程序输出如下信息,说明节点已成功启动
[INFO] [launch]: All log files can be found below /root/.ros/log/2022-06-11-15-16-13-641715-ubuntu-8852 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [mipi_cam-1]: process started with pid [8854] ...
web端查看 F37 摄像头图像,由于发布原始数据,需要编码JPEG图像,另起两个终端:一个进行订阅 mipi 数据编码为JPEG,一个用webservice发布
Ubuntu
# 一个终端编码 source /opt/tros/local_setup.bash ros2 run hobot_codec hobot_codec_republish --ros-args -p channel:=1 -p in_mode:=shared_mem -p in_format:=nv12 -p out_mode:=ros -p out_format:=jpeg -p sub_topic:=/hbmem_img -p pub_topic:=/image_jpeg # 再起一个终端 source /opt/tros/local_setup.bash # 启动nginx,nginx只需启动一次,如前面已启动过nginx,则无需再次启动 cd /opt/tros/lib/websocket/webservice && chmod +x ./sbin/nginx &&./sbin/nginx -p . # 启动websocket ros2 run websocket websocket --ros-args -p image_topic:=/image_jpeg -p image_type:=mjpeg -p only_show_image:=true
Linux
# 配置TogetherROS环境: # 一个终端编码 export LD_LIBRARY_PATH=/opt/tros/lib:${LD_LIBRARY_PATH} /opt/tros/lib/hobot_codec/hobot_codec_republish --ros-args -p channel:=1 -p in_mode:=shared_mem -p in_format:=nv12 -p out_mode:=ros -p out_format:=jpeg -p sub_topic:=/hbmem_img -p pub_topic:=/image_jpeg # 再起一个终端 export LD_LIBRARY_PATH=/opt/tros/lib:${LD_LIBRARY_PATH} # 启动nginx,nginx只需启动一次,如前面已启动过nginx,则无需再次启动 cd /opt/tros/lib/websocket/webservice && chmod +x ./sbin/nginx &&./sbin/nginx -p . # 启动websocket /opt/tros/lib/websocket/websocket --ros-args -p image_topic:=/image_jpeg -p image_type:=mjpeg -p only_show_image:=true
PC打开浏览器(chrome/firefox/edge)输入旭日X3派IP地址,点击左上方web端展示即可看是 F37 摄像头编码为MJPEG实时画面
注意事项
如遇到Sensor Hub节点启动异常,可通过下述步骤进行问题排查:
检查硬件连接
是否设置 TogetherROS 环境
参数是否正确,具体参考 Hobot_Sensors README.md