ROS (roslaunch turtle_tf turtle_tf_demo.launch)报错-已解决(利用CHAT-GPT修bug)

在使用古月居的ROS入门21讲时,使用turtle_tf包学习tf功能时出现报错,网上的报错都是由于python版本的问题,修改后而无法解决。最后利用CHAT-GPT的修bug提示,最后发现是ros缓存导致报错。在文章的最后还会提供修改python版本的链接,以及古月居的tf教程文字版链接。

实验环境:Ubantu16.04,ROS Kinetic

报错信息:

cbq@cbq-HLY-WX9XX:~$ roslaunch turtle_tf turtle_tf_demo.launch
... logging to /home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/roslaunch-cbq-HLY-WX9XX-12506.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://cbq-HLY-WX9XX:33037/

SUMMARY
========

PARAMETERS
 * /rosdistro: kinetic
 * /rosversion: 1.12.17
 * /scale_angular: 2.0
 * /scale_linear: 2.0
 * /turtle1_tf_broadcaster/turtle: turtle1
 * /turtle2_tf_broadcaster/turtle: turtle2

NODES
  /
    sim (turtlesim/turtlesim_node)
    teleop (turtlesim/turtle_teleop_key)
    turtle1_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
    turtle2_tf_broadcaster (turtle_tf/turtle_tf_broadcaster.py)
    turtle_pointer (turtle_tf/turtle_tf_listener.py)

ROS_MASTER_URI=http://localhost:11311

