第1周---ROS1.0环境安装与配置

本文详细指导了如何在Ubuntu系统上安装和配置ROS1.0,包括环境设置、基本命令操作、小海龟示例、消息传递以及不同版本Ubuntu的选择。重点介绍了ROS的模块化、实时性能和社区支持,以及为何需要更换国内软件源以提高效率。

第1周—ROS1.0环境安装与配置

实验要求:

1.在Ubuntu16/18/20系统中,安装对应版本的ROS1.0软件. 注意记录和分析所遇到的各式问题和解决措施。

2.熟悉ROS基本命令,并运行小海龟demo例子,通过键盘控制小海龟运动。同时用话题查看器查看两个node之间的消息传递;

3.用C++或python写一个程序,控制小海龟走一个标准的圆形;成功后,再采用两台电脑,重新进行远程小海龟实验。

1、什么是ROS系统:

ROS(Robotic Operating System)是一种开源的机器人操作系统,它提供了一系列的软件库和工具,用于帮助开发机器人应用程序。ROS并不是一个传统意义上的操作系统,而是一个运行在类Unix系统(如Linux)上的软件平台,旨在简化和加速机器人软件开发过程。ROS提供了诸如硬件抽象、设备驱动、通讯中间件、传感器处理等功能,使开发人员可以更方便地构建复杂的机器人控制系统。ROS已经广泛应用于学术研究和工业领域中的各种机器人项目中。

2、为什么需要学习ROS系统:

  1. 模块化设计:ROS系统是一种高度模块化的框架,允许开发者将复杂的系统拆分成多个独立的、可复用的组件,即节点(Nodes)。这对于我们来说非常有价值,因为嵌入式系统的开发往往也涉及到硬件和软件的模块化设计。通过学习ROS,学生可以更好地理解和应用模块化设计的思想。
  2. 实时性能:ROS系统被设计为实时性能优秀的系统,适用于需要快速响应和处理大量数据的场景。这对于我们来说非常重要,因为嵌入式系统通常需要在有限的硬件资源下实现实时性能。学习ROS可以帮助学生掌握实时系统的设计和优化技巧。
  3. 语言独立性:ROS系统支持多种编程语言,如C++、Python等,使得开发者可以根据自己的需求选择最合适的编程语言。这对我们来说是一个很好的学习机会,可以让他们熟悉和掌握多种编程语言,提高编程能力和灵活性。
  4. 社区支持:ROS系统拥有庞大的用户社区和丰富的开源资源,这对于我们来说非常有帮助。他们可以通过社区交流和学习,共享经验,解决问题,也可以利用开源资源来加速自己的开发过程。

3、为什么不同版本环境下的Ubuntu需要下载不同版本的ROS 1.0系统:

ROS和Ubuntu之间存在版本对应关系。

为了确保ROS在Ubuntu上的稳定运行和兼容性,ROS的开发者会根据Ubuntu的版本发布相应的ROS版本。这些版本通常会在Ubuntu发布新版本后的一段时间内推出,以确保与新的Ubuntu版本兼容。

Ubuntu不同版本需要下载不同版本的ROS是为了确保ROS在Ubuntu上的稳定运行和兼容性,并充分利用最新功能和优化。

Ubuntu 版本ROS 1.0 推荐安装版本
Ubuntu 14.04ROS Indigo Igloo
Ubuntu 16.04ROS Kinetic Kame
Ubuntu 18.04ROS Melodic Morenia
Ubuntu 20.04ROS Noetic

ROS(Robot Operating System)支持多个版本的Ubuntu操作系统。具体来说,ROS1支持Ubuntu 14.04(Indigo版本)、Ubuntu 16.04(Kinetic版本)和Ubuntu 18.04(Melodic版本)。其中,Ubuntu 14.04的截止支持时间是2019年4月,Ubuntu 16.04的截止支持时间是2021年4月,而Ubuntu 18.04的截止支持时间是2023年4月。

另外,ROS2也支持Ubuntu,包括Ubuntu 20.04和预计支持的Ubuntu 22.04。然而,需要注意的是,ROS1的最后一个版本Noetic Ninjemys已经不再支持Ubuntu 22.04,因此,对于需要在Ubuntu 22.04上运行ROS的用户,应考虑使用ROS2。

