ImportError: dynamic module does not define module export function (PyInit__tf2)
这是我做的内容:
1、创建一个四轮小车URDF模型,后轮驱动,前轮转向。
2、在小车顶部添加摄像头。
3、基于ArbotiX和rviz控制小车。
4、Gazebo仿真小车运动
到第3步的时候,虽然启动launch文件可以进入rviz,但用rosnode list
查看节点信息,发现节点列表里面并没有与arbotix相关的节点。查看报错信息,显示为:
ImportError: dynamic module does not define module export function (PyInit__tf2)
然后他下面就是红色的:arbotix has died…
我的系统是ubuntu18.04
,ros版本是melodic
,之前安装过python3.6,系统自带python2.7。错误原因可能是由于Ros目前只支持Python2,一些主要的功能包如tf2等都是在Python2的环境下报错运行的,在Python2中导入相关包不会出现问题,但在Python3中会出错。而目前大部分用户Ubuntu习惯配置和优先使用Python3,所以会导致这类问题出现。
我的解决步骤:
- 更新源,不更新也没问题,不过下载新东西的时候最好更新一下
sudo apt update
- 安装ROS python3 依赖
sudo apt install python3-catkin-pkg-modules python3-rospkg-modules python3-empy
- 进入你的工作空间,删除原来编译生成的devel和build等文件夹,只留下src文件夹就好了,如果你之前用了其他方式解决,可能还残留有其他文件之类的,有的是用.开头的隐藏文件,用
ctrl H
可以看到他们。反正我是重新建了一个workspace,只把我的package拿过来了。
catkin_make
source devel/setup.bash
wstool init
wstool set -y src/geometry2 --git https://github.com/ros/geometry2 -v 0.6.5
wstool up
rosdep install --from-paths src --ignore-src -y -r
wstool相关知识
- 完成python3配置
catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.6m.so
- source .bashrc刷新环境
现在启动launch文件:
没有报错!
arbotix节点跑起来了!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)