一般而言,对于ubuntu18.04,在python3中import tf或者import tf2相关的module会报错。因此需要解决这个问题。
(以下均在ubuntu18.04中进行操作)
首先,如果你之前在.bashrc
中添加了workspace的路径,为了避免后面出现不必要的问题,应当先把.bashrc
中source的路径注释掉,例如:
# source ~/你的workspace/devel/setup.bash
在进行后面的操作之前,要确保你的系统已经能够使用catkin build
,若能,则跳过这条;若不能,则需要安装:
sudo apt-get install python-catkin-tools
然后回到你的主目录,创建一个新的仓库(同时做好相关的配置):
mkdir ~/secondary_build_ws && cd ~/secondary_build_ws && catkin config -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so && catkin config --install
然后去clone仓库geometry2:
mkdir src && cd src && git clone -b melodic-devel https://github.com/ros/geometry2
然后编译
cd ..
catkin build
如果编译时报错No module named em
,则需要安装empy:
pip install empy
pip3 install empy
编译完成后就OK了。使用时,最好时将这个secondary_build_ws
仓库也添加到.bashrc
中,一定要注意顺序:
source /opt/ros/melodic/setup.bash
source ~/你的workspace/devel/setup.bash
source ~/secondary_build_ws/devel/setup.bash --extend
export PYTHONPATH=~/secondary_build_ws/devel/lib/python3/dist-packages:$PYTHONPATH
上面这四行在.bashrc
中的顺序会影响PYTHONPATH
的顺序。顺序错误的话会造成import失败。
添加完成后,关闭命令行窗口,打开一个新的命令行窗口,然后做如下的测试:
- 首先输入
python3
然后回车,进入python3 - 然后尝试import一下tf相关的东西,例如
from tf2_ros import *
如果没有报错,说明配置成功了