自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (2)
  • 收藏
  • 关注

原创 Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复

自动登录 + GNOME 远程桌面「连不上但解锁后能用」,几乎都是登录钥匙环被锁定导致的判断依据是 GRD 日志里的,以及设置页面顶部的「部分设置已锁定」修复思路是让钥匙环守护进程在启动时就带着密码解锁,最干净的做法是给加用户级 drop-in两个关键细节:密码文件不能带结尾换行;--unlock必须作用于「启动瞬间」的守护进程,而不是已运行的实例。

2026-11-03 20:07:42 482

原创 GNOME 50 (Wayland) 桌面网速悬浮窗:TopHat 部署实录与三个踩坑

想在 Ubuntu 的 GNOME 桌面上常驻一个「网速悬浮窗」:不占顶栏、不打断工作、全屏看视频或跑下载时也能瞄一眼实时上下行速率。本文记录在一台 GNOME Shell 50.1 + Wayland 的机器上部署 TopHat 扩展的完整过程,包括两个真正卡住人的坑:** 缺少 GTop 绑定 ** 和 ** 用户扩展总开关被关闭 **。

2026-11-03 20:05:52 120

原创 ROS2系列教程:Moveit2运动学(IK/FK与运动学插件)

理解插件的机制,比背 API 更有价值。下面写一个"最小可用"的自定义 IK 求解器插件。

2026-10-28 16:03:46 334

原创 ROS2系列教程:Moveit2仿真与运动规划(基础)

本文是 ROS2 系列教程的第 36 篇:MoveIt2 仿真与运动规划(基础)。第 35 篇我们装好了 MoveIt2、写了一个两连杆机械臂的 URDF,并用 moveit_setup_assistant 生成了配置包。今天我们把机械臂"跑起来":从 demo 启动开始,理解规划场景(Planning Scene)、运动规划请求/响应的数据结构,再用 Python 和 C++ 两种方式调用 move_group 完成"规划 + 执行"的完整闭环。

2026-10-28 16:03:24 438

原创 ROS2系列教程:Moveit2环境与机械臂建模准备

本文是 ROS2 系列教程的第 35 篇:MoveIt2 环境与机械臂建模准备。第 31~34 篇我们完成了移动底盘机器人的完整实战(建图、导航、任务、安全)。。第 35 篇先解决"地基":MoveIt2 是什么、环境怎么装、机械臂怎么用 URDF/Xacro 描述、怎么用工具自动生成 MoveIt2 配置包,最后用 RViz 可视化验证模型。移动机器人关心"轮子转多少",机械臂关心"关节动多少"——坐标系与运动学思维将从这里焕然一新。

2026-10-28 16:02:55 274

原创 ROS2系列教程:上位机建图与导航(原理综合)

本文是 ROS2 系列教程的第 33 篇:上位机建图与导航(原理综合)。第 32 篇我们把下位机的数据(里程计、IMU、传感器)接进了 ROS2,实现了"软硬结合"。但机器人拿到数据之后要干什么?。本篇把第 21~25 篇的仿真知识搬到真机场景,讲解仿真到实物的差异、激光雷达接入、slam_toolbox/Cartographer 建图、地图后处理、AMCL 定位、Nav2 导航栈的参数调优,以及用 Python 写任务级导航程序。学完本篇,你的实体机器人就真正"认得路、走得动"了。

2026-10-18 22:54:11 313

原创 ROS2系列教程:完整实体机器人项目实战(软硬协同)

本文是 ROS2 系列教程的第 34 篇:完整实体机器人项目实战(软硬协同)。第 31~33 篇分别完成了硬件搭建、软硬通信、建图导航三件大事。本篇把底盘驱动、串口协议、传感器、里程计、建图、导航、行为任务,并给出从零到一的分步集成顺序、launch 组织方式、完整的测试与验收清单。学完本篇,你拥有一个"开箱即用"的实体机器人工程,也可以直接作为毕业设计或竞赛项目的底座。

