ROS2学习笔记(1)安装ROS2 Galactic-程序员宅基地

技术标签: 学习  ROS2学习笔记  

ROS (The Robot Operating System, 机器人操作系统) 是一套用来构建机器人应用程序的软件库和工具。 从驱动到最先进的算法,再加上强大的开发工具,ROS 拥有机器人项目所需的一切。而且它全部开源。

ROS2充分利用了ROS1的优点并改进了它的不足。

一、安装

1、系统要求

ROS2 支持在Linux、Windows、MacOS等多个平台上安装运行,ROS2 galactic在linux上主流平台要求是Ubuntu 20.04 64位。我使用的就是ubuntu 20.04,所以以下记录这个系统的安装方式。

Ubuntu 20.04 ROS2 galactic的安装可以下载源码编译安装,可以下载预编译包安装,也可以使用包管理工具apt安装,由于apt的方式最简单,也比较类似ROS1的安装方式,所以使用apt安装。

安装过程中可能会遇到由于国内网络不可描述的原因引起的失败情况,可以在网上搜索一下其他人的解决方式。

2、设置语言环境

确保有一个支持UTF-8的语言环境,执行以下操作

sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
3、设置软件源
(1)先确保启用了Universe存储库

使用以下命令

apt-cache policy | grep universe

若可以看到类似以下的打印信息,说明已经启用,可以继续做第二步(2)添加ROS2软件源的操作。

500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
release v=20.04,o=Ubuntu,a=focal,n=focal,l=Ubuntu,c=universe,b=amd64

若没有看到universe,需先执行以下命令:

sudo apt install software-properties-common
sudo add-apt-repository universe
(2)添加ROS2软件源

先授权GPG秘钥,使用以下命令:

sudo apt update && sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

然后就可以将ROS2 apt存储库添加到源列表

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
4、安装ROS2软件包

先更新一下apt存储库

sudo apt update

安装包有两种:desktop和ROS-base。ROS-base包含通信库、消息包、命令行工具等ROS2所有基础功能,但没有GUI工具。而desktop除了包含ROS-base外,还包含rqt、RVIZ等GUI工具,还有demo程序和教程。所以为了学习和调试方便,建议安装Desktop。

安装Desktop的命令为:

sudo apt install ros-galactic-desktop

安装ROS-base的命令为:

sudo apt install ros-galactic-ros-base

等待安装完成。

之后就可以正常运行ROS2了。

5、安装并初始化rosdep
sudo apt update
sudo apt install -y python3-rosdep
sudo rosdep init
rosdep update

二、运行示例程序

如果安装了ros-galactic-desktop,那么可以玩一下示例程序。

每次新开一个Terminal,都需要设置一下环境,ROS2才能正常使用。使用以下命令:

source /opt/ros/galactic/setup.bash

当然,为了方便可以直接将命令写到.bashrc中,这样每次打开Terminal都会自动设置ROS2环境。

但是我不建议添加,因为如果同时安装了ROS1和ROS2或同时安装了多个ROS2版本,这样就会有冲突。也会影响到其它软件的使用。

**运行个talker和listener Demo试试,**可以运行C++版本,也可以运行python版本。

打开一个Terminal,运行talker

source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_cpp talker

再新开一个Terminal,运行listener

source /opt/ros/galactic/setup.bash
ros2 run demo_nodes_cpp listener

可以看到以下效果

在这里插入图片描述

再来试一下海龟模拟器turtlesim

turtlesim是用于学习ROS2的轻量级模拟器,这里先试着运行它。

在一个terminal运行以下命令:

ros2 run turtlesim turtlesim_node

将会出现模拟器窗口,并在窗口中间生成一只小海龟

再打开一个terminal运行以下命令:

ros2 run turtlesim turtle_teleop_key

接着就可以通过电脑键盘上的箭头按键控制海龟移动了。

在这里插入图片描述

参考:
  • ROS 2 Documentation:https://docs.ros.org/en/galactic/index.html
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lgh1231/article/details/123052477

智能推荐

harry-turtle画满天星案例_import turtle import random turtle.speed(0) turtle-程序员宅基地