这里介绍Ubuntu18.04 安装ROS 1.0

4、为什么需要软件源换源:

  1. 下载速度:Ubuntu默认的官方软件源可能位于国外,因此在国内访问时可能会遇到速度较慢的问题。更换为国内的软件源可以显著提高软件包的下载速度,加快软件安装和更新的过程。

  2. 软件包版本:不同的软件源可能提供不同版本的软件包,有些软件源可能提供更新或更适合特定需求的软件包版本。更换软件源可以让我们选择更符合自己需求的软件包版本。

  3. 适应网络环境:在某些情况下,由于网络限制或防火墙等原因,访问国外软件源可能会受到限制。更换为国内软件源可以绕过这些限制,使软件安装和更新更加顺畅。

    在Ubuntu系统中,/etc/apt/sources.list 文件确实包含了软件包的镜像源信息,而 apt 是用于管理软件包的命令行工具。在修改任何系统配置文件之前,进行备份是一个很好的做法,以便在出现问题时能够恢复到原始状态。

    这里使用清华源:

    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security multiverse
    

    5、安装ROS:

    在终端输入以下命令
    添加ros软件源

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

    添加密钥

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

    更新软件源

    sudo apt-get update
    

    安装ROS Noetic

    sudo apt install ros-noetic-desktop-full
    

    初始化 ROS

    sudo rosdep init
    

    设置环境变量
    这里根据系统版本的不同,可以将nortic更换为kinetic或者melodic

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

    使环境变量生效

    source ~/.bashrc
    

    安装rosinstall

    sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool
    

    2.熟悉ROS基本命令,并运行小海龟demo例子,通过键盘控制小海龟运动。同时用话题查看器查看两个node之间的消息传递:

    打开第一个终端

    ros2 run turtlesim turtlesim_node
    

    第二个终端输入

    ros2 run turtlesim turtle_teleop_key
    