2026-10-18 22:53:40 312

原创 ROS2系列教程:嵌入式控制与通信开发(原理+仿真)

本文是 ROS2 系列教程的第 32 篇:嵌入式控制与通信开发(原理+仿真)。第 31 篇我们搭好了实体机器人的硬件骨架。但硬件只是"尸体",让它"活过来"需要软件:下位机的控制与通信程序、上位机的桥接与状态发布。本篇把第 31 篇的框架落实成完整可运行的代码:下位机协议栈、里程计解算、上位机串口桥、传感器数据接入,并用仿真环境验证上/下位机通信的可靠性。这是实体机器人"软硬结合"的关键一篇。

2026-10-18 22:53:18 189

原创 ROS2系列教程:实体机器人硬件搭建(原理)

本文是 ROS2 系列教程的第 31 篇:实体机器人硬件搭建(原理)。第 26-30 篇我们打通了硬件控制全链路:电机、舵机、传感器、MicroROS、ROS2-Control。但那些都是在"零件"层面。本篇开始进入:把前面所有的零件组装成一台能跑、能感知、能建图导航的真机器人。本篇聚焦硬件搭建的完整原理:总体架构、选型、电气连接、电源管理、车架结构,并给出计算与调试方法,为第 32-34 篇的软件开发打基础。

2026-10-18 22:52:57 212

原创 ROS2系列教程:控制硬件实战(舵机与传感器,原理)

本阶段(第 26-30 篇)我们打通了机器人硬件全链路篇主题核心收获26嵌入式点灯GPIO 本质,嵌入式开发流程27MicroROSMCU 直接成为 ROS2 节点28关节控制的标准框架29电机驱动H桥/PWM/编码器/PID/硬件接口30舵机与传感器舵机、IMU、测距、视觉接入至此,从"电"的层面(GPIO、PWM、串口)到"信息"的层面(ROS2 话题、控制框架、传感器数据),机器人硬件部分全部打通。

2026-10-18 22:52:31 146

原创 ROS2系列教程:控制硬件实战(电机驱动,原理)

/ real_motor_hw.cpp:真实电机硬件接口(串口/MicroROS 连接下位机)public:// 声明关节及其接口// 基类解析 URDF 的 <ros2_control> 配置// 打开串口(伪代码,实际用 serial 库)// 导出状态接口(编码器读数)// 导出命令接口(PWM/速度命令)// 读状态:从串口获取编码器数据// 伪代码:解析下位机回传的编码器帧// 写命令:把速度命令发给下位机// 伪代码:拼接命令帧发送。

2026-10-14 00:50:45 280

原创 ROS2系列教程:ROS2-Control与控制器(原理)

官方控制器不够用时,可以写自定义控制器。

2026-10-14 00:50:11 115

原创 ROS2系列教程:MicroROS接入(原理+仿真)

本文详解ROS2 MicroROS接入原理与仿真实践,解决嵌入式设备与上位机通信的通用性难题。通过MicroROS架构(Client+Agent+传输层),实现MCU作为ROS2节点无缝接入系统。基于Docker仿真环境,演示Host模式下在PC模拟MCU运行rclc代码,配合micro-ROS Agent完成串口通信,完整跑通话题发布/订阅流程,为后续真机开发及ROS2-Control应用奠定基础。

2026-10-14 00:49:47 250

原创 ROS2系列教程:嵌入式开发从点灯开始(原理)

本文是 ROS2 系列教程的第 26 篇:嵌入式开发从点灯开始(原理)。第 25 篇我们完成了 Nav2 导航阶段(21-25)的全部内容,前面的教程全都是在仿真环境里运行:Gazebo 里的小车、RViz 里的模型,都是"虚拟的"。但真实的机器人要动起来,必须有硬件:单片机控制电机、传感器采集数据、串口与上位机通信。从本篇开始进入。

