Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)

2023-05-16

Ubuntu 20.04安装Ros Noetic及18.04安装ROS Melodic

    • 表1-1 ROS的历史版本
  • 1. 设置安装源
  • 2. 添加秘钥
  • 3. 更新列表
  • 4. 开始安装
  • 5. 配置ROS环境变量
  • 6. 安装rosinstall
    • 6.1 初始化核心组件rosdep
  • 7. 学习ROS源码
  • 8. 启动小海龟
    • 8.1 启动节点管理器
    • 8.2 启动ros节点
    • 8.3 使用键盘

本文介绍在Ubuntu 20.04(Focal Fossa)安装Ros Noetic及Ubuntu 18.04(Bionic Beaver)安装ROS Melodic。最近学习ROS Melodic,网上有一些安装教程,但是不够详细,自己动手做了下,随手记下整个安装流程,并详细记录细节和遇到的问题,为后来者节省10来分钟足矣。本文参考《机器人开发实战》,作者无为斋主。
ROS作为目前最受欢迎的机器人操作系统,它的核心代码采用C++编写并经由BSD许可发布。ROS源于2007年斯坦福大学和机器人技术公司Willow Garage合作项目Switchyard。2012年,ROS团队从Willlow Garage独立出来,并成立了一家非营利组织,即开源机器人基金会(Open Source Robotics Foundation, OSRF),ROS自2013年起移交该基金会管理。
自2010年3月推出第一个发行版Box Turtle以来,ROS以每年1~2个版本的节奏已经发行了多个版本。ROS作为次级操作系统,官方推荐基于Ubuntu操作系统运行,并跟随Ubuntu发布节奏发布,在偶数年发布维护周期为5年的长期演进版本,奇数年发布维护周期为2年的普通版本。但2019年未发布新版本。ROS2也发布了正式版本,限于篇幅不涉及。ROS已发布的历史版本如表1-1所示。

表1-1 ROS的历史版本

发行版本发布日期截止日期Ubuntu版本备注
Noetic Ninjemys2020年4月2025年3月20.04 LTSLTS
Melodic Morenia2018年5月2023年5月18.04 LTSLTS
Lunar Loggerhead2017年5月2019年5月17.04
Kinetic Kame2016年5月2021年5月16.04 LTSLTS
Jade Turtle2015年5月2017年5月15.04
Indigo Igloo2014年7月2019年4月14.04 LTSLTS
Hydro Medusa2013年9月2015年5月13.04
Groovy Galapagos2012年12月2014年7月12.10
Fuerte Turtle2012年4月12.04 LTS
Electric Emys2011年8月11.10
Diamondback2011年3月11.04
C Turtle2010年8月10.04 LTS
Box Turtle2010年3月9.10

文章采用ROS版本为ROS Melodic,操作系统为Ubuntu 18.04 LTS 64bit(Bionic Beaver),同时插入对应的Ubuntu 20.04(Focal)安装最新的Ros Noetic命令,请读者根据自己要求选择。操作系统安装教程请参考作者上一篇博文推荐的链接。
详细安装步骤如下:

1. 设置安装源

为了安装ROS Melodic,首先需要在Ubuntu 18.04 LTS上添加安装源到source.list,Ubuntu 20.04(Focal)安装Ros Noetic命令相同,方法如下:

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

另外ROS提供了国内的安装源,添加国内清华大学的安装源示例代码如下:

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

笔者在使用中国科学技术大学源时发现,其并没有收录最新的Noetic版本,为安全起见,建议大家使用清华源或华为源。

2. 添加秘钥

添加秘钥到本地的trusted数据库中并加以验证,方法如下:

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

若密钥服务器hkp://ha.pool.sks-keyservers.net:80无法添加成功,则可以尝试hkp://pgp.mit.edu:80或者hkp://keyserver.ubuntu.com:80。
在更新之前,需要安装公钥,否则无法验证签名,这一步也是原书没有的,需要朋友们注意,命令如下:

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

3. 更新列表

更新Ubuntu 18.04 LTS或20.04 LTS的最新可用软件包列表:

sudo apt update

此时如果源不可用时,会报错定位不到,更换源即可。

4. 开始安装

下面开始安装ROS,推荐安装桌面完整版,这样就可以将ROS、rqt、rviz、机器人通用库、2D/3D仿真器、导航、2D/3D感知等功能一次性安装完成。
安装之前,需要安装其他依赖库,一次性安装如下:

sudo apt install libvtk6-jni libvtk6-java libvtk6-dev libvtk6-qt-dev libpcl-dev
sudo apt install ros-melodic-pcl-conversions ros-melodic-pcl-ros ros-melodic-perception-pcl ros-melodic-perception

有的人之前安装过某些库,我的机器之前安装opencv时装过vtk7,版本不兼容,识别不到,所以不得已卸载后安装vtk6,最好把这些库的安装都执行一遍。
最后终于开始安装ROS Melodic,方法如下:

sudo apt install ros-melodic-desktop-full

如果是Ubuntu 20.04(Focal)安装Ros Noetic,将所有libvtk6更换为libvtk7,命令如下:

sudo apt install libvtk6-jni libvtk7-java libvtk7-dev libvtk7-qt-dev libpcl-dev
sudo apt install ros-noetic-desktop-full

如果希望安装特定的ROS程序包,则可以首先查看当前可用的程序包列表,然后选择自己需要的程序包进行安装,示例代码如下:

apt search ros-melodic    \\或noetic
sudo apt install ros-melodic-slam-gmapping

5. 配置ROS环境变量

默认情况下,ROS_HOME的路径为"~/.ros",该目录保存着日志文件和测试结果文件。另外,第一次启动ROS时,需要进行环境变量配置,否则命令行终端找不到ROS命令。配置命令如下:

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

查看环境变量是否设置正确,命令如下:

env | grep ROS  

笔者查看环境变量结果如下:

ROS_ETC_DIR=/opt/ros/melodic/etc/ros
ROS_ROOT=/opt/ros/melodic/share/ros
ROS_MASTER_URI=http://localhost:11311
ROS_VERSION=1
ROS_PYTHON_VERSION=2
ROS_PACKAGE_PATH=/opt/ros/melodic/share
ROSLISP_PACKAGE_DIRECTORIES=
ROS_DISTRO=melodic

Ros Noetic命令相同。至此,ROS的核心程序包安装完毕。

6. 安装rosinstall

为了构建和管理开发者自己的ROS工作空间,还需要安装rosinstall,方法如下:

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

Ros Noetic安装rosdep和rosinstall命令如下:

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

6.1 初始化核心组件rosdep

开始使用ROS之前,还需要安装rosdep,rosdep是ROS一些核心组件的运行基础,会在编译ROS源码时检查和安装程序包依赖。ROS Melodic安装rosdep方法如下:

sudo rosdep init
# 可能由于网络原因会失败,多运行几次即可
rosdep update

Ros Noetic也可能需要初始化,这是官网推荐的,但会出现失败的情况,可按照下面方法来解决,首先是否可以拼通网址raw.githubusercontent.com,如果可以的话就修改hosts文件,加入以下两个网址的IP地址实现访问。

    sudo gedit /etc/hosts

    199.232.28.133 raw.githubusercontent.com
    151.101.228.133 raw.github.com

修改完成后,在终端执行

    sudo rosdep init
    rosdep update

如果还不能解决,建议参考下面这篇文章:《rosdep init ROS安装问题解决方案》
成功安装后,就可以体验ROS和创建ROS应用了。

7. 学习ROS源码

如果希望基于ROS源代码进行学习,则可以下载完整的ROS源代码,方法如下:

mkdir ~/ros_catkin_ws/ && cd ~/ros_catkin_ws/
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall 

Ros Noetic命令如下:

mkdir ~/ros_catkin_ws/ && cd ~/ros_catkin_ws/
rosinstall_generator desktop_full --rosdistro noetic --deps --tar > noetic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall 

ROS将使用wstool进行版本管理。如果希望在网络发生中断后可以以断点续传的方式继续下载,那么命令如下:

