JetBot Orin ROS AI Kit 教程八、启动摄像头节点

来自Waveshare Wiki
跳转至: 导航搜索

JetBot Orin ROS AI Kit 初级教程目录

步骤1、机器人启动CSI摄像头节点

  • 在机器人中重新打开一个终端,运行如下命令启动CSI 摄像头节点
roslaunch jetbot_pro csi_camera.launch
Jetbot Image34.png
  • 启动摄像头节点后,在虚拟机中重新打开一个终端并运行如下命令,启动图像查看界面
rosrun rqt_image_view rqt_image_view
Jetbot image35.png
  • 右上角有/csi_cam_0/image_raw和/csi_cam_0/image_raw/compressed 两个话题可选,分别表示原始数据和压缩数据,建议选择压缩数据减少带宽。

步骤2、通过RVIZ查看图像

  • 在虚拟机中重新打开一个终端,运行rosrun rviz rviz 或者 rviz命令启动RVIZ界面
Jetbot Image36.png
  • 添加Image组件,并选择对应的话题/csi_cam_0/image_raw,传输类型选择压缩数据compressed,即可查看图像
Jetbot image37.png
  • 可以通过修改jetbot_pro/launch/csi_camera.launch启动文件,修改分辨率和帧率。注意分辨率越大帧率越高需要的带宽越大,越容易出现图像卡顿的现象。
  • 在jetson nano中输入以下命令修改分辨率和帧率
 sudo nano catkin_ws/src/jetbot_pro/launch/csi_camera.launch
Jetbot image38.png

步骤3、基于Web的图像显示

  • 摄像头启动后,可以通过web_video_server软件启动一个图像服务,用户可在浏览器中输入网址查看摄像头数据。具体工作如下:
  • 在机器人中运行如下命令安装web_video_server
 sudo apt-get install ros-noetic-web-video-server
  • 安装后运行如下命令启动web_video_server
 rosrun web_video_server web_video_server
  • 在浏览器中输入如下网址查看图像数据,主要将IP地址修改为机器人实际IP地址。注意不要关闭摄像头节点,否则图像不能正常显示。
http://<jetbot_ip_address>:8080/stream?topic=/csi_cam_0/image_raw      #注意:写上jetbot_ip_address后,要把两边“<>”括号去掉,否则不能显示
Jetbot image39.png

步骤4、摄像头校准

  • 在虚拟机中运行如下命令启动校准图像界面
rosrun camera_calibration cameracalibrator.py --size 5x7 --square 0.03 image:=/csi_cam_0/image_raw camera:=/csi_cam_0
  • 其中:
    • size: 标定棋盘的黑白格子交点个数,这个使用的是5x7个交点
    • square: 棋盘格子的边长,单位为米
    • image和camera: 设置摄像头发布的图像话题
  • 为了获得更好的校准效果,需要将棋盘格移动到图像不同的位置中,特别是图像的边缘位置。当CALIBRATE按钮由灰色变成绿色时,表示数据已经采集足够数据,可以单击CALIBRATE查看结果
Jetbot image40.png
  • 点击"CALIBRATE "按键,校准程序自动计算校准参数,需要等待一点时间,界面可能会变成灰色无响应状态,注意不要关闭耐心等待一会即可
Jetbot image41.png
  • 校准完成后,可以通过图形界面看到校准后的图像,通过对比可以发现有右边的形变等到很好的校准效果
Jetbot image42.png
  • 点击"SAVE"可以将校准资料保存到虚拟机的临时文件中,点击"COMMIT"可以保存校准文件到机器人配置文件中,默认目录为jetbot_pro/cfg/camera_celibratio/cam_640x480.yaml。
  • 重新启动摄像头节点后,运行下面命令可以查到到校准参数已经更新
 rostopic echo /camera_info
Jetbot image43.png
  • 【注意:此时通过image_view或者RVIZ查看的图像仍然是摄像头原始图像,非校准后图像。如果显示校准图像会在OpenCV教程中介绍】