相机标定三步曲:
$ roscore
$ rosrun uvc_camera uvc_camera_node (or $ roslaunch usb_cam usb_cam-test.launch)
$ rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.02 image:=/usb_cam/image_raw camera:=/usb_cam
但是在第3步进行相机标定实验时,出现如下错误:
分析:标定文件cameracalibrator.py采用的是默认Python版本(python3)进行执行的,采用Python3.5订阅ros中的图片就是会出现这样的问题,需要换回Python2.7。
解决方案:进入cameracalibrator.py所在的文件位置(一般是/opt/ros/kinetic/lib/camera_calibration/cameracalibrator.py),打开:
$ sudo gedit cameracalibrator.py
第一行代码如下:
#!/usr/bin/python
这行代码表示默认使用的是python3,将其修改为
#!/usr/bin/python2
这样就能换回Python2.7来使用了。
然后再进行相机标定实验,就能正常使用不报错了。问题解决。
这篇文章的解决方案和Ubuntu16.04下无法打开分屏式终端Terminator这篇博客比较类似,都是修改默认的Python使用版本。