2026-10-14 00:49:09 960

原创 ROS2系列教程:Nav2进阶实践(自定义算法、插件与行为树)

/ 继承 nav2_core::Controller,实现 5 个纯虚接口public:// 1. 配置:从参数获取配置// 2. 清理与激活// 3. 核心:计算速度指令(每 control cycle 调用)// 4. 设置/获取规划路径private:// 比例系数// 保存全局路径plugin: "nav2_my_controller/MyController" # 替换默认 DWB编译后重启导航,你的控制器就生效了。

2026-10-14 00:48:26 237

原创 ROS2系列教程:Nav2导航仿真实战(全局+局部规划)

本文是 ROS2 系列教程的第 24 篇:Nav2 导航仿真实战(全局+局部规划)。至此我们已有地图(第 21/22 篇)、有定位(第 23 篇),就差"自己走路"。Nav2(Navigation2)是 ROS2 的官方导航框架:给它一个目标点,它负责全局路径规划(A* 在整张地图找路)、局部避障(DWA 实时躲障碍)、输出速度指令,全程自主。

2026-09-08 18:08:19 475

原创 ROS2系列教程:AMCL定位与地图

本文是 ROS2 系列教程的第 23 篇:AMCL 定位与地图。前两篇我们学会了建图——slam_toolbox 和 Cartographer 都能产出地图。但建好的地图怎么"用"?AMCL(Adaptive Monte Carlo Localization,自适应蒙特卡洛定位)用粒子滤波回答这个问题:在地图里撒几千个"猜测粒子",用激光匹配不断淘汰错误猜测、收敛到真实位姿。

2026-09-08 18:07:51 285

原创 ROS2系列教程:Cartographer建图进阶

本文是 ROS2 系列教程的第 22 篇:Cartographer 建图进阶。上一篇用 slam_toolbox 建出了第一张地图,但它的回环能力在长廊、大场地、复杂环境里会吃力——累积误差难以消除,地图容易"飘"。Cartographer 是 Google 开源的 SLAM 库,以闻名:先把局部帧拼成子图,再全局优化消除漂移,2D/3D 通吃。本篇讲透 Cartographer 的核心概念、ROS2 接口、2D 建图配置与调试,并给你一套能直接跑的建图 launch。

2026-09-08 18:07:27 308

原创 ROS2系列教程:SLAM建图(slam_toolbox)

本文是 ROS2 系列教程的第 21 篇:SLAM 建图(slam_toolbox)。前 20 篇我们完成了建模仿真阶段——小车有模型、有物理、有传感器,但"它不知道自己在哪里,也不知道周围长什么样"。SLAM(Simultaneous Localization and Mapping,同时定位与建图)解决的就是这个问题:机器人一边运动,一边用激光雷达扫描周围,同时估计自身位姿并拼接出地图。本篇以 ROS2 最主流的。

2026-09-08 18:07:03 311

原创 ROS2系列教程:机器人模型导入仿真实战

大型 ROS2 工程通常拆成两个功能包:分工原则:description 只管"机器人长什么样",bringup 管"系统怎么跑"。导航、SLAM 等后续阶段都在 bringup 里加 launch,description 不变。1.3 建包命令CMakeLists.txt 安装目录(关键,否则 launch/urdf 找不到):二、整合版 Xacro:小车全家桶2.1 完整 demo_car.xacro把前几篇的组件合成一个文件(属性 + 底盘 + 轮子宏 + 激光 + IMU + 差速插件)

2026-09-08 18:06:24 189

原创 ROS2系列教程:Gazebo插件(关节控制/IMU/激光雷达)

