人工智能
文章平均质量分 82
小海聊智造
专注于设计和构建可扩展、高性能和可靠的软件系统。我拥有十年以上的行业经验,涵盖多个领域,包括企业级应用、云计算,AI智能 和大数据处理。
热衷于解决复杂的技术挑战,并通过创新的架构设计提供可持续的解决方案。我具备深厚的技术功底,熟悉多种编程语言和技术栈,如Java、Python、go等, 熟悉微服务架构和分布式系统设计。我善于分析业务需求和技术要求,提供可行的技术方案,并在团队中推动其实施和落地。
展开
-
机器人系统ros2-开发实践03-监听节点的参数变化(C++)
本教程将向您展示如何使用 ParameterEventHandler 类的 C++ 版本来监视节点自身参数的更改以及另一个节点参数的更改。接下来SampleNodeWithParameters是一个典型的main函数,它初始化 ROS,示例节点以便它可以发送和接收消息,然后在用户在控制台输入 Ctrl +C 后关闭。执行此命令后,您应该在parameter_event_handler窗口中看到输出,表明在参数更新时调用了回调函数。您的终端将返回一条消息,验证您的包及其所有必需文件和文件夹的创建。原创 2024-04-26 11:43:03 · 543 阅读 · 0 评论 -
机器人系统开发ros2-基础实践02-自定义一个机器人动作aciton服务端和客户端(c++ 实现)
aciton 是 ROS 中异步通信的一种形式。操作客户端向操作服务器发送目标请求。动作服务器将目标反馈和结果发送给动作客户端。原创 2024-04-25 10:16:04 · 1076 阅读 · 1 评论 -
机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类
您之前在了解操作教程中了解了action。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。需要理解action 可以回到这篇文章。原创 2024-04-23 13:28:57 · 1038 阅读 · 0 评论 -
激光三角测距原理详述
激光三角测距法作为低成本的激光雷达设计方案,可获得高精度、高性价比的应用效果,并成为室内服务机器人导航的首选方案,本文将对激光雷达核心组件进行介绍并重点阐述基于激光三角测距法的激光雷达原理。原创 2024-01-25 16:18:38 · 535 阅读 · 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 · 457 阅读 · 0 评论 -
ros2仿真学习04 -turtlebot3实现cartographer算法建图演示
urtlebot3实现cartographer算法建图演示原创 2024-01-18 13:28:45 · 1258 阅读 · 0 评论 -
ROS2 仿真教程 基于humble版本机器人安装
ros2与turtlebot3仿真教程-启动gazebo不同环境。删掉出错不影响使用然后编译就通过了。安装cartographer建图。原创 2024-01-18 13:14:08 · 586 阅读 · 0 评论 -
ros2 基础学习16 - RQT:模块化可视化工具
正如RQT的命名,它和Rviz一样,也是基于QT可视化工具开发而来,在使用前,我们需要通过这样一句指令进行安装,然后就可以通过rqt这个命令启动使用了。安装注意自己ros2 的版本,我的是humble启动rqt启动成功后如图里边可以加载很多小模块,每个模块都可以实现一个具体的小功能,一些常用的功能如下:日志显示:也可以通过命令行方式启动从启动的界面可以看到有三个部分Console用来过滤日志等级的…:自定义过滤现在我们新开命令窗口,启动一个小乌龟节点。原创 2024-01-17 17:32:56 · 1375 阅读 · 0 评论 -
ros2 基础学习 15- URDF:机器人建模方法
如何使用这样一个文件描述机器人呢?比如这个机械臂,大家可以看下自己的手臂,我们的手臂是由大臂和小臂组成,他们独自是无法运动的,必须通过一个手肘关节连接之后,才能通过肌肉驱动,产生相对运动。fixed,固定关节,是唯一一种不允许运动的关节,不过使用还是比较频繁的,比如相机这个连杆,安装在机器人上,相对位置是不会变化的,此时使用的连接方式就是Fixed。ROS中的建模方法叫做URDF,全称是统一机器人描述格式,不仅可以清晰描述机器人自身的模型,还可以描述机器人的外部环境,比如这里的桌子,也可以算作一个模型。原创 2024-01-08 14:34:18 · 1108 阅读 · 0 评论 -
ros2 基础学习14-- Launch:多节点启动与配置脚本
到目前为止,每当我们运行一个ROS节点,都需要打开一个新的终端运行一个命令。机器人系统中节点很多,每次都这样启动好麻烦呀。有没有一种方式可以一次性启动所有节点呢?答案当然是肯定的,那就是Launch启动文件,它是ROS系统中多节点启动与配置的一种脚本。这是一个完整的Launch文件,乍看上去,好像Python代码呀,没错,ROS2中的Launch文件就是基于Python描述的。原创 2024-01-08 14:32:53 · 1459 阅读 · 0 评论 -
ros2基础学习13 DDS 通信得学习
好啦,说了半天DDS,到底啥意思呢?我们来做一个完整的介绍DDS的全称是Data Distribution Service也就是数据分发服务,2004年由对象管理组织OMG发布和维护,是一套专门为实时系统设计的数据分发/订阅标准,最早应用于美国海军, 解决舰船复杂网络环境中大量软件升级的兼容性问题,现在已经成为强制标准。DDS强调以数据为中心,可以提供丰富的服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。原创 2024-01-02 17:35:26 · 1058 阅读 · 0 评论 -
ros2 基础学习12 分布式通信
我们先要给树莓派装系统,这里我们选择的是Ubuntu Mate针对树莓派的镜像,下载镜像之后,烧写到树莓派的SD卡中就可以启动系统了。不过ROS系统都已经为我们设计好了,我们只需要在每一个电脑上配置好ROS环境,功能开发上完全不需要做任何变化,实现非常方便。接下来我们打通两个计算平台的通信能力。类似的方法会频繁用到,ROS为分布式网络的搭建提供了非常友好的支持,我们几乎不需要任何配置,代码也不需要做任何修改。之前我们也讲过,在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中。原创 2024-01-02 17:34:59 · 1869 阅读 · 0 评论 -
opencv进阶09-视频处理cv2.VideoCapture示例(打开本机电脑摄像头)
cv2.VideoCapture 类的常用函数包括初始化、打开、帧捕获、释放、属性设置等,下面对这些函数进行简单的介绍。1. 初始化OpenCV 为 cv2.VideoCapture 类提供了构造函数,用于打开摄像头并完成摄像头的初始化工作。该函数的语法格式为:捕获对象=cv2.VideoCapture(“摄像头 ID 号”)式中:“摄像头 ID 号”就是摄像头的 ID 号码。需要注意的是,这个参数是摄像设备(摄像头)的 ID 编号,而不是文件名。其默认值为-1,表示随机选取一个摄像头;原创 2023-08-17 14:49:15 · 3970 阅读 · 0 评论 -
Isaac Sim 仿真机器人urdf文件导入
本教程展示如何在 Omniverse Isaac Sim 中导入 urdf。原创 2023-12-25 11:05:07 · 977 阅读 · 2 评论 -
ros2 基础学习11-参数的定义及示例
话题、服务、动作,不知道这三种通信机制大家是否已经了解清楚,本节我们再来介绍一种ROS系统中常用的数据传输方式——参数。类似C++编程中的全局变量,可以便于在多个程序中共享某些数据,参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。ros2 的参数定义和基本使用和ros1 基本一致,如果了解ros1 参数的 这节 就随便看看就可以了。原创 2023-12-25 10:07:10 · 183 阅读 · 0 评论 -
机器人系统开发ros2-基础学习11-机器人aciton动作功能的定义及开发示例
机器人是一个复杂的智能系统,并不仅仅是键盘遥控运动、识别某个目标这么简单,我们需要实现的是送餐、送货、分拣等满足具体场景需求的机器人。在这些应用功能的实现中,另外一种ROS通信机制也会被常常用到——那就是动作。从这个名字上就可以很好理解这个概念的含义,这种通信机制的目的就是便于对机器人某一完整行为的流程进行管理。原创 2023-12-22 10:17:29 · 1558 阅读 · 0 评论 -
ros2 基础学习10 ros 中服务的定义及示例
话题通信可以实现多个ROS节点之间数据的单向传输,使用这种异步通信机制,发布者无法准确知道订阅者是否收到消息,本讲我们将一起学习ROS另外一种常用的通信方法——服务,可以实现类似你问我答的同步通信效果。原创 2023-12-22 09:18:18 · 146 阅读 · 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 · 1431 阅读 · 1 评论 -
机器人系统开发ros2 基础学习08 ros2 主题定义及示例
了解了话题的基本原理,接下来我们就要开始编写代码啦。还是从Hello World例程开始,我们来创建一个发布者,发布话题“chatter”,周期发送“Hello World”这个字符串,消息类型是ROS中标准定义的String,再创建一个订阅者,订阅“chatter”这个话题,从而接收到“Hello World”这个字符串。创建功能包在功能包下新增发布者代码在功能包下新增订阅者代码修改功能包下setup.py 的脚本文件编译运行测试。原创 2023-12-21 09:03:28 · 933 阅读 · 0 评论 -
ros2 学习07 rclpy包 详解
rclpy 是 python 操作ros2 封装的一个工具包。rclpy 源码路径。原创 2023-12-20 13:09:50 · 466 阅读 · 1 评论 -
ros2 基础学习06 了解节点的定义及示例
ros2 中节点是什么?机器人是各种功能的综合体,每一项功能就像机器人的一个工作细胞,众多细胞通过一些机制连接到一起,成为了一个机器人整体。在ROS中,我们给这些 “细胞”取了一个名字,那就是节点。比如控制底盘运行的节点,控制物体识别的是另外一个节点等等通信模型完整的机器人系统可能并不是一个物理上的整体,比如这样一个的机器人:在机器人身体里搭载了一台计算机A,它可以通过机器人的眼睛——摄像头,获取外界环境的信息,也可以控制机器人的腿——轮子,让机器人移动到想要去的地方。原创 2023-12-20 10:59:54 · 1491 阅读 · 0 评论 -
ros2 学习05 功能包定义
每个机器人可能有很多功能,比如移动控制、视觉感知、自主导航等。这里的,每一个功能的代码都独立的放在一个文件下,就定义为一个功能包。每个功能包都能独立的运行那如果说我不要分开放可以吗?当然可以ros 中的功能包定义 类似于其他传统系统服务里的微服务概念,比如你要开发一个电商系统,系统里有用户服务,商品服务,订单服务,评价服务等等。原创 2023-12-20 09:32:13 · 433 阅读 · 0 评论 -
ros2 学习04 工作空间说明及示例
ros2 术语说明:大家在学习其他的开发语言之前的学习和开发中,应该有接触过某些集成开发环境,比如Visual Studio、Eclipse、Qt Creator等,当我们想要编写程序之前,都会在这些开发环境的工具栏中,点击一个“创建新工程”的选项,此时就产生一个文件夹,后续所有工作产生的文件,都会放置在这个文件夹中,这个文件夹以及里边的内容,就叫做是工程。原创 2023-12-19 14:53:46 · 242 阅读 · 0 评论 -
ROS2 学习20 导航Nav2:简介、安装、测试效果、错误处理
在ROS2中自动导航使用Nav2来实现。Nav2 使用几个独立的模块化服务,通过 ROS 2接口(例如动作服务器或服务)与行为树 (BT) 通信。Nav2 输入包括:TF转换、一个地图源、一个行为树 (BT) XML 文件和相关的传感器数据源;Nav2 输出速度命令;Nav2 支持多种机器人,比如:四足机器人、履带机器人、轮式机器人等。原创 2023-12-13 16:27:26 · 934 阅读 · 1 评论 -
opencv-20 深入理解HSV 色彩空间(通过指定,标记颜色等来拓展ROI区域)
RGB 色彩空间是一种被广泛接受的色彩空间,但是该色彩空间过于抽象,我们不能够直接通过其值感知具体的色彩。我们更习惯使用直观的方式来感知颜色,HSV 色彩空间提供了这样 的方式。通过 HSV色彩空间,我们能够更加方便地通过色调、饱和度和亮度来感知颜色。其实,除了 HSV 色彩空间,我们讨论的其他大多数色彩空间都不方便人们对颜色进行理解和解释。例如,现实中我们根本不可能用每种颜料的百分比(RGB色彩空间)来形容一件衣服的颜色。在 HSV 色彩空间中,色调 H 的取值范围是[0,360]。原创 2023-07-25 15:36:46 · 3275 阅读 · 0 评论 -
ROS2 仿真学习01 Gazebo:三维物理仿真平台
Gazebo是ROS系统中最为常用的三维物理仿真平台,支持动力学引擎,可以实现高质量的图形渲染,不仅可以模拟机器人及周边环境,还可以加入摩擦力、弹性系数等物理属性。比如我们要开发一个火星车,那就可以在Gazebo中模拟火星表面的环境,再比如我们做无人机,续航和限飞都导致我们没有办法频繁用实物做实验,此时不妨使用Gazebo先做仿真,等算法开发的差不多了,再部署到实物上来运行。所以类似Gazebo这样的仿真平台,可以帮助我们验证机器人算法、优化机器人设计、测试机器人场景应用,为机器人开发提供更多可能。原创 2023-12-01 17:03:11 · 764 阅读 · 0 评论 -
机器人仿真系统调研
特殊地,对于足式机器人仿真而言,其结构为多自由度的开链或闭链结构,导致其动力学模型比一般的轮式机器人更为复杂,并且机器人运动过程中需要与环境实时进行多点接触,这对仿真器在多物体碰撞检测方面的性能要求就会很高。对于一些工业机械臂而言,其价格达到几十万甚至更高,这对于一些机器人爱好者或者初学者是无法承受的,而仿真可以提供一个廉价的学习环境,使用者可以在仿真环境中轻松搭建自己的机器人硬件,来实现和测试自己的软件算法。仿真是机器人学习和研究过程中最重要的工具之一,是指通过计算机对实际的物理系统进行模拟的技术。原创 2023-12-01 14:23:59 · 183 阅读 · 0 评论 -
Ros1 学习12- tf坐标系广播与监听的编程实现
实现步骤创建一程序订阅海龟的相对于world的位置,即海龟发布的/turtle_name/pose消息,接受到消息数据后,创建tf的广播器,并初始化tf数据,广播world与海龟坐标系之间的关系;然后,创建一程序产生第2只海龟turtle2,实时监听tf广播数据,依据turtle2与turtle1之间的坐标关系计算turtle2的速度,向turtle2发布速度控制指令,实现海龟turtle2跟踪turtle1。原创 2023-11-17 18:06:16 · 244 阅读 · 0 评论 -
opencv-22 图像几何变换01-缩放-cv2.resize()(图像增强,图像变形,图像拼接)
几何变换是计算机图形学中的一种图像处理技术,用于对图像进行空间上的变换,而不改变图像的内容。这些变换可以通过对图像中的像素位置进行调整来实现。常见的几何变换包括:平移(Translation):将图像在水平和/或垂直方向上进行平移,即将图像的每个像素沿着指定的距离进行移动。缩放(Scaling):通过增大或减小图像的尺寸,使图像变得更大或更小。在缩放过程中,图像中的每个像素的位置会相应地调整。旋转(Rotation):将图像绕着一个特定的旋转中心进行旋转,使得图像的内容按照指定的角度进行旋转。原创 2023-07-25 17:30:17 · 4090 阅读 · 0 评论 -
多机器人群体的任务状态与机器人状态同步设计思路
在CompletableFuture中,我们可以通过回调函数来处理任务的结果,也可以使用其它方法来组合多个CompletableFuture对象,以构建更复杂的异步操作流水线。简易的将各机器人功能相互叠加,非但无法凸显多机器人系统的优势,反而当多机器人系统遇到复杂情况时,会导致各机器人间发生冲突,乃至停滞或死锁,降低任务的执行效率。面临任务的日益复杂化,单机器人在很多环境下已经无法满足生产要求,于是国内外科研工作者对多机器人技术投入了大量关注,提出了利用多机器人协作来代替单机器人工作。原创 2023-11-14 09:40:21 · 292 阅读 · 0 评论 -
ROS1 学习11 坐标系tf 管理系统 简介及demo示例
坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理?ROS给我们提供了一个坐标系的管理神器——TF。比如在机械臂形态的机器人中,机器人安装的位置叫做基坐标系Base Frame,机器人安装位置在外部环境下的参考系叫做世界坐标系World Frame,机器人末端夹爪的位置叫做工具坐标系,外部被操作物体的位置叫做工件坐标系,在机械臂抓取外部物体的过程中,这些坐标系之间的关系也在跟随变化。原创 2023-11-13 13:31:17 · 452 阅读 · 0 评论 -
MoveIt 机械臂运动 学习 01-MoveIt 初次见面
ROS中有针对机器人进行移动操作的一套工具——MoveIt!在主页http://moveit.ros.org 上。提供了一个易于使用的图形用户界面(GUI)通过MoveIt!包含使用MoveIt!的文档、教程、安装说明以及多种机械臂(或机器人)的示例演示,如一些。法、三维感知抓握(通常以点云的形式)、运动学、控制和导航等功能。这个库包含一个快速的逆运动学解算器(作为运动规划单元的一部分)、先进的操作算。移动操作任务,包括抓握、拾取和放置,或简单的逆向运动学的运动规划。能以直观的方式进行运动规划任务的开发。原创 2023-11-13 11:05:39 · 312 阅读 · 0 评论 -
ros1 基础学习10 -全局字典参数的定义,获取,改值
在ROS Master中,存在一个参数服务器(ParameterServer),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。原创 2023-11-10 15:16:25 · 520 阅读 · 0 评论 -
ros1 基础学习08- 实现Server端自定义四 Topic模式控制海龟运动
通过自定义名为 /turtle_command 的Service实现,中间传输消息的数据类型为std_srvs::Trigger(一种针对服务标准std_srvs下的数据定义)来通信。Server端接收这个Trigger信号后,可控制其是否要给海龟发送Twist指令,同时给Client发送Response反馈告诉它海龟的运动状态。Server端本身是进行模拟海龟运动的命令端,它的实现是通过给海龟发送速度(Twist)的指令,来控制海龟运动(本身通过Topic实现)。ROS Master负责管理节点。原创 2023-11-09 19:02:20 · 222 阅读 · 0 评论 -
ros1 基础学习06- 自定义topic 主题的发布,监听以及和消息体的定义
需要加入编译依赖和执行依赖,编译和执行均需要相关依赖功能包,在package.xml文件中添加以下内容。在Person.msg中输入如下内容完成.msg文件的创建,msg文件是ROS独有的格式。这样自定义topic 的发布和订阅就已经完成了,有问题评论区见。右键打开命令框,输入 touch Person.msg。就会在msg 目录下新增 Person.msg 文件。在功能包的下面新建 msg 文件夹,如下图所示。回到catkin_ws 再编译。原创 2023-11-08 11:43:35 · 463 阅读 · 0 评论 -
ros1 基础学习05- 自定义订阅者Subscriber的编程实现
Publisher(Turtle Velocity),发布Message(即海龟的速度信息,以geometry_msgs::Twist的数据结构,包括线速度和角速度),通过Topic(/turtle1/cmd_vel)总线管道,将数据传输给Subscriber。“/turtle1/cmd_vel”这个topic是海归仿真器节点/turtlesim下自带的topic,可直接拿来用。我们需要在src里创建C++的代码文件以输入代码,文件名称为:pose_subscriber.cpp。在回调函数中完成消息处理。原创 2023-11-07 18:12:44 · 180 阅读 · 0 评论 -
ros1 基础学习09 -自定义service服务开发示例
build_depend为编译依赖,这里依赖的是一个会动态产生message的功能包exer_depend为执行依赖,这里依赖的是一个动态runtime运行的功能包。原创 2023-11-10 13:21:21 · 270 阅读 · 0 评论 -
ros1 基础学习07 - 模拟客户端生成小乌龟服务请求生成小乌龟
Sever端是海龟仿真器/turtlesim,Client端是待实现的程序,其作为Response的节点,并产生Request的请求,发给Server端。Server端收到Request请求后产生一只海龟,回馈一个Response给Client海龟产生是否成功。Service的名称为/spawn,中间传输消息的数据结构为turtlesim::Spawn。从图中可以看到下面的那个小乌龟就是通过启动模型客户端的动作产生的。如有权限问题切到root 用户继续执行。通过一下的命令就可以生成第二个小乌龟。原创 2023-11-09 18:49:23 · 363 阅读 · 0 评论 -
ROS 物体跟踪
物体跟踪功能首先根据输入的图像流和选择跟踪的物体,采样物体在图像当前帧中的特征点;然后将当前帧和下一帧图像进行灰度值比较,估计出当前帧中跟踪物体的特征点在下一帧图像中的位置;再过滤位置不变的特征点,余下的点就是跟踪物体在第二帧图像中的特征点,其特征点集群即为跟踪物体的位置。物体识别针对的物体可以是静态的或动态的,根据物体特征点建立的模型作为识别的数据依据;完成图像预处理之后开始针对两帧图像进行比较,基于图像差异识别到运动的物体,最后标识识别结果并进行发布。尽量选用纯色背景和色彩差异较大的测试物体。原创 2023-10-17 16:30:51 · 237 阅读 · 0 评论 -
ROS opencv 人脸识别
人脸识别需要在输入的图像中确定人脸(如果存在)的位置、大小和姿态,往往用于生物特征识别、视频监听、人机交互等应用中。2001年,Viola和Jones提出了基于Haar特征的级联分类器对象检测算法,并在2002年由Lienhart和Maydt进行改进,为快速、可靠的人脸检测应用提供了一种有效方法。OpenCV已经集成了该算法的开源实现,利用大量样本的Haar特征进行分类器训练,然后调用训练好的瀑布级联分类器cascade进行模式匹配。原创 2023-10-16 14:00:13 · 1145 阅读 · 1 评论