JetBot ROS AI Kit 教程八、启动摄像头节点
来自Waveshare Wiki
JetBot ROS AI Kit 初级教程目录
- JetBot ROS AI Kit 教程一、组装教程
- JetBot ROS AI Kit 教程二、安装Jetson nano 镜像
- JetBot ROS AI Kit 教程三、安装Ubuntu虚拟机 镜像
- JetBot ROS AI Kit 教程四、配置多机通讯
- JetBot ROS AI Kit 教程五、机器人移动控制
- JetBot ROS AI Kit 教程六、使用ROS图形工具查看节点话题
- JetBot ROS AI Kit 教程七、机器人里程计校准
- JetBot ROS AI Kit 教程八、启动摄像头节点
- JetBot ROS AI Kit 教程九、启动激光雷达节点
- JetBot ROS AI Kit 主页
步骤1、机器人启动CSI摄像头节点
- 在机器人中重新打开一个终端,运行如下命令启动CSI 摄像头节点
roslaunch jetbot_pro csi_camera.launch
- 启动摄像头节点后,在虚拟机中重新打开一个终端并运行如下命令,启动图像查看界面
rosrun rqt_image_view rqt_image_view
- 右上角有/csi_cam_0/image_raw和/csi_cam_0/image_raw/compressed 两个话题可选,分别表示原始数据和压缩数据,建议选择压缩数据减少带宽。
步骤2、通过RVIZ查看图像
- 在虚拟机中重新打开一个终端,运行rosrun rviz rviz 或者 rviz命令启动RVIZ界面
- 添加Image组件,并选择对应的话题/csi_cam_0/image_raw,传输类型选择压缩数据compressed,即可查看图像
- 可以通过修改jetbot_pro/launch/csi_camera.launch启动文件,修改分辨率和帧率。注意分辨率越大帧率越高需要的带宽越大,越容易出现图像卡顿的现象。
- 在jetson nano中输入以下命令修改分辨率和帧率
sudo nano catkin_ws/src/jetbot_pro/launch/csi_camera.launch
步骤3、基于Web的图像显示
- 摄像头启动后,可以通过web_video_server软件启动一个图像服务,用户可在浏览器中输入网址查看摄像头数据。具体工作如下:
- 在机器人中运行如下命令安装web_video_server
sudo apt-get install ros-melodic-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后,要把两边“<>”括号去掉,否则不能显示
步骤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查看结果
- 点击"CALIBRATE "按键,校准程序自动计算校准参数,需要等待一点时间,界面可能会变成灰色无响应状态,注意不要关闭耐心等待一会即可
- 校准完成后,可以通过图形界面看到校准后的图像,通过对比可以发现有右边的形变等到很好的校准效果
- 点击"SAVE"可以将校准资料保存到虚拟机的临时文件中,点击"COMMIT"可以保存校准文件到机器人配置文件中,默认目录为jetbot_pro/cfg/camera_celibratio/cam_640x480.yaml。
- 重新启动摄像头节点后,运行下面命令可以查到到校准参数已经更新
rostopic echo /camera_info
- 【注意:此时通过image_view或者RVIZ查看的图像仍然是摄像头原始图像,非校准后图像。如果显示校准图像会在OpenCV教程中介绍】