自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 收藏
  • 关注

原创 Qt- 槽函数和普通函数的主要区别

槽函数主要用于。当一个信号被发射时,与之相连的槽函数会被自动调用。这是Qt实现对象间通信的核心机制。槽函数必须定义在一个继承自的类中,并且类中需要包含。这是因为槽函数的实现依赖于Qt的元对象编译器(),它会在编译时生成额外的代码来支持信号与槽的连接。槽函数可以定义在类的或部分,并且可以有任意类型的参数和返回值。它们可以像普通成员函数那样被直接调用,但更常见的用途是作为信号的响应者。槽函数的调用可以通过不同的方式实现,包括或。槽函数通常在发射信号的线程中运行,但也可以配置为在其他线程中运行。

2024-07-08 14:29:47 503

原创 VTK- 面绘制&体绘制

在VTK中,(Surface Rendering)和(Volume Rendering)是两种常见的三维数据可视化方法。面绘制和体绘制是计算机图形学中用于三维数据可视化的重要技术,尤其在医学成像、科学可视化和计算机辅助设计等领域应用广泛。下面是对这两种技术的介绍:面绘制(Surface Rendering)面绘制是一种的三维数据可视化方法。它首先需要从三维数据集中识别并提取出感兴趣的表面,通常是通过(isosurface)提取算法,比如算法。

2024-07-04 16:01:24 709

原创 VTK- 可视化过程 & 四种坐标系统

这个坐标系统与具体的模型相关联,是定义模型时使用的坐标系统,通常是局部的笛卡尔坐标系。每个模型(如通过vtkPolyData或vtkImageData表示的数据集)都在自己的模型坐标系统中定义。例如,一个球体可能在其模型坐标系统中定义为以原点为中心、半径为1的单位球。

2024-07-03 16:57:01 619

原创 QT QThread 线程类的使用及示例

点击开启线程按钮后,应用程序输出窗口每隔 2 秒打印“正在运行 doWork1 函数”,当我们点击打断线程按钮后,窗口打印出“打断 doWork1 函数”。Thread 是 Qt 框架提供的一个用于处理多线程的类,它允许开发者编写具有并发功能的应用程序,提高程序的响应速度、执行效率和用户体验。在操作系统中,线程是进程内的执行单元,拥有独立的执行路径。QThread 封装了操作系统的线程接口,提供了一种跨平台的方式来管理和控制线程。:用于更复杂的同步需求,比如控制线程的执行顺序或等待特定条件满足。

2024-06-28 11:29:40 951

原创 QT QSlider控件-主介绍 触发函数&常用函数

被触发时调用。这个信号通常与滑块上自定义的操作相关,例如点击滑块上的特殊区域或按下快捷键关联的动作。action参数用来标识具体是哪个动作被触发。

2024-06-26 11:35:19 893

原创 BMP JPG PNG 介绍以及三者区别

综上所述,BMP格式适合需要完整图像数据的情况,JPG适合对图像质量要求不是特别高且需要较小文件大小的场合,而PNG则非常适合需要高质量图像和透明效果的网络应用。根据具体需求选择合适的图像格式是很重要的,比如对于存储空间敏感的网络应用,可能会优先考虑JPG,而对于需要保持原始图像质量的设计工作,则可能更倾向于使用PNG或BMP。BMP是一种较早的位图图像文件格式,由微软开发,主要用于Windows操作系统。PNG(全面支持)> JPG(不支持)> BMP(部分支持,主要是32位BMP)。

2024-04-28 16:42:51 1374

原创 OSD图像技术

格式兼容性:在处理OSD图像时,还需要考虑显示设备或系统的兼容性,比如某些情况下需要将图像保存为特定格式(如16位BMP),并设定合适的色彩深度(如R:5 G:6 B:5),以确保在目标平台上正确显示。菜单调节:在许多显示设备中,OSD表现为一个可交互的菜单系统,用户可以通过遥控器、按钮或触摸屏操作来调出菜单,进行显示参数的调整,比如。内容的情况下,查看或调整设备设置、显示信息如时间、频道标签、警告消息、或是像在视频监控中叠加的通道号、时间戳、地点信息等。这可以包括菜单系统、设置选项、状态指示等。

