MIPI图像采集
功能介绍
为实现环境感知能力,机器人产品中通常会搭载摄像头、ToF等类型的传感器。为降低用户传感器适配和使用成本,TogetheROS.Bot会对多种常用传感器进行封装,并抽象成hobot_sensor模块,支持ROS标准图像消息。当配置的传感器参数与接入的摄像头不符时,程序会自动适应正确的传感器类型。目前已支持的MIPI传感器类型如下所示:
类型 | 型号 | 规格 |
---|---|---|
摄像头 | F37 | 200W |
摄像头 | GC4663 | 400W |
摄像头 | IMX219 | 200W |
摄像头 | IMX477 | 200W |
摄像头 | OV5647 | 200W |
支持平台
平台 | 运行方式 | 示例功能 |
---|---|---|
地平线RDK | Ubuntu 20.04 | 启动MIPI摄像头,并通过Web展示图像 |
准备工作
地平线RDK平台
确认摄像头正确接入地平线RDK,例如 F37 摄像头的接入RDK X3方式如下图:
地平线RDK已烧录好地平线提供的Ubuntu 20.04系统镜像
地平线RDK已成功安装tros.b
确认PC机能够通过网络访问地平线RDK
使用方式
地平线RDK平台
下面以 F37 为例,介绍摄像头数据获取和预览的方法:
通过 SSH 登录地平线RDK,确定摄像头型号,这里以
F37
为例,确定相机标定文件的读取路径,这里以/opt/tros/lib/mipi_cam/config/F37_calibration.yaml
为例并通过下述命令启动 hobot_sensor 节点
# 配置 tros.b 环境: source /opt/tros/local_setup.bash # launch 方式启动 ros2 launch mipi_cam mipi_cam.launch.py mipi_video_device:=F37 mipi_camera_calibration_file_path:=/opt/tros/lib/mipi_cam/config/F37_calibration.yaml
如程序输出如下信息,说明节点已成功启动
[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发布
# 一个终端编码 source /opt/tros/local_setup.bash # 启动编码 ros2 launch hobot_codec hobot_codec_encode.launch.py # 再起一个终端 source /opt/tros/local_setup.bash # 启动websocket ros2 launch websocket websocket.launch.py websocket_image_topic:=/image_jpeg websocket_only_show_image:=true
PC打开浏览器(chrome/firefox/edge)输入http://IP:8000(IP为地平线RDK IP地址),点击左上方Web端展示即可看到F37输出的实时画面
在PC机上查询相机内参(具体数据以读取的相机标定文件为准),命令及结果如下:
root@ubuntu:~# source /opt/ros/foxy/local_setup.bash root@ubuntu:~# ros2 topic echo /camera_info header: stamp: sec: 1662013622 nanosec: 672922214 frame_id: default_cam height: 1080 width: 1920 distortion_model: plumb_bob d: - 0.169978 - -0.697303 - -0.002944 - -0.004961 - 0.0 k: - 1726.597634 - 0.0 - 904.979671 - 0.0 - 1737.359551 - 529.123375 - 0.0 - 0.0 - 1.0 r: - 1.0 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 - 0.0 - 0.0 - 1.0 p: - 1685.497559 - 0.0 - 881.6396 - 0.0 - 0.0 - 1756.460205 - 526.781147 - 0.0 - 0.0 - 0.0 - 1.0 - 0.0 binning_x: 0 binning_y: 0 roi: x_offset: 0 y_offset: 0 height: 0 width: 0 do_rectify: false
注意事项
mipi_cam提供F37以及GC4663两种摄像头的标定文件,默认读取F37的标定文件
F37_calibration.yaml
,如使用GC4663,请更改相机标定文件的读取路径,具体步骤如下:# 配置 tros.b 环境: source /opt/tros/local_setup.bash # launch 方式启动 ros2 launch mipi_cam mipi_cam.launch.py mipi_video_device:=GC4663 mipi_camera_calibration_file_path:=/opt/tros/lib/mipi_cam/config/GC4663_calibration.yaml
摄像头插拔注意事项
严禁在开发板未断电的情况下插拔摄像头,否则非常容易烧坏摄像头模组。
如遇到hobot_sensor节点启动异常,可通过下述步骤进行问题排查:
检查硬件连接
是否设置 tros.b 环境
参数是否正确,具体参考 Hobot_Sensors README.md