ROS2学习笔记(三)从turtlesim学习ROS2主题

从turtlesim学习ROS2主题

前言

学习ROS2的路,并不能通过学习ROS1代替,因为ROS2的“内核”不同于ROS1,必须认认真真从头开始重新学习。

Ubuntu版本:20.04

ROS版本:Foxy

学习笔记回顾

1.ROS2话题

ROS2将整个系统分解为许多模块化节点。节点之间通讯的至关重要的通道就是Topic话题。
在这里插入图片描述

一个节点可以发布和订阅多个主题,相当于是多对多的订阅/发布模型。
在这里插入图片描述

话题是机器人各个子系统之间交换数据的重要途径。

2.启动小海龟模拟器和控制器

$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key

根据上一节的教程,想必大家已经很熟悉他们的节点了,分别为/turtlesim/teleop_turtle

3.rqt_graph功能软件

rqt_graph该软件可以对不断变化的节点和主题可视化显示,也可显示他们之间的关系。在ROS1中,该软件也是非常有用处。在一个新的终端中启动它:

$ rqt_graph

ROS2学习笔记包含以下内容: ### RCL(ROS Client Library) RCL是ROS客户端库,是ROS的一种API,提供了对ROS话题、服务、参数、Action等接口。不同的语言对应着不同的rcl,但基本功能相同。例如Python语言提供了rclpy来操作ROS2的节点话题服务等,C++则使用rclcpp提供API操作ROS2的节点话题和服务等。ROS2 API的实现层级中,最下面是第方的DDS,rmw(中间件接口)层是对各家DDS的抽象层,基于rmw实现了rclc,基于rclc,ROS2官方实现了rclpy和rclcpp [^5]。 ### GUI和CLI - **GUI(Graphical User Interface)**:图形用户界面,如Windows系统,可通过鼠标点击按钮等图形化交互完成任务。 - **CLI(Command - Line Interface)**:命令行界面,如终端的黑框框,没有图形化 [^5]。 ### API(Application Programming Interface) 应用程序编程接口。比如写了一个库,里面有很多函数,使用者不知函数内部实现,需看文档或注释了解函数入口参数、返回值及用途。在C和C++中表现为头文件,在Python中表现为Python文件 [^5]。 ### 命令行操作 - `ros2 pkg --h`:获取pkg的帮助命令。 - `ros2 pkg executables 包名`:输出所有功能包下的可执行程序。 - `ros2 pkg list`:列出所有功能包。 - `ros2 pkg prefix 包名`:列出功能包路径。 - `ros2 pkg xml`:输出功能包的package.xml内容 [^2]。 ### 创建节点模板(Python) ```python import rclpy from rclpy.node import Node class Mynode(Node): def __init__(self): super().__init__("hello_node_py") self.get_logger().info("hello world!(py继承)") def main(): rclpy.init() node = Mynode() rclpy.shutdown() if __name__ == '__main__': main() ``` ### 示例代码 以下是一个创建HelloWorld节点的Python代码,初始化时输出“hello world”日志: ```python #!/usr/bin/env python3 # -*- coding: utf-8 -*- import rclpy from rclpy.node import Node import time class HelloWorldNode(Node): def __init__(self, name): super().__init__(name) while rclpy.ok(): self.get_logger().info("Hello World") time.sleep(0.5) def main(args=None): rclpy.init(args=args) node = HelloWorldNode("node_helloworld_class") rclpy.spin(node) node.destroy_node() rclpy.shutdown() ``` ### 编译运行 ```bash cd ~/ros2_ws colcon build --packages-up-to topic_pkg ros2 launch topic_pkg pub_sub.launch.xml ``` ### 小乌龟教程相关 之前的配置ros2环境课程(https://docs.ros.org/en/foxy/Tutorials/Configuring - ROS2 - Environment.html)可教你如何配置环境,后续可安装小乌龟包turtlesim [^3]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

锡城筱凯

你的鼓励是我创造的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值