【ROS2入门】介绍 eloquent 版本中 turtlesim 和 rqt 使用

        大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们Jeston TX1 核心模块,JetPack_4.6.3刷机后环境中安装了 ROS2 eloquent版本,并完成了初步的验证,这一章,我们依托Turtlesim演示节点来逐步展开。

        Turtlesim是用于学习ROS 2的轻量级模拟器。它说明了ROS 2在最基本的层面上所做的工作,让您了解以后将如何使用真实的机器人或机器人模拟。rqt是ROS2的GUI工具。在rqt中完成的所有操作都可以在命令行上完成,但它提供了一种更简单、更用户友好的方式来操作ROS2元素。本教程涉及核心ROS2概念,如节点、主题和服务的分离。所有这些概念将在以后的教程中详细阐述;本章,你只需设置工具并了解它们。

目录

一、硬件平台和测试环境说明

二、介绍Turtlesim

2.1 Turtlesim 安装 (确认已经安装的可以跳过)

2.2 Turtlesim 启动

2.3 Turtlesim 键盘控制运动

三、介绍rqt(ROS2的图形用户界面)

3.1 rqt安装(确认已经安装,可以跳过)

3.2 rqt 使用

3.3 尝试派生服务(Try the spawn service)

3.4 尝试set_pen服务(Try the set_pen service)

3.5 Remapping

一、硬件平台和测试环境说明

我自己使用的是TX1核心模块,安装ubuntu 18.04 的环境,采用了官方的最小系统安装,并完成了一些换源等基础操作。Jeston TX1 核心模块,JetPack_4.6.3刷机后,安装jtop。

jtop

  

nvidia@nvidia-desktop:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.5 LTS
Release:    18.04
Codename:   bionic

安装完ROS2 eloquen版本后,打印环境变量:

printenv | grep -i ROS
LD_LIBRARY_PATH=/opt/ros/eloquent/opt/yaml_cpp_vendor/lib:/opt/ros/eloquent/opt/rviz_ogre_vendor/lib:/opt/ros/eloquent/lib/aarch64-linux-gnu:/opt/ros/eloquent/lib
AMENT_PREFIX_PATH=/opt/ros/eloquent
ROS_VERSION=2
ROS_LOCALHOST_ONLY=0
ROS_PYTHON_VERSION=3
PYTHONPATH=/opt/ros/eloquent/lib/python3.6/site-packages
PATH=/opt/ros/eloquent/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ROS_DISTRO=eloquent

以上最基本确保了,我们的系统已经正确的安装了ROS2 eloquen版本。

注意:后续的所有指令都只是适用次环境,对于更高版本,有些命令未必适用,请自行匹配好对应的版本。

二、介绍Turtlesim

2.1 Turtlesim 安装 (确认已经安装的可以跳过)

安装

sudo apt update
​
sudo apt install ros-eloquent-turtlesim

确认是否已经安装

ros2 pkg executables turtlesim

有如下打印,就说明已经安装

2.2 Turtlesim 启动

打开终端,输入如下命令:我是使用nomachine 链接了EHub_tx1_tx2_E100系统。

ros2 run turtlesim turtlesim_node

模拟器窗口应该出现,中间有一只随机的乌龟。

 在命令下的终端中,您将看到来自节点的消息:

nvidia@ubuntu:~$ ros2 run turtlesim turtlesim_node
[INFO] [turtlesim]: Starting turtlesim with node name /turtlesim
[INFO] [turtlesim]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]

2.3 Turtlesim 键盘控制运动

打开一个新的终端,现在,你将运行一个新节点来控制第一个节点中的乌龟:

ros2 run turtlesim turtle_teleop_key

 此时,你应该已经打开三个窗口:运行turtlesim_node的终端、运行turtle_teleop_key的终端和turtlesim窗口。排列这些窗口,以便您可以看到turtlesim窗口。

 同时还可以激活运行turtle_teleop_key的终端,以便您能够控制turtlesim中的乌龟使用键盘上的箭头键控制乌龟。它将在屏幕上移动,使用其附带的“笔”绘制到目前为止所遵循的路径。

 注意:按一下箭头键只会使乌龟移动一小段距离,然后停止。长按,小乌龟会一直运动,直到边界。这么设定是因为,实际上,如果例如操作员失去了与机器人的连接,您不希望机器人继续执行指令。

您可以使用list命令查看节点及其关联的服务、主题和操作:

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

你会在接下来的教程中了解有关这些概念的更多信息。由于本章节的目标仅是对turtlesim进行总体概述,因此我们将使用rqt(ROS2的图形用户界面)来进一步了解服务。

三、介绍rqt(ROS2的图形用户界面)

3.1 rqt安装(确认已经安装,可以跳过)

打开新终端以安装rqt及其插件:

sudo apt update
sudo apt install ros-eloquent-rqt*

安装完毕后,运行

rqt

3.2 rqt 使用

第一次运行rqt后,窗口将为空白。别担心;只需从顶部的菜单栏中选择Plugins>Services>Service Caller

 注意:rqt查找所有插件本身可能需要一些时间。如果单击插件,但没有看到服务或任何其他选项,则应关闭rqt,在终端中输入命令rqt--force discover。

 使用服务下拉列表左侧的刷新按钮,,以确保您的turtlesim节点的所有服务都可用。单击“服务”下拉列表以查看turtlesim的服务,然后选择/派生服务。

