ROS2入门教程
文章平均质量分 82
Roar冷颜
从事于无人驾驶、车路协同领域
展开
-
ROS2入门教程—eloquent版本安装
ROS2入门教程—eloquent版本安装sudo apt update && sudo apt install curl gnupg2 lsb-releasesudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architec原创 2021-09-26 15:56:46 · 2134 阅读 · 0 评论 -
ROS2入门教程—编写动作服务器和客户端(C++版)
ROS2入门教程—编写动作服务器和客户端(C++版)1 创建功能包2 编写动作服务器2.1 编写动作服务器代码2.2 代码解释2.3 编译动作服务器2.4 运行动作服务器3 编写动作客户端3.1 编写动作客户端代码3.2 代码解释3.3 编译动作客户端3.4 运行动作客服端 动作是ROS 2中异步通信的一种形式。动作客户端将目标请求发送到动作服务器。动作服务器将目标反馈和结果发送到动作客户端。1 创建功能包 开启一个新终端,设置好环境变量,然后进入到dev_ws/src目录下,使用以下命令创建新的原创 2021-09-26 15:12:07 · 3018 阅读 · 0 评论 -
ROS2入门教程—创建一个动作消息(action)
ROS2入门教程—创建一个动作消息(action)1 创建功能包2 定义一个动作 我们在ROS2入门教程—理解动作(Action)一文中已经了解了ROS2中的动作(action),与其他通信类型及其各自的接口(topics/msg和services/srv)一样,您也可以在包中自定义动作。本教程将向您展示如何定义和构建一个动作,该动作可与将在下一教程中编写的动作服务器和动作客户端一起使用。1 创建功能包 开启一个新终端,设置好环境变量,然后进入到dev_ws/src目录下,使用以下命令创建新的功能原创 2021-09-26 10:16:22 · 2471 阅读 · 0 评论 -
ROS2入门教程—ros2doctor简介
ROS2入门教程—ros2doctor简介1 检查设置2 检查系统 当ROS 2安装程序未按预期运行时,可以使用ros2doctor工具检查其设置。ros2doctor检查ROS 2的所有方面,包括平台,版本,网络,环境,正在运行的系统等,并警告您可能的错误和问题原因。 ros2doctor仅在Eloquent及更高的版本中可以使用。 ros2doctor是ros2cli包的一部分。只要我们安装了ros2cli,我们就能够使用ros2doctor,通常我们安装ros2的时候就安装了这个包。1原创 2021-09-25 01:08:45 · 1962 阅读 · 0 评论 -
ROS2入门教程—在C++类中使用ROS2参数
ROS2入门教程—在类中使用ROS2参数1 创建功能包2 编写C++节点代码2.1 代码解释2.2 添加编译配置3 编译运行3.1 通过终端修改参数值3.2 通过Launch文件修改参数值 当我们自己编写节点功能时,有时候需要添加一些能够在launch文件中配置好的参数。本教程将向您展示如何在C++类中创建这些参数,以及如何在launch文件中设置这些参数。1 创建功能包 首先打开一个新终端,并且设置环境变量,以便ros2命令能够正常工作。然后进入到dev_ws/src文件夹,运行创建功能包的指原创 2021-09-24 13:27:57 · 4349 阅读 · 0 评论 -
ROS2入门教程—自定义话题及服务消息类型_拓展
ROS2入门教程—自定义话题及服务消息类型_拓展1 创建功能包2 创建msg文件3 编译msg文件4 设置多个接口 在前面的教程中,我们已经学习了如何在一个功能包中创建自定义msg和srv接口,然后在其他功能包中调用自定义的接口。虽然在专用接口功能包中声明接口是一个好习惯,但有时在一个功能包中声明、创建和使用接口更加方便。本教程将重点介绍在一个功能包中声明、创建和使用msg接口类型,但本教程的步骤适用于所有接口类型。1 创建功能包 首先打开一个新终端,并且设置环境变量,以便ros2命令能够正常工作原创 2021-09-23 15:33:33 · 3475 阅读 · 0 评论 -
ROS2入门教程—自定义话题及服务消息类型
ROS2入门教程—自定义话题及服务消息类型1 创建功能包2 创建自定义接口3 修改CMakeLists.txt4 修改package.xml5 编译6 验证msg和srv创建成功7 测试自定义接口(1) 测试Num.msg(2) 测试AddThreeInts.srv 在之前的教程中,我们已经使用消息和服务接口来了解话题、服务以及简单的发布者/订阅者节点和服务/客户端节点。在这些情况下,我们使用的接口都是预先定义好的。虽然使用预定义的接口定义是一种很好的做法,但在很多时候,ROS中预定义的接口并不能完全满原创 2021-09-23 14:18:39 · 2991 阅读 · 0 评论 -
ROS2入门教程—创建一个简单的服务器和客户端(C++版)
ROS2入门教程—创建一个简单的服务器和客户端(C++版)1 创建功能包2 创建服务节点3 创建客户端节点4 编译运行 当节点使用服务进行通信时,发送数据请求的节点称为客户端节点,响应请求的节点称为服务器节点。请求和响应的结构由.srv文件确定。接下来我们就尝试实现一个简单的服务通信模型,客户端发送两个加数,服务器完成加数求和之后应答求和结果。1 创建功能包 首先打开一个新终端,并且设置环境变量,以便ros2命令能够正常工作。然后进入到dev_ws/src文件夹,运行创建功能包的指令创建一个新的功原创 2021-09-23 10:52:00 · 2899 阅读 · 1 评论 -
ROS2入门教程—创建一个简单的订阅者和发布者(C++版)
ROS2入门教程—创建一个简单的订阅者和发布者(C++版)1 创建功能包2 创建发布者节点3 设置发布者节点依赖项4 设置发布者节点编译规则5 创建订阅者6 编译并运行 节点是通过ROS graph进行通信的可执行进程。在本教程中,节点将通过话题以字符串消息的形式相互传递信息。这里使用的例子是一个简单的“talker”和“listener”系统;一个节点发布数据,另一个节点订阅该话题,以便它可以接收该数据。之前我们已经通过命令行实现过话题的发布和订阅,本篇我们就来尝试下如何通过C++代码来实现发布者和订原创 2021-09-22 16:18:53 · 6945 阅读 · 2 评论 -
ROS2入门教程—创建ROS2功能包(C++版)
ROS2入门教程—创建ROS2功能包(C++版)1 ROS2中的功能包2 创建功能包3 编译功能包4 设置环境变量5 运行功能包6 功能包中的内容7 修改package.xml文件 功能包是ROS2中组织代码的基本容器,方便我们编译、安装、分发开发的代码,一般来讲,每个功能包都是用来完成某项具体的功能相对完整的单元。1 ROS2中的功能包 ROS2中的功能包可以使用CMake或者Python两种方式来编译(本篇文章主要介绍CMake),其本身是一个“文件夹”,但和文件夹不同的是,每个功能包中都会有原创 2021-09-22 13:58:16 · 4102 阅读 · 0 评论 -
ROS2入门教程—创建ROS2工作空间
ROS2入门教程—创建ROS2工作空间1 设置环境变量2 创建一个新文件夹 ROS2中的工作空间类似我们常说的概念——“工程”,是我们在ROS中开发具体项目的空间,所有功能包的源码、配置、编译都在该空间下完成。我们可能会同时开发多个项目,就会产生多个工作空间,所以工作空间之间也有一个层次的问题,类似于优先级的概念,比如不同工作空间中有同名的功能包,那运行的时候是启动哪一个呢?ROS默认是启动最上层的工作空间( overlay),上层工作空间中的功能包会覆盖(override)下层工作空间(underla原创 2021-09-22 12:46:09 · 2089 阅读 · 0 评论 -
ROS2入门教程—录制/回放数据
ROS2入门教程—录制/回放数据1 配置2 选择一个话题3 ros2 bag录制话题数据4 查看数据库文件5 ros2 bag回放数据 有的时候我们希望在别人已有的数据集上做开发,或者复现之前已经构建好的场景数据,这时候就可以用ROS2中的ros2 bag工具了。ros2 bag是一个命令行工具,可以实现对ROS2系统中话题数据的录制和回放,选定的数据会被打包放到一个数据库文件中,未来使用该工具即可按照时间轴回放所有话题数据。 在使用rosbag前,需要确认是否安装好了,因为通过桌面版安装ROS2的原创 2021-09-22 01:38:31 · 2972 阅读 · 0 评论 -
ROS2入门教程—创建一个launch文件
ROS2入门教程—创建一个launch文件1 配置2 创建launch文件内容3 启动launch文件4 使用rqt_graph观测系统 到现在为止,每次启动一个ROS2中的节点,我们都需要开启一个新的终端运行ros2 run指令,如果机器人系统中的节点很多,这样就会非常麻烦,而且还需要对每个节点进行配置。ROS2针对这个问题,专门设计了launch启动文件,可以通过一个类似脚本的文件,一起启动多个节点并允许在文件中对节点进行配置。使用ros2 launch命令运行单个launch文件将立即启动整个系统原创 2021-09-22 00:11:35 · 5114 阅读 · 0 评论 -
ROS2入门教程—rqt_console工具的使用
ROS2入门教程—rqt_console工具的使用1 启动rqt_console2 启动小海龟仿真器3 在rqt_console中显示日志消息4 日志级别 在终端中运行ROS2节点时,节点的日志信息会在终端中显示出来,但是这种方式呈现的日志比较凌乱,所以ROS2提供了一个专门用于管理日志信息的可视化工具——rqt_console。使用rqt_console,您可以随着时间的推移收集这些消息,以更有序的方式仔细查看它们,过滤它们,保存它们,甚至在不同的时间重新加载保存的文件以进行内省。1 启动rqt_c原创 2021-09-21 19:28:46 · 1821 阅读 · 0 评论 -
ROS2入门教程—理解动作(Action)
ROS2入门教程—理解动作(Action)1 启动小海龟仿真器2 使用action3 ros2 node info4 ros2 action list5 ros2 action info6 ros2 interface show7 ros2 action send_goal 之前介绍到的话题和服务是ROS中最重要的两种底层通信机制,但也并不是说能解决所有应用层的问题,举一个例子,如果要让机械臂抓取一个物体,我们不仅要发出指令,还需要获取机械臂的实时反馈,如果直接用话题和服务也可以实现,不过一下得上好几个原创 2021-09-18 19:19:02 · 2622 阅读 · 0 评论 -
ROS2入门教程—理解参数(Parameter)
ROS2入门教程—理解参数(Parameter)1 启动小海龟仿真器2 ros2 param list3 ros2 param get4 ros2 param set5 ros2 param dump6 加载参数文件 参数也是ROS2中很重要的一个概念,主要作用是对节点功能的配置,在ROS2中,每个节点都有自己的参数,这些参数可以用整型数、浮点数、布尔型数、字符串和列表来描述。所有参数都是动态可重新配置的,并基于ROS 2服务构建。1 启动小海龟仿真器 打开新终端并运行:ros2 run tur原创 2021-09-18 17:52:17 · 1985 阅读 · 0 评论 -
ROS2入门教程—理解服务(Service)
ROS2入门教程—理解服务(Service)1 启动小海龟仿真器2 ros2 service list3 ros2 service type4 ros2 service list -t5 ros2 service find6 ros2 interface show7 ros2 service call 之前讲的话题通信是基于订阅/发布机制的,无论有没有订阅者,发布者都会周期发布数据,这种模式适合持续数据的收发,比如传感器数据。机器人系统中还有另外一些配置性质的数据,并不需要周期处理,此时就要用到另外一种原创 2021-09-18 16:24:04 · 1447 阅读 · 0 评论 -
ROS2入门教程—理解话题(Topic)
ROS2入门教程—理解话题(Topic)1 启动小海龟仿真器2 rqt_graph3 ros2 topic list4 ros2 topic echo5 ros2 topic info6 ros2 interface show7 ros2 topic pub8 ros2 topic hz ros2将复杂系统分解为许多模块化节点,而这些节点之间则是通过一个至关重要的通道完成数据交换的,这个通道就是“话题”。 一个节点可以通过多个话题向外发布数据,也可以同时订阅多个其他节点发布的话题,相当于话题是一个原创 2021-09-18 14:50:56 · 4234 阅读 · 0 评论 -
ROS2入门教程—理解节点(Node)
ROS2入门教程—理解节点(Node)1 ros2 run2 ros2 node list3 重映射(Remapping)4 ros2 node info 和ROS1一样,ROS2中的各项资源也是通过计算图(“ ROS (2) graph”)联系到一起的。计算图是一个由各种ROS2元素组成的网络,共同完成数据的传输,其中每一个完成具体功能的模块称之为“节点”(Node)。ROS中的每个节点应负责一个单一的模块用途(例如,一个节点用于控制车轮电机,一个节点用于控制激光测距仪等)。节点之间通过话题(Topi原创 2021-09-18 12:59:41 · 2914 阅读 · 0 评论