- 博客(22)
- 收藏
- 关注
原创 Windows11系统安装Isaac Sim和Isaac Lab记录
本文介绍了在Windows 11系统上安装IsaacSim和IsaacLab的完整流程。硬件配置为RTX4060显卡、32GB内存,软件环境包括NVIDIA驱动591.44、CUDA12.8、PyTorch2.7.0和Python3.11。安装IsaacSim5.1的主要步骤包括:更新GPU驱动、安装CUDA、创建conda虚拟环境、开启长路径支持、更新pip后安装IsaacSim pip包。IsaacLab安装则需要克隆GitHub仓库,通过安装脚本完成。最后通过运行验证脚本确认安装成功。
2025-12-13 11:28:09
584
原创 ROS2学习记录——TF坐标变换工具(二)
本文主要介绍ROS2中TF坐标变换工具的C++实现方法。内容包括:1) 创建静态坐标系广播节点,通过StaticTransformBroadcaster类发布单次变换;2) 实现动态坐标系广播,使用TransformBroadcaster类配合定时器持续发布坐标变换;3) 开发TF监听节点,利用Buffer和TransformListener类查询坐标系间变换关系,并将四元数转换为欧拉角输出。文章详细展示了各功能的代码实现,包括头文件引用、类定义、主要函数实现以及CMake配置,并提供了命令行验证方法。全文
2025-11-10 21:22:25
1212
原创 ROS2学习记录——TF坐标变换工具(一)
本文介绍了ROS2中的TF坐标变换工具,它是ROS2维护机器人坐标系间空间关系的核心组件。TF2相比ROS1的TF更加模块化和安全,支持随时间变化的坐标变换,并提供统一接口处理空间数据变换。文章概述了TF数据流的使用流程:定义坐标系、发布变换关系、监听查询数据和应用变换。通过命令行演示了静态坐标变换的发布方法,包括平移和旋转参数的设置,以及使用tf2_echo工具查询坐标关系。最后提到将后续通过C++节点实现静态/动态TF发布和查询功能。该文是ROS2机器人开发工具系列教程的一部分。
2025-11-06 10:49:08
1103
原创 现代C++核心特性——内存篇
现代C++(C++11及后续版本)在内存管理方面引入了多项重要特性。智能指针(shared_ptr、unique_ptr、weak_ptr)通过自动内存管理解决了传统指针的内存泄漏问题。移动语义(std::move)实现了资源的高效转移,避免了不必要的拷贝开销。右值引用支持移动语义和完美转发(std::forward),使函数模板能够保持参数的值类别。这些特性显著提升了C++的内存安全性、性能表现和代码简洁性,是开发者从经典C++转向现代C++时必须掌握的核心内容。
2025-11-04 20:51:24
1357
原创 ROS2学习记录——在C++节点中使用参数
本文介绍了ROS2通信机制中的服务通信和参数通信的实现方法。首先通过海龟模拟器实验,在C++节点中实现参数接口,包括参数声明、回调函数设置和参数更新逻辑。随后开发了一个上位节点,通过服务调用来修改其他节点的参数。最后介绍了使用launch工具统一启动多个节点并管理参数配置的方法,包括launch文件编写和参数传递。文章提供了完整的代码实现,涵盖了参数设置、服务调用和launch配置等关键功能,并通过实际案例展示了ROS2中参数管理和多节点协同工作的实现方式。
2025-11-02 15:11:03
1319
原创 MPC模型预测控制:算法结构与常见问题
模型预测控制(MPC)是一种基于系统模型的滚动优化控制策略。其核心思想是:在每个采样时刻利用系统模型预测未来输出,通过求解带有约束的优化问题获得最优控制序列,但仅执行第一个控制量,并在下一时刻重新预测优化。MPC通过预测时域和控制时域设置平衡计算量与精度,采用二次规划算法求解,能够自然处理系统约束。相比PID和LQR,MPC具有更好的约束处理能力和动态优化性能,但计算复杂度较高。在自动驾驶等领域,MPC能同时考虑物理约束和舒适性,实现高性能控制。
2025-11-01 23:14:08
1184
原创 LQR控制学习总结:原理解析与常见问题
LQR控制算法是一种用于线性系统的最优状态反馈控制器,通过最小化二次型性能指标来平衡系统状态偏离与控制能量消耗。其核心流程包括:建立线性系统模型(x=Ax+Bu)、选择权重矩阵Q和R、求解Riccati方程得到反馈增益K,最终实现状态反馈控制。LQR能保证系统稳定性(需满足可控可观测条件),其性能可通过调整Q和R矩阵来调节。与PID和MPC相比,LQR具有理论最优性,但仅适用于线性系统。对于非线性系统需先进行线性化处理。
2025-10-28 23:11:31
1627
原创 PID控制学习总结:概念、实现、优化全解析
本文系统梳理了PID控制的核心概念、算法实现与工程优化方法。主要内容包括:1)PID控制原理与数学表达式,解析比例、积分、微分项的作用机制;2)离散化实现方法,对比位置式与增量式PID的特点及适用场景;3)参数整定技巧与Ziegler-Nichols等经典方法;4)工程改进方案如积分分离、不完全微分、带死区控制等;5)高阶应用如前馈控制与串联PID结构。特别强调微分项对噪声敏感的特性及改进策略,并针对不同系统特性(含积分/无积分)给出控制器选型建议。附Python/C++实现示例,为工业控制与嵌入式系统开发
2025-10-27 19:17:23
1181
原创 EM Planner:自动驾驶轨迹规划核心技术
EMPlanner是百度Apollo平台中用于L4自动驾驶的实时轨迹规划算法。该算法采用"评估-修正"(E-M)交替优化思想,将轨迹规划分解为路径优化(横向)和速度优化(纵向)两个子问题。在Frenet坐标系下,通过动态规划粗搜索和二次规划精调的方式,兼顾安全性、舒适性和实时性。相比LatticePlanner的采样方法,EMPlanner采用连续优化,通过E-M迭代降低维度,提高效率,更适合复杂动态场景。算法周期约100ms,支持多车道策略选择,能有效处理动态障碍物和突发情况。
2025-10-26 15:59:07
1877
原创 ROS2学习记录——服务与参数通信
本文介绍了ROS2中的服务通信和参数通信机制。服务通信采用请求-响应模式,适合需要确认或查询的场景,通过ros2 service命令可查询和调用服务。参数通信基于服务实现,支持参数的查询、修改和批量导入导出操作。文章以海龟模拟器为例,详细演示了如何使用命令行和rqt工具进行服务调用,以及如何通过参数文件管理节点配置。最后提供了参数批量操作的实用方法。
2025-10-26 11:25:15
1178
原创 ROS2学习记录——以海龟模拟器初探话题通信(二)
本文介绍了一个完整的ROS2海龟控制节点实现,包含发布者和订阅者功能。通过创建turtle_control功能包,添加rclcpp、geometry_msgs和turtlesim依赖,实现了一个闭环控制系统。该节点订阅海龟的实时位置(/turtle1/pose),计算与目标位置的偏差,发布速度控制指令(/turtle1/cmd_vel)来引导海龟移动。文章详细说明了代码架构、发布订阅实现、回调函数处理逻辑以及CMake配置,最后展示了运行效果和完整代码。该实现包含比例控制器,能根据位置误差动态调整海龟运动速
2025-10-23 23:27:56
1324
原创 Lattice算法:运行流程详解
LatticePlanner是一种结合运动学约束和离散搜索的路径规划方法。其核心是通过预先生成满足车辆动力学约束的运动原语轨迹模板库,构建状态格点图进行搜索。算法流程包括:1)在状态空间离散化生成状态格点;2)基于车辆模型生成可行运动原语;3)构建有向加权搜索图;4)使用A*等算法寻找最优路径;5)对拼接路径进行平滑优化。该方法适用于需要考虑车辆动力学约束的路径规划场景,通过离线计算和在线搜索相结合的方式实现高效规划。文章还指出了算法在动态环境适应性和轨迹平滑性等方面的优化空间。
2025-10-22 22:45:54
1910
原创 现代C++核心特性——类型篇
本文介绍了现代C++(C++11及以后版本)在类型系统方面的核心改进。首先分析了nullptr替代NULL指针的优势,解决了函数重载歧义问题;其次讲解了decltype类型推导机制及其对表达式类别的处理规则;最后介绍了constexpr在编译期求值的特性,包括常量声明和函数应用。这些新特性显著提升了C++的类型安全性、表达能力和编译期计算能力。文章为C++开发者理解现代类型系统提供了简明指导。
2025-10-21 21:23:52
1121
原创 ROS2学习记录——以海龟模拟器初探话题通信(一)
本文介绍了ROS2话题通信机制及其应用。首先讲解了话题通信的基本概念,包括发布/订阅模型的异步通信特点。随后以经典的海龟模拟器为例,详细演示了如何通过话题控制海龟运动:启动turtlesim节点和键盘控制节点,使用rqt工具观察节点关系,通过ros2命令行工具查看节点信息、话题数据及消息接口。最后展示了如何手动发布话题命令控制海龟移动,特别强调了YAML格式数据输入的注意事项。该实验帮助理解ROS2话题通信机制的实际应用。
2025-10-20 22:52:06
792
原创 Hybrid A*:算法概念详解
摘要:Hybrid A算法是一种改进的A算法,专为连续空间和非完整约束系统设计,适用于自动驾驶和移动机器人路径规划。它将车辆位置(x,y)和朝向(θ)作为三维状态节点,结合运动学模型进行采样扩展。算法采用实际代价函数g(包含运动学代价)和预估代价函数h(如Dubins曲线或曼哈顿距离),通过类似A的f=g+h方式进行搜索。相比传统A,Hybrid A*能生成平滑路径但可能无法遍历所有节点。搜索流程包括状态初始化、控制集定义、节点扩展和路径回溯等步骤,最终输出符合车辆运动学的可行轨迹。
2025-10-20 19:16:24
1686
原创 现代C++核心特性——语法篇
现代C++(C++11及以后版本)在语法层面带来了多项重要改进:1. auto关键字支持自动类型推导,简化变量声明;2. lambda表达式提供匿名函数功能,便于实现回调等场景;3. range-for循环使容器遍历更加简洁;4. enum class解决了传统枚举的命名污染和类型安全问题。这些特性显著提升了代码的简洁性、可读性和安全性,使C++更适合现代软件开发需求。
2025-10-19 23:33:30
1116
原创 ROS2学习记录——运行第一个节点
本文介绍了如何在ROS2功能包中创建第一个C++节点。主要内容包括:1.编写节点源码,包含初始化ROS2、创建节点、日志输出和事件循环等关键步骤;2.编辑CMakeLists.txt文件,配置编译选项和依赖项;3.使用colcon构建工具编译功能包;4.通过ros2run命令运行节点。文章还提供了完整的代码示例和详细的注释说明,帮助初学者快速掌握ROS2节点的基本开发流程。
2025-10-15 15:42:18
1445
原创 RRT与RRT*:路径规划算法详解
RRT和RRT是两种基于采样的路径规划算法。RRT通过随机采样快速探索空间,构建树状路径网络,适合快速找到可行路径但不保证最优。RRT在RRT基础上增加了邻域搜索和路径重连优化步骤,通过动态调整节点连接关系,逐步优化路径使其趋近最优解。两种算法都适用于高维复杂环境,RRT侧重快速性,RRT*在保证可行性的同时追求最优性,计算量相对更大。相关优化策略包括目标偏置采样和自适应邻域半径等。
2025-10-14 20:42:22
2173
原创 ROS2学习记录——工作空间与功能包创建
本文介绍了ROS2工作空间和功能包的基本架构与使用方法。工作空间是存储ROS2项目代码的目录,包含src、build、install和log四个主要文件夹。功能包作为ROS2的最小功能单元,包含节点、消息、服务等组件,通过CMakeLists.txt和package.xml文件定义依赖关系。文章详细说明了如何获取他人功能包(通过apt安装或GitHub下载)以及使用ros2 pkg create命令创建自定义功能包的方法,包括指定构建类型和依赖包。最后指出下一步将学习功能包代码编写与运行。
2025-10-13 21:30:35
1117
原创 A*算法:启发式寻路核心解析
A*算法是一种启发式路径搜索算法,通过评估函数f(n)=g(n)+h(n)寻找最优路径,其中g(n)是起点到当前节点的实际代价,h(n)是启发式估计的剩余代价。该算法使用开放列表和封闭列表管理节点,优先扩展f(n)最小的节点。根据移动方式不同,可采用欧几里得、曼哈顿或对角距离作为启发函数。h(n)的选择直接影响算法效率:低估时趋近Dijkstra算法保证最优但效率低,高估时类似贪婪搜索效率高但可能非最优。A算法在路径规划中平衡了搜索效率与结果最优性。
2025-10-12 16:06:08
1363
原创 Dijkstra 算法——全流程详解
本文介绍了Dijkstra算法,这是一种用于在带非负权重边的图中计算单源最短路径的经典算法。文章通过具体案例演示了算法在有向图和无向图中的实现过程,提供了详细的计算步骤和注意事项,帮助读者理解算法原理和应用。
2025-10-11 20:10:37
518
原创 Transformer架构全流程学习初探
Transformer是一种基于自注意力机制的序列模型,具有高度并行化和长距离依赖捕捉的优势,成为现代自然语言处理的基础架构。本文简要阐述了transformer架构的整体运行流程,与大家共同学习,共勉!
2025-09-30 09:48:41
649
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