ROS初学者教程(一)(官方教程精简)

ROS初学者教程(一)(官方教程精简),第1张

注: 这些工具自对ROS_PACKAGE_PATH环境变量下的包有效

需要在工作空间根目录下, 然后将工作空间加入到ROS环境变量中。

roslauch可以一次启动多个Node,这些Node定义在launch文件中。

使用方式: $ roslaunch [package] [filename.launch]

使用案例:

创建turtlemimic.launch文件,并粘贴以下内容:

使用方式:

$ rosed [package_name] [filename]

默认使用Vim编辑器,可通过环境变量设置使用的编辑器:

$ export EDITOR='nano -w'

可以将其加入~/.bashrc中。

在我看来,ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间通信方便,就连不同设备间通信也很方便,只需添加几行代码,你就可以实现多电脑间的 Topi c共享, 远程控制等功能。下面就让我们一起来实现吧!

这里假设我们有两个电脑:电脑 A 为主机端,电脑 B 为控制端。最终要实现在 A 电脑上运行roscore,并且运行 Turtlesim 程序,然后在 B 电脑上运行键盘控制程序,控制 Turtlesim 小乌龟移动。

1. 查看电脑A和电脑B的 IP 和 Hostname

查看IP,在控制台输入:

$ ifconfig

如果电脑连接的时有线网,则显示结果中,etho 部分的 inet addr 后面就是该电脑的 IP 地址;

如果电脑连接的是无线,则 wlp3s0 部分的 inet addr 后就是 IP 地址。

查看 Hostname,在控制台输入:

$ hostname

2. 修改hosts文件内容

使用如下指令,分别在电脑A和电脑B的打开 hosts 文件:

$ sudo gedit /etc/hosts

在电脑A端的 hosts文件 中添加如下加粗指令:

复制代码

127.0.0.1 localhost

127.0.1.1 [ hostname_A ]

[IP_A][ hostname_A ]

[IP_B][ hostname_B ]

***

复制代码

同理,在电脑B端的 hosts 文件中,加入如下加粗指令:

复制代码

127.0.0.1 localhost

127.0.1.1 [ hostname_B ]

[IP_B][ hostname_B ]

[IP_A][ hostname_A ]

***

复制代码

3. 修改 .bashrc 文件

使用如下指令,分别在电脑A和电脑B的打开 .bashrc 文件

$ sudo gedit ~/.bashrc

在电脑A端和电脑B端打开的 .bashrc 文件的最后一行,加入如下代码:

export ROS_MASTER_URI=http://[hostname_A]:11311

[注意] 此处假设电脑A为主机,如果改成电脑B为主机,则只需要将此步中的 [hostname_A] 改成 [hostname_B] 即可。

4. 运行小乌龟程序

电脑A端:

首先启动 ROS:

$ roscore

然后 Ctrl + T 打开新的控制台,运行:

$ rosrun turtlesim turtlesim_node

电脑B端:

$ rosrun turtlesim turtle_teleop_key

现在,你就可以用电脑 B 控制电脑 A 中的小乌龟尽情遨游啦! ~\(≧▽≦)/~啦啦啦

在上文我们将ROS2 foxy安装到Ubuntu 20, 并做了消息传递的测试。接下来我们对它的运行环境再做一些配置,方便以后的实验。

注:

ROS2安装分两种,要么编译源代码安装,要么直接使用安装包安装。我们是选择的debian安装包安装的。本节使用的setup.bash路径也是默认的。如果是通过编译源代码安装,这个路径在安装时可以自定义,设置时就得选择相应的路径。

代码 "echo ..."运行后,只是将该行代码写入.bashrc文件,并没有做其他 *** 作。该代码是利用source口令来执行setup.bash,设置环境。.bashrc会被运行,当新的terminal被打开时。所以运行printenv代码时,需要开启一个新的terminal。

优点是以后再运行ROS2自带的口令,就不需要每次运行source那段口令。printenv运行后,它会输出类似这样的信息:

ROS_DOMAIN_ID的值需要在0到232之间。DDS(数据分发服务)是一个开放标准的实时系统连接框架,它使分布式系统能够作为一个集成的整体安全运行。 ROS2基于 DDS,可轻松实现分布式机器人系统的 3D 可视化,ROS_DOMAIN_ID在DDS中会被使用到。

现在ROS2的运行环境就准备好了。下一节我们将介绍在ROS2上控制物体在图形界面上的移动。

参考资料:

https://docs.ros.org/en/foxy/Tutorials/Configuring-ROS2-Environment.html


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7924050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存