结合了这个博客和这个问题,成功实现了rospy在Python3下的使用.
首先应该已经安装好基于Python2的ROS,按照官网的wiki教程安装想要的版本即可。
然后利用pip3
安装ROS的Python包:
sudo apt-get install python3-pip python3-yaml
sudo pip3 install rospkg catkin_pkg
经过这个操作之后import rospy
之类的应该都没有问题了,但是cv_bridge
仍然无法正常使用,需要利用Python3重新编译。
先查看一下自己的Python3版本ls /usr/include/
,找一下类似python3.5m
的文件夹。
然后按照以下步骤重新编译一个cv_bridge
,先用Python3创建一个工作空间:
mkdir cv_bridge_python3
cd cv_bridge_python3
catkin init
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.5m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so
catkin config --install
其中-DPYTHON_INCLUDE_DIR
和-DPYTHON_LIBRARY
要按照实际情况修改。接下来在工作空间中:
mkdir src
cd src
git clone https://github.com/ros-perception/vision_opencv.git
cd ..
catkin build cv_bridge
如果没出错的话基于Python3的cv_bridge
就编译好了。
要使当前的ROS程序使用这个包的话,在cv_bridge_python3
下,source install/setup.bash --extend
即可。
这个编译好的文件夹可以直接保存好,移动到其他工作空间。
运行Python脚本时不要忘记使用python3 ...
最详细的讨论在这里,但是用了里面的方法在ubuntu16.04与18.04下都无效,最后使用ros论坛上这个贴子提供的方法,在ubuntu18.04,ros melodic下成功使用python3.6 import tf。 其他可能还有些问题,但还没有遇到。