核心基于该文章:Building ROS Melodic with Python3 support
前提
本文基于上述的核心文章,提出遇到的问题,并提出解决方案,仅供参考。整体流程请按推荐文章走。
1.你已经拥有一个在linux环境下的anaconda虚拟环境
2.使用python3
3.默认python 和 python3 设置为anaconda虚拟环境下的python
第一个问题
此处教程上会安装一个 python3,且默认位置在/usr/local/lib/python3.6 一定要注意,如果想使用Ananconda的虚拟环境,此处无需下载python3,将第二条指令改为:
sudo apt install -y build-essential
注意: 此处的pip3安装,一定不要加上sudo ,否则使用的是系统内置下载的python,如果上一步下载了python,则会把这些库装在/usr/local/lib/python3.6/dist-packages,并不在我们所想的anaconda虚拟环境中。所以需要先切换到我们对应的环境下,再使用pip安装。
source activate 你的虚拟环境名
pip3 install rosdep rospkg rosinstall_generator rosinstall wstool vcstools catkin_tools catkin_pkg
第二问题
这里普遍无法成功,资源都被屏蔽了。还好有人将资源备份到了gitee上,我们通过更改ros的配置文件,来成功初始化。
首先到/anaconda3/lib/python3.7/site-packages里寻找
./rosdistro/__init__.py
./rosdep2/gbpdistro_support.py
./rosdep2/sources_list.py
./rosdep2/rep3.py
然后在每个文件内搜索raw.githubusercontent.com/ros/rosdistro/master
,将其替换成gitee.com/zhao-xuzuo/rosdistro/raw/master
,每个文件都只有一个URL需要替换。
然后再重新执行,即可成功
sudo rosdep init
rosdep update
第三问题
在执行此处第一步时,一直报错,查询后:
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
去掉 --tar
,改为
rosinstall_generator desktop_full --rosdistro melodic --deps > melodic-desktop-full.rosinstall
会直接下载,更容易成功。
如果有下载失败的,如下:
Exception caught during install: Error processing 'filters' : [filters] Checkout of https://github.com/ros-gbp/filters-release/archive/release/melodic/filters/1.8.2-1.tar.gz version filters-release-release-melodic-filters-1.8.2-1 into /home/meroke/ros_catkin_ws/src/filters failed.
Error processing 'rqt_py_console' : [rqt_py_console] Checkout of https://github.com/ros-gbp/rqt_py_console-release/archive/release/melodic/rqt_py_console/0.4.8-0.tar.gz version
复制报错模块的下载网址如
https://github.com/ros-gbp/filters-release/archive/release/melodic/filters/1.8.2-1.tar.gz
复制到网页,点击下载,然后将模块解压后放入src文件夹内。
再次运行指令wstool update -j4 -t src
直至无错误。
注:此处说明这里安装的ros和使用 sudo apt-get install ros-melodic-desktop-full
的区别
本方法:
ros的包都在~/ros_catkin_ws/install/
的 include
lib
share
三个文件夹中
使用apt-get install:
ros的包都在/opt/ros/melodic/
的 include
lib
share
三个文件夹中
如有独立的模块包如gmapping|、map_server等,使用apt install ros-melodic-xxx,会下载到/opt/ros/melodic/
的 include
lib
share
中,此处将新内容复制到~/ros_catkin_ws/install/
对应的位置即可。
警告
:/opt/ros/melodic/
是python2版本的,如果使用sudo install ros-melodic-xxx,再将包复制到~/ros_catkin_ws/install/
内,由于部分库不支持python3,会导致运行出错,如gazebo模型加载失败。如果发生此错误,只需回到~/ros_catkin_ws/
,运行catkin build
$ sudo ./install_skip `rosdep check --from-paths src --ignore-src | grep python | sed -e "s/^apt\t//g" | sed -z "s/\n/ /g" | sed -e "s/python/python3/g"`
在执行这一步时,遇到了提示找不到 python33-rosdep
等一些列包的问题,很明显,我这里显示多了个3,于是我去掉命令中最后的3,即可成功。
但这可能是由于我将默认python和python3都设置成了虚拟环境中的python3的问题。如果原指令没问题,则继续使用原指令。
后续运行非常顺利。
参考资料:安装ROS
http://www.autolabor.com.cn/book/ROSTutorials/chapter1/12-roskai-fa-gong-ju-an-zhuang/124-an-zhuang-ros.html