ROS安装ubuntu16.04 无需科学上网解决sudo rosdep init初始化问题

一、配置ubuntu的软件和更新

  配置ubuntu的软件和更新,允许安装不经认证的软件。首先打开“Software and Update”对话框,具体可以在 Ubuntu 搜索按钮中搜索。打开后按照下图进行配置:
在这里插入图片描述

二、换源

以下三个源都可以:

1.国内源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

2.清华源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

3.中科大源

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'

4.中手动换源

上面三个能会出现找不到sources.list.d/ros-latest.list文件的情况,需要手动换源

三、设置key

源换好了之后设置key

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

四.安装ROS

官方建议使用 apt 而非 apt-get

sudo apt update
sudo apt-get install ros-kinetic-desktop-full

五、初始化ROS

sudo rosdep init
rosdep update

上面这一步会报错,因为国内的服务器无法完成。
在这里插入图片描述
解决方案如下:

1.下载rosdistro功能包

  进入github.com/ros/rosdistro下载这个功能包。

2.修改20-default.list

  修改这个包中rosdep/source.list.d/下的文件20-default.list,将这个文件中指向raw.githubusercontent.com的url地址全部修改为指向本地文件的地址,也就是该下载好的包的地址:

# os-specific listings first
yaml file:///home/xxx/rosdistro/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/xxx/rosdistro/rosdep/base.yaml
yaml file:///home/xxx/rosdistro/rosdep/python.yaml
yaml file:///home/xxx/rosdistro/rosdep/ruby.yaml
gbpdistro file:///home/xxx/rosdistro/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

下面是我修改好的:

# os-specific listings first
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/osx-homebrew.yaml osx

# generic
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/base.yaml
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/python.yaml
yaml file:///home/chen/Downloads/rosdistro-master/rosdep/ruby.yaml
gbpdistro file:///home/chen/Downloads/rosdistro-master/releases/fuerte.yaml fuerte

# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead

3.修改默认的url的地址

修改/usr/lib/python2.7/dist-packages/rosdep2/main.py中的默认的url的地址,但是经过代码阅读,该文件中并不存在指向raw.githubusercontent.com的代码。而且经过对代码的分析,提示报错的代码就在该文件中

def command_init(options):
    try:
        data = download_default_sources_list()
    except URLError as e:
        print('ERROR: cannot download default sources list from:\n%s\nWebsite may be down.' % (DEFAULT_SOURCES_LIST_URL))
        return 4
    except DownloadFailure as e:
        print('ERROR: cannot download default sources list from:\n%s\nWebsite may be down.' % (DEFAULT_SOURCES_LIST_URL))

由于其调用了download_default_sources_list()这个函数
而该函数就在/usr/lib/python2.7/dist-packages/rosdep2该文件夹下面的sources_list.py文件里面。而这个文件里面的代码则进行了访问raw.githubusercontent.com的操作,因此修改该默认url即可。

# default file to download with 'init' command in order to bootstrap
# rosdep
DEFAULT_SOURCES_LIST_URL = 'file:///home/xxx/rosdistro/rosdep/sources.list.d/20-default.list'
# seconds to wait before aborting download of rosdep data

该步实际并不是修改 main.py 文件里面默认url的指向地址,而是修改同文件夹下的sources_list.py文件里面的代码,下面是我修改好的:

# default file to download with 'init' command in order to bootstrap
# rosdep
DEFAULT_SOURCES_LIST_URL = 'file:///home/chen/Downloads/rosdistro-master/rosdep/sources.list.d/20-default.list'
# seconds to wait before aborting download of rosdep data

4.修改rep3.py、init.py里面的代码:

/usr/lib/python2.7/dist-packages/rosdep2/rep3.py
/usr/lib/python2.7/dist-packages/rosdistro/init.py

下面是我分别修改后的样例:

/usr/lib/python2.7/dist-packages/rosdep2/rep3.py文件:

# location of targets file for processing gbpdistro files
REP3_TARGETS_URL = 'file:///home/chen/Downloads/rosdistro-master/releases/targets.yaml'
# seconds to wait before aborting download of gbpdistro data

/usr/lib/python2.7/dist-packages/rosdistro/__init__.py的文件:

# index information
DEFAULT_INDEX_URL = 'file:///home/chen/Downloads/rosdistro-master/index-v4.yaml'
def get_index_url():

5.再次初始化

sudo rosdep init
rosdep update

如果有以下提示:

ERROR: default sources list file already exists:
	/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize

那么就进入到/etc/ros/rosdep/sources.list.d/目录中把20-default.list删除即可。

sudo rm -r 20-default.list

再次初始化,应该可以通过:
在这里插入图片描述

六、配置ROS环境变量

初始化完成后可以配置ROS环境

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

七、安装ROS依赖

安装依赖项

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

八、安装完成.可以测试

CTRL+ALT+T打开终端,roscore启动

roscore

再打开一个新的终端,输入以下命令,弹出一个小乌龟窗口:

rosrun turtlesim turtlesim_node

出现一个小乌龟的LOGO后,再打开一个新的终端,输入以下命令

rosrun turtlesim turtle_teleop_key

通过方向键控制小乌龟的移动,,安装成功。
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值