一.操作:
roslaunch turtle_tf turtle_tf_demo.launch
二.报错:
File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_py/__init__.py", line 38, in <module>
from ._tf2 import *
ImportError: dynamic module does not define module export function (PyInit__tf2)
[turtle1_tf_broadcaster-3] process has died [pid 6226, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle1_tf_broadcaster-3.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle1_tf_broadcaster-3*.log
[turtle2_tf_broadcaster-4] process has died [pid 6228, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle2_tf_broadcaster-4.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle2_tf_broadcaster-4*.log
[turtle_pointer-5] process has died [pid 6240, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle_pointer-5.log].
log file: /home/joes/.ros/log/63bc18f8-3c4a-11ec-ba4c-14f6d8d77445/turtle_pointer-5*.log
三.解决方法
1.tf2是为了Python2写的,不适用于Python3。所以找到报错的几个文件(加深背景的几个文件),找到文件对应路径,执行:
cd /opt/ros/kinetic/lib/turtle_tf
sudo gedit turtle_tf_broadcaster.py
将首行的 #!/usr/bin/env python 改为 #!/usr/bin/env python2
2.同理:
cd /opt/ros/kinetic/lib/turtle_tf
sudo gedit turtle_tf_listener.py
将首行的 #!/usr/bin/env python 改为 #!/usr/bin/env python
重新执行:roslaunch turtle_tf turtle_tf_demo.launch,报错解除.