前言
ROS melodic标配python2.7,这里通过编译源码来使ROS适配python3。
这里默认已经装好了ROS melodic。
安装依赖
首先保证下面的build依赖都装好了:
sudo apt-get install python-rosdep python-rosinstall-generator python-vcstool python-rosinstall build-essential
下载源码
建立一个工作空间,下载源码:
mkdir ~/ros_py3_ws
cd ~/ros_py3_ws
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
vcs import src < melodic-desktop-full.rosinstall
这里vcs import src
由于网络原因会很慢并且下载不完全,这里修改两个下载脚本使用代理网站:
sudo gedit /usr/lib/python2/dist-packages/vcstool/executor.py
sudo gedit /usr/lib/python3.6/dist-packages/vcstool/executor.py
# 修改get_ready_job()函数,替换成如下所示
def get_ready_job(jobs):
for job in jobs:
if not job.get('depends', set()):
jobs.remove(job)
tmp_url = job['command'].url
if tmp_url.startswith('https://github.com'):
job['command'].url = tmp_url.replace('https://github.com','https://hub.fastgit.org',1)
return job
return None
运行下载脚本时,保证没有E(error)出现,不报红错。
安装包依赖
现在安装src文件夹下的包的依赖:
rosdep install --from-paths src --ignore-src --rosdistro melodic -y
catkin编译
最后使用catkin进行编译,并且指定python3版本:
catkin build --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_VERSION=3
编译完成后,可以看到devel/lib/python3.6/
这个文件夹下有各种包,说明编译成功了。然后source devel/setup.bash
就可以使用了。
注意
由于melodic的部分包是针对python2写的,python3编译可能用不了。