【ROS 踩坑记录】ImportError: No module named yaml - Introduction to tf

前言

本期 ROS 踩坑记录:tf学习系列

目前搭建的测试环境为:Ubuntu20.04 ROS-Noetic

报错

按照ROS官网教程,学习tf系列的第一个Tutorialtf/Tutorials/Introduction to tf - ROS Wiki,不料出师不利,运行

roslaunch turtle_tf turtle_tf_demo.launch

上来就报错,

ImportError: No module named yaml

虽然官网有给出一个报错的解决方案的链接[turtle_pointer-6] process has died when running tf tutorial - ROS Answers: Open Source Q&A Forum,但是这个报错和我的报错不一样,我看有人出现了和我一样的问题module yaml not found - ROS Answers: Open Source Q&A Forum,但是这个问题至今还没有被解决。

这里也先记录下来,等我解决之后再来填坑。

解决方案

更新解决日期:2022-03-05

详细过程

注意到评论区给出的回答有:

sudo apt install python3-yaml 

我执行完后再次运行

roslaunch turtle_tf turtle_tf_demo.launch

这次果然没有再次报错ImportError: No module named yaml,而是出现了新的报错:

ImportError: No module named rospkg

我寻思这是不是因为Anaconda的python环境和ROS的不兼容,摸索了一圈发现不是因为这个,那咱就直接安装rospkg,官网rospkg - ROS Wiki的建议是用apt而不是pip因为能够自动更新并且更快:

sudo apt install python-rospkg

执行完出现:Requirement already satisfied: rospkg in /usr/lib/python3/dist-packages (1.4.0),无语。

由下面几个博客得到启发,看看是不是系统内的python2python3冲突的问题:

直接敲python,显示版本python2.7.18,敲python3,显示版本python3.8.10;并且在python2.7.18环境中执行import rospkg报错,而在python3.8.10环境中执行import rospkg可以正常导入,结合另一个信息的判断:ROS Noetic不再维护Python2全面使用Python3(Python3.8),我估计就是roslauch的时候是在Python2的环境中执行import rospkg的。

接下来参考ROS学习笔记报错篇(一):Publisher与Subscriber两种编程实现中报错解决_LacyExsale的博客-CSDN博客一文对于ImportError: No module named rospkg报错原因的分析,发现这也恰是我存在的问题:

报错原因:ROS noetic 使用的是python3.x版本,我的Ubuntu默认使用python2.7版本

更深层次的解读参考:

最终解决——可直接跳转到此处

解决方案是:

sudo apt install python-is-python3

果不其然,安装python-is-python3的时候提示我:Ubuntu20.04将卸载python-is-python2
在这里插入图片描述
重新执行:

roslaunch turtle_tf turtle_tf_demo.launch

然后在终端窗口中按动键盘上下左右,一只乌龟就会自动跟随受我们控制的另外一只小乌龟了,实验demo运行成功!

后记

想要炼丹跑深度学习就要conda,但是ROS又是一套自己的Python环境,还希望语义分割能结合SLAM,真不容易啊。能坚持看我啰嗦到这里的就给我一个赞吧!

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值