
ROS2
文章平均质量分 50
无边界ROS2
精通python、c语言、c++,研究ROS1、ROS2.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ROS2中,py的launch文件中的setup.py(通用)
【代码】ROS2中,py的launch文件中的setup.py(通用)原创 2024-07-24 16:25:53 · 353 阅读 · 0 评论 -
ROS2中,小车通信服务通信
【代码】ROS2中,小车通信服务通信。原创 2024-07-23 22:02:54 · 597 阅读 · 0 评论 -
ROS2中,实车电脑端的动作通信
【代码】ROS2中,实车电脑端的动作通信。原创 2024-07-23 22:01:13 · 650 阅读 · 0 评论 -
ROS2小乌龟案例参数服务
指令执行后,将生成turtlesim_node节点对应的窗口,窗口背景色会动态改变,最终运行结果与演示案例类似。原创 2024-07-21 10:52:04 · 502 阅读 · 0 评论 -
ROS2小乌龟案例动作通信
编写动作接口文件;编写动作服务端实现;编写动作客户端实现;编写launch文件;编辑配置文件;编译;执行。原创 2024-07-18 08:52:01 · 1205 阅读 · 0 评论 -
ROS2小乌龟案例服务通信
编写服务接口文件;编写服务端实现;编写客户端实现;编写launch文件;编辑配置文件;编译;执行。原创 2024-07-18 08:47:46 · 1211 阅读 · 0 评论 -
ROS2小乌龟案例话题通信
编写速度订阅与发布实现;编写launch文件集成多个节点;编辑配置文件;编译;执行。原创 2024-07-17 16:59:14 · 1507 阅读 · 0 评论 -
ROS2中,通信常用的命令工具
关于命令的使用一般都会提供帮助文档,帮助文档的获取方式如下:可以通过命令 -h或命令 --help或。命令下参数的使用也可以通过命令 参数 -h或或。原创 2024-07-17 15:59:30 · 259 阅读 · 0 评论 -
ROS2时间相关API
要求话题发布方按照一定的频率发布消息,我们实现时是通过定时器来控制发布频率的,其实,除了定时器之外,ROS2 中还提供了 Rate 类,通过该类对象也可以控制程序的运行频率。rclpy 中的 Rate 对象可以通过节点创建,Rate 对象的 sleep() 函数需要在子线程中执行,否咋会阻塞程序。Time 以及 Duration 的相关运算。创建 Duration 对象,并调用其函数。创建 Duration 对象,并调用其函数。创建 Time 对象,并调用其函数。创建 Time 对象,并调用其函数。原创 2024-07-16 17:48:11 · 485 阅读 · 0 评论 -
ROS2重命名话题
请先分别创建 C++ 与 Python 相关的功能包以及节点,且假定在创建节点时,使用的命名空间为 xxx,节点名称为 yyy。话题名称为 /xxx/yyy/topic/chatter,使用命名空间 xxx 以及节点名称 yyy 作为话题名称前缀。话题名称为 /xxx/topic/chatter,与命名空间 xxx 有关,与节点名称 yyy 无关。当为节点添加命名空间时,节点下的所有非全局话题都会前缀命名空间,而重映射的方式只是修改指定话题。开头的名称,参考命名空间设置话题名称,和节点名称无关。原创 2024-07-16 08:19:04 · 1720 阅读 · 0 评论 -
ROS2节点重命名
语法:ros2 run 包名 节点名 --ros-args --remap __ns:=命名空间示例:1.2运行结果使用查看节点信息,显示结果:2.ros2 run名称重映射2.1为节点起别名语法: ros2 run 包名 节点名 --ros-args --remap __name:=新名称或ros2 run 包名 节点名 --ros-args --remap __node:=新名称示例:2.2运行结果使用查看节点信息,显示结果:3.ros2 run命名空间与名称重映原创 2024-07-16 08:16:31 · 886 阅读 · 0 评论 -
关于ROS2通信命名重命名的相关总结
3.1 节点重命名。原创 2024-07-15 18:40:32 · 1041 阅读 · 0 评论 -
ROS2中的元功能包
MetaPackage是Linux的一个文件管理系统的概念。是 ROS2 中的一个虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来,我们可以认为它是一本书的目录索引,告诉我们这个包集合中有哪些子包,并且该去哪里下载。显而易见的,逐一安装功能包的效率低下,在ROS2中,提供了一种方式可以将不同的功能包打包成一个功能包,当安装某个功能模块时,直接调用打包后的功能包即可,该包又称之为元功能包(metapackage)。那么调用者安装该模块时,需要逐一的安装每一个功能包吗?原创 2024-07-15 11:53:01 · 561 阅读 · 0 评论 -
ROS2工作空间覆盖
2.两个变量的值的设置与 ~/.bashrc 中的 setup.bash 的配置顺序有关,对于自定义的工作空间而言,后配置的优先级更高,主要表现在后配置的工作空间的功能包在环境变量值组成的前部,而前配置工作空间的功能包在环境变量值组成的后部分,如果更改两个自定义工作空间在 ~/.bashrc 中的配置顺序,那么变量值也将相应更改,但是 ROS2 系统工作空间的配置始终处于最后。所谓工作空间覆盖,是指不同工作空间存在重名功能包时,重名功能包的调用会产生覆盖的情况。没什么用,这种情况是需要极力避免出现的。原创 2024-07-14 10:43:18 · 574 阅读 · 0 评论 -
ROS2分布式
ROS2本身是一个分布式通信框架,可以很方便的实现不同设备之间的通信,ROS2所基于的中间件是DDS,当处于同一网络中时,通过DDS的域ID机制(ROS_DOMAIN_ID)可以实现分布式通信,大致流程是:在启动节点之前,可以设置域ID的值,不同节点如果域ID相同,那么可以自由发现并通信,反之,如果域ID值不同,则不能实现。默认情况下,所有节点启动时所使用的域ID为0,换言之,只要保证在同一网络,你不需要做任何配置,不同ROS2设备上的不同节点即可实现分布式通信。上述计算规则了解即可。原创 2024-07-14 10:41:55 · 725 阅读 · 0 评论 -
ROS2参数服务(Python)
ROS2的Python客户端暂时没有提供参数客户端专用的API,但是参数服务的底层是基于服务通信的,所以可以通过服务通信操作参数服务端的参数。当前工作空间下,启动两个终端,终端1执行参数服务端程序,终端2执行参数客户端程序(使用2.5.3中的C++实现)。最终运行结果与案例类似。原创 2024-07-11 16:51:56 · 563 阅读 · 0 评论 -
ROS2参数服务(C++)
当前工作空间下,启动两个终端,终端1执行参数服务端程序,终端2执行参数客户端程序。最终运行结果与案例类似。原创 2024-07-11 16:50:42 · 690 阅读 · 0 评论 -
ROS2参数数据类型
在ROS2中,参数由键、值和描述符三部分组成,其中键是字符串类型,值可以是bool、int64、float64、string、byte[]、bool[]、int64[]、float64[]、string[]中的任一类型,描述符默认情况下为空,但是可以设置参数描述、参数数据类型、取值范围或其他约束等信息。借助于相关API,我们可以实现参数对象创建以及参数属性解析等操作。以下代码提供了参数相关API基本使用的示例。为了方便操作,参数被封装为了相关类,其中C++客户端对应的类是。,Python客户端对应的类是。原创 2024-07-11 09:34:11 · 508 阅读 · 0 评论 -
ROS2动作通信(Python)
当前工作空间下,启动两个终端,终端1执行动作服务端程序,终端2执行动作客户端程序。最终运行结果与案例类似。原创 2024-07-11 09:33:03 · 1032 阅读 · 0 评论 -
ROS2动作通信(C++)
当前工作空间下,启动两个终端,终端1执行动作服务端程序,终端2执行动作客户端程序。最终运行结果与案例类似。原创 2024-07-10 08:15:02 · 1802 阅读 · 0 评论 -
ROS2动作通信接口消息
action接下来,我们可以参考案例编写一个action文件,该文件中包含请求数据(一个整型字段)、响应数据(一个整型字段)和连续反馈数据(一个浮点型字段)。原创 2024-07-09 19:31:10 · 682 阅读 · 0 评论 -
ROS2服务通信(C++)
当前工作空间下,启动两个终端,终端1执行服务端程序,终端2执行客户端程序。原创 2024-07-08 17:30:25 · 652 阅读 · 0 评论 -
ROS2服务通信接口消息
srv接下来,我们可以参考案例编写一个srv文件,该文件中包含请求数据(两个整型字段)与响应数据(一个整型字段)。原创 2024-07-08 10:45:09 · 350 阅读 · 0 评论 -
ROS2中的服务通信
在服务端代码中,首先创建了一个Node对象,并通过create_service()方法创建了一个名为"add_two_ints"的服务。该服务的请求类型为example_interfaces::srv::AddTwoInts::Request,响应类型为example_interfaces::srv::AddTwoInts::Response。在客户端代码中,首先创建了一个Node对象,并通过create_client()方法创建了一个名为"add_two_ints"的客户端。原创 2024-07-07 06:30:00 · 204 阅读 · 0 评论 -
ROS2话题通信之自定义消息(Python)
Python文件中导入自定义消息相关的包时,为了方便使用,可以配置VSCode中settings.json文件,在文件中的python.autoComplete.extraPaths和python.analysis.extraPaths属性下添加一行:"${workspaceFolder}/install/base_interfaces_demo/local/lib/python3.10/dist-packages"添加完毕后,代码可以高亮显示且可以自动补齐,其他接口文件或接口包的使用也与此同理。原创 2024-07-05 19:06:46 · 804 阅读 · 0 评论 -
ROS2话题通信之自定义消息(C++)
C++文件中包含自定义消息相关头文件时,可能会抛出异常,可以配置VSCode中c_cpp_properties.json文件,在文件中的 includePath属性下添加一行:"${workspaceFolder}/install/base_interfaces_demo/include/**"添加完毕后,包含相关头文件时,就不会抛出异常了,其他接口文件或接口包的使用也与此同理。原创 2024-07-05 19:05:59 · 1438 阅读 · 0 评论 -
ROS2话题通信自定义接口消息
msg接下来,我们可以参考案例2编译一个msg文件,该文件中包含学生的姓名、年龄、身高等字段。原创 2024-07-05 19:05:08 · 220 阅读 · 0 评论 -
ROS2话题通信之原生消息(Python)
在Python功能包中,配置文件主要关注package.xml与setup.py。当前工作空间下,启动两个终端,终端1执行发布程序,终端2执行订阅程序。需要说明的是和上一节C++实现一样。最终运行结果与案例1类似。在本案例中不是必须的。原创 2024-07-05 12:04:31 · 324 阅读 · 0 评论 -
ROS2话题通信订阅方实现
功能包cpp01_topic的src目录下,新建C++文件demo02_listener_str.cpp,并编辑文件。原创 2024-07-05 10:55:25 · 256 阅读 · 0 评论 -
ROS2话题通信发布方实现
需求:以某个固定频率发送文本“hello world!”,文本后缀编号,每发送一条消息,编号递增1。使用ROS2的Publisher类实现话题通信发布方。4.调用spin函数,并传入节点对象指针;2.初始化 ROS2 客户端;3-3.组织消息并发布。3-1.创建发布方;3-2.创建定时器;原创 2024-07-04 19:36:35 · 952 阅读 · 0 评论 -
ROS2通信机制接口
在通信过程中,需要传输数据,就必然涉及到数据载体,也即要以特定格式传输数据。在ROS2中,数据载体称之为接口(interfaces)。通信时使用的数据载体一般需要使用接口文件定义。常用的接口文件有三种:msg文件、srv文件与action文件。每种文件都可以按照一定格式定义特定数据类型的“变量”。原创 2024-07-04 09:31:00 · 255 阅读 · 0 评论 -
ROS2安装终端
或者,也可以直接使用快捷键。原创 2024-07-03 21:44:44 · 288 阅读 · 0 评论 -
ROS2 linux中,通过ssh远程传输文件ls
这条命令是使用SCP(Secure Copy)命令将本地计算机上的源代码文件夹(~/src)递归地复制到远程计算机(192.168.31.170)上指定的目录(~/wqh/)中。我先ssh远程连接小车,这里的小车IP为:192.168.31.170。连接成功后我在主目录中创建了一个wqh的目录。通过ssh远程传输文件到小车上。原创 2024-07-02 21:20:46 · 436 阅读 · 0 评论 -
ROS2实现本地推信和分组通信(域ID)
ROS2本身是一个分布式通信框架,可以很方便的实现不同设备之间的通信,ROS2所基于的中间件是DDS,当处于同一网络中时,通过DDS的域ID机制(ROS_DOMAIN_ID)可以实现分布式通信,大致流程是:在启动节点之前,可以设置域ID的值,不同节点如果域ID相同,那么可以自由发现并通信,反之,如果域ID值不同,则不能实现。默认情况下,所有节点启动时所使用的域ID为0,换言之,只要保证在同一网络,你不需要做任何配置,不同ROS2设备上的不同节点即可实现分布式通信。原创 2024-07-03 06:00:00 · 709 阅读 · 0 评论 -
功能包应用
格式的命令,根据关键字查找所需的功能包。开发者按照业务需求自己编写功能包实现。源码下载后,需要自行编译。原创 2024-07-02 15:01:26 · 220 阅读 · 0 评论 -
ROS2操作命令
ROS2的文件系统核心是功能包,我们可以通过编译指令colcon和ROS2内置的工具指令ros2来实现功能包的创建、编译、查找与执行等相关操作。原创 2024-07-02 14:25:32 · 605 阅读 · 0 评论 -
ROS2文件系统
如前所述,ROS虽然称之为机器人操作系统,但实质只是构建机器人应用程序的软件开发工具包,ROS必须依赖于传统意义的操作系统,目前ROS2可以运行在Linux、Windows、Mac或RTOS上。主要由数据分发服务DDS与ROS2封装的关于机器人开发的中间件组成。DDS是一种去中心化的数据通讯方式,ROS2还引入了服务质量管理 (Quality of Service)机制,借助该机制可以保证在某些较差网络环境下也可以具备良好的通讯效果。ROS2中间件则主要由客户端库、DDS抽象层与进程内通讯API构成。原创 2024-07-02 11:18:13 · 972 阅读 · 0 评论 -
ROS2中创建一个简单的Python功能包
与C++类似的,在步骤1创建功能包时所使用的指令也已经默认生成且配置了配置文件,不过实际应用中经常需要自己编辑配置文件,所以在此对相关内容做简单介绍,所使用的配置文件主要有两个,分别是功能包下的package.xml与setup.py。执行完毕,在src目录下将生成一个名为pkg02_helloworld_py的目录,且目录中已经默认生成了一些子级文件与文件夹。程序执行,在终端下将输出文本:"hello world!注释部分以后需要根据实际的包依赖进行添加或修改。注释部分以后可能需要根据实际情况修改。原创 2024-07-01 17:00:01 · 845 阅读 · 0 评论 -
ROS2创建简单的C++功能包
在步骤1创建功能包时所使用的指令已经默认生成且配置了配置文件,不过实际应用中经常需要自己编辑配置文件,所以在此对相关内容做简单介绍,所使用的配置文件主要有两个,分别是功能包下的package.xml与CMakeLists.txt。执行完毕,在src目录下将生成一个名为pkg01_helloworld_cpp的目录,且目录中已经默认生成了一些子级文件与文件夹。程序执行,在终端下将输出文本:"hello world!注释部分以后需要根据实际的包依赖进行添加或修改。中文注释部分以后可能需要根据实际情况修改。原创 2024-07-01 16:55:56 · 471 阅读 · 0 评论 -
ROS2的组成体系
整个ROS生态由通信(Plumbing)、工具(Tools)、功能(Capabilities)与社区(Community)四大部分组成。原创 2024-07-01 11:07:16 · 289 阅读 · 0 评论