基于Ubuntu18.04的ROS Melodic环境详细配置(含各种大坑及填坑)

2023-05-16

参考资料:
ROS官方wiki、
https://blog.csdn.net/UTOPIA_0421/article/details/102767199

下文以Ubuntu18.04安装Melodic为例

填坑:ROS与Ubuntu版本的对应关系

Ubuntu20.04(也就是最新版本)目前没有合适的ROS版本对应,所以如果需要使用ROS目前先不要下这个版本!

ROS原本只支持在Linux系统上安装部署,而近期开始推出Windows版本,但还不够完善,所以首选开发平台仍是Ubuntu,并且ROS的每个版本都有一个最佳适配的Ubuntu版本。
请在下载Ubuntu/ROS之前一定要看清对应版本。

1.调整Ubuntu镜像源

这一步是为了让接下来的下载过程使用中国的服务器,加快速度
配置Ubuntu允许 restricteduniversemultiverse 这三种安装模式。ROS官方推荐软件源设置为中国科技大学(USTC)清华大学(Tsinghua),这里将软件源切换成中科大的源,

2.添加source.list

$ 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'

这一步配置将镜像添加到Ubuntu系统源列表中,建议使用国内的镜像源,这样能够保证下载速度。本例使用的是中国科技大学的源。

3.添加keys

$ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

公钥是Ubuntu系统的一种安全机制,也是ROS安装中不可缺的一部分。

4.安装ROS

首先要保证系统的Debian安装包在最新状态:

sudo apt update

一定要确保所有的执行项都被命中或者获取

这里如果出现以下错误:

W: GPG 错误:http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
W: 仓库 “http://packages.ros.org/ros/ubuntu xenial InRelease” 没有数字签名。
N: 无法认证来自该源的数据,所以使用它会带来潜在风险。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

参见以下解决方式:

 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654

其中最后一串码与之前的报错中签名的内容保持一致。

在ROS中,有很多不同的库和工具,官方提供了四种默认的安装方式,这里使用桌面完整版安装方式。

  • 桌面完整版(推荐):包含ROS、rqt、rviz、机器人通用库、2D/3D 模拟器、导航以及2D/3D感知等。
sudo apt install ros-melodic-desktop-full
  • 桌面版安装:包含ROS、rqt、rviz以及通用机器人函数库。
sudo apt install ros-melodic-desktop
  • 基础版安装:包含ROS核心软件包、构建工具以及通信相关的程序库,无GUI工具。
sudo apt install ros-melodic-ros-base
  • 单个软件包安装: 你也可以安装某个指定的ROS软件包(使用软件包名称替换掉下面的PACKAGE):
sudo apt install ros-melodic-PACKAGE

例如

sudo apt install ros-melodic-slam-gmapping

这里选择桌面完整版,然后在接下来的行输入Y,即可开始安装

5.配置ROS

5.1初始化 rosdep

rosdep可以方便在你需要编译某些源码的时候为其安装一些系统依赖,同时也是某些ROS核心功能组件所必需用到的工具。

sudo rosdep init
rosdep update

错误1

如果出现错误输入第一行代码时报错:找不到命令,输入以下代码

sudo apt install python-rosdep

错误2

如果出现输入第一行代码ERROR: cannot download default sources。。。一大串,对于这个问题网上有非常多解法,但感觉要么很麻烦,要么没什么用。我是输入以下代码:

sudo gedit /etc/resolv.conf

(效果有点类似于打开vim修改,可惜我没有下载vim,就用gedit解决)
在打开的文档中,在nameserver位置改为:

nameserver 8.8.8.8 
nameserver 8.8.4.4 

保存。再输入上文代码。

错误3

如果输入第二行代码时出现ERROR:unable to process source加上一大串,
请直接更换手机热点连接,并重复错误2中的步骤,再次输入这一小节最开始的两行代码即可成功配置。

5.2配置环境

每次打开一个新的终端时都需要重新配置ROS环境变量:

source ~/.bashrc

如果每次打开新的终端ROS环境变量都能够自动配置好(即添加到**~/.bashrc**文件中),那将会方便很多:

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

5.3构建库依赖

rosinstall是一个经常使用的命令行工具,它使你能够轻松地从一个命令下载许多ROS包的源码树。

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

6.测试ROS

6.1启动ROS

roscore

如果出现下图,说明已经正常启动:
在这里插入图片描述

6.2运行Turtle例程

启动roscore后,重新打开一个终端窗口,输入:

rosrun turtlesim turtlesim_node

屏幕上会出现一只小海龟(每次运行显示的海龟形状是不一样的),那么该怎么样来操纵这只小海龟呢?重新打开新的一个终端,输入:

rosrun turtlesim turtle_teleop_key

将鼠标聚焦在运行turtle_teleop_key的终端窗口上,然后通过键盘上的方向键,进行操作小海龟。

至此,ROS已经能够正常启动运行。若要停止运行,依次在各个终端中按Ctrl + C即可。

7.创建ROS工作空间

在用户空间下创建一个catkin工作空间:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

即使这个工作空间是空的(在src目录中没有任何软件包,只有一个CMakeLists.txt链接文件),你依然可以编译它:

cd ~/catkin_ws/
catkin_make

catkin_make命令在catkin工作空间中是一个非常方便的工具。如果查看一下当前目录应该能看到build和devel这两个文件夹。在devel文件夹里面你可以看到几个setup.*sh文件。source这些文件中的任何一个都可以将当前工作空间设置在ROS工作环境的最顶层。
编译完成后必须刷新一下工作空间的环境,否则可能找不到工作空间。
这里通过source命令实现:

 cd ~/catkin_ws/
source devel/setup.bash

如果每次打开新的终端可以自动进行刷新配置,那是非常方便的,可以把 source ~/catkin_ws/devel/setup.bash 命令追加到 ~/.bashrc 文件中:

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

一个ROS工作环境搭建完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Ubuntu18.04的ROS Melodic环境详细配置(含各种大坑及填坑) 的相关文章

随机推荐

  • AD18设计PCB时常见问题及操作

    我做PCB设计时 xff0c 常采用AD18这个软件 xff0c 使用过程中经常碰到一些问题 xff0c 遇到查了半天解决了 后来又碰到了 xff0c 索性记一下吧 xff0c 以后碰到的也陆陆续续记上来 xff0c 图片不一定用自己的了
  • C/C++中的new和delete的实现过程

    文章目录 newdeletenew delete 下面是 C 43 43 Primer 5th 中P726 对 new 和 delete 过程的解释 xff1a 当我们使用一条new表达式时 xff0c 实际上执行了三步操作 xff1a n
  • 判断链表是否有环

    题目 xff1a 给你一个链表的头节点 head xff0c 判断链表中是否有环 如果链表中有某个节点 xff0c 可以通过连续跟踪 next 指针再次到达 xff0c 则链表中存在环 为了表示给定链表中的环 xff0c 评测系统内部使用整
  • Linux 我已经搭建好LAMP,怎么让别人访问到我的服务器(通过外网),端口映射,内网穿透

    使用Ngrok 免费 xff09 1 下载Ngrok https dashboard ngrok com get started setup 2 解压并移动到 usr bin mv ngrok usr bin 3 映射127 0 0 1 x
  • Springboot自动装配原理

    springboot配置文件的装配过程 1 springboot在启动的时候会加载主配置类 xff0c 开启了 64 EnableAutoConfiguration 2 64 EnableAutoConfiguration的作用 xff1a
  • 百度面试基础问题

    上午百度面试 xff0c 我投的测试 xff0c 文三路伊美大酒店 xff0c 面了接近一个小时 xff0c 问了很多基础的东西 xff0c 我有些混淆也有些回答得不全面 xff0c 可能跪了 xff0c 记录一下面试题吧 xff0c 权当
  • Python的Playwright - 1.2 ConsoleMessage

    ConsoleMessage对象通过page on console 事件按页面调度 常见的几种属性 console message argsconsole message locationconsole message textconsol
  • nginx配置导致文件上传失败

    nginx配置导致文件上传失败 问题描述问题原因解决方法 问题描述 项目在客户使用文件上传是出现了意外报错 xff0c 通过查看报错日志 xff0c 发现是nginx服务器配置导致的错误 日志报错信息如下 xff1a 2023 04 14
  • TortoiseSVN的基本使用

    TortoiseSVN的基本使用 SVN xff1a 代码版本管理工具 xff1b 他能记住每次的修改 xff1b 查看所有的修改记录 xff1b 恢复到任何历史版本 xff1b 恢复已经删除的文件 SVN与Git比的优势 xff1a 使用
  • Ubuntu18.04 反复进入登陆页面

    在安装openssh server和openssh client重启之后 xff0c 登陆用户黑屏然后再次进入登录页面 尝试过删除 Xauthority xff1a 提示没有这文件 最终解决方法 xff1a ctrl 43 alt 43 f
  • 路径、连通、连通图,强连通图、连通分量、极大连通子图以及割点、割边保姆级解释

    前言 xff1a 由于在学习最大割的过程中涉及很多定义 xff0c 下面先回顾一下关于路径 连通 连通图 xff0c 强连通图 连通分量 极大连通子图以及割点 割边的定义 目录 1 路径 2 连通 3 连通图 4 强连通图 5 连通分量 极
  • 应用宝sdk接入流程与注意事项总结

    众所周知 xff0c 应用宝sdk几乎是国内应用市场sdk中最难接入的Android sdk xff0c 很多人初始接入都会感觉很痛苦 xff0c 文档多又乱 xff0c 问题排查也是非常蛋疼的事情 xff0c 所以 xff0c 今天抽了个
  • SecoClient接收返回码超时解决办法

    SecoClient接收返回码超时解决办法 参考网址 步骤 xff1a 第一步 xff0c Windows键进入 34 设置 34 第二步 xff0c 进入 34 更新与安全 34 第三步 xff0c 找到恢复 xff0c 点击 高级启动
  • 一、ROS的五个特点

    一 ROS的五个特点 xff1a 1 点对点设计 点对点的设计通俗的讲就是一个大的工程项目 xff0c 每个动能相互是独立的 xff0c 或者耦合比较低 有一个大脑负责总的任务调度 xff0c 为服务和客户建立连接充当媒介 各个功能之间可以
  • 双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题

    双系统格式化Ubuntu分区后Windows 开机出现grub rescue问题 开始电脑上装了Windows和ubuntu双系统 xff0c 突然一天脑子一热直接把ubuntu所在盘给格式化了 xff0c 潇洒的打开 xff0c 结果就出
  • 计算机组成原理常考大题合集

    计算机组成原理常考大题合集 1 在 Cache 主存 辅存 三级存储体系中 xff0c Cache 主存 结构与 主存 辅存 结构的引入为了解决什么问题 xff1f 答案扩展 2 在CPU中 xff0c 那些寄存器属于控制用指令部件 xff
  • 转载Socket详解

    一切皆Socket xff01 话虽些许夸张 xff0c 但是事实也是 xff0c 现在的网络编程几乎都是用的socket 有感于实际编程和开源项目研究 我们深谙信息交流的价值 xff0c 那网络中进程之间如何通信 xff0c 如我们每天打
  • c++ — 类和对象

    目录 一 面向对象的程序设计 1 1对象 1 2面向对象的三大特性 1 3类和对象的关系 二 类的声明和对象的定义 2 1声明类的类型 2 2对象的定义 三 类的成员函数 3 1类的作用域 3 2内置成员函数 3 3成员函数的存储方式 四
  • 成功解决:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.Execu

    使用ssm框架整合水果库存管理系统 xff0c 测试getById方法时报错 xff1a 但是getAll 这个方法又没报错 xff0c 还以为是POJO里面没有带参的构造器 xff0c 调了好久 xff0c 终于发现 xff0c 方法的返
  • 基于Ubuntu18.04的ROS Melodic环境详细配置(含各种大坑及填坑)

    参考资料 xff1a ROS官方wiki https blog csdn net UTOPIA 0421 article details 102767199 下文以Ubuntu18 04安装Melodic为例 填坑 xff1a ROS与Ub