ROS与duckietbot指南-相机校准

ROS与duckietbot指南-相机校准

说明:

  • 介绍如何校准相机

内部校准:

请输入图片描述

  • 步骤1:笔记本打开三个终端
  • 步骤2:终端1执行,启动游戏杆
$ cd ~/duckietown
$ source environment.sh
$ roslaunch duckietown joystick.launch veh:=robot name
  • 步骤3:终端2执行,相机校准
$ cd ~/duckietown
$ source environment.sh
$ source set_ros_master.sh robot name
$ roslaunch duckietown intrinsic_calibration.launch veh:=robot name raw:=true

请输入图片描述

  • 将棋盘放在相机的前面,直到看到重叠在棋盘上的彩色线条。

  • 如果整个棋盘在相机的视野范围内,您将只会看到彩色的线条。

  • 您还应该在显示窗口的侧栏中看到彩色条。

  • 这些条表示相机视野中棋盘的当前距离:

    • X:观察到的水平范围(左右)
    • Y:观察到的垂直范围(上下)
    • Size:棋盘尺寸的观察范围(从相机方向向前 - 向后)
    • Skew:棋盘与相机方向之间的相对倾斜度
  • 此外,请确保通过将机械对焦环旋转到相机的镜头上来对焦图像。

  • 现在向右/向左,向上/向下移动棋盘,并通过相对于图像平面的各种角度倾斜棋盘。

  • 每次移动后,请确保暂停足够长的时间,以使棋盘变为突出显示。

  • 收集足够的数据后,所有四个指示条将变为绿色。

  • 按边栏中的“CALIBRATE”按钮。

  • 校准可能需要一些时间。

  • 请注意,屏幕可能会变暗。 不要担心,校准是否正常。

请输入图片描述

  • 如果您对校准感到满意,可以按侧栏中的“COMMIT”按钮保存结果。

请输入图片描述

  • 自动保存到
~/duckietown/catkin_ws/src/00-infrastructure/duckietown/config/baseline/calibration/camera_intrinsic/robot name.yaml
  • 更新配置到github
$ git checkout -b git username-devel
$ git add ~/duckietown/catkin_ws/src/00-infrastructure/duckietown/config/baseline/calibration/camera_intrinsic/robot name.yaml
$ git commit -m "add robot name intrinsic calibration file"
$ git push origin git username-devel
  • 并更新到树莓派本地
$ ssh username@robot name.local
$ cd ~/duckietown
$ git fetch
$ git checkout git username-devel

外部校准:

  • 排列Duckiebot和棋盘。 请注意,车轮的轴线应与y轴对齐。

请输入图片描述

  • 显示了Duckiebot的校准棋盘的视图。 为了确保正确的校准,在后面不要放杂物。

请输入图片描述

  • 步骤1:在笔记本上打开四个终端
  • 步骤2:终端1:启动游戏杆
$ cd ~/duckietown
$ source environment.sh
$ roslaunch duckietown joystick.launch veh:=robot name
  • 步骤3:终端2:启动相机
$ cd ~/duckietown
$ source environment.sh
$ source set_ros_master.sh robot name
$ roslaunch duckietown camera.launch raw:=1 veh:=robot name
  • 步骤4:终端3:启动ground_projection
$ cd ~/duckietown
$ source environment.sh
$ source set_ros_master.sh robot name
$ roslaunch ground_projection ground_projection.launch veh:=robot name local:=1
  • 步骤5:终端4:检测
$ cd ~/duckietown
$ source environment.sh
$ source set_ros_master.sh robot name
$ rostopic list
  • 效果:
/robot name/camera_node/camera_info
/robot name/camera_node/framerate_high_switch
/robot name/camera_node/image/compressed
/robot name/camera_node/image/raw
/robot name/camera_node/raw_camera_info
  • ground_projection节点有两个服务。
  • 它们在运行期间不使用。 它们只提供一个命令行界面来触发外部校准(并进行调试)。
$ rosservice list
  • 效果:
/robot name/ground_projection/estimate_homography
/robot name/ground_projection/get_ground_coordinate
  • 查看图像,rqt_image_view
$ rosrun rqt_image_view rqt_image_view
  • 选择图像话题/robot name/camera_node/image/compressed

  • 执行命令:

$ rosservice call /robot name/ground_projection/estimate_homography
  • 执行外部校准并自动保存到文件
~/duckietown/catkin_ws/src/00-infrastructure/duckietown/config/baseline/calibration/camera_extrinsic/robot name.yaml
  • 文件提交到github,并更新到树莓派

参考:

  • http://book.duckietown.org/master/duckiebook/camera_calib.html#sec:camera-calib

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros与duckietbot指南