<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://lori314.github.io/</id><title>Lori 的博客</title><subtitle>Lori 的个人技术博客，主要记录 ROS1 学习过程、项目实践和当时的思考。</subtitle> <updated>2026-09-03T07:41:01+00:00</updated> <author> <name>Lori</name> <uri>https://lori314.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://lori314.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="zh-CN" href="https://lori314.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Lori </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>ROS1中的TF变换</title><link href="https://lori314.github.io/posts/ROS-6/" rel="alternate" type="text/html" title="ROS1中的TF变换" /><published>2025-10-21T04:00:00+00:00</published> <updated>2025-10-21T04:00:00+00:00</updated> <id>https://lori314.github.io/posts/ROS-6/</id> <content type="text/html" src="https://lori314.github.io/posts/ROS-6/" /> <author> <name>Magic魔小牛</name> </author> <category term="ROS" /> <category term="学习记录" /> <summary>ROS中的TF变换 （注意：本站所有博客均是记录本人学习过程中的理解，可能存在错误和不完善之处，请仔细甄别） 在任何复杂的机器人系统中，我们都必须处理一个核心问题：坐标关系。想象一下，一个机械臂的末端夹爪相对于机械臂的基座在什么位置？一个激光雷达扫描到的障碍物，相对于机器人底盘的中心又在哪里？如果不能精确、实时地回答这些问题，机器人就无法与物理世界进行有意义的交互。 ROS（机器人操作系统）提供了一套强大的系统来解决这个问题，它就是 TF。本文将首先深入讲解ROS中位置和姿态的表达方式，然后阐述TF系统是如何管理和变换这些坐标关系的，最后通过一个经典的“小乌龟跟随”案例，用Python代码完整地实现一个简单的TF应用。 ROS中的位置与姿态表示法 在谈论TF变换之前，我们必须先统一“语言”：ROS是如何描述一个物体在空间中的位置和姿态（Pose）的？ 位置 (Pos...</summary> </entry> <entry><title>ROS1中的动作程序编写</title><link href="https://lori314.github.io/posts/ROS-5/" rel="alternate" type="text/html" title="ROS1中的动作程序编写" /><published>2025-09-20T04:00:00+00:00</published> <updated>2025-09-20T04:00:00+00:00</updated> <id>https://lori314.github.io/posts/ROS-5/</id> <content type="text/html" src="https://lori314.github.io/posts/ROS-5/" /> <author> <name>Magic魔小牛</name> </author> <category term="ROS" /> <category term="学习记录" /> <summary>（注意：本站所有博客均是记录本人学习过程中的理解，可能存在错误和不完善之处，请仔细甄别） ROS中的动作 上一章我们讲了服务，设想一下真实的机器人应用场景——比如让机器人从场地的左边走到右边。首先，我们只在需要走的时候走过去，用话题不太合适；走过去的流程很长，如果要用服务，如果把服务内容设定为机器人走一步，那么就要反复调用很多次；如果设置为走到底，那么我很长一段时间都不能再控制它了——没有好的中止机制。而且最重要的是，我们没有好的反馈机制来掌握机器人的位置信息，或者说任务进度如何。为了解决这种需要长时间执行、需要过程反馈、并且可能需要被中途取消的复杂任务，我们引入了ROS三大通信方式的最后一块拼图——动作（Action）。 动作，服务，订阅的特点和适用场景如下表： 特性 话题 (Topic) 服务 (Service) ...</summary> </entry> <entry><title>ROS1中的服务程序编写</title><link href="https://lori314.github.io/posts/ROS-4/" rel="alternate" type="text/html" title="ROS1中的服务程序编写" /><published>2025-09-20T04:00:00+00:00</published> <updated>2025-09-20T04:00:00+00:00</updated> <id>https://lori314.github.io/posts/ROS-4/</id> <content type="text/html" src="https://lori314.github.io/posts/ROS-4/" /> <author> <name>Magic魔小牛</name> </author> <category term="ROS" /> <category term="学习记录" /> <summary>（注意：本站所有博客均是记录本人学习过程中的理解，可能存在错误和不完善之处，请仔细甄别） ROS中的服务 上一章我们讲述了订阅和发布，发布者有一个while循环，订阅者有rospy.spin()，它们维持了节点的活跃，使得节点能够持续不断的工作。但是，我们并不是所有时候都需要在节点间维持长期调用关系，比如我们有一个算术节点，我们在需要算数的时候把数字传给它，平时都是处于空闲状态，那么在它们之间去建立话题就有些“杀鸡用牛刀”了。服务就是用来解决这个问题的。它可以实现只在我需要的时候才调用。服务的主体有两个：服务端（server）和客户端（client）。要启用服务，我们需要编写服务端节点，客户端节点可以单独编写，但更多的是在更复杂的情境下集成调用。接下来我们也会结合具体的例子来分析如何在我们的代码中使用服务。 服务程序编写 我们继续沿用我们上一章的项目：我们上一章构造了一个类似...</summary> </entry> <entry><title>ROS1 程序编写</title><link href="https://lori314.github.io/posts/ROS-3/" rel="alternate" type="text/html" title="ROS1 程序编写" /><published>2025-09-18T06:00:00+00:00</published> <updated>2025-09-18T06:00:00+00:00</updated> <id>https://lori314.github.io/posts/ROS-3/</id> <content type="text/html" src="https://lori314.github.io/posts/ROS-3/" /> <author> <name>Magic魔小牛</name> </author> <category term="ROS" /> <category term="学习记录" /> <summary>（注意：本站所有博客均是记录本人学习过程中的理解，可能存在错误和不完善之处，请仔细甄别） ROS的程序编写 本章会结合我的一个小的项目设计，来介绍我们在ROS1系统上部署代码的一般流程。如果想要在自己的电脑上复现，可以通过以下链接下载代码并在本机训练好我们后面会用的模型： https://bhpan.buaa.edu.cn/link/AA64A6CA6A316C48289F9DCB2EC3C7CD10 文件夹名：Fast-text 有效期限：2030-04-07 19:48 提取码：uU2Y 上一章我们讲到工作区的初始化，现在我们开始着手包中的src内的代码编写。ROS的代码可以用python或者C++来编写，我使用的是更好理解的python，目前还没用过C++，如果有明显的区别会后续更新。 我们先看项目内容：我打算在一个窗口输入一段话，导入模型判断这句话是积极还是消极，并由...</summary> </entry> <entry><title>ROS1 体系理解与工作区</title><link href="https://lori314.github.io/posts/ROS-2/" rel="alternate" type="text/html" title="ROS1 体系理解与工作区" /><published>2025-09-17T06:00:00+00:00</published> <updated>2025-09-17T06:00:00+00:00</updated> <id>https://lori314.github.io/posts/ROS-2/</id> <content type="text/html" src="https://lori314.github.io/posts/ROS-2/" /> <author> <name>Magic魔小牛</name> </author> <category term="ROS" /> <category term="学习记录" /> <summary>（注意：本站所有博客均是记录本人学习过程中的理解，可能存在错误和不完善之处，请仔细甄别） ROS的体系理解 思考一下，一个机器人操作系统，相比于普通的计算机操作系统，它要能做到哪些事？ 机器人由许多的结构组成，比如机械臂，人型的有双手双脚，音箱，摄像头等等，它的工作需要各个组成部分搭配使用。人可以通过大脑来统筹管理自己的手脚，机器人也是一样。但是机器人没有人一样的生物电信号传输，协调工作需要手脚之间相互传递信息，同时各个部件都可能涉及到复杂的操作，要保证工作时能相互独立，并行进行，由此我们引出了节点。 节点就像是os当中的进程，各个节点的工作相对独立。我们可以自己编写节点，然后使用rosrun指令来运行。 那么节点之间是怎样协作的呢？我们举一个具体的例子：比如我们有一个“眼睛”节点，它的作用是连接摄像头，实时的获取图像。这里涉及了两个问题： 我要怎么把图像传给其它有...</summary> </entry> </feed>