2024-04-28 16:23:14 432

原创 六维力传感器的介绍

在消除噪音方面,卡尔曼滤波通过迭代的方式对信号进行处理,它不仅考虑了当前的观测值,还利用了历史信息以及系统的动态特性,从而有效抑制随机噪声的影响,得到更准确的信号估计值。例如,当力作用在传感器时,会导致传感器内部结构发生微小位移,进而改变电容器的几何尺寸,由此引起的电容变化可被精密电路检测并转化为力和力矩的数值。它的核心思想是在考虑系统动态模型和测量模型的基础上,结合上一时刻的状态预测值和当前时刻的观测值,通过最小化均方误差来估计系统的状态。最常见的是一维、三维和六维力传感器,二维和五维的力觉传感器较少。

2024-04-23 11:54:14 679

原创 ROS 与 ROS2 的区别

与 ROS1 有着明显的区别,它不像 ROS1 那样,对通信模型中的主节点有着很强的依赖性,而是去掉了这个主节点,采用 DDS 中间件来完成通信系统的构建,使用了一个分布式的通信框架来协调整个系统不同组件之间的数据交互,具有实时性、分布式、支持多操作系统等特性,更能满足现代机器人行业的需求。进行重大升级,实时数据分发服务协议改进了通信堆栈,提供可靠的数据通信机制,支持消息的发布和订阅,以及数据的广播和多播,采用。的问题,所以 ROS2 的架构在应用层的各个节点真正的实现了各个节点关系的平等。

2024-03-12 11:18:50 1391

原创 ROS 目标识别 SURF模板匹配算法

只需在目标图像中搜索匹配项即可完成识别操作,不仅操作简单方便且方法灵活,有优越的应用性和稳定性,是图像处理研究中最常见的方法。的形式表示,具有一定的尺寸(例如64维或128维),使得特征点不仅对缩放变化不敏感,而且对光照变化、噪声等也有较好的鲁棒性。方法有基于视觉识别的特征模式识别算法、基于代价函数的识别方法、基于信息融合的识别算法和基于模式匹配的识别方法等。相比传统的模板匹配方法,基于 SURF 特征点的模板匹配在处理复杂场景下的图像匹配问题时,具有更好的。内达到极大值时,则认为该点可能是显著的特征点。

2024-03-01 13:41:48 524

原创 ROS 图像预处理

为了使机械臂从复杂的场景中准确地识别出目标物体,首先要对机械臂相机采集的图像信息进行系列的预处理操作,图像预处理的目的就是为了方便提取采集图像的特征点信息。

2024-02-27 15:50:40 951

原创 ROS 计算图级 小结

如果想要有一个可以与其他节点进行交互的进程,需要创建一个节点,并将此节点连接到 ROS 网络。节点可以通过订阅某个主题,接收来自其他节点的消息。需要注意的是,由于ROS本身就是一个分布式网络系统,可以在某一台计算机上运行节点管理器,在其他计算机上运行由该管理器管理的节点。在系统中的任何节点都可以访问此网络,并通过该网络与其他节点交互,获取其他节点发布的信息,并将自身数据发布到网络上。每个主题都是强类型的,发布到主题上的消息必须与主题的 ROS 消息类型相匹配,并且节点只能接收类型匹配的消息。

2024-01-24 10:53:31 1081

原创 ROS OpenCV 图像预处理

