
ROS2
文章平均质量分 79
小海聊智造
专注于设计和构建可扩展、高性能和可靠的软件系统。我拥有十年以上的行业经验,涵盖多个领域,包括企业级应用、云计算,AI智能 和大数据处理。
热衷于解决复杂的技术挑战,并通过创新的架构设计提供可持续的解决方案。我具备深厚的技术功底,熟悉多种编程语言和技术栈,如Java、Python、go等, 熟悉微服务架构和分布式系统设计。我善于分析业务需求和技术要求,提供可行的技术方案,并在团队中推动其实施和落地。
展开
-
机器人系统ros2-开发学习实践16-RViz 用户指南
视图面板还允许您创建不同的命名视图,这些视图会被保存并可在其中切换。视图由目标框架、相机类型和相机姿势组成。您可以通过单击视图面板的“保存”按钮来保存视图。原创 2024-05-30 13:24:17 · 2578 阅读 · 0 评论 -
机器人系统ros2-开发学习实践15-模拟用 URDF 建模 步行机器人行走示例
在second_ros2_ws/src/urdf_tutorial_r2d2/urdf_tutorial_r2d2/ 目录下新增文件 state_publisher.py。打开编辑器并粘贴以下代码,将其保存为second_ros2_ws/src/urdf_tutorial_r2d2/launch/demo.launch.py。创建一个新second_ros2_ws/src/urdf_tutorial_r2d2/launch文件夹。Visual: 描述一个白色的圆柱体,半径为0.20,长度为0.6。原创 2024-05-27 11:32:07 · 1268 阅读 · 0 评论 -
机器人系统ros2-开发学习实践14-建立可移动机器人模型
我们将修改上一教程中制作的Urdf 模型,使其具有可移动关节。在之前的模型中,所有关节都是固定的。现在我们将探讨其他三种重要的关节类型:连续关节、旋转关节和棱柱关节。运行在Rviz 的效果如下:然而,现在还会弹出一个 GUI,允许您控制所有非固定关节的值。玩一下模型,看看它是如何移动的。然后,我们可以看看我们是如何实现这一目标的。原创 2024-05-18 16:08:03 · 880 阅读 · 0 评论 -
机器人系统ros2-开发学习实践13-Xacro 减少 URDF 文件中代码量的技巧
到目前为止,如果您在家里按照所有这些步骤进行自己的机器人设计,您可能会厌倦做各种数学来获得非常简单的机器人描述以正确解析。幸运的是,您可以使用xacro包让您的生活更简单。它做了三件非常有帮助的事情。常数变量定义简单的数学公式宏在本教程中,我们将了解所有这些快捷方式,以帮助减少 URDF 文件的整体大小并使其更易于阅读和维护。原创 2024-05-18 16:06:52 · 372 阅读 · 0 评论 -
机器人系统ros2-开发学习实践12-给机器人模型添加物理和碰撞属性
在本教程中,我们将了解如何向 URDF 模型添加一些基本物理属性以及如何指定其碰撞属性。原创 2024-05-16 13:17:20 · 935 阅读 · 0 评论 -
机器人系统ros2-开发学习实践11-从零开始构建视觉机器人模型(urdf)(02)
和:定义了两种材料。“blue” 为蓝色(RGBA颜色值为 0 0 0.8 1,即不透明的蓝色),“white” 为白色(RGBA颜色值为 1 1 1 1,即不透明的白色)。原创 2024-05-14 09:21:36 · 458 阅读 · 0 评论 -
机器人系统ros2-开发学习实践10-从零开始构建视觉机器人模型(urdf)
在本教程中,我们将构建一个看起来像 ROS2 的机器人视觉模型。在后面的教程中,您将学习如何阐明模型、添加一些物理属性以及使用 xacro生成更简洁的代码,但现在,我们将专注于获得正确的视觉几何原创 2024-05-13 09:57:27 · 1360 阅读 · 0 评论 -
机器人系统ros2-开发实践09-如何向 tf2 添加额外的坐标帧位置(Python)
在之前的教程中,我们通过编写tf2 广播器和tf2 监听器重新创建了乌龟演示。本教程将教您如何向转换树添加额外的固定和动态框架。事实上,在 tf2 中添加框架与创建 tf2 广播器非常相似,但此示例将向您展示 tf2 的一些附加功能。对于许多与转换相关的任务,在局部框架内思考会更容易。例如,最容易推断激光扫描仪中心框架中的激光扫描测量结果。tf2 允许您为系统中的每个传感器、链路或关节定义本地框架。从一帧转换到另一帧时,tf2 将处理引入的所有隐藏中间帧转换。原创 2024-05-11 09:46:57 · 817 阅读 · 0 评论 -
机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)
tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的,也可以是非阻塞的,取决于你的需求。下面是一个基本的 Python 示例,展示如何在 ROS 节点中使用 tf2 查询帧转换。本教程假设您已完成tf2 静态广播器教程 (Python)和tf2 广播器教程 (Python)。在上一个教程中,我们创建了一个learning_tf2_py包。原创 2024-05-10 10:04:26 · 1782 阅读 · 1 评论 -
机器人系统ros2内部接口介绍
内部接口主要有两个:ROS中间件接口(rmw API)ROS客户端库接口(rcl API)API rmw是ROS 2 软件堆栈和底层中间件实现之间的接口。ROS 2 使用的底层中间件是 DDS 或 RTPS 实现,负责发现、发布和订阅机制、服务的请求-回复机制以及消息类型的序列化。该rcl API是一个稍高级别的API,用于实现客户端库,不直接接触中间件实现,而是通过 ROS 中间件接口 ( rmw API ) 抽象来实现。原创 2024-05-07 11:01:19 · 1305 阅读 · 0 评论 -
机器人系统ros2-开发实践07-将机器人的状态广播到 tf2(Python)
上个教程将静态坐标系广播到 tf2,基于这个基础原理这个教程将演示机器人的点位状态发布到tf2。原创 2024-05-07 10:38:32 · 1330 阅读 · 0 评论 -
机器人系统ros2-开发实践06-将静态坐标系广播到 tf2(Python)-定义机器人底座与其传感器或非移动部件之间的关系
发布静态变换对于定义机器人底座与其传感器或非移动部件之间的关系非常有用。例如,最容易推断激光扫描仪中心框架中的激光扫描测量结果。原创 2024-05-06 09:45:05 · 1391 阅读 · 2 评论 -
机器人系统ros2-开发实践05-ROS2 中 tf2的定义及示例说明
tf2的全称是transform2,在ROS(Robot Operating System)中,它是专门用于处理和变换不同坐标系间位置和方向的库。tf2是ROS2中一个重要的组件,因为在机器人的许多应用中,正确理解各个部件如何相对于彼此移动是至关重要的。一旦turtlesim启动,您可以使用键盘箭头键在turtlesim中驱动中央乌龟,选择第二个终端窗口,以便捕获您的击键来驱动乌龟。在侧栏中,您将看到 tf2 广播的帧。tf2_echo当侦听器接收通过 ROS 2 广播的帧时,您将看到显示的转换。原创 2024-04-30 13:51:08 · 1773 阅读 · 0 评论 -
机器人系统ros2-开发实践04-ROS 2 启动文件管理大型项目的最佳实践
机器人上的大型应用通常涉及多个互连的节点,每个节点可以有许多参数。海龟模拟器中模拟多只海龟就是一个很好的例子。海龟模拟由多个海龟节点、世界配置以及 TF 广播器和监听器节点组成。在所有节点之间,存在大量影响这些节点的行为和外观的 ROS 参数。ROS 2启动文件允许我们在一个地方启动所有节点并设置相应的参数。原创 2024-04-29 16:01:28 · 1220 阅读 · 0 评论 -
机器人系统ros2-开发实践03-监听节点的参数变化(C++)
本教程将向您展示如何使用 ParameterEventHandler 类的 C++ 版本来监视节点自身参数的更改以及另一个节点参数的更改。接下来SampleNodeWithParameters是一个典型的main函数,它初始化 ROS,示例节点以便它可以发送和接收消息,然后在用户在控制台输入 Ctrl +C 后关闭。执行此命令后,您应该在parameter_event_handler窗口中看到输出,表明在参数更新时调用了回调函数。您的终端将返回一条消息,验证您的包及其所有必需文件和文件夹的创建。原创 2024-04-26 11:43:03 · 1210 阅读 · 1 评论 -
机器人系统开发ros2-基础实践02-自定义一个机器人动作aciton服务端和客户端(c++ 实现)
aciton 是 ROS 中异步通信的一种形式。操作客户端向操作服务器发送目标请求。动作服务器将目标反馈和结果发送给动作客户端。原创 2024-04-25 10:16:04 · 1642 阅读 · 1 评论 -
机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类
您之前在了解操作教程中了解了action。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。需要理解action 可以回到这篇文章。原创 2024-04-23 13:28:57 · 1511 阅读 · 0 评论 -
机器人系统开发ros2-基础学习16-使用 rosdep 管理依赖关系
它是一个元包管理器,它使用自己的系统知识和依赖关系来查找要安装在特定平台上的适当包。rosdep通过检索本地计算机上的中央索引来工作,这样它就不必在每次运行时访问网络(在 Debian/Ubuntu 上,它的配置存储在/etc/ros/rosdep/sources.list.d/20-default.list)。上,还有另一个名称类似的软件包,称为python3-rosdep2.如果安装了该软件包,请确保在安装之前将其删除python3-rosdep。这是推荐的获取方式rosdep。原创 2024-04-23 10:18:50 · 876 阅读 · 0 评论 -
ros2 基础学习 ros2 doctor 诊断工具(平台,版本,网络,环境,正在运行的系统)
当ROS 2安装程序未按预期运行时,可以使用 ros2 doctor工具检查其设置。ros2 doctor检查ROS 2的所有方面,包括平台,版本,网络,环境,正在运行的系统等,并警告您可能的错误和问题原因。ros2 doctor仅在Eloquent及更高的版本中可以使用。ros2 doctor是ros2cli包的一部分。只要我们安装了ros2cli,我们就能够使用ros2 doctor,通常我们安装ros2的时候就安装了这个包。原创 2024-01-25 16:17:39 · 789 阅读 · 0 评论 -
ros2 基础教程-使用ROS 2进行相机标定
相机(摄像头)是一种非常精密的光学仪器,对外界环境的感知非常敏感。由于摄像头内部和外部的一些原因,摄像头采集的图像常常会发生一定的畸变。如果直接将采集到的图像拿来进行图像处理,会产生很大的问题。为了避免图像数据源造成的误差,需要对摄像头的相关参数进行标定。我的虚拟机git clone 不下来,很卡,我就先下载humble 分支的代码再传到对应的工作空间去。本教程将会说明如何标定单目(monocular)相机,从而获取单目相机的标定参数。(根据您的工作空间更改成相应的目录)原创 2024-01-19 17:56:17 · 1662 阅读 · 0 评论 -
ros2仿真学习04 -turtlebot3实现cartographer算法建图演示
urtlebot3实现cartographer算法建图演示原创 2024-01-18 13:28:45 · 1785 阅读 · 0 评论 -
ROS2 仿真教程 基于humble版本机器人安装
ros2与turtlebot3仿真教程-启动gazebo不同环境。删掉出错不影响使用然后编译就通过了。安装cartographer建图。原创 2024-01-18 13:14:08 · 1056 阅读 · 0 评论 -
ROS2 仿真学习02 Gazebo——安装TurtleBot 3仿真模型
TurtleBot3 是一个小型,低成本,完全可编程,基于 ROS 的移动机器人。它旨在用于教育,研究,产品原型和爱好应用的目的。TurtleBot3 的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量。由于提供了其他选项,如底盘,计算机和传感器,TurtleBot3 可以通过各种方式进行定制。TurtleBot3 应用 了SBC(单板计算机),深度传感器和 3D 打印的最新技术进步等技术。1.安装Turtlebot3依赖库。什么是TurtleBot3?安装Turtlebot3。原创 2024-01-17 17:33:34 · 1166 阅读 · 0 评论 -
ros2 基础学习16 - RQT:模块化可视化工具
正如RQT的命名,它和Rviz一样,也是基于QT可视化工具开发而来,在使用前,我们需要通过这样一句指令进行安装,然后就可以通过rqt这个命令启动使用了。安装注意自己ros2 的版本,我的是humble启动rqt启动成功后如图里边可以加载很多小模块,每个模块都可以实现一个具体的小功能,一些常用的功能如下:日志显示:也可以通过命令行方式启动从启动的界面可以看到有三个部分Console用来过滤日志等级的…:自定义过滤现在我们新开命令窗口,启动一个小乌龟节点。原创 2024-01-17 17:32:56 · 4056 阅读 · 0 评论 -
ros2 基础学习04 -colcon构建工具
构建系统与构建工具区分点在于针对的对象不同,构建系统只针对一个单独的包进行构建,而构建工具重点在于按照依赖关系依次调用构建系统完成一系列功能包的构建。原创 2024-01-15 18:02:18 · 1354 阅读 · 0 评论 -
ros2 基础学习 15- URDF:机器人建模方法
如何使用这样一个文件描述机器人呢?比如这个机械臂,大家可以看下自己的手臂,我们的手臂是由大臂和小臂组成,他们独自是无法运动的,必须通过一个手肘关节连接之后,才能通过肌肉驱动,产生相对运动。fixed,固定关节,是唯一一种不允许运动的关节,不过使用还是比较频繁的,比如相机这个连杆,安装在机器人上,相对位置是不会变化的,此时使用的连接方式就是Fixed。ROS中的建模方法叫做URDF,全称是统一机器人描述格式,不仅可以清晰描述机器人自身的模型,还可以描述机器人的外部环境,比如这里的桌子,也可以算作一个模型。原创 2024-01-08 14:34:18 · 2461 阅读 · 0 评论 -
ros2 基础学习14-- Launch:多节点启动与配置脚本
到目前为止,每当我们运行一个ROS节点,都需要打开一个新的终端运行一个命令。机器人系统中节点很多,每次都这样启动好麻烦呀。有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的,那就是Launch启动文件,它是ROS系统中多节点启动与配置的一种脚本。这是一个完整的Launch文件,乍看上去,好像Python代码呀,没错,ROS2中的Launch文件就是基于Python描述的。原创 2024-01-08 14:32:53 · 4065 阅读 · 0 评论 -
ros2基础学习13 DDS 通信得学习
好啦,说了半天DDS,到底啥意思呢?我们来做一个完整的介绍DDS的全称是Data Distribution Service也就是数据分发服务,2004年由对象管理组织OMG发布和维护,是一套专门为实时系统设计的数据分发/订阅标准,最早应用于美国海军, 解决舰船复杂网络环境中大量软件升级的兼容性问题,现在已经成为强制标准。DDS强调以数据为中心,可以提供丰富的服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。原创 2024-01-02 17:35:26 · 1847 阅读 · 0 评论 -
ros2 基础学习12 分布式通信
我们先要给树莓派装系统,这里我们选择的是Ubuntu Mate针对树莓派的镜像,下载镜像之后,烧写到树莓派的SD卡中就可以启动系统了。不过ROS系统都已经为我们设计好了,我们只需要在每一个电脑上配置好ROS环境,功能开发上完全不需要做任何变化,实现非常方便。接下来我们打通两个计算平台的通信能力。类似的方法会频繁用到,ROS为分布式网络的搭建提供了非常友好的支持,我们几乎不需要任何配置,代码也不需要做任何修改。之前我们也讲过,在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中。原创 2024-01-02 17:34:59 · 2362 阅读 · 0 评论 -
ros2 基础学习11-参数的定义及示例
话题、服务、动作,不知道这三种通信机制大家是否已经了解清楚,本节我们再来介绍一种ROS系统中常用的数据传输方式——参数。类似C++编程中的全局变量,可以便于在多个程序中共享某些数据,参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。ros2 的参数定义和基本使用和ros1 基本一致,如果了解ros1 参数的 这节 就随便看看就可以了。原创 2023-12-25 10:07:10 · 398 阅读 · 0 评论 -
机器人系统开发ros2-基础学习11-机器人aciton动作功能的定义及开发示例
机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。原创 2023-12-22 10:17:29 · 2050 阅读 · 0 评论 -
ros2 基础学习10 ros 中服务的定义及示例
话题通信可以实现多个ROS节点之间数据的单向传输,使用这种异步通信机制,发布者无法准确知道订阅者是否收到消息,本讲我们将一起学习ROS另外一种常用的通信方法——服务,可以实现类似你问我答的同步通信效果。原创 2023-12-22 09:18:18 · 287 阅读 · 0 评论 -
ROS2 学习09--ros 中的通信接口的定义以及如何创建自定义msg、srv和action文件
ROS2通过自带rosidl_default_generators包来为自定义的msg、srv和action文件生成各个语言的头文件!ROS2通过在CMakeLists.txt中调用新增的宏rosidl_generate_interfaces来为msg、srv和action文件生成各个语言的头文件!而这个宏的实现定义在rosidl_default_generators包。原创 2023-12-21 13:16:08 · 3430 阅读 · 1 评论 -
机器人系统开发ros2 基础学习08 ros2 主题定义及示例
了解了话题的基本原理,接下来我们就要开始编写代码啦。还是从Hello World例程开始,我们来创建一个发布者,发布话题“chatter”,周期发送“Hello World”这个字符串,消息类型是ROS中标准定义的String,再创建一个订阅者,订阅“chatter”这个话题,从而接收到“Hello World”这个字符串。创建功能包在功能包下新增发布者代码在功能包下新增订阅者代码修改功能包下setup.py 的脚本文件编译运行测试。原创 2023-12-21 09:03:28 · 1302 阅读 · 0 评论 -
ros2 学习07 rclpy包 详解
rclpy 是 python 操作ros2 封装的一个工具包。rclpy 源码路径。原创 2023-12-20 13:09:50 · 1103 阅读 · 1 评论 -
ros2 基础学习06 了解节点的定义及示例
ros2 中节点是什么?机器人是各种功能的综合体,每一项功能就像机器人的一个工作细胞,众多细胞通过一些机制连接到一起,成为了一个机器人整体。在ROS中,我们给这些 “细胞”取了一个名字,那就是节点。比如控制底盘运行的节点,控制物体识别的是另外一个节点等等通信模型完整的机器人系统可能并不是一个物理上的整体,比如这样一个的机器人:在机器人身体里搭载了一台计算机A,它可以通过机器人的眼睛——摄像头,获取外界环境的信息,也可以控制机器人的腿——轮子,让机器人移动到想要去的地方。原创 2023-12-20 10:59:54 · 1812 阅读 · 0 评论 -
ros2 学习05 功能包定义
每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等。这里的,每一个功能的代码都独立的放在一个文件下,就定义为一个功能包。每个功能包都能独立的运行那如果说我不要分开放可以吗?当然可以ros 中的功能包定义 类似于其他传统系统服务里的微服务概念,比如你要开发一个电商系统,系统里有用户服务,商品服务,订单服务,评价服务等等。原创 2023-12-20 09:32:13 · 634 阅读 · 0 评论 -
ros2 学习04 工作空间说明及示例
ros2 术语说明:大家在学习其他的开发语言之前的学习和开发中,应该有接触过某些集成开发环境,比如Visual Studio、Eclipse、Qt Creator等,当我们想要编写程序之前,都会在这些开发环境的工具栏中,点击一个“创建新工程”的选项,此时就产生一个文件夹,后续所有工作产生的文件,都会放置在这个文件夹中,这个文件夹以及里边的内容,就叫做是工程。原创 2023-12-19 14:53:46 · 396 阅读 · 0 评论 -
ros2 学习03-开发工具vscode 插件配置
VSCode插件配置 为了便于后续ROS2的开发与调试,我们还可以安装一系列插件,无限扩展VSCode的功能。原创 2023-12-19 14:17:17 · 656 阅读 · 0 评论 -
Ros2 学习04- ubuntu22.04 卸载 ros2
【代码】Ros2 学习04- ubuntu22.04 卸载 ros2。原创 2023-12-13 14:26:44 · 1467 阅读 · 0 评论