自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 欧拉角与固定角的区别

欧拉角的旋转顺序通常为ZYXZYZ绕固定的 Z 轴旋转,角度为 ψ(偏航 Yaw)。绕新(旋转后)的 Y 轴旋转,角度为 θ(俯仰 Pitch)。绕新(旋转后)的 X 轴旋转,角度为 ϕ(翻滚 Roll)。这个顺序称为ZYX 欧拉角,不同领域可能使用不同的顺序。假设采用XYZ 固定角旋转顺序绕固定的 X 轴旋转,角度为 γ。绕固定的 Y 轴旋转,角度为 β。绕固定的 Z 轴旋转,角度为 α。与欧拉角的区别在于,这些旋转始终是相对于最初的固定坐标轴进行的,而不是相对于旋转后的新坐标轴。

2025-03-27 16:26:57 423

原创 Docker 快速入门指南

Dockerfile 是用于定义 Docker 镜像的文件,包含了一系列指令来描述如何构建镜像。Docker Compose 是用于管理多个容器的工具,使用文件定义和运行多容器应用。本篇文章介绍了 Docker 的基本指令、Dockerfile 以及 Docker Compose,快速入手Docker, 作者也经常忘记指令,写篇文章记录一下。

2025-03-27 13:48:31 475

原创 数据校验方法总结

数据校验在保证信息传输和存储过程中数据完整性方面起着至关重要的作用。选择合适的校验方法,能够有效提高系统的可靠性和容错能力。随着技术的进步,校验方法不断优化,逐步从简单的奇偶校验到复杂的Reed-Solomon编码,适应了更广泛、更复杂的应用需求。在实际应用中,了解各种校验方法的特点,并根据需求选择最合适的方案,是确保数据安全与可靠性的关键。

2024-12-31 12:22:06 1137

原创 齐次变换矩阵的原理与应用

通过齐次变换矩阵,可以描述机械臂末端执行器(法兰)在三维空间中的平移和旋转操作。该矩阵结合了旋转和平移信息,用于坐标变换。矩阵的乘法顺序表示变换的执行顺序,顺序不同,结果会有所不同。其中,Δx,Δy,Δz是沿 X、Y、Z 方向的移动距离。旋转矩阵用于描述物体在各轴上的旋转。

2024-09-05 14:52:29 2288

原创 ROS 2 Jazzy和QT组合开发教程

是 Qt Creator 的一个插件,允许你在 Qt Creator 中管理 ROS 1 和 ROS 2 项目,项目地址https://github.com/ros-industrial/ros_qtc_plugin。Qt推荐https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/online_installers/这个链接下载。注意: ~/Qt/Tools/QtCreator是qt安装的默认路径,如更改的需要替换。

2024-08-26 14:30:35 682

原创 ROS 2 URDF 履带小车建模 使用RVIZ2

通过本文,你学会了如何使用 ROS2 和 URDF 进行一个简单的履带小车建模,并通过 RVIZ2 进行可视化显示。这个模型可以作为更复杂机器人建模的基础,后续还可以扩展为添加关节运动、传感器等内容。

2024-08-19 09:53:05 1249

原创 ROS 2 启动文件 Launch

通过这个示例,我们学习了如何在 ROS 2 中使用启动文件启动和配置节点。使用启动文件,可以轻松管理和配置多个节点、参数和话题映射。这对于复杂系统的开发和调试极为有用。希望这篇文章能够帮助你更好地理解和掌握 ROS 2 启动文件的使用技巧。

2024-08-15 11:56:57 678

原创 ROS 2 动作通信

在ROS2中,动作文件通常位于action目录中。假设我们创建一个名为的动作文件。

2024-08-13 10:55:01 472

原创 ROS 2 服务通信

