ROS kinetic (Ubuntu 16.04)如何基于 python3 成功运行roscore

kinetic 作为ROS较老的版本默认基于python2.7运行,适用于Ubuntu16.04。当需要对基于Ubuntu16.04开发的程序进行功能迭代,且由于工作量的原因不愿将其完全移植到最新Ubuntu平台上时,会发现某些库(如GPy)只支持python3版本,与ROS kinetic 相矛盾。这时就需要使Ubuntu16.04同时支持ROS kinetic和python3才能保证程序的正常运行。

1.实现python2和python3的自由切换

注意:不要卸载python2!ROS kinetic 的工具是基于python2开发的,即使能运行roscore和节点,也无法使用rqt等工具,需要在程序运行结束后切换至python2

使用update-alternatives 观察系统有无python的可选项:

$ update-alternatives --display python

如果没有python可选项,会显示:

update-alternatives: 错误: 无 python 的候选项

之后根据需求添加python可选项:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2 
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 1 

使用update-alternatives进行python版本的切换:

$ sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。
 
  选择       路径              优先级  状态
------------------------------------------------------------
* 0            /usr/bin/python2.7   2         自动模式
  1            /usr/bin/python2.7   2         手动模式
  2            /usr/bin/python3.4   1         手动模式
要维持当前值[*]请按回车键,或者键入选择的编号:

输入python对应版本前的序号即可选择版本,最后进行确认:

$ python --version

2.基于python3运行roscore

切换为python3后运行roscore后会报错,错误指向:

opt/ros/kinetic/lib/python2.7/dis-packages/**

前后对两台电脑进行了python3环境的配置,一台自用笔记本,一台工控机,报错与提示不完全相同,但是都用同样的指令解决了问题:

$ sudo apt-get install -y python3-pip
$ sudo pip3 install rospkg
$ sudo pip3 install netifaces
$ sudo pip3 install defusedxml

即可实现roscore和节点的正常运行

posted @ 2022-04-18 09:27  0bug  阅读(406)  评论(0编辑  收藏  举报