3.3 尝试派生服务(Try the spawn service)

让我们使用rqt来调用/派生服务。你可以从它的名字中猜到/spring将在turtlesim窗口中创建另一只海龟。

通过双击“表达式”列中的空单引号,为新海龟起一个独特的名字,如“turtle2”。您可以看到该表达式对应于name值,并且是string类型。

输入海龟的新坐标,如x=1.0和y=1.0。

 注意:如果您尝试生成一只与现有海龟同名的新海龟,如默认的“turtle1”,则在运行turtlesim_node的终端中会收到一条错误消息:

[ERROR] [turtlesim]: A turtle named [turtle1] already exists

编译完参数,你就可以调用了。要生成turtle2,您必须通过单击rqt窗口右上方的call按钮来调用服务。

         您将看到一只新海龟(同样是随机设计的)在您输入的x和y坐标处出现。如果您刷新rqt中的服务列表,您还将看到现在除了/turtle1/…之外,还有与新乌龟/turtle2/…相关的服务…。

3.4 尝试set_pen服务(Try the set_pen service)

尝试set_pen服务现在让我们使用/set_pen服务为turtle1提供一支独特的笔:

 r、g和b的值介于0和255之间,将设置画笔绘制的颜色,宽度设置线条的粗细。要让画笔1绘制一条清晰的红线,请将r值更改为255,将宽度值更改为5。更新值后不要忘记调用服务。

如果返回到运行turtle_teleop_node的终端并按下箭头键,您将看到turtle1的笔已更改。

 你可能已经注意到,没有办法移动turtle2。您可以通过将turtle1的cmd_vel主题重新映射( remapping)到turtle2来实现这一点。下面我将实现这点。

3.5 Remapping

打开一个新的终端,执行如下命令:

ros2 run turtlesim turtle_teleop_key --ros-args --remap turtle1/cmd_vel:=turtle2/cmd_vel

现在,当这个终端处于活动状态时,您可以移动turtle2,当运行turtle_teleop_key的另一个终端处于活动时,可以移动turtle 1。

 要停止模拟,只需关闭运行turtlesim_node和turtle_teleop_key的终端窗口。如果要保持这些终端打开,但结束模拟,可以在turtlesim_node终端中输入Ctrl+C,在遥操作终端中输入q。

以上就是我今天要分享的内容。纠错,疑问,交流: 911946883@qq.com

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ROS2编程基础课程文档 ROS 2(机器人操作系统2)是用于机器人应用的开源开发套件。ROS 2之目的是为各行各业的开发人员提供标准的软件平台,从研究和原型设计再到部署和生产。 ROS 2建立在ROS 1的成功基础之上,ROS 1目前已在世界各地的无数机器人应用得到应用。 特色 缩短上市时间 ROS 2提供了开发应用程序所需的机器人工具,库和功能,可以将时间花在对业务非常重要的工作上。因为它 是开源的,所以可以灵活地决定在何处以及如何使用ROS 2,以及根据实际的需求自由定制,使用ROS 2 可以大幅度提升产品和算法研发速度! 专为生产而设计 凭借在建立ROS 1作为机器人研发的事实上的全球标准方面的十年经验,ROS 2从一开始就被建立在工业级 基础上并可用于生产,包括高可靠性和安全关键系统。 ROS 2的设计选择、开发实践和项目管理基于行业利 益相关者的要求。 多平台支持 ROS 2在Linux,Windows和macOS上得到支持和测试,允许无缝开发和部署机器人自动化,后端管理和 用户界面。分层支持模型允许端口到新平台,例如实时和嵌入式操作系统,以便在获得兴趣和投资时引入和推 广。 丰富的应用领域 与之前的ROS 1一样,ROS 2可用于各种机器人应用,从室内到室外、从家庭到汽车、水下到太空、从消费 到工业。 没有供应商锁定 ROS 2建立在一个抽象层上,使机器人库和应用程序与通信技术隔离开来。抽象底层是通信代码的多种实现, 包括开源和专有解决方案。在抽象顶层,核心库和用户应用程序是可移植的。 建立在开放标准之上 ROS 2的默认通信方法使用IDL、DDS和DDS-I RTPS等行业标准,这些标准已广泛应用于从工厂到航空 航天的各种工业应用。 开源许可证 ROS 2代码在Apache 2.0许可下获得许可,在3条款(或“新”)BSD许可下使用移植的ROS 1代码。这两个 许可证允许允许使用软件,而不会影响用户的知识产权。 全球社区 超过10年的ROS项目通过发展一个由数十万开发人员和用户组成的全球社区,为机器人技术创建了一个庞大 的生态系统,他们为这些软件做出贡献并进行了改进。 ROS 2由该社区开发并为该社区开发,他们将成为未 来的管理者。 行业支持 正如ROS 2技术指导委员会成员所证明的那样,对ROS 2的行业支持很强。除了开发顶级产品外,来自世界 各地的大大小小公司都在投入资源为ROS 2做出开源贡献。 与ROS1的互操作性 ROS 2包括到ROS 1的桥接器,处理两个系统之间的双向通信。如果有一个现有的ROS 1应用程序, 可 以通过桥接器开始尝试使用ROS 2,并根据要求和可用资源逐步移植应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值