是一个用于机器人系统开发的开源框架,提供了许多工具和库来简化复杂机器人应用的开发。在 ROS 2 中,服务(Service)是一种同步的通信机制,允许节点之间进行请求-响应模式的通信。这与话题(Topics)中的异步通信方式不同,服务更适合那些需要明确请求和相应结果的应用场景。在这篇文章中,我们将介绍如何使用 C++ 创建和使用 ROS 2 服务,包括服务端(Service Server)和客户端(Service Client)的实现。

2024-08-12 15:46:52 1265

原创 ROS 2 自定义接口(消息、服务和动作)

自定义消息用于定义节点之间传递的数据结构。消息类型可以包含多个字段,这些字段定义了数据的结构。创建包添加消息目录在包目录下创建msg目录,并在其中添加.msg文件。创建文件修改和在在-- 添加下面三行 -->构建包验证自定义服务定义了节点之间的请求和响应数据结构。服务类型使用.srv文件定义。添加服务目录在包目录中创建srv目录,并添加.srv文件。创建文件---修改和在构建包验证自定义动作允许节点执行长期运行的任务,并提供进度和结果反馈。动作类型使用.action文件定义。添加动作目录。

2024-08-12 14:56:53 911

原创 ROS 2 参数使用

ROS 2 (Robot Operating System 2) 是一个为机器人开发提供支持的开源框架。它继承了 ROS 1 的优点,并且在架构上做了许多改进以支持分布式系统、实时性、安全性等要求。ROS 2 中的参数是用于配置节点行为的关键部分,允许我们动态调整和控制机器人系统的运行方式。在这篇文章中,我们将探讨如何在 ROS 2 中使用 C++ 处理参数,详细讲解参数的声明、获取、设置以及使用场景。ROS 2 参数是一种键值对,键是参数的名称,值是对应的数据。配置节点行为。

2024-08-12 11:24:57 897

原创 ROS 2 话题:使用C++进行发布与订阅

ROS 2提供了一种强大而灵活的通信机制,称为话题(Topics)。话题允许节点之间进行异步消息传递,从而实现松耦合的通信模式。在本文中,我们将介绍如何使用C++编程语言在ROS 2中创建发布者和订阅者节点,以实现话题通信。

2024-08-06 11:40:11 1498

原创 ROS 2中创建一个节点

ROS 2(机器人操作系统2)是一个为机器人开发提供支持的开源框架。本文将介绍如何使用命令来创建一个新的ROS 2包,并在该包中创建一个简单的C++和Python节点。

2024-08-06 10:57:53 934 1

原创 解决WSL2突然没网络问题

在使用Windows Subsystem for Linux(WSL)时,有时可能会遇到网络连接问题。以下步骤可以帮助你解决这些问题。

2024-07-12 09:45:19 5521

原创 Ubuntu18.04安装ROS

ros-melodic-desktop-full : 依赖: ros-melodic-desktop 但是它将不会被安装。依赖: ros-melodic-urdf-sim-tutorial 但是它将不会被安装。依赖: ros-melodic-perception 但是它将不会被安装。依赖: ros-melodic-simulators 但是它将不会被安装。不要关闭【软件和更新】里面的【更新】设置,全部通知。gpg: 找不到有效的 OpenPGP 数据。在终端执行下面的命令即可。

2024-07-11 12:17:34 611

原创 单通、双通滤光片与IR-CUT的原理

在光学和影像处理领域,滤光片是一种关键的光学元件,用于控制光的传播特性。本文将深入探讨单通滤光片、双通滤光片以及IR-CUT(红外切换)技术,分析它们的原理、应用和技术特点。

2024-07-10 11:32:16 1414

原创 设计模式:建造者模式

建造者模式是一种将复杂对象的构建与其表示分离的设计模式。通过使用不同的建造者,可以创建具有不同表示的对象。它主要用于创建一些复杂对象,这些对象由多个部分组成,而这多个部分通常需要分步骤创建。产品(Product)需要构建的复杂对象。建造者(Builder)构建产品的各个部分的抽象接口。具体建造者(ConcreteBuilder)实现Builder接口,构建和装配各个部件。指挥者(Director)构建一个使用Builder接口的对象。

