安装好ros之后启动roscore出现如下问题:
Traceback (most recent call last):
File "/opt/ros/kinetic/bin/roscore", line 36, in <module>
from rosmaster.master_api import NUM_WORKERS
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/__init__.py", line 35, in <module>File "/opt/ros/kinetic/lib/python2.7/dist-packages/rosmaster/util.py", line 48, in <module>
from defusedxml.xmlrpc import monkey_patch
ImportError: No module named 'defusedxml'

原因是python的版本和ros不对口。盲猜可能是在sudo rosdep init这里采用鱼香ROS的方法,然后安装了python3导致的问题。不过有一说一,sudo rosdep init真的看运气,运气好了直接就能中,运气不好就用鱼香ros的方法吧。
- 切记,以后不要随便把python自带的python-2.7变成python-3.5之类的其他版本,后面可能会带来意想不到的问题。当然可能有一些其他高级的方法可以让python-3.5也能不报错,对于初学者还是就用python-2.7。那么对于上面roscore出现的问题,按照我下面的方式进行解决即可。
使用update-alternatives来为整个系统更改python默认版本
整个流程如下:

// 1.列出python版本号
sudo update-alternatives --list python
如果出现如下错误:
说明python版本不能被update-alternatives识别,就需要执行如下语句:
ls -l /usr/bin/python /usr/bin/python3 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2 sudo update-alternatives --list python注意:这里第二第三行,python2.7和python3.5是根据前面ls -l /usr/bin/python /usr/bin/python3输出的python版本。如果输出是3.6,就要改成python3.6
// 2. 配置默认解释器
sudo update-alternatives --config python
选择python2.7,我这里输入的编号是1 
// 3.验证在终端直接输入python
python
// 4.最后重启roscore看看是否成功
roscore
如果出现如下的情况就是成功了。

测试小乌龟
- 重新打开一个新终端,输入:
rosrun turtlesim turtlesim_node
- 再打开一个新终端,输入:
rosrun turtlesim turtle_teleop_key
出现小乌龟就是成功了。
4224

被折叠的 条评论
为什么被折叠?