wstool update -j 8 -t src

目前网站不可访问,可能会导致失败,请知悉。至于如何通过ROS源代码学习ROS的更多实现细节,可以在Ubuntu 18.04/20.04 LTS下通过安装oepngrok进行浏览。

8. 启动小海龟

turtlesim是ROS系统自带的小海龟仿真程序。分步骤介绍如下:

8.1 启动节点管理器

为了启动turtlesim,首先运行roscore启动ROS的节点管理器,方法及结果如下:

simon@bert:~$ roscore
... logging to /home/simon/.ros/log/6b8e52d4-1597-11ea-ade6-000ec6c8c4f9/roslaunch-bert-2594.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://bert:44267/
ros_comm version 1.14.3


SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES

auto-starting new master
process[master]: started with pid [2604]
ROS_MASTER_URI=http://bert:11311/

setting /run_id to 6b8e52d4-1597-11ea-ade6-000ec6c8c4f9
process[rosout-1]: started with pid [2615]
started core service [/rosout]

roscore会启动一个ROS Master、一个ROS参数服务器和一个名为rosout的日志节点。ROS Master默认运行于11311端口,如果想指定端口,可参照如下:

roscore -p 11312

8.2 启动ros节点

利用Ctrl+Shift+T快捷键另外打开一个终端,启动turtlesim的节点turtlesim_node,命令如下:

simon@bert:~$ rosrun turtlesim turtlesim_node
[ INFO] [1575452194.366400729]: Starting turtlesim with node name /turtlesim
[ INFO] [1575452194.371807393]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

8.3 使用键盘

如果希望小海龟能够移动,可以启动turtlesim的键盘控制节点turtle_teleop_key,利用Ctrl+Shift+T快捷键另外再打开一个终端,输入命令:

simon@bert:~$ rosrun turtlesim turtle_teleop_key
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.

在当前终端下,按住方向键即可控制小海龟移动,截图如下:
移动小海龟
好了,赶快去试试吧,欢迎留言讨论~

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

Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑) 的相关文章

