Ubuntu 20.04下ROS Noetic相机标定器报错及rqt_image_view黑白屏问题
问题排查与解决步骤
一、cameracalibrator.py 启动报SyntaxError的修复
报错本质:ROS Noetic全链路基于Python3开发,代码中
(e_errno, msg, *_) = e.args的星号解包语法仅支持Python3解释器解析。当前系统中python命令的软链接被指向了Python2,导致ROS启动可执行脚本时调用Python2解释器运行Python3编写的代码,触发语法解析错误。
修复流程:
- 排查当前
python命令指向:执行which python,若返回路径为/usr/bin/python2,即可确认软链接配置错误。 - 修正系统默认Python指向:
- 移除错误的软链接:
sudo unlink /usr/bin/python - 建立指向Python3的正确软链接:
sudo ln -s /usr/bin/python3 /usr/bin/python
- 移除错误的软链接:
- 验证解释器指向:执行
python --version,确认返回版本为Python 3.8.x(匹配Ubuntu 20.04系统自带版本),无Python 2.7的输出。 - 清理Python2环境下的冗余依赖:此前为Python2安装的
pyyaml、opencv-python存在版本冲突风险,执行pip2 uninstall -y pyyaml opencv-python完成清理。Noetic已通过apt仓库预装了对应Python3版本的标定工具依赖,无需额外通过pip安装。 - 重新加载ROS环境变量:
source /opt/ros/noetic/setup.bash,再次执行原标定命令即可跳过语法错误。
注意:ROS Noetic是首个完全弃用Python2支持的ROS1发行版,所有官方工具链、功能包均基于Python3开发,不需要单独安装Python2环境支撑标定流程
二、rqt_image_view显示黑白画面的修复
现象本质:树莓派端
cv_camera节点默认发布的图像编码为单通道MONO8,而非三通道彩色编码,因此rqt渲染时仅能显示灰度画面。
修复流程:
- 核查当前话题的图像编码格式:执行
rostopic echo -n 1 /cv_camera/image | grep encoding,若返回值为mono8,即可确认是发布端编码参数问题。 - 调整树莓派端
cv_camera的启动参数:在对应的launch启动文件中添加像素格式配置<param name="pixel_format" value="bgr" />,重启相机节点。 - 若硬件为彩色相机,参数调整完成后rqt即可显示正常彩色画面;若硬件本身为灰度相机,黑白显示为正常现象,不影响后续标定流程。
内容的提问来源于stack exchange,提问作者DragonflyRobotics
相关产品推荐
相关产品推荐