本文是 ROS2 系列教程的第 19 篇:Gazebo 插件(关节控制/IMU/激光雷达)。上一篇小车能在 Gazebo 里跑动了,但它还是个"瞎子"——没有传感器,不知道周围有什么,也感受不到自身姿态。Gazebo 插件(plugin)就是给仿真模型装上"器官":关节驱动插件让轮子转、IMU 插件报告姿态与角速度、激光雷达插件发出点云、相机插件输出图像。本篇逐个拆解 gazebo_ros 最常用的四类插件,教你正确配置参数、把传感器数据接入 ROS2 话题并在 RViz 中可视化。

2026-09-06 10:19:29 329

原创 ROS2系列教程:Gazebo仿真基础与世界搭建

内容是关于ROS2第18篇,Gazebo仿真基础与世界搭建。摘要需简洁概括核心内容。注意字数限制。</think>本文是ROS2系列第18篇,讲解Gazebo仿真基础与世界搭建。通过物理引擎模拟重力、摩擦等真实规律,并介绍world文件结构、gazebo_ros桥接包及spawn_entity用法,实现将小车放入虚拟世界并用ROS2控制,为后续SLAM、导航等奠定基础。

2026-09-06 10:18:51 326

原创 ROS2系列教程:Xacro参数化建模

回顾上一篇的差速小车,你实际感受到了:Xacro 是 URDF 的超集:一个合法的 Xacro 文件经过 命令展开后,得到的是标准 URDF。它新增的能力:ROS2 中 由同名包提供,启动时用 展开(见 5.1 节)。 展开不依赖 ROS 运行时,纯命令行即可调试。 里可以直接写表达式:2.2 属性值类型Xacro 属性自动按上下文解释,常用类型:注意: 里的表达式用 Python 语法求值(Xacro 由 Python 实现),所以可以调用 、 等:三、宏(macro):一次定义,处处复用

2026-09-06 10:18:11 350

原创 ROS2系列教程:URDF机器人建模(link与joint)

URDF 是一种 XML 格式的机器人描述文件,用树状结构描述机器人的物理组成:刚体(link)和关节(joint)。它回答三个问题:URDF 是 ROS1 时代的产物,被 ROS2 完整继承。官方标准文档在 urdf(ROS 官方 wiki),ROS2 中由 包提供解析能力。注意 URDF 只能描述树状结构——一个 link 只能有一个父 link,不能有环;复杂并联机构(如四足、并联机械臂)需要 Xacro 或改用 SDF,这是下一篇的内容。因为 URDF 是 TF 树的"图纸":用一句话串起前后文:

2026-09-06 10:17:46 338

原创 ROS2系列教程:TF树与多坐标系管理(C++/Python)

上一篇文章里,每条变换是"父 → 子"单向的。当你把所有变换按父子关系连起来,就得到一棵TF 树(TF Tree)map│odom│base_link/ \│lens树的规则(必须遵守)每个坐标系只有一个父坐标系base_link只能有一个父)。整棵树的父子关系不能成环(A→B→C→A 是禁止的)。树可以有多棵独立子树,但子树之间无法互查变换(会报 “Could not find transform”)。为什么是树不是网?因为 tf2 要靠"沿树做矩阵链乘法"来推导任意两点间的变换。

2026-09-06 10:17:26 360

原创 ROS2系列教程:tf2坐标变换详解(C++/Python)

查询” = 给定两个坐标系,返回它们之间的变换。例如:激光雷达检测到前方 1 米的墙(在laser坐标系),要换算到map坐标系,就需要的变换。

2026-09-05 15:49:53 391 1

原创 ROS2系列教程:运动学基础(位姿与坐标变换)

",即从参考系出发依次施加 yaw → pitch → roll 的。

2026-09-05 15:49:33 475

原创 ROS2系列教程:常用工具详解(ros2 CLI、rqt、RViz、ros2 bag、tf2基础)

tf2是 ROS2 的坐标变换库:维护"坐标系树",提供任意两个坐标系间的位姿变换。机器人上每个部件都有一个坐标系(base_link、laser、camera、map),tf2 让"激光点坐标 → 地图坐标"的换算自动完成。ros2。

