到现在为止,每次启动一个ROS2中的节点,我们都需要开启一个新的终端运行ros2 run指令,如果机器人系统中的节点很多,这样岂不是很麻烦。 ROS2针对这个问题,专门设计了launch启动文件,可以通过一个类似脚本的文件,一起启动多个节点并允许在文件中对节点进行配置。 接下来我们就看看如何才能创建并使用一个launch文件。
在终端中运行ROS2节点时,节点的日志信息会在终端中显示出来,但是这种方式呈现的日志比较凌乱,所以ROS2提供了一个专门用于管理日志信息的可视化工具——rqt_console。今天我们就来看看这个工具是如何使用的。 1.启动 首先打开一个新的终端,使用如下指令即可启动rqt_console: ros2 run rqt_console rqt_console &n
之前介绍到的话题和服务是ROS中最重要的两种底层通信机制,但也并不是说能解决所有应用层的问题,举一个例子,如果要让机械臂抓取一个物体,我们不仅要发出指令,还需要获取机械臂的实时反馈,如果直接用话题和服务也可以实现,不过一下得上好几个,有点麻烦。 所以针对类似的场景,ROS推出了一个应用级的通信机制——动作(action),主要结局需要运行一段时间的机器人任务。action
参数也是ROS2中很重要的一个概念,主要作用是对节点功能的配置,在ROS2中,每个节点都有自己的参数,这些参数可以用整型数、浮点数、布尔型数、字符串和列表来描述。 依然是以小海龟仿真器为例,看看里边有哪些参数。 1.启动小海龟仿真器 熟悉的两行命令: ros2 run turtlesim turtlesim_node ros2 run turt
之前讲的话题通信是基于订阅/发布机制的,无论有没有订阅者,发布者都会周期发布数据,这种模式适合持续数据的收发,比如传感器数据。机器人系统中还有另外一些配置性质的数据,并不需要周期处理,此时就要用到另外一种ROS通信方式——服务(Service)。 服务是基于客户端/服务器模型的通信机制,服务器端只在接收到客户端请求时才会提供反馈数据。
大道至简,ROS2将复杂的机器人系统拆解成许多模块节点,而这些节点之间则是通过一个至关重要的通道完成数据交换的,这个通道就是“话题”。 一个节点可以通过多个话题向外发布数据,也可以同时订阅多个其他节点发布的话题,相当于话题是一个多对多的订阅/发布模型。 可见,话题是节点之间实现数据传输的重要途径,也是机器人各个子系统之间交换数据的重要方式。 &
和ROS1一样,ROS2中的各项资源也是通过计算图(“ ROS (2) graph”)联系到一起的。计算图是一个由各种ROS2元素组成的网络,共同完成数据的传输,其中每一个完成具体功能的模块称之为“节点”(Node),例如控制车轮速度、获取雷达数据等,节点之间通过话题(Topic)、服务(Service)、动作(Actions)或者参数(Parameter)实现数据的收发。
小海龟(Turtlesim)是ROS2中一个非常重要的入门级例程,通过海龟仿真,我们可以了解到很多ROS2的底层原理,涉及节点、话题、服务等核心概念。 1.安装海龟仿真器 Linux: sudo apt update sudo apt install ros-foxy-turtlesim Windows: 默认已经安装好 &
workspace是ROS2中的工作空间,也是我们开发机器人代码的位置。 ROS2安装的系统目录称之为“underlay”,我们自己创建的工作空间称之为“overlay”,在一台电脑上往往有多个工作空间。我们可以通过source不同空间的环境变量脚本来更换所使用的workspace,包括ROS2的版本。 如果使用的是Linux系统或者MacOS,
1. 设置编码 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 2.设置软件源 sudo apt update && sudo apt install curl
2020年,Ubuntu最新的LTS版本20.04如期而至,古月君早就摩拳擦掌想要尝试一下,今天就大胆来一次硬盘安装。 笔记本型号:小米15.6 Pro 原系统环境:Windows 10 + Ubuntu18.04 + Ubuntu16.04 古月君的电脑有两块硬盘,一个装Windows,另外一个装了两个Ubuntu系统,启动项设置在Ubunt
一起从零学习ROS2
博客
泡泡
积分
勋章
ROS2入门教程——31. 在Gazebo仿真环境中实现自主导航
ROS2入门教程——30. 在Gazebo仿真环境中实现SLAM
ROS2入门教程——29. 创建一个tf2监听器(Python)
ROS2入门教程——28. 创建一个tf2监听器(C++)
ROS2入门教程——27. 创建一个tf2广播器(Python)
ROS2入门教程——26. 创建一个tf2广播器(C++)
ROS2入门教程——25. 创建一个tf2的静态广播器(Python)
ROS2入门教程——24. 创建一个tf2的静态广播器(C++)
ROS2入门教程——23. ROS2中的坐标变换系统tf2
ROS2入门教程——22. 监控ROS2参数的动态变化(C++)
ROS2入门教程——21. 如何使用ROS2的参数(Python)
ROS2入门教程——20. 如何使用ROS2的参数(C++)
ROS2入门教程——19. 自定义话题及服务消息类型
ROS2入门教程——18. 创建一个简单的服务器和客户端(Python)
ROS2入门教程——17. 创建一个简单的服务器和客户端(C++)
ROS2入门教程——16. 创建一个简单的订阅者和发布者(Python)
ROS2入门教程——15. 创建一个简单的订阅者和发布者(C++)
ROS2入门教程——14. 创建ROS2功能包
ROS2入门教程——13. 创建ROS2工作空间
ROS2入门教程——12. 使用ros2 bag录制/回放数据
ROS2入门教程——11. 创建一个launch文件
ROS2入门教程——10. rqt_console工具的使用
ROS2入门教程——9. 理解动作(Action)
ROS2入门教程——8. 理解参数(Parameter)
ROS2入门教程——7. 理解服务(Service)
ROS2入门教程——6. 理解话题(Topic)
ROS2入门教程——5. 理解节点(Node)
ROS2入门教程——4. 小海龟仿真器基础使用
ROS2入门教程——3. ROS2环境配置
ROS2入门教程——2. Ubuntu20.04安装ROS2 Foxy
ROS2入门教程——1. Ubuntu 20.04硬盘多系统安装
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信