File "/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py", line 37, in import tf

  • 系统: U b u n t u 18.04 \color{blue}{Ubuntu18.04} Ubuntu18.04
  • ROS版本 M e l o d i c \color{blue}Melodic Melodic
  • 系统默认Python版本:Python3(Anaonda)
  • 遇到问题:执行roslaunch turtle_tf turtle_tf_demo.launch报错。
  • 报错内容如下

Traceback (most recent call last):
File “/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py”, line 37, in
import tf
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf/init.py”, line 30, in
from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/init.py”, line 38, in
from tf2_py import *
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_py/init.py”, line 38, in
from ._tf2 import *
ImportError: dynamic module does not define module export function (PyInit__tf2)
Traceback (most recent call last):
File “/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py”, line 37, in
import tf
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf/init.py”, line 30, in
from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/init.py”, line 38, in
from tf2_py import *
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_py/init.py”, line 38, in
from ._tf2 import *
ImportError: dynamic module does not define module export function (PyInit__tf2)
Traceback (most recent call last):
File “/opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py”, line 37, in
import tf
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf/init.py”, line 30, in
from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_ros/init.py”, line 38, in
from tf2_py import *
File “/opt/ros/melodic/lib/python2.7/dist-packages/tf2_py/init.py”, line 38, in
from ._tf2 import *
ImportError: dynamic module does not define module export function (PyInit__tf2)
[turtle1_tf_broadcaster-3] process has died [pid 17180, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle1_tf_broadcaster-3.log].
log file: /home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle1_tf_broadcaster-3*.log
[turtle2_tf_broadcaster-4] process has died [pid 17187, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle2_tf_broadcaster-4.log].
log file: /home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle2_tf_broadcaster-4*.log
[turtle_pointer-5] process has died [pid 17188, exit code 1, cmd /opt/ros/melodic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle_pointer-5.log].
log file: /home/philtell/.ros/log/5a5570ca-35d5-11ea-92de-c83dd4ac14c9/turtle_pointer-5*.log
[teleop-2] killing on exit
[sim-1] killing on exit
shutting down processing monitor…
… shutting down processing monitor complete

  • 分析:
    遇到这么长的问题,先别慌,从第一行来分析:

File “/opt/ros/melodic/lib/turtle_tf/turtle_tf_broadcaster.py”, line 37, in
import tf

显然是导入模块失败,截止到当前时间:2020年01月13日15:57:04,ROS系统中的tf模块有两个版本。
出现这个问题有两种可能:

  1. 一个是你的ROS系统中没有tf
  2. 你的py文件导入的tf执行的python版本是3,不是2

出现问题1好解决,去官方网站安装就行。
怎么看是否是问题1或者2呢?
首先在terminal中分别运行pythonpython2,并在python环境中输入import tf,如果在python2中没有报错,就说明已经安装了tf,如果在python中报错,而且报的错误和直接执行roslaunch turtle_tf turtle_tf_demo.launch报的错误一样,那么就说明py默认指定的是python3,只需要找到相应的python脚本文件执行更改就可以了,操作如下所示:

操 作 前 : \color{pink}操作前: :
File
操 作 后 : \color{cyan}操作后: :
File

你可能感兴趣的:(ROS)