2026-09-05 15:49:12 223

原创 ROS2系列教程:launch文件与多节点启动(参数/条件/复用)

本篇文章系统掌握了 launch:最简多节点启动、参数传递(yaml/字典/launch 参数)、话题重映射、命名空间、条件控制、子 launch 包含、组与外部进程、事件处理器,以及调试技巧。实战中一键启动了完整的"传感器-控制-显示"机器人演示系统。关键要点回顾launch 文件 = Python 函数返回。是核心动作;别忘了。

2026-09-05 15:48:51 254

原创 ROS2系列教程:Action动作通信(带反馈长任务)

动作接口用.action文件定义,三部分用---# action/CountUntil.action —— 计数到目标值int32 target_number # 目标(Goal):要数到几---int32 current_number # 结果(Result):最终数到几---int32 current_number # 反馈(Feedback):当前数到几定义在接口包里(如),构建后生成对应语言的类型。在包加float32 x # 目标 x 坐标float32 y # 目标 y 坐标。

2026-09-05 15:48:29 254

原创 ROS2系列教程:参数Parameter与QoS策略

参数(Parameter)是节点的配置项:一个带类型的键值对,运行时可查询、可修改。参数让"代码与配置分离"——同样的节点,通过不同参数启动,就能适配不同机器人、不同环境。参数名(parameter name):max_speed参数值(value):2.5参数类型(type):DOUBLE所属节点(node):/robot_controller参数 vs 变量:变量是代码内部的,参数是节点对外暴露的、可被命令行/其他节点访问的配置接口。# qos_demo.py —— 自定义 QoS。

2026-09-04 13:45:33 192

原创 ROS2系列教程:服务Service通信(下)同步异步与回调组

本篇文章把服务通信推向工程级:理解了同步/异步的底层机制(伪同步本质)、并发请求与多请求处理、回调组(互斥/可重入)与多线程执行器、超时与指数退避重试、服务与 QoS 的关系,并用"高并发服务系统"实战验证了并发能力。关键要点回顾ROS2 的"同步"=call_async,本质是伪同步。异步调用用,主循环不阻塞,支持多并发。互斥回调组串行、可重入回调组并发;可重入组必须配多线程执行器。服务调用必须设超时,配合指数退避重试,避免无限等待。并发回调访问共享状态必须加锁。

2026-09-04 13:44:49 229

原创 ROS2系列教程:服务Service通信(上)客户端与服务端

沿用第 4 篇的包,添加验证接口可用本篇文章完成了服务通信的完整入门:理解了 Request/Response 模型与适用场景,用 Python 和 C++ 分别实现了服务端、同步客户端、异步客户端,实战了自定义服务接口(速度设置),并掌握了命令行调试工具,最后理清了话题与服务的选型边界。关键要点回顾服务 = 服务名 + 服务类型(.srv),请求与响应由---分隔。服务端必须spin()才会处理请求;回调签名固定为。客户端先,再call_async;同步语义靠实现。异步调用用,主循环不阻塞。

2026-09-04 13:44:36 325

原创 ROS2系列教程:话题Topic通信(下)自定义消息与周期

定义 .msg/.srv 文件(接口包)→ colcon build 生成类型代码→ 发布者/订阅者 include/import 使用→ ros2 run 运行验证第 4 篇我们定义了(含 robot_name、battery_level、status_code、stamp)。本篇文章围绕它展开实战。

2026-09-04 13:44:02 204

原创 ROS2系列教程:话题Topic通信(上)发布者与订阅者

本篇文章完成了话题通信的入门:理解了 Publish/Subscribe 模型的三大解耦优势、DDS 去中心化发现机制,用 Python 与 C++ 分别实现了发布者/订阅者并验证了跨语言通信,掌握了ros2 topic全套调试命令,最后通过"传感器-显示"双话题实战巩固了多发布者/多订阅者的能力。关键要点回顾话题 = 话题名 + 消息类型,双重标识,类型必须匹配。发布者create_publisher(类型, 话题名, QoS深度),订阅者。