2024-07-10 10:14:36 972

原创 设计模式:工程模式

工程模式是一种通过工厂方法来创建对象的设计模式,避免了直接使用new关键字来实例化对象。它将对象的创建过程封装在一个工厂类中,使得代码更加灵活和可维护。简单工厂模式(Simple Factory Pattern)也称为静态工厂方法模式,使用一个单一的工厂类根据条件创建对象。工厂方法模式(Factory Method Pattern)定义一个创建对象的接口,但让子类决定实例化哪个类。抽象工厂模式(Abstract Factory Pattern)

2024-07-10 09:55:35 1741

原创 设计模式:单例模式

在实际应用中,根据具体的需求和性能要求选择合适的单例模式实现。饿汉模式适合于实例初始化开销较小且始终会被使用的情况,而懒汉模式则适用于实例初始化开销较大或可能不被使用的情况。单例模式是一种常用的设计模式,它确保一个类只有一个实例,并提供了一个全局访问点。在C++中,实现单例模式可以采用饿汉模式或懒汉模式,每种模式都有其适用的场景和特点。在饿汉模式中,单例实例在程序启动时就被创建,无论之后是否会被用到。懒汉模式下,单例实例在首次被请求时才被创建。

2024-07-08 21:59:05 501

原创 深入理解C++线程池的实现

在多线程编程中,线程池是一种重要的工具,用于管理和执行多个任务,有效地利用系统资源和提升程序性能。

2024-07-08 12:19:22 1655

原创 JSON、XML、TLV 和 Protobuf 的对比

JSON:适用于需要高可读性和易于调试的数据交换场景,如 Web 应用中的数据传输。XML:适用于需要结构化和标准化数据表示的场景,如配置文件和文档存储。TLV:适用于需要高效传输和处理的场景,如网络通信和协议实现。Protobuf:适用于需要高效数据交换和跨语言数据通信的场景,如分布式系统和微服务架构。根据具体应用场景选择合适的序列化协议,可以在性能和可维护性之间找到最佳平衡。

2024-07-05 16:00:45 515

原创 类图的六种关系实现:泛化、依赖、组合、聚合、关联

C++中通常是通过类实现接口(通常使用纯虚函数)的方式来实现的。

2024-07-05 15:07:45 1221

原创 视频流协议对比

每种视频流协议都有其独特的优势和适用场景。RTMP 和 WebRTC 适合实时性要求高的应用,HTTP-FLV 和 WS-FLV 适合低延时直播和互动,HLS 在兼容性和大规模直播方面表现出色,而 RTSP 提供了更多的灵活性和控制功能。MJPEG-Streamer 在一些低复杂度的应用中依然有其价值。根据具体需求选择合适的协议,可以确保最佳的用户体验和技术实现。

2024-07-05 10:23:19 587

原创 C++中的进程、线程与协程

进程、线程和协程是实现并发编程的三种主要方式,各自有其独特的优势和适用场景。进程提供了高隔离性和安全性,但开销较大;线程提供了高效的并发执行,但需要处理同步问题;协程则是非常轻量级的并发单元,适用于需要大量并发的场景。在实际开发中,选择合适的并发编程模型可以显著提高程序的性能和可靠性。

2024-07-03 14:44:26 1172

原创 I/O多路复用

IO多路复用是一种允许一个线程在单一的系统调用中同时监视多个文件描述符(文件、套接字等)的技术。当这些文件描述符中的任何一个就绪(例如可读或可写)时,系统调用会返回,就绪的文件描述符可以被处理。这样可以避免为每个文件描述符创建一个线程或进程,从而减少系统资源的消耗和上下文切换的开销。

2024-07-03 10:28:28 510

原创 C++智能指针

