【 ros-noetic rosnode】ros相关开发基础及快速入门——ROS节点(node)

前言:

          为了帮助大家快速入坑ROS,这边随手写一个快速入门的开发基础和快速入门,一方面是对以前的ROS相关的学习经验的总结和回顾。另一方面是对以后开展的基于ROS的开发项目教程的提供基础教程。如果有用的话还请各位靓仔靓女点赞收藏加关注,你的和支持是笔者的动力。话不多说,靓仔靓女们请参阅。


目录

前言:

1、ros系统的简介

2、ros的节点(node)

      (1)节点(node)

      (2)节点管理器(node Master)

 3、与节点有关的指令

        (1)ros-tutorial安装

(2)roscore命令

(3)rosrun命令

(4)rosnode命令 

 (5) node节点的相关命令的使用和讲解

1、rosnode list 命令

2、rosnode ping 命令

 3、rosnode info 命令

4、rosnode mechine 命令

 5、rosnode kill 命令

6、rosnode cleanup 命令


1、ros系统的简介

        机器人操作系统(Robot Operating System,ROS),因为其点对点设计、语言支持范围广、集成度高、兼容性好、工具包丰富、免费且开源的特点、已经广泛运用于各种机器人开发当中。

2、ros的节点(node)

      (1)节点(node)

                节点(node)是ROS中的最小进程单元,可以使用不同的客户端(Client Libraries),如(roscpp,rospy)来进行通讯,不同语言编写的节点之间可以进行相互通讯,从程序的角度来讲,节点是不同语言编写的一个个执行文件,执行文件之间可以通过话题(topic)、服务(service)、参数(parameter)进行通讯。

      (2)节点管理器(node Master)

                  节点管理器(ROS Master)是管理系统众多节点的控制器,当任意节点想要节点想要接入ROS系统时,该节点需要现在节点管理器        上进行注册和命名,之后节点管理器会将该节点接入整个ROS系统中,因此节点管理器存储着ROS系统正在运行着的所有节点的信息,当节点内的信息出现变化时,节点管理器将更新变化的信息并将更新后的节点信息与其他的节点通讯。

 3、与节点有关的指令

        (1)ros-tutorial安装

                 首先在Ubuntu(Ubuntu20.04)系统中打开终端(快捷方法:Ctrl+Alt+T)。

在终端中输入:

sudo apt-get install ros-<distro>-ros-tutorials

 注意:将<distro>换成你的ros安装版本如(melodic、indigo、jade、kinetic、noetic、hydro、groovy),关于安装好ros后如何查看ros安装版本,在新的终端使用roscore可以查看相关ros安装的版本信息。

(2)roscore命令

        打开一个新的终端(Ctrl+Alt+T),输入如下命令:

roscore

运行结果如下所示

如上图运行结果所, 其中:

ros_comm version和 * /rosversion: 显示的是版本号 1.16.0。

 * /rosdistro:显示的是当前安装的ROS系统版本 noetic。

在运行ros系统前必须先执行roscore来启动节点管理器(node master)该命令执行后rosout节点和parameters server框架会一起启动,rosout节点是所有工作节点都自带的一个节点,用于收集和记录节点调试和输出信息,而parameters server则不是节点,是方便分布式并行程序编写的编程框架,用于系统的参数配置。

        如果roscore初始化失败,则可能是网络配置出现异常导致的,可以通过修改文件权限来解决这一问题。命令如下,其中<your_username>是你的用户名。

sudo chown -R <your_username> -/.ros

(3)rosrun命令

        节点是ros系统中最基础的执行单元,我们可以使用rosrun来运行我们的节点,其输入的命令格式如下:

rosrun [package_name] [node_name]

        其中[package_name]是节点所在的功能包的名字,[node_name]是节点的名称。以ros自带的小海龟为节点为例,输入以下命令,可以按Tab键快速补全命令。