2026-09-04 13:43:47 322

原创 ROS2系列教程:package结构(CMake与Python两种包)

ROS2 内置的std_msgs覆盖常见场景,但你的业务数据(比如"机器人位姿 + 置信度 + 时间戳")往往是组合结构。这时需要自定义消息类型——定义一个.msg文件,rosidl 工具会自动生成对应语言的类型代码。在目录创建# msg/RobotStatus.msg —— 自定义消息string robot_name # 字符串字段float32 battery_level # 浮点字段(0.0 ~ 1.0)int32 status_code # 整数状态码。

2026-09-03 15:40:31 270

原创 ROS2系列教程:工作空间与colcon构建

本篇文章把 ROS2 从"脚本"提升到了"工程":理解了工作空间四目录结构、package 的概念与两种构建类型(ament_python / ament_cmake),掌握了 colcon 的完整用法,并通过一个双语言实战工作空间验证了全链路。关键要点回顾工作空间 =src(源码)+buildinstalllog(自动生成),构建后必须。是创建包的唯一推荐方式,别手写包结构。Python 包核心在setup.py的;C++ 包核心在的。

2026-09-03 15:40:10 287

原创 ROS2系列教程:认识节点与ROS图

在 ROS2 中,节点(Node)是一个负责执行特定任务的独立进程或进程内模块。一个机器人系统通常由几十个节点组成:有的节点负责读取激光雷达数据,有的负责做定位,有的负责规划路径,有的负责驱动电机。每个节点只干一件事,把复杂系统拆解成大量小而专的单元,这是 ROS 设计哲学的核心——单一职责 + 松耦合。节点名称:在整个 ROS 图中全局唯一(配合命名空间使用),例如。通信端点。

2026-09-03 15:39:52 385

原创 ROS2系列教程:Humble环境搭建与Hello World

本节我们完成了 ROS2 的入门:理解 ROS2 与 ROS1 的架构区别、DDS 与 QoS 的概念、搭建 Humble 开发环境的基本流程,并用 C++ 与 Python 两种语言写出了第一个 Hello World 节点。ROS2 = 分布式中间件,去中心化,DDS 通信底座,QoS 是核心。环境搭建。节点是最小单元rclpy与rclcpp两种写法,spin是回调循环。日志与生命周期:构造期一次、回调期反复、关闭期清理。常用指令ros2 run--remap。

2026-09-03 15:39:24 536

原创 C++综合实战:数据结构与算法实现及系列总结

阶段篇目核心内容入门1-5语法基础、控制流、函数、数组/指针、类初探进阶6-10类与对象、运算符重载、继承多态、内存管理、文件流STL11-15容器、迭代器、算法库、函数对象/Lambda、适配器模板16-19函数/类模板、特化与萃取、变参模板、完美转发现代C++20-22C++11/14/17/20 新特性(智能指针、concepts、ranges)并发23-25线程、互斥锁、条件变量、原子操作、线程池工程化26-27。

2026-09-03 15:36:40 213

酷贝软件资源,STM32

酷贝软件资源分享,,FreeRTOS+LCD屏幕

2023-06-09

EBAZ4205扩展板pcb图

本文件是EBAZ4205矿渣的扩展板,主控芯片zynq7010,主要目的是分享和学习,可直接打板,记得关注并好评噢 已同步阿里云盘,「EBAZ4205转接板PCB」https://www.aliyundrive.com/s/ERoKGnT8RGa 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

2022-06-15

esp8266开发,扩展板

阿里云盘链接 「ESP2866开发板」https://www.aliyundrive.com/s/W74Mc5jr7dr 提取码: tv27 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

2022-06-16

空空如也

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

TA关注的人

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