gfq@gfq-virtual-machine:~$ sudo apt install ros-melodic-gazebo-ros ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-control ros-melodic-joint-state-controller ros-melodic-position-controllers ros-melodic-joint-trajectory-controller 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 ros-melodic-gazebo-plugins 已经是最新版 (2.8.7-1bionic.20221025.195709)。 ros-melodic-gazebo-plugins 已设置为手动安装ros-melodic-gazebo-ros 已经是最新版 (2.8.7-1bionic.20221025.195022)。 ros-melodic-gazebo-ros 已设置为手动安装ros-melodic-gazebo-ros-control 已经是最新版 (2.8.7-1bionic.20221025.202747)。 ros-melodic-gazebo-ros-control 已设置为手动安装ros-melodic-joint-state-controller 已经是最新版 (0.17.3-1bionic.20230131.222942)。 ros-melodic-joint-state-controller 已设置为手动安装ros-melodic-position-controllers 已经是最新版 (0.17.3-1bionic.20230131.223210)。 ros-melodic-position-controllers 已设置为手动安装。 下列软件包是自动安装的并且现在不需要了: gir1.2-goa-1.0 gir1.2-snapd-1 linux-headers-5.4.0-84-generic linux-hwe-5.4-headers-5.4.0-84 linux-image-5.4.0-84-generic linux-modules-5.4.0-84-generic linux-modules-extra-5.4.0-84-generic 使用'sudo apt autoremove'来卸载它(它们)。 下列【新】软件包将被安装ros-melodic-joint-trajectory-controller 升级了 0 个软件包,新安装1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。 需要下载 221 kB 的归档。 解压缩后会消耗 1,222 kB 的额外空间。 您希望继续执行吗? [Y/n] y 中止。 gfq@gfq-virtual-machine:~$
最新发布
11-20
<think> 我们面对两个问题: 1. rosdep update 出现 urlopen error timed out 错误(网络连接问题) 2. sudo apt install 安装 ros-melodic-joint-trajectory-controller 时中止(可能由于软件源问题或依赖问题) 针对第一个问题:rosdep update 超时 原因:访问 raw.githubusercontent.com 超时,通常由于网络连接问题(尤其是在国内访问GitHub不稳定) 解决方案:使用国内镜像源替换,例如清华源或中科大源。 针对第二个问题:安装特定包中止 可能原因: a) 软件源未正确配置(特别是ROS的软件源) b) 依赖问题(可能由于部分依赖未安装或版本冲突) c) 网络问题导致下载中断 我们将分步骤解决这两个问题。 ### 第一步:解决 rosdep update 超时问题 方法1:修改rosdep的源为国内镜像(推荐清华源或中科大源) 1. 备份原有配置文件: ```bash sudo cp /etc/ros/rosdep/sources.list.d/20-default.list /etc/ros/rosdep/sources.list.d/20-default.list.bak ``` 2. 修改20-default.list文件,将URL中的`https://raw.githubusercontent.com`替换为国内镜像地址: - 清华源:`https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master` - 中科大源:`https://raw.githubusercontent.com.ros.chinaapp.tech/ros/rosdistro/master`(注意:这个中科大镜像可能已变更,建议使用清华源) 使用sed命令替换(清华源): ```bash sudo sed -i 's|https://raw.githubusercontent.com|https://mirrors.tuna.tsinghua.edu.cn/github-raw|g' /etc/ros/rosdep/sources.list.d/20-default.list ``` 或者手动编辑: ```bash sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list ``` 将文件中所有的: https://raw.githubusercontent.com/ros/rosdistro/master 替换为: https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master 3. 设置环境变量(可选,但推荐): 因为rosdep在访问index-v4.yaml时也可能超时,我们可以设置使用镜像的索引: ```bash echo "export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml" >> ~/.bashrc source ~/.bashrc ``` 4. 清除缓存并更新: ```bash sudo rm -rf /etc/ros/rosdep/sources.list.d/20-default.list.save # 如果有的话 rm -rf ~/.ros/rosdep/sources.cache rosdep update ``` 如果上述方法仍然超时,可以尝试手动下载文件并放置到本地: 方法2:手动下载文件(以base.yaml和python.yaml为例) 1. 创建目录(如果不存在): ```bash sudo mkdir -p /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support/ ``` 2. 下载文件(使用镜像URL): ```bash wget https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/base.yaml -O /tmp/base.yaml wget https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/python.yaml -O /tmp/python.yaml ``` 3. 复制到目标目录: ```bash sudo cp /tmp/base.yaml /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support/ sudo cp /tmp/python.yaml /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support/ ``` 4. 再次更新: ```bash rosdep update ``` ### 第二步:解决安装 ros-melodic-joint-trajectory-controller 中止的问题 1. 确保软件源配置正确(使用国内ROS软件源): 检查你的sources.list中是否有正确的ROS镜像源(如清华源或中科大源)。 对于Ubuntu 18.04 (bionic)和ROS Melodic,清华源的配置如下: ```bash sudo sh -c '. /etc/lsb-release && echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list' ``` 然后导入密钥(如果之前导入失败,可以尝试以下方法): ```bash sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 如果密钥服务器连接有问题,可以尝试: ```bash sudo apt-key adv --keyserver 'hkp://pgp.mit.edu:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 ``` 或者直接下载密钥并添加: ```bash wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc -O - | sudo apt-key add - ``` 2. 更新软件包索引: ```bash sudo apt-get update ``` 如果遇到签名验证错误(如引用[3]中的问题),请执行: ```bash sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654 ``` 然后再次运行 `sudo apt-get update` 3. 修复损坏的依赖(可选): ```bash sudo apt-get install -f ``` 4. 安装特定包: ```bash sudo apt-get install ros-melodic-joint-trajectory-controller ``` 5. 如果安装过程中断(可能由于网络问题),可以尝试清除apt缓存并重试: ```bash sudo apt-get clean sudo rm -rf /var/lib/apt/lists/* sudo apt-get update sudo apt-get install ros-melodic-joint-trajectory-controller ``` 6. 如果问题依旧,可以尝试单独下载该deb包并安装: ```bash # 先查找确切的包名称和版本 apt-cache policy ros-melodic-joint-trajectory-controller # 使用apt download下载包(假设包名为ros-melodic-joint-trajectory-controller,版本为1.5.2-0bionic) apt download ros-melodic-joint-trajectory-controller # 然后手动安装 sudo dpkg -i ros-melodic-joint-trajectory-controller_1.5.2-0bionic_amd64.deb ``` ### 其他注意事项: - 确保网络连接稳定,特别是使用国内镜像后。 - 如果使用代理,请确保终端中设置了代理环境变量(如`http_proxy`和`https_proxy`)。 - 检查系统时间是否正确,错误的时间可能导致SSL证书验证失败。 按照以上步骤操作,应该能够解决两个问题。 如果仍然遇到问题,请提供具体的错误信息以便进一步分析。 §§相关问题§§ 1. 如何为ROS配置中科大镜像源? 2. 如何解决sudo apt update时出现的GPG签名错误? 3. 如何手动下载并安装ROS软件包? 4. rosdep update失败的其他解决方案? 5. 安装ROS包时出现依赖冲突如何解决? </think> ### 解决 `rosdep update` 超时错误及 ROS 安装中止问题 #### 一、解决 `rosdep update` 超时错误 **原因**:网络连接问题导致无法访问 GitHub 资源(特别是国内用户访问 raw.githubusercontent.com) ##### ✅ 最佳解决方案:使用国内镜像源替换 ```bash # 1. 备份原配置文件 sudo cp /etc/ros/rosdep/sources.list.d/20-default.list ~/20-default.list.bak # 2. 替换为清华源(推荐) sudo sed -i \ 's|https://raw.githubusercontent.com|https://mirrors.tuna.tsinghua.edu.cn/github-raw|g' \ /etc/ros/rosdep/sources.list.d/20-default.list # 3. 设置环境变量 echo "export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml" | sudo tee -a /etc/ros/rosdep/rosdep.yaml # 4. 清除缓存并更新 rm -rf ~/.ros/rosdep/sources.cache rosdep update ``` ##### 🔧 备选方案:手动下载配置文件 ```bash # 1. 手动下载关键文件 wget https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/base.yaml wget https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/python.yaml # 2. 复制到系统目录 sudo mkdir -p /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support/ sudo cp base.yaml python.yaml /usr/lib/python3/dist-packages/rosdep2/gbpdistro_support/ # 3. 强制更新 rosdep update --include-eol-distros ``` #### 二、解决 `sudo apt install` 安装中止问题 **原因**:通常由软件源配置错误或依赖关系冲突引起(引用[3][5]) ##### ✅ 完整修复步骤: ```bash # 1. 修复软件源配置(使用阿里云ROS镜像) sudo sh -c 'echo "deb http://mirrors.aliyun.com/ros/ubuntu/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' # 2. 修复GPG密钥错误(引用[3]) sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 # 3. 清理APT缓存(引用[5]) sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo mkdir -p /var/lib/apt/lists/partial # 4. 更新软件源 sudo apt update # 5. 修复损坏的依赖 sudo apt install -f # 6. 安装ROS包(示例) sudo apt install ros-melodic-joint-trajectory-controller ``` #### 三、验证成功的输出示例 ``` reading in sources list data from /etc/ros/rosdep/sources.list.d Hit https://mirrors.tuna.tsinghua.edu.cn/.../base.yaml Hit https://mirrors.tuna.tsinghua.edu.cn/.../python.yaml Updated cache in /home/$USER/.ros/rosdep/sources.cache 正在安装 ros-melodic-joint-trajectory-controller (1.5.2-0bionic) ... ``` ### 🔍 故障排查指南 1. **网络测试**: ```bash ping mirrors.tuna.tsinghua.edu.cn -c 4 curl -I https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml ``` 2. **详细错误日志**: ```bash # 查看apt安装详细过程 sudo apt install ros-melodic-joint-trajectory-controller -o Debug::pkgProblemResolver=yes ``` 3. **彻底重置ROS配置**: ```bash sudo rm -rf /etc/ros/rosdep/sources.list.d/* sudo apt purge ros-* sudo rosdep init # 重新初始化 ``` ### 📚 根本原因分析 | 问题类型 | 主要原因 | 解决方案 | |---------|---------|---------| | `rosdep update` 超时 | GitHub访问受限 | 使用国内镜像源替代 | | 安装包中止 | 软件源配置错误 | 更换阿里云/清华源 | | 安装包中止 | GPG密钥缺失 | 重新导入ROS密钥 | | 安装包中止 | 依赖冲突 | 执行 `sudo apt install -f` | > **重要提示**:90%的安装问题可通过更换国内源解决[^1][^3]。若仍失败,尝试在终端设置代理: > ```bash > export https_proxy=http://<your-proxy>:<port> > ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值