智能指针是一种类模板,它不仅封装了原始指针,还负责其生命周期的管理。- 独占所有权的智能指针。- 共享所有权的智能指针。- 弱引用的智能指针,用于解决循环引用问题。- 已被弃用,不推荐使用。智能指针在 C++ 中提供了一种高效且安全的内存管理机制。通过和,程序员可以避免许多手动管理内存带来的陷阱。这些工具使得 C++ 编程更加健壮和易于维护。

2024-07-02 16:51:35 385

原创 读写锁的应用

读写锁是一种同步机制,允许多个线程同时读取共享资源,但在写入时需要独占访问。读锁(Read Lock):允许多个线程同时读取共享资源。写锁(Write Lock):允许一个线程独占访问共享资源,禁止其他线程读或写。

2024-07-02 14:08:59 330

原创 条件变量的应用

条件变量是一种线程同步机制,允许线程在等待特定条件成立时进入休眠状态,而不消耗CPU资源。当其他线程改变了共享资源的状态并使条件成立时,可以通知等待的线程重新开始运行。

2024-07-02 12:31:37 358

原创 互斥锁的应用

互斥锁是一种用于线程同步的机制,通过锁定和解锁的操作来控制对共享资源的访问。线程在访问共享资源前必须先获得互斥锁,如果锁已经被其他线程持有,那么当前线程将被阻塞,直到锁被释放。

2024-07-02 12:18:28 373

原创 使用OpenCV和pyzbar库识别二维码

对于检测到的每个二维码,我们提取其边界框位置,并在帧中绘制一个绿色矩形框。在本教程中,我们将学习如何使用Python中的OpenCV库打开摄像头,并使用pyzbar库识别二维码。我们需要安装两个主要的库:OpenCV和pyzbar。OpenCV用于处理图像和视频,pyzbar用于解码二维码。表示我们使用的是默认摄像头。如果你有多个摄像头,可以相应地更改这个参数。以下是用于打开摄像头并识别二维码的完整代码。将以上代码保存到一个Python文件中,例如。是一个布尔值,表示读取是否成功,打开摄像头,其中参数。

2024-06-27 11:52:21 590

原创 摄像头调试

2712x1536 =最大分辨率。10000/300000 =帧率。m00:m模块 插到00位置。001a:i2c 的从机地址。SRGGB = baw格式。imx464:摄像头型号。1 link 一个连线。1 pad 一个端口。10 = 位宽为10。

2024-06-13 10:50:33 372

原创 buildroot构建和编译自己的软件包

修改 ./buildroot/package/rockchip/Config.in,添加。在buildroot目录下,使用。或者刷rootfs也可以。勾选mydemo软件包。

2024-04-12 17:00:15 1164

原创 win10 使用 SFTP协议 映射 Ubuntu linux的目录

win10 使用 SFTP协议 映射 Ubuntu linux的目录。

2024-03-18 10:05:54 883 1

原创 网络MTU分析

TCP 报文中(传输通过GRE 隧道),MTU 1500 = IP 首部(20byte) + GRE 头部(24byte) + TCP 首部(20byte) + 负载(1436byte最大)使用IPsec、GRE、OSPF、IS-IS、L2VPN、VPLS等隧道协议需要注意,会给报文添加隧道标头,导致包长大于MTU,会导致数据包分片,回导致丢包或者传输速度变慢。网络类型MTU最大值 ≥ 路由器的MTU+隧道头标长度(不使用隧道,则加0) ≥ 电脑的MTU。电脑的MTU设置为1200。

2024-03-13 10:54:20 1823

原创 ubuntu/linux使用nc命令测速

这里我们可以看到我的网速是117M/s,也就是1000Mdps。3.使用dstst查看net的recv的速度。2.打开客户端,并向服务端发送无限0。1.打开TCP服务端。

2024-03-12 10:55:16 489 1

原创 linux 使用dd命令备份/还原ubuntu系统

这里不过多介绍,文章很多,直接搜。

2024-02-20 14:55:22 1168 1

ROS 2 Jazzy和QT组合开发教程

ROS2快速体验Demo项目

2024-08-26

空空如也

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

TA关注的人

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