rosrun turtlesim turtlesim_node

        运行结果如下:

 由上图运行的结果可见,小海龟的形象是随机生成的,每个人生成的小海龟形象会有所差异。

        现在我们试着用键盘控制小海龟的移动,步骤如下:

  1、打开终端输入roscore,如上讲解。

roscore

2、打开新终端,开启海龟节点,如上讲解。

rosrun turtlesim turtlesim_node

3、打开新终端,开启海龟控制节点。

rosrun turtlesim turtle_teleop_key

运行结果如下:

(4)rosnode命令 

         ros系统的功能都是由一个个节点组合组合构成的,ros系统中的节点有关命令如下表所示。

 

 (5) node节点的相关命令的使用和讲解

1、rosnode list 命令

        在上述教程中我们完成了小乌龟示例,在此案例上我们新开一个终端查看所有正在运行的节点。

rosnode list

运行结果如下图所示。

        在以上的运行结果中,/rosout、/teleop_turtle、/turtlesim,分别代表着 rosout节点、键盘控制海龟节点、海龟运行节点。

        与我们用rosrun运行时的节点名称有差异,原因是rosnode list 显示的是该节点(node)向节点管理器注册的节点名称。以键盘控制海龟节点名"/teleop_turtle"注册代码为例。

ros::init(argc,argv,"teleop_turtle")

 其中该节点向节点管理器(node master)注册的节点名称为teleop_turtle。        

        当然我们可以在节点启动的同时通过以下指令来修改ros系统中的世界节点名称,命令如下:

rosrun [package(包名)] [node_name(节点名称)] __name = [new_name(新节点名称)]

“teleop_turtle”节点名称为例输入如下命令:

rosrun turtlesim turtle_teleop_key __name:=control

再次输入rosnode list 命令查看所有运行节点列表:

rosnode list

运行结果如下:

 可以看到我们将“/teleop_turtle”节点名称替换成了“/control”

2、rosnode ping 命令

      rosnode ping可以测试指定节点是否正常运行,以刚修改的"/control"节点为例,以下命令:

rosnode ping /control

运行结果如下为节点运行正常:

 3、rosnode info 命令

        rosnode info 命令可以了解指定节点的详细信息和在整个系统中的具体作用,以“/turtlesim”海龟节点为例。在终端中输入以下命令:

rosnode info /turtlesim

运行结果如下:

 如上图所示,我们会得到该节点的详细信息,其中

        Publications显示其发布话题名称和路径。

        Subscriptions显示其订阅的话题名称及路径。

        Services显示其包括的服务内容。

        Connections显示其的通信机制。

4、rosnode mechine 命令

        rosnode mechine 命令其实是 rosnode list命令的延展,该命令不仅可以查看本机上运行的节点,也可以显示与其相连接其他PC(电脑)上运行的节点。命令格式如下

rosnode mechine [IP adress(地址)/PC name(名称)]

输入如下指令,查看本机运行节点:

rosnode machine qizerone-virtual-machine

运行结果如下:

 5、rosnode kill 命令

        rosnode kill命令可以终止指定的正在运行的节点,在终端中输入(Ctrl + C)都可以终止正在运行的节点。以"/turtlesim"节点为例。

命令 rosnode kill:

rosnode kill /turtlesim

运行结果如下:

快捷键(Ctrl + C):

6、rosnode cleanup 命令

     在ros系统运行过程中,我们总会由于一些特别的原因导致节点的异常终止,此时我们可以用该命令来删除系统异常运行而终止的节点。该命令最直观的好处是当一些具体的节点异常导致整体异常时,我们要先删除这些节点的注册信息并重新运行该节点即可,而不用重新运行roscore和一堆节点,该节点的输入格式如下。

rosnode clearnup

        至此,笔者后续会继续更新相关ros入门相关总结和经验,如果觉得有用的话可以点个赞和收藏。如果对文章内容有什么问题可以在评论区留言或者私信笔者。最后希望与大家共勉进步。

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qizerone

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

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

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

打赏作者

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

抵扣说明:

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

余额充值