文章浏览阅读3.7k次。import turtleimport randomturtle.speed(0)turtle.pencolor(‘yellow’)turtle.bgcolor(‘black’)turtle.width(10)a = 0while a<100:a=a+1turtle.up()turtle.goto(random.randint(-350,350),random.randi..._import turtle import random turtle.speed(0) turtle.pencolor('yellow') turtle

ctf 网络安全比赛简介_简单的ctf竞赛-程序员宅基地

文章浏览阅读1k次。MISC(安全杂项):全称Miscellaneous。题目涉及流量分析、电子取证、人肉搜索、数据分析、大数据统计等等,覆盖面比较广。我们平时看到的社工类题目;给你一个流量包让你分析的题目;取证分析题目,都属于这类题目。主要考查参赛选手的各种基础综合知识,考察范围比较广。PPC(编程类):全称Professionally Program Coder。题目涉及到程序编写、编程算法实现。算法的逆向编写,批量处理等,有时候用编程去处理问题,会方便的多。当然PPC相比ACM来说,还是较为容易的。_简单的ctf竞赛

数学建模预测方法之 微分方程模型_微分方程预测模型-程序员宅基地

文章浏览阅读6.7k次,点赞7次,收藏42次。微分方程模型适用于基于相关原理的因果预测模型,大多是物理或几何方面的典型问题,假设条件,用数学符号表示规律,列出方程,求解的结果就是问题的答案。短、中、长期的预测都适合。反应事物内部规律及其内在关系,但由于方程的建立是以局部规律的独立性假定为基础,当作为长期预测时,误差较大,且微分方程的解比较难以得到。传染病的预测模型、经济增长(或人口)的预测模型、Lanchester战争预测模型、药物在体内的分布与排除预测模型、烟雾的扩散与消失模型..._微分方程预测模型

C#调用Oracle数据库_c# oracle-程序员宅基地

文章浏览阅读3.8k次。目前为止所用过的c#访问orale数据库的方式有两种,一种是使用 Oracle.ManagedDataAccess.Client方式来调用,另一种是使用System.Data.OracleClient方式来调用,两者的区别是第一种方式是最新的方式,使用起来也比第二种方式要简单的多,但是缺点可能无法访问旧版的Oracle数据库例如 9i,尤其是当oracle数据库的各种权限、角色等各种参数由于各种原因不允许对其修改时可能会无法访问的情况,第二种方式是一种过时的方式,它的优点是可以弥补第一种方..._c# oracle

Network_Card/DR600VX-Qualcomm-Atheros-QCA9880-2T2R-MIMO-802.11ac-Mini-PCIe-Wi-Fi-Module-Dual-Ba_dr600vx网卡-程序员宅基地

文章浏览阅读328次。https://www.wallystech.com/Network_Card/DR600VX-Qualcomm-Atheros-QCA9880-2T2R-MIMO-802.11ac-Mini-PCIe-Wi-Fi-Module-Dual-Band-2.4GHz-5GHz.htmlcontact:​​[email protected] max 24dBm & 5GHz max 23dBm o..._dr600vx网卡

快速学会创建uni-app项目并了解pages.json文件_uni中的page-程序员宅基地

文章浏览阅读3.2k次,点赞103次,收藏96次。学习目标:1.学会创建uni-app项目 2.了解uni-app中pages.josn文件的作用_uni中的page

随便推点

回炉夜话 - 序-程序员宅基地

文章浏览阅读159次。有志足风流,惜诺自可亲 这是我大学时代信奉的格言。转眼年至不惑,回想人生倒也是感慨万千。 在这里,作为一个老码农,我想梳理下自己的技术栈。为继续做一个码农而努力。 一、首先,对于各种技术的掌握程度作出如下定义: 了解: 阅读过相关资料或书籍,有可能..._回炉夜话全集

Android问题解决--“signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xxxxxxx” 又出现了_to unreadable libraries. for unwinds of apps, only-程序员宅基地

文章浏览阅读1.2w次。今天,调试一个app,又出现“signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xxxxxx”问题了。而且只在Android10以上版本才会有,导致的现象是app崩溃,这怎么怎?问题log:signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0x739ae8d004全部log如下:05-08 10:21:31.065 D/a.module(1890.._to unreadable libraries. for unwinds of apps, only shared libraries

工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息_正在构建工件 'ssm0950my8t:war exploded': 正在复制文件…-程序员宅基地

文章浏览阅读1.9k次。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。由于监听器过早的生效时间导致我们自动注入的bean的引用名称还没有生效(实际上bean已经注入了,但是监听器此时识别不到,小写类名首字母也没有用),这时候就要用到自定义bean名称了!仔细想一下,查看我监听器的代码,监听器实现了ServletContextListener接口,是一个全局监听器,也就是项目刚启动是就会生效,于是我添加了一条输出信息,就是“进入监听器”..._正在构建工件 'ssm0950my8t:war exploded': 正在复制文件…

字符串(python)_首先创建一个字符串str为“a little girl”,提取第3到13个字符,并组成新的字符串b-程序员宅基地

文章浏览阅读217次,点赞2次,收藏2次。(2)请统计字符串出现的每个字母的出现次数(忽略大小写,a 与 A 是同一个字母),并输出成一个字典。‘aAsmr3idd4bgs7Dlsf9eAF’,经过去除后,输出 ‘asmr3id4bg7lf9e’(4)按字符串中字符出现频率从高到低输出到列表,如果次数相同则按字母顺序排列。(3)请去除字符串多次出现的字母,仅留最先出现的一个,大小写不敏感。(1)请将字符串的数字取出,并输出成一个新的字符串。_首先创建一个字符串str为“a little girl”,提取第3到13个字符,并组成新的字符串b

JVisualVM 手动生成 Java Core Dump_手动生成coredump-程序员宅基地

文章浏览阅读2k次。最近在研究 Java Core Dump 查看及使用问题,这里我采了JDK自带工具jvisualvm ,这个工具可协助生成 Java Core Dump 文件1, Java Core Dump 文件是什么Java Core Dump 文件呢,是针对 JVM 虚拟机发生致命问题或者 JVM 中运行的程序造成致命问题时,所产生的记录文件,通常会存在2个文件1.1,Java Cor..._手动生成coredump

谈谈开源技术选型_开源技术 选型-程序员宅基地

文章浏览阅读4.7k次。有时感觉技术选型就像个伪命题,胜出的技术占据绝对的主流,就像 java 领域中 ejb 被 ssh/ssi 框架取代。 大部分项目使用近似的模式搭建,选型在工程中变得似乎可有可无。 时间上胜出的开源技术帮助开发者在客观上做出了选择,我们先了解下影响选型的客观因素。客观因素客观因素包括如下:1. 广泛性我们都倾向于选择更广泛应用的开源技术以规避未知性风险。2. 质量质量我们会_开源技术 选型