process[sim-1]: started with pid [12523]
process[teleop-2]: started with pid [12524]
process[turtle1_tf_broadcaster-3]: started with pid [12525]
process[turtle2_tf_broadcaster-4]: started with pid [12536]
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
process[turtle_pointer-5]: started with pid [12541]
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py", line 37, in <module>
    import tf
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf/__init__.py", line 28, in <module>
    from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 39, in <module>
    from .buffer_interface import *
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 32, in <module>
    import roslib; roslib.load_manifest('tf2_ros')
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 62, in load_manifest
    sys.path = _generate_python_path(package_name, _rospack) + sys.path
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 93, in _generate_python_path
    m = rospack.get_manifest(pkg)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 171, in get_manifest
    return self._load_manifest(name)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 215, in _load_manifest
    retval = self._manifests[name] = parse_manifest_file(self.get_path(name), self._manifest_name, rospack=self)
  File "/usr/lib/python2.7/dist-packages/rospkg/manifest.py", line 414, in parse_manifest_file
    _static_rosdep_view = init_rospack_interface()
  File "/usr/lib/python2.7/dist-packages/rosdep2/rospack.py", line 60, in init_rospack_interface
    lookup = _get_default_RosdepLookup(Options())
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 136, in _get_default_RosdepLookup
    verbose=options.verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 609, in create_default
    sources = load_cached_sources_list(sources_cache_dir=sources_cache_dir, verbose=verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 566, in load_cached_sources_list
    raise CachePermissionError('Failed to write cache file: ' + str(e))
rosdep2.core.CachePermissionError: Failed to write cache file: [Errno 13] Permission denied: '/home/cbq/.ros/rosdep/sources.cache/index'
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py", line 37, in <module>
    import tf
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf/__init__.py", line 28, in <module>
    from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 39, in <module>
    from .buffer_interface import *
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 32, in <module>
    import roslib; roslib.load_manifest('tf2_ros')
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 62, in load_manifest
    sys.path = _generate_python_path(package_name, _rospack) + sys.path
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 93, in _generate_python_path
    m = rospack.get_manifest(pkg)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 171, in get_manifest
    return self._load_manifest(name)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 215, in _load_manifest
    retval = self._manifests[name] = parse_manifest_file(self.get_path(name), self._manifest_name, rospack=self)
  File "/usr/lib/python2.7/dist-packages/rospkg/manifest.py", line 414, in parse_manifest_file
    _static_rosdep_view = init_rospack_interface()
  File "/usr/lib/python2.7/dist-packages/rosdep2/rospack.py", line 60, in init_rospack_interface
    lookup = _get_default_RosdepLookup(Options())
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 136, in _get_default_RosdepLookup
    verbose=options.verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 609, in create_default
    sources = load_cached_sources_list(sources_cache_dir=sources_cache_dir, verbose=verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 566, in load_cached_sources_list
    raise CachePermissionError('Failed to write cache file: ' + str(e))
rosdep2.core.CachePermissionError: Failed to write cache file: [Errno 13] Permission denied: '/home/cbq/.ros/rosdep/sources.cache/index'
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/turtle_tf/turtle_tf_listener.py", line 37, in <module>
    import tf
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf/__init__.py", line 28, in <module>
    from tf2_ros import TransformException as Exception, ConnectivityException, LookupException, ExtrapolationException
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/__init__.py", line 39, in <module>
    from .buffer_interface import *
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 32, in <module>
    import roslib; roslib.load_manifest('tf2_ros')
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 62, in load_manifest
    sys.path = _generate_python_path(package_name, _rospack) + sys.path
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslib/launcher.py", line 93, in _generate_python_path
    m = rospack.get_manifest(pkg)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 171, in get_manifest
    return self._load_manifest(name)
  File "/usr/lib/python2.7/dist-packages/rospkg/rospack.py", line 215, in _load_manifest
    retval = self._manifests[name] = parse_manifest_file(self.get_path(name), self._manifest_name, rospack=self)
  File "/usr/lib/python2.7/dist-packages/rospkg/manifest.py", line 414, in parse_manifest_file
    _static_rosdep_view = init_rospack_interface()
  File "/usr/lib/python2.7/dist-packages/rosdep2/rospack.py", line 60, in init_rospack_interface
    lookup = _get_default_RosdepLookup(Options())
  File "/usr/lib/python2.7/dist-packages/rosdep2/main.py", line 136, in _get_default_RosdepLookup
    verbose=options.verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 609, in create_default
    sources = load_cached_sources_list(sources_cache_dir=sources_cache_dir, verbose=verbose)
  File "/usr/lib/python2.7/dist-packages/rosdep2/sources_list.py", line 566, in load_cached_sources_list
    raise CachePermissionError('Failed to write cache file: ' + str(e))
rosdep2.core.CachePermissionError: Failed to write cache file: [Errno 13] Permission denied: '/home/cbq/.ros/rosdep/sources.cache/index'
[turtle1_tf_broadcaster-3] process has died [pid 12525, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle1_tf_broadcaster __log:=/home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle1_tf_broadcaster-3.log].
log file: /home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle1_tf_broadcaster-3*.log
[turtle2_tf_broadcaster-4] process has died [pid 12536, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_broadcaster.py __name:=turtle2_tf_broadcaster __log:=/home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle2_tf_broadcaster-4.log].
log file: /home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle2_tf_broadcaster-4*.log
[turtle_pointer-5] process has died [pid 12541, exit code 1, cmd /opt/ros/kinetic/lib/turtle_tf/turtle_tf_listener.py __name:=turtle_pointer __log:=/home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle_pointer-5.log].
log file: /home/cbq/.ros/log/f907ea9a-e315-11ed-974d-425bd8b77771/turtle_pointer-5*.log

CHAT-GPT问答过程(英文):

方案(中文):

当然!以下是解决错误的一些可能步骤:

1、检查“/home/cbq/.ros/rosdep/sources.cache/index”文件和目录的权限。确保用户具有读取和写入文件所需的权限。

2、尝试从“/home/cbq/.ros/rosdep/”中删除“sources.cache”目录或文件,然后尝试重新运行启动命令。

3、检查最近是否对系统或ROS环境进行了任何可能导致问题的更改。如果是这样,请还原这些更改,然后再次尝试运行启动命令。

4、查看每个节点的文档:SIM、Teleop、turtle1_tf_broadcaster、turtle2_tf_broadcaster 和 turtle_pointer,了解任何已知问题或故障排除提示。

5、如果上述步骤都不起作用,则可能需要使用 GDB 或 STRACE 等调试工具来跟踪问题的根源。

我希望这有帮助!如果您有任何其他问题,请告诉我。

具体操作过程:

1、检查“/home/cbq/.ros/rosdep/sources.cache/index”文件和目录的权限。

.ros文件时隐藏文件,需要在文档工具内按“ctrl+alt+h”显示隐藏文件,找到/.ros/rosdep/sources.cache/index 文件

 发现我们并不能修改他的权限,下一条。

2、尝试从“/home/cbq/.ros/rosdep/”中删除“sources.cache”目录或文件。

因为怕出错,我用修改文件夹的方式代替删除,把“sources.cache”文件夹修改为“sources.cache1”

 再次运行命令

roslaunch turtle_tf turtle_tf_demo.launch

,成功。

其他资料:

修改python版本:https://zhuanlan.zhihu.com/p/269278177

 古月居tf教程文字版:https://zhuanlan.zhihu.com/p/58184028

总结:

CHAT-GPT的强大已经是有目共睹的,作为一个程序员应该学会使用CHAT-GPT提高我们的代码编写效率。在这次调试中如果不用CHAT-GPT我不知道多久才会知道时ros缓存出问题,希望大家也能尽快适应有CHAT-GPT的世界,即使你不是程序员。最后再提一句,不要因为焦虑被别的人用CHAT-GPT割韭菜。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值