• 基于ubuntu1604的ROS安装


    不同版本的Ubuntu都有对应的ROS版本,不要强行安装不对应的版本,否则遇到问题会很难找到解决方法。此教程也只是基于Ubuntu1604和kinetic版本的ROS。

    一、基本流程

    以下命令仅记录执行顺序,不要无脑复制执行,重在理解

    #基本更新
    sudo apt update
    sudo apt upgrade
    
    ##添加ROS下载源
    sudo touch /etc/apt/sources.list.d/ros-latest.list
    #阿里ros源,将以下语句复制进ros-latest.list即可
    deb https://mirrors.aliyun.com/ros/ubuntu/ xenial main
    
    #设置秘钥
    sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
    #继续执行,curl未安装的先安装curl
    curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
    
    安装ROS完整版,大概2G多,需要等一会儿,ros安装路径在/opt/ros/kinetic/
    sudo apt install ros-kinetic-desktop-full
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    二、rosdep

    以上过程较为容易,有不同之处百度下即可解决。下面要进行rosdep初始化,可能会有一些问题,但耐心仔细地跟着网上的教程走一般也能搞定。首先看问题:

    sudo rosdep init
    
    • 1

    大概率会报以下错误:
    问题截图
    上面的命令其实就是从指定的地址下载一个文件,如图中所示,但由于国内科学上网的问题没法下载下来,方法也很简单,将需要的文件转移到一个能访问的地址就可以了,或者更直接一点,把文件及源码直接克隆到本地。

    git clone https://github.com/ros/rosdistro.git
    
    • 1

    如果这个也没法克隆,就先利用码云从github导过来,再克隆到本地,以下是从github导入到码云的一个库(不保证能用多久)

    https://gitee.com/lxhqddlx/rosdistro.git
    
    • 1

    克隆完成后,修改原来需要下载的文件,因为那个文件作用也是指定其他文件地址,很不幸也是几个访问不到的地址,所以也要改为本地地址(或能访问到的网络地址)。

    cd rosdistro/rosdep/sources.list.d/
    vim 20-default.list
    
    • 1
    • 2

    20-default.list这个文件在执行完rosdep init后会被放到/etc/ros/rosdep/sources.list.d/下。
    可以看到其内容是关于几个yaml文件网络位置的,我们已经将整套源码包括这几个文件克隆到本地了,所以可以改成本地地址(只需要替换网络位置部分即可)。修改前:

    # os-specific listings first
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
    
    # generic
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
    gbpdistro https://raw.githubusercontent.com/ros/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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    修改后(不要无脑复制,重在理解):

    # os-specific listings first rosdep update
    yaml file:///home/lxh/rosdistro/rosdep/osx-homebrew.yaml osx
    
    # generic
    yaml file:///home/lxh/rosdistro/rosdep/base.yaml
    yaml file:///home/lxh/rosdistro/rosdep/python.yaml
    yaml file:///home/lxh/rosdistro/rosdep/ruby.yaml
    gbpdistro file:///home/lxh/rosdistro/releases/fuerte.yaml fuerte
    
    # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    根据以上经验,只要涉及到无法访问的地址的文件都要改,大概还有一下几个文件需要修改:

    /usr/lib/python2.7/dist-packages/rosdistro/__init__.py
    /usr/lib/python2.7/dist-packages/rosdep2/rep3.py
    /usr/lib/python2.7/dist-packages/rosdep2/gbpdistro_support.py
    /usr/lib/python2.7/dist-packages/rosdep2/sources_list.py
    
    • 1
    • 2
    • 3
    • 4

    需要修改的地方都包含一个我们无法访问的网络地址https://raw.githubusercontent.com,直接搜索这个字符串就能找到修改的地方,改后内容(对应上述文件顺序):

    DEFAULT_INDEX_URL = 'file:///home/lxh/rosdistro/index-v4.yaml'
    REP3_TARGETS_URL = 'file:///home/lxh/rosdistro/releases/targets.yaml'
    FUERTE_GBPDISTRO_URL = 'file:///home/lxh/rosdistro/releases/fuerte.yaml'
    DEFAULT_SOURCES_LIST_URL = 'file:///home/lxh/rosdistro/rosdep/sources.list.d/20-default.list'
    
    • 1
    • 2
    • 3
    • 4

    此时再执行

    sudo rosdep init
    rosdep update
    
    • 1
    • 2

    畅通无阻。
    -----------------------------------------2023.12.6-----------------------------------------
    偶然发现清华大学镜像源已经给出了解决方案,之前一直用的阿里的源,以为国内各镜像网站都差不多,没想到清华YYDS,具体方法详见清华镜像网站
    -----------------------------------------------------------------------------------------------

    三、rosinstall

    没什么难度了

    ##配置环境变量
    echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
    source ~/.bashrc
    
    ##安装
    sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    四、测试(小海龟)

    要打开窗口界面的,所以需要在ubunutu16桌面打开终端执行,需要三个终端

    ##相当于服务器,给终端和控制端传递消息
    roscore
    
    ##小海龟终端
    rosrun turtlesim turtlesim_node
    
    ##小海龟控制端,按下方向键控制小海龟
    rosrun turtlesim turtle_teleop_key
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    看到图像界面并且能进行控制说明测试通过,安装完成。

    博文参考1http://t.csdnimg.cn/I5F0D
    博文参考2http://t.csdnimg.cn/bsZzU

  • 相关阅读:
    【UniApp】-uni-app-网络请求
    Go语言学习笔记——访问权限控制框架casbin
    四平方和,激光炸弹
    【算法题】2873. 有序三元组中的最大值 I
    【C++进阶之路】第八篇:智能指针
    chartgpt+midjourney
    Linux内核分析(一)--内核架构和子系统
    【HIT-OSLAB-1-操作系统的引导】
    Ranorex Studio 10.x Crack
    vue2升级到vue2.7
  • 原文地址:https://blog.csdn.net/qq_40789688/article/details/134263173