- 博客(45)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 ROS2--自定义全局和局部规划器
介绍了在ROS2 Humble环境下为TurtleBot3机器人配置Nav2自定义规划器的方法。首先解析了Nav2框架中全局规划器(负责静态路径规划)和局部规划器(负责动态避障)的工作原理及插件机制。随后提供了完整的实现流程,包括创建ROS2功能包、编写基于直线路径的简单全局规划器和恒定速度的局部规划器示例代码、注册插件以及修改参数配置文件。
2025-06-05 21:05:21
798
原创 ROS2--导航仿真
本文详细介绍了在ROS2 Humble环境下结合TurtleBot3和Nav2实现导航的完整流程。主要包括:环境准备(ROS2、TurtleBot3和Nav2安装配置)、Gazebo仿真环境搭建、使用SLAM构建地图(slam_toolbox应用与地图保存)、Nav2导航配置(初始位姿设置与目标导航)、以及可选的高级参数调整。教程采用TurtleBot3的waffle模型和CycloneDDS中间件,提供从仿真到导航的一站式解决方案,适用于Ubuntu22.04系统。
2025-06-05 20:20:03
533
原创 EtherCAT主站教程3--PREEMPT_RT补丁
PREEMPT_RT 是 Linux 内核的一个补丁集,旨在增强 Linux 的实时性能。其主要作用是将 Linux 内核转变为一个更适合实时应用的系统,减少延迟并提高任务响应的可预测性。
2025-05-26 14:23:09
228
原创 EtherCAT主站教程2--IGH适配伺服驱动器
本实验平台使用的是汇川SV660N系列伺服驱动器, EtherCAT主站搭建方法为IGH EtherCAT Master第三方协议栈。对于初学者(笔者当时也是),常常会把通信状态的运行状态和伺服状态的run运行状态搞混。这两者之间的区别在于:1、通信状态的运行状态:代表主站和从站之间的通信链路是否搭建完成,通信是否正常。2、伺服状态run运行:在通信状态达到运行状态之后(前提),通过控制字和状态字的搭配结合状态机的切换进入run运行状态。
2025-05-26 12:11:20
163
原创 EtherCAT主站教程1--Linux上部署IGH
本教程详细介绍了在Ubuntu 22.04系统上部署IgHEtherCAT主站的步骤,适用于一般的开发或测试环境。通过本教程,可以成功在Ubuntu 22.04系统上部署IgH主站。
2025-05-23 17:29:27
921
原创 4ws与Ackerman采用Pure Pursuit算法效果对比
该代码的主要功能是实现阿克曼(Ackermann)和四轮四转(Four-Wheel Steering)两种车辆模型的路径跟踪仿真,并对比它们的性能。
2025-03-25 15:22:01
340
原创 路径规划与轨迹跟踪系列算法学习_第8讲_B样条曲线法
B样条曲线(B-Spline Curve)是一种广泛应用于计算机图形学、CAD、动画和设计中的曲线方法。它通过控制点集合以及一个参数化的基函数来构建平滑曲线。B样条曲线与贝塞尔曲线类似,但提供了更好的局部控制和更强的灵活性。
2025-03-04 13:31:28
509
原创 路径规划与轨迹跟踪系列算法学习_第7讲_贝塞尔曲线法
贝塞尔曲线由法国工程师皮埃尔·贝塞尔(Pierre Bézier)于1960年代提出。贝塞尔曲线可以通过任意数量的控制点来定义,最常见的是二次贝塞尔曲线(三个控制点)和三次贝塞尔曲线(四个控制点)。
2025-03-04 11:26:54
247
原创 路径规划与轨迹跟踪系列算法学习_第5讲_曲线插值法
曲线插值法是数值分析中的一种方法,用于构造通过给定数据点的平滑曲线。它的基本目标是找到一个函数,使其在给定点处具有指定的值。常见的曲线插值方法包括等。
2025-03-04 11:20:28
110
原创 路径规划与轨迹跟踪系列算法学习_第1讲_Dijkstra算法
Dijkstra 算法是一种用于计算的经典算法,通常应用于加权图(有向图或无向图),前提是。该算法由荷兰计算机科学家 Edsger W. Dijkstra 于 1956 年提出,并于 1959 年发表。
2025-03-03 16:08:13
315
原创 不同排序算法
优点稳定性好。时间复杂度稳定为 O(nlogn)。缺点空间复杂度较高,需要额外数组存储中间结果。归并排序适合排序大规模数据,尤其是需要稳定排序的场景。详细步骤举例示例:对数组进行归并排序。1.分解阶段原始数组: [8, 3, 5, 7, 6, 2, 4, 1]分解为: [8, 3, 5, 7] 和 [6, 2, 4, 1]继续分解: [8, 3] 和 [5, 7] [6, 2] 和 [4, 1]
2024-11-26 11:05:51
933
原创 C++库函数
和是 C++ 标准库中的二分查找算法,用于在有序范围内查找特定值的边界。它们都是在头文件中定义的。两者的主要区别在于找到的是左边界还是右边界。
2024-11-08 16:28:06
271
原创 pair<int, int>数据排序
捕获列表[]指定了 lambda 如何访问外部变量。通过和可以分别按值或引用捕获所有变量。通过指定具体变量(如[factor]或[&factor])可以精确控制哪些外部变量可在 lambda 中使用。
2024-11-07 09:46:41
497
原创 C++ set 详解
std::set是一个容器,它存储唯一且有序的元素,并支持高效的查找、插入和删除操作。它适用于需要按顺序存储元素,并且不允许重复元素的场景。由于底层实现是平衡二叉树,操作的时间复杂度是 O(log n),适用于对集合进行动态变化的需求。
2024-11-06 10:05:00
467
原创 C++ bitset详解
要使用,需要包含头文件,并在创建时指定固定的位数。// 创建一个大小为8的bitset,初始值为0// 输出: 00000000return 0;在上述例子中,表示一个有 8 位的二进制数,默认情况下每一位为0。是 C++ 中用于表示二进制序列的强大工具,特别适合需要高效位操作的场景。通过其丰富的成员函数,可以方便地进行设置、查询、位运算等操作。
2024-11-05 09:40:48
477
原创 ros::NodeHandle pn {“~“} 代码详解
这句代码在 ROS 中有着特定的作用和含义。它创建了一个名为pn的 ROS 节点句柄,并使用了一个私有的命名空间"~"。
2024-10-11 11:13:26
371
原创 spin() 和 spinOnce() 的区别
特性执行模式阻塞,持续处理回调直到节点关闭非阻塞,处理一次回调然后返回典型使用场景节点只需处理回调,不需执行其他逻辑节点除了处理回调,还需执行其他逻辑代码流控制一旦进入,不再返回,直到节点关闭必须放在循环中与其他逻辑一起运行主线程行为占用主线程主线程可以继续执行其他任务。
2024-10-10 17:50:35
633
Turtlebot2 + RplidarA2
2021-12-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人