随机推荐

  • 【python】删除python代码中的简单注释

    可以当作一个简单的小工具来使用 xff0c 不过也是比较有局限性 xff0c 只能去掉 开头的注释行 使用内置函数 xff0c 没有引入模块 filename 61 34 xxx txt 34 打开名为xxx的txt文件 file 61 o
  • 再见2022,加油2023

    其实变化最大的一点就是 xff0c 这一年自己变成了一个北漂 没有很多的成熟的规划 xff0c 没有很多预算准备来到了北京 那会儿和之前的同事合租 xff0c 也给他添了不少麻烦 最开始到北京的时候 xff0c 因为口罩问题入职前生活状态比
  • 有效解决“SyntaxError: Non-UTF-8 code starting with” 语法错误

    在程序中出现中文的时候会有这种报错 xff0c 在代码的第一行加一句注释 xff0c 说明一下字符类型可以解决 coding 61 gbk coding utf 8这两种在我的程序里是亲测有效的
  • STM32F407定时器编码器接口模式

    STM32F407定时器编码器接口模式 16位定时器扩展32位 span class token comment TIM5初始化为编码器接口模式 xff0c 读取光栅尺数值 span span class token keyword voi
  • STM32F407的USB_HID 基础配置STM32CubeMX

    STM32F407的USB HID 基础配置 示例详解 参考 xff1a https blog csdn net zhanglifu3601881 article details 89675307 工具 xff1a STM32CubeMX5
  • STM32F407通过FSMC连接W5100S进行TCP网络通信

    STM32F407通过FSMC连接W5100S进行TCP网络通信 一 W5100S硬件 1 HS NM5100SA模块 模块厂家 xff1a 成都浩然电子http www hschip com HS NM5100SA以太网络控制器接口模块是
  • 【ROS2 入门】ROS2 创建工作空间

    大家好 xff0c 我是虎哥 xff0c 从今天开始 xff0c 我将花一段时间 xff0c 开始将自己从ROS1切换到ROS2 xff0c 在上几篇中 xff0c 我们一起了解ROS 2中很多基础概念 xff0c 从今天开始我们逐步就开始
  • STM32F407通过SPI连接W5100S进行TCP网络通信

    STM32F407通过SPI连接W5100S进行网络通信 一 W5100S硬件 1 HS NM5100SA模块 模块厂家 xff1a 成都浩然电子http www hschip com HS NM5100SA以太网络控制器接口模块是将W51
  • STM32F407 内部自带FLASH 模拟 EEPROM

    STM32F407 内部自带FLASH 模拟 EEPROM 一 STM32F407自带FLASH STM32F4 本身没有自带 EEPROM xff0c 但是 STM32F4 具有 IAP xff08 在应用编程 xff09 功能 xff0
  • 国标GB/T 18384.1 绝缘检测算法 推导公式

    国标GB T 18384 1 绝缘检测算法 推导公式 国标中关于绝缘检测算法只有结果 xff0c 没有推导公式 xff0c 如下 xff1a 根据电流回路相等原则 xff0c 推导出公式1 xff1a V1 V1 为正常情况下电池正负极电压
  • LTC6820和isoSPI使用笔记

    一 LTC6820使用笔记 1 MSTR主控 受控 MSTR 引脚 11 引脚 12 xff1a 串行接口主 从选择器输入 位于隔离式接口的主控器侧 xff08 SPI主机 xff09 xff0c 引脚接 VDD 位于隔离式接口的受控器侧
  • ESP8266学习笔记1--硬件

    1 ESP12F模块 原理图 自制开发板 原理图
  • ESP8266学习笔记2--Arduino环境搭建

    1 安装Arduino IDE https www arduino cn thread 5838 1 1 html 2 安装esp8266扩展 https www arduino cn thread 76029 1 1 html 安装成功后
  • ESP8266学习笔记3-闪存文件系统

    3 3 1 闪存文件SPIFFS基本操作 程序来源 xff1a 太极创客http www taichi maker com homepage esp8266 nodemcu iot iot c spiffs spiffs operation
  • 同一寄存器不同位域赋值的两种方法

    当一个寄存器有不同位域时 xff0c 我们需要给不同位域赋值 如何赋值方便呢 xff1f 下面有两种方法 xff0c 总结一下 个人觉得位域写法更简洁 整体寄存器法 typedef struct StrNa uint32 t reg1 re
  • mavlink解析

    之前看了mavlink协议 xff0c 网上关于mavlink的资料不多 本系列共三篇 xff0c 这是第一篇 本文大概总结了下对mavlink协议的理解 以下如不说明都是说mavlink v1 0版本 首先附上mavlink的各个消息的简
  • Tomcat部署及优化

    目录 1 Tomcat概述 1 Tomcat的概念 2 Tomcat的核心组件 3 Java Servlet 的概念 4 JSP的概念 5 Tomcat中最顶层的容器 server 6 四个子容器的作用 7 Tomcat请求过程 2 Tom
  • STC89C52系列单片机内部资源——串口通信

    计算机通信是将计算机技术和通信技术的相结合 xff0c 完成计算机与外部设备或计算机与计算机之间的信息交换 可以分为两大类 xff1a 并行通信与串行通信 并行通信通常是将数据字节的各位用多条数据线同时进行传送 并行通信控制简单 传输速度快
  • 用TCP/UDP 网络调试助手(PC版)无法获取网页信息

    以前的网页均是http开头的 xff0c 是没有加密的 xff0c 以前用GET就能获取网页的信息 xff0c 但是现在的基本是https开头的 xff0c 是加密的 xff0c 所以现在用以前的方法 xff0c 只能返回301错误 现在想
  • Ubuntu 20.04安装Ros Noetic及Ubuntu 18.04安装ROS Melodic(两版本详细填坑)

    Ubuntu 20 04安装Ros Noetic及18 04安装ROS Melodic 表1 1 ROS的历史版本 1 设置安装源2 添加秘钥3 更新列表4 开始安装5 配置ROS环境变量6 安装rosinstall6 1 初始化核心组件r