这两天有不少小伙伴遇到rosdepc update更新失败问题,主要有两个,这里小鱼介绍下并提供解决方案。

一、使用rosdepc update后出现Expected file type is ‘distribution’

这个问题,应该是rosdistro仓库修改了些东西造成的humble版本更新时的bug,可以通过下面的命令指定更新的ros版本解决。

ERROR: Rosdep experienced an error: Expected file type is 'distribution'
Please go to the rosdepc page [1] and file a bug report with the stack trace below.
[1] : http://www.ros.org/wiki/rosdepc

发生错误了,请关注微信公众号:鱼香ROS,找小鱼反馈哦

rosdepc version: 0.21.0

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/main.py", line 146, in rosdep_main
    exit_code = _rosdep_main(args)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/main.py", line 446, in _rosdep_main
    return _no_args_handler(command, parser, options, args)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/main.py", line 455, in _no_args_handler
    return command_handlers[command](options)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/main.py", line 677, in command_update
    ros_distro=options.ros_distro)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/sources_list.py", line 516, in update_sources_list
    rosdep_data = get_gbprepo_as_rosdep_data(dist_name)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/gbpdistro_support.py", line 149, in get_gbprepo_as_rosdep_data
    distro_file = get_release_file(gbpdistro)
  File "/usr/local/lib/python2.7/dist-packages/roscdep2/rosdistrohelper.py", line 77, in get_release_file
    dist_file = rosdistro.get_distribution_file(get_index(), distro)
  File "/usr/local/lib/python2.7/dist-packages/rosdistro/__init__.py", line 120, in get_distribution_file
    return create_distribution_file(dist_name, data)
  File "/usr/local/lib/python2.7/dist-packages/rosdistro/distribution_file.py", line 134, in create_distribution_file
    dist_file = DistributionFile(dist_name, d)
  File "/usr/local/lib/python2.7/dist-packages/rosdistro/distribution_file.py", line 45, in __init__
    assert 'type' in data, "Expected file type is '%s'" % DistributionFile._type
AssertionError: Expected file type is 'distribution'

解决方案

使用下面的命令代替rosdepc update

rosdepc update --rosdistro=$ROS_DISTRO

如果遇到错误可以将$ROS_DISTRO替换为你的ROS版本名称

rosdepc update --rosdistro=你的ROS版本名称

比如

rosdepc update --rosdistro=melodic
rosdepc update --rosdistro=kinetic

二、Ubable to process source [xxxx/fuerte.yaml]

这个直接忽略即可,不影响使用。