(sensor_msgs::image_encodings::MONO8: 是ROS定义的一种图像编码格式,表示单通道(即灰度图像)且每个像素值用8位无符号整数表示。// 订阅名为"/camera/image_raw"的图像话题,消息类型为sensor_msgs/Image,并将接收到的消息传给回调函数imageCallback。// 假设图像为BGR格式。设定一个固定的灰度阈值,然后将所有像素点的灰度值与该阈值比较,大于阈值的像素设为白色(或某一高灰度值),小于阈值的像素设为黑色(或某一低灰度值)。

2024-01-19 10:53:07 1189

原创 ROS 手眼标定

通过控制机械臂移动到不同的已知位置并记录下对应位置时相机捕捉到的图像数据,可以推算出相机坐标系相对于机械臂末端坐标系的变换关系。因为一个物体与相机的相对位置关系和这个物体与机械臂之间的关系是不一样的,所以在相机确定了物体的位置之后,还要把此时的位置转换成相对于机械臂的位置,这样机械臂才能进行抓取。的形式,其中A代表手的位置和姿态,X代表未知的变换矩阵,B代表视觉系统的位置和姿态。这些包也提供了用于手眼标定的基本工具,可能包含多种标定算法,包括传统的棋盘格法、圆点阵列法以及更复杂的优化方法。

2024-01-16 11:55:33 1640

原创 ROS OpenCV ROI

选择ROI的主要目的是集中计算资源到最相关的图像部分,减少无用信息的影响,提高处理效率,并且有助于精确地定位和分析感兴趣的对象或现象。ROI也可以作为进一步图像分割、特征提取的基础,比如在人脸识别中,可能先通过眼睛或鼻子位置确定ROI,再在此区域内寻找面部特征。总结来说,图像ROI是一种强大的工具,它可以引导图像处理系统聚焦于最重要的部分,从而实现更高效准确的数据处理和决策。目标检测:在一幅图像中,可能只关心某一特定类型的物体,因此会将该物体所在的区域设为ROI。

2024-01-14 22:12:27 742

原创 ROS OpenCV 图像基本处理函数

特定的几毫秒之内,如果按下任意键,这个函数会返回按键的 ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。第一个参数是窗口的名字,其次才是需要的图像。字符串类型,表示要写入图像文件的完整路径和名称,包括扩展名,根据扩展名来确定输出图像的格式。类型的对象或其他符合 InputArray 类型要求的图像数据结构,这是要保存的图像内容。并非ROS本身的API,而是来自OpenCV库的函数,用于读取本地磁盘上的图像文件。

2024-01-12 22:25:44 607

原创 ROS Gazebo仿真 实例演示

(1)启动机器人的状态发布节点,同时加载带有Gazebo属性的机器人URDF模型。(2)启动Gazebo,并且将机器人模型加载到Gazebo仿真环境中。2、机器人模型中的每一个 link 添加。文件中启动 gazebo 并添加机器人模型。算法的 xacro 文件。标签,并且重置颜色属性。

2024-01-11 13:33:20 432

原创 ROS 摄像头的标定

在ROS中,标定摄像头是一个重要的步骤,它是为了获取摄像头的和,进而提高摄像头的。摄像头标定校正由等因素引起的图像失真和位置偏移。ROS提供了功能包,可以用来进行或的标定。对于的标定靶,可以将其打印出来并贴到平面硬纸板上以备使用。

2024-01-08 18:33:12 741

原创 ROS OpenCV 级联分类器

和都是计算机视觉中用于方法,它们各自利用不同的图像特征进行训练,并且通常结合级联结构来提升实时性。Haar特征由Paul Viola和Michael Jones在2001年提出,。它是一种基于的特征,包括矩形区域内的黑白或者灰度对比。例如,特征可以是相邻矩形区域的像素之和的差值。级联分类器的设计是为了提高效率,通过多个弱分类器级联在一起形成一个强分类器,快速排除大部分非目标区域,只有当所有级联的弱分类器都通过时,才认为该区域可能存在目标物体(如人脸)。

2024-01-06 16:35:05 1466

原创 ROS Gazebo的基本使用

Gazebo 提供了一个实时的三维虚拟环境,用于模拟各种复杂的真实世界条件,包括光照、地形、物理碰撞以及传感器模型(如激光雷达、摄像头等)。除了 base_footprint 外,机器人的每个刚体部分都需要设置惯性矩阵,且惯性矩阵必须经计算得出,如果随意定义刚体部分的惯性矩阵,那么可能会导致机器人在 Gazebo 中出现抖动,移动等现象。支持多种传感器的模拟,包括但不限于激光雷达、深度相机、RGB-D相机、IMU 等,这些传感器的数据可以以 ROS 消息的形式发布出来供其他节点订阅处理。

2024-01-04 11:53:21 534

原创 ROS 传感器—相机的使用

可以通过命令行运行roslaunch usb_cam usb_cam-test.launch,这会创建一个节点并发布话题(topic),通常是。对于特定型号的相机,例如Kinect v1/v2或者RealSense系列相机,有专门的ROS驱动包如。在ROS中,相机作为一种重要的传感器设备被广泛应用于机器人视觉、导航定位、目标检测与识别等多种场景。(如Kinect或Intel RealSense系列)等。ROS提供了一系列工具和接口来支持不同类型的相机,包括。等ROS包来获取图像数据。

2024-01-03 20:44:46 713

原创 ROS 传感器—相机的介绍

在ROS中,相机是一种常见的传感器设备,用于获取视觉信息。ROS支持多种类型的相机,并提供了统一的接口和工具来处理相机数据,使得开发者可以方便地在不同硬件平台上实现视觉功能。在ROS中,可以通过等包来驱动这些相机。默认情况下,相机设备通常挂载在中(X为数字,如/dev/video0),可通过V4L2(Video for Linux 2)接口访问。

2024-01-03 20:26:08 1445

原创 ROS 执行命令

通过运行openni_launch功能包,可以运行20个以上的节点和10个以上的参数服务器,如camera_nodelet_manager、depth_metric、depth_metric_rect和depth_points。主节点接收多种信息的注册,如节点的名称、话题和服务名称、消息类型、URI地址和端口号,并在收到节点的请求时将此信息通知给其他节点。在运行roscore时,对所有节点的记录都会写入日志文件,随着时间的推移,需要定期使用rosclean命令删除这些记录。被用作节点之间的名称服务器。

2023-12-29 11:43:32 1065

原创 ROS MoveIt!

它主要通过MoveIt!是一个用于ROS的开源运动规划库,提供多种功能,包括用于运动规划的快速逆运动学分析、用于操纵的高级算法、机械手控制、动力学、控制器和运动规划。move_group为其可扩展性提供了一个plugin功能,并提供了一个通过开源库将各种功能(控制、路径生成、动力学等)应用到用户的机器人的机会。与Rviz(ROS的3D可视化工具)紧密集成,可以使用Rviz来可视化机器人的模型、规划的路径、碰撞状态等。这是一个接口,允许用户与机器人的当前环境交互,包括添加、删除和更新场景中的对象。

2023-12-28 21:47:15 448

原创 ROS 传感器 激光雷达

全称Light Detection And Ranging,主要用于利用激光来检测物体以及测量与物体之间的距离,是一种重要的传感器技术,这种技术被广泛应用于自动驾驶、无人船、无人机等领域,用于避障和环境探测。是一种最常见的激光雷达类型,特点是其激光发生器竖直排列并可以360°旋转,通过不断旋转发射器,将激光点变成线,并在竖直方向上排布多束激光发射器形成面,实现对周围环境的3D扫描。1、机械式激光雷达是当前自动驾驶最成熟的传感器方案,但成本高,尺寸大,难符合车规,机械结构易损坏,可量产性差。

2023-12-27 16:57:39 1528

原创 ROS launch文件

每个活跃的节点都可以通过 ros::param::get()接口来获取parameter的值,用户也可以在终端中通过 rosparam 命令获得 parameter的值。argument是另外一个概念,类似于launch文件内部的局部变量,仅限于launch文件使用,便于launch文件的重构,与ROS节点内部的实现没有关系。其中pkg定义节点所在的功能包名称,type定义节点的可执行文件名称,这两个属性等同于在终端中使用rosrun命令执行节点时的输入参数。参数服务器是一个全局的数据存储服务,

2023-12-26 18:44:46 989

原创 ROS Arbotix实例演示

ArbotiX 是一款控制电机、舵机的硬件控制板,并提供相应的 ros 功能包,是一款基于 ROS的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。总的来说,ROS Arbotix的作用是作为一个中间件,连接ROS的高级运动控制指令和底层的机器人硬件,使得开发者能够更方便、更高效地开发和调试机器人系统。由于ROS的模块化设计,Arbotix可以与其他ROS节点和包集成,实现更复杂的机器人功能,如导航、感知和行为控制。Ki用于消除系统的稳态误差(长时间存在的误差)。

2023-12-26 16:12:04 1230

原创 ROS xacro优化URDF

机器人由多部件组成,不同部件可能封装为单独的 xacro 文件,最后再将不同的文件集成,组合为完整机器人,可以使用文件包含实现。在使用Xacro生成URDF时,根标签robot中必须包含命名空间声明:xmlns:xacro="http://wiki.ros.org/xacro"。( 加载robot_description时使用command属性,属性值就是调用 xacro 功能包的 xacro 程序直接解析 xacro 文件。方法1:先将 xacro 文件转换出 urdf 文件,然后集成。

2023-12-25 20:36:50 485

原创 ROS URDF模型练习

1、新建 urdf 文件,并与 launch 文件集成。2、两个驱动轮半径为 3.25cm,轮胎宽度1.5cm,底盘离地间距为 1.5cm (与万向轮直径一致)。1、底盘为圆柱状,半径 10cm,高 8cm,3、两个万向轮为球状,半径 0.75cm,四轮由两个驱动轮和两个万向支撑轮组成,3、在底盘上添加两个驱动轮。4、在底盘上添加两个万向轮。

2023-12-22 19:51:02 455

原创 ROS URDF-joint标签

注意:在ROS中,base_footprint是机器人底部的中心点,通常被认为是机器人的基准点。与人的关节一样,机器人关节的主要作用是连接两个刚体link,这两个link分别称为parent link 和child link,如图所示。不同的关节有不同的运动形式: 旋转、滑动、固定等等,例如:安装在底座上的轮子可以360度旋转,而摄像头完全固定在底座上。是用来定义机器人模型中各个关节的,它是链接(link)之间的连接点,允许它们相对运动。prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限。

2023-12-21 14:35:43 444

原创 ROS URDF-link标签

用于定义机器人的各个部件。描述机器人某个部件的外观和物理属性,比如: 机器人底座、轮子等,每一个部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性。属性: filename=资源路径(格式:package://<packagename>/<path>/文件)标签2: cylinder(圆柱) 属性:radius=半径 length=高度。标签1: box(盒状) 属性:size=长(x) 宽(y) 高(z)

2023-12-20 16:38:44 448

原创 ROS USB_cam功能包

在这个示例中,首先初始化了一个ROS节点,并创建了一个image_transport::ImageTransport对象和一个image_transport::Publisher对象。然后,在一个循环中不断地从USB摄像头获取图像,将其转换为ROS图像消息,并发布到"camera/image_raw"话题上。USB_cam发布的图像话题通常命名为/<camera_name>/image_raw,其中<camera_name>是你在启动节点时指定的名称,或者默认为usb_cam。这两个功能包一起使用。

2023-12-19 21:56:48 2007

原创 C++流 小结

1、当从流中提取数据时,如果遇到非法输入或者格式不匹配的情况,流会进入一种称为“失败”(failed)的状态,后续的读取操作可能会受到影响。为了处理这种情况,可以使用clear()函数清除流的状态标志,并使用ignore()函数跳过导致错误的数据。2、在读取或写入之前,最好检查流的状态,以确保流已经正确地打开了。这可以通过调用.is_open()方法来完成。3、对于文件流,记得在使用完毕后关闭文件,否则可能会导致数据丢失或资源泄漏。

2023-12-13 14:07:44 67

原创 ROS rosbag

随后,通过rosbag工具,可以将系统中产生的数据记录到一个.bag文件中,进而可以在需要的时候对这些数据进行回放,达到重现特定场景的目的。通过rosbag命令行工具,用户可以记录和回放bag文件,查看bag文件信息,以及对bag文件进行压缩和解压缩等操作。而ROS节点则可以订阅和发布bag文件中的消息,以便在不同的ROS节点之间共享数据。rosbag play -p /my_topic my_bag.bag (将只播放/my_topic话题的数据)在ROS中的rosbag是一个命令行工具,主要用于。

2023-12-08 17:45:29 131

原创 ROS 动态坐标变换

在运动控制过程中,需要根据机器人的位姿信息进行动态坐标变换,以实现平滑的运动轨迹。示例:启动 turtlesim_node,该节点中窗体有一个世界坐标系(左下角为坐标系原点),乌龟是另一个坐标系,键盘控制乌龟运动,将两个坐标系的相对位置动态发布。:当收到新的位姿信息时,将其转换为所需的坐标系格式。在ROS 中,坐标变换是一个重要的概念,因为它允许系统中的不同节点和模块以统一的方式描述物体的位置和方向。动态坐标变换指的是当机器人或其环境中物体的位姿(位置和姿态)发生变化时,能够实时更新这些信息的过程。

2023-12-07 16:06:50 170

原创 ROS 欧拉角

欧拉角的定义有许多不同的形式,但在ROS中通常采用的绕x,y,z三个轴的旋转来表示物体旋转,具体为:绕Z轴旋转,称之为航向角,使用yaw表示;这种表示方法基于三个连续的旋转角度,每个角度对应于绕着特定轴线(通常是XYZ轴或ZYZ轴等不同顺序)的旋转。这些是围绕世界坐标系(全局坐标系)的X、Y和Z轴进行的旋转。这些是围绕物体自身的坐标系的X、Y和Z轴进行的旋转。需要注意的是,不同旋转顺序的欧拉角是不同的。例如,在一些代码中,可能使用的是z-y'-x''(偏航、俯仰、滚转)作为欧拉角的旋转顺序。

2023-12-06 15:57:46 230

原创 ROS 静态坐标转换

如现有一机器人模型,其构成包含主体与雷达,各对应一坐标系,已知雷达原点相对于主体原点位移关系如下: x 0.2 y 0.0 z 0.5。当前雷达检测到一障碍物,在雷达坐标系中障碍物的坐标为 (2.0 3.0 5.0),则障碍物相对于主体的坐标是。,订阅到发布的坐标系相对关系,再传入坐标点信息,然后借助于 tf 实现坐标变换,并将结果输出。例如,一个机器人的基座相对于车轮的位置关系通常被认为是静态的。它允许机器人系统中的各个部分使用不同的坐标系,并通过转换关系进行通信和协作。坐标系相对关系,可以通过。

2023-12-06 11:32:50 244

原创 ROS 元功能包

在ROS中创建一个元功能包,通常会有一个package.xml文件和一个CMakeLists.txt文件。当用户安装这个元功能包时,相关的所有功能包都会被自动安装。(例如,开发机器人项目时,可以创建一个元功能包,将一些必要的功能包列为其。即ROS元功能包是一种虚包,里面没有实质性的内容,但是它依赖了其他的软件包,通过这种方法可以把其他包组合起来。使用元功能包可以方便地管理和组织多个功能包,尤其是在开发大型项目时。(3)管理依赖:元功能包可以确保所有依赖的功能包版本兼容,并且在升级时可以一起更新。

2023-12-05 13:17:13 117

原创 ROS URDF集成Rviz流程

一、新建功能包,导入依赖二、编写 urdf 文件三、在 launch 文件集成 URDF 与 Rviz四、在 Rviz 中显示机器人模型在当前功能包下,再新建几个目录:urdf: 存储 urdf 文件的目录meshes:机器人模型渲染文件config: 配置文件launch: 存储 launch 启动文件2、编写 URDF 文件新建一个子级文件夹,文件夹中添加一个.urdf文件,

2023-12-01 14:07:52 239

原创 ROS vscode使用基本配置

执行: 和之前一致,在 VScode 中添加终端,执行:source ./devel/setup.bash。ctrl + shift + B 调用编译,选择:catkin_make:build。解决办法:在函数开头加入一行代码 setlocale(LC_ALL, "");修改 .vscode/c_cpp_properties.json。设置 "cppStandard": "c++17"修改.vscode/tasks.json 文件。编译: ctrl + shift + B。

2023-11-30 16:07:26 374

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除