当前位置: 首页 > article >正文

Day3:拆箱ROS2|一起搭建机器人开发车间

Day1:一起学习了ros2是什么以及ros2为机器人开发提供了哪些核心功能.Day2一起安装了ros2。接下来自然会想到如果现在要用ROS2开发一个机器人应该怎样开始下面我们以雷达小车机器人举例说明1、需要为机器人创建一个【工作空间】作为顶层容器统一管理雷达小车所有代码资源1【工作空间】功能说明项目隔离为雷达小车创建专属工作空间避免与其他机器人系统冲突集中构建将所有相关功能包集中管理如雷达驱动、运动控制、导航。通过colcon统一编译传感器驱动、控制算法、导航模块等关联功能包环境管理install/setup.bash激活后所有功能包和节点可直接调用2具体操作创建名为 “XXXX” 的工作空间mkdir-pXXXX/src 例如mkdir-pxiyue_robot/src3特殊说明/src里面存放功能包及源码2、根据机器人的模块设计在工作空间中创建【功能包】模块化封装雷达小车的功能单元1【功能包】功能说明功能解耦雷达小车典型划分雷达驱动包处理雷达数据采集运动控制包控制电机和底盘导航包路径规划与避障机器人模型包URDF描述与传感器配置接口标准化通过package.xml声明依赖关系如雷达驱动依赖sensor_msgs独立开发每个功能包可单独编译测试2具体操作进入src目录cdXXXX/src ros2 pkg create XXXXX --build-type ament_python 例如cdxiyue_robot/src ros2 pkg create firstpkg --build-type ament_python避坑手记功能包需要在src目录下创建。创建的时候可以选择python的包或者c的3特殊说明创建功能包后新增了一些文件夹和文件看看都有什么用a. 新增文件夹src/package_name/package_name代码目录存放Python模块代码目录名与功能包名一致。包含init.py标识该目录为Python包。业务代码文件b. 新增文件夹resource/package_name资源文件存放配置文件YAML、模型、图标等非代码资源。c. 新增文件夹test/测试脚本包含代码质量检查工具如test_flake8.py检查代码风格test_pep257.py检查文档字符串确保代码符合ROS2规范。d. 新增文件package.xml元数据描述定义包名、版本、作者、维护者、许可证等基础信息。依赖声明通过标签声明运行时依赖如rclpy、std_msgsbuild_depend声明编译依赖test_depend声明测试依赖e. 新增文件setup.py安装配置定义Python包的安装规则通过setuptools管理。入口点entry_points将Python代码映射为可执行命令。例如可执行文件名字为demo_node,功能包名demo_pkg源代码python文件名字demo_node。后续运行ros2 run demo_pkg demo_node时候就是运行可执行文件里面的main函数依赖管理通过install_requires声明Python依赖避坑手记可执行文件的名字可以随便起可以和.py文件名字不一样。f. 新增文件setup.cfg路径配置指定可执行文件的安装路径确保ros2 run能定位到命令。避坑手记Install_scripts这句是明确可执行文件的安装路径。当使用colcon build构建功能包时setup.cfg的路径配置会被ament_python构建工具解析将可执行文件和库安装到install目录下的指定位置3、在功能包中根据要实现的功能创建【python】可执行文件1具体操作在功能包同名文件夹下创建XXXX.py文件可以下载个vscode创建或者用命令行例如sudonanofirst.py避坑手记创建之前要进入src/package_name/package_name目录下然后创建4、在python文件中创建【节点】并运行。1【节点】功能说明单一职责原则每个节点负责自己的单一任务通信拓扑设计话题、服务、动作、参数2具体操作a. 在python文件中写入程序节点通过rclcpp库创建例如importrclpyfromrclpy.nodeimportNodeclassfirstNode(Node):def__init__(self):super().__init__(first_node)self.get_logger().info(Hello ROS2 World!)defmain(argsNone):rclpy.init(argsargs)nodefirstNode()rclpy.spin(node)node.destroy_node()rclpy.shutdown()if__name____main__:main()b. 添加依赖声明例如修改 firstpkg/package.xmldependrclpy/dependc. 配置安装脚本例如修改 firstpkg/setup.pyfirstexe firstpkg .first:main,d. 编译功能包例如cdxiyue_robot#假如没有colcon需要单独安装一下sudoaptinstallpython3-colcon-build-common-extensions#编译colcon build避坑手记colcon build 是 ROS 2 的核心构建工具编译的核心作用是将源代码转化为可执行程序、库和配置文件并管理依赖关系与环境配置。编译的时候必须在工作空间文件夹下执行不可以在src目录下。编译前记得修改package.xml添加依赖修改setup.py添加可执行文件。e. 修改环境变量例如sourceinstall/setup.bash避坑手记每一个打开的新终端都需要执行这条命令才可以成功使用ros2 run否则会报错f. 启动可执行文件例如ros2 run firstpkg firstexe3特殊说明编译后新增了一些文件夹和文件看看都有什么用a. 新增文件夹build存放中间构建文件如对象文件.o、CMake 缓存、编译日志等。每个包有独立子目录如 build/your_package用于加速后续构建。b. 新增文件夹log存储构建日志包含错误、警告和进度信息每个构建生成独立子目录如 log/build_时间戳c. 新增文件夹Install:存放最终输出文件包括可执行文件、库.so/.dll、头文件、配置文件等。d. 新增一个轻量级的启动脚本路径为 install/包名/lib/包名/setup.py中写的可执行文件名定位 Python 解释器和关联的包路径。调用目标函数如 my_package.module:main允许直接通过终端运行命令无需输入 .py 后缀e. 新增文件install/包名/lib/python3.x/site-packages/包名/ .py 源代码ROS 2 的 Python 包需要被其他 Python 模块导入例如在其他节点或工具中Setuptools 将包源码安装到 site-packages这是 Python 的标准包搜索路径f. 新增文件setup.bash通过 source install/setup.bash 激活环境。(setup.bash设置整个工作空间的环境变量适用于运行所有包)总结1机器人设计开发流程a. 创建工作空间建立代码容器b. 创建功能包划分模块雷达、控制、导航c. 实现节点雷达节点发布 /scan数据类型sensor_msgs/LaserScan控制节点订阅 /cmd_vel数据类型geometry_msgs/Twist导航节点订阅/scan并发布/cmd_vel2机器人关键设计原则a. 高内聚低耦合每个功能包只处理单一职责如雷达驱动包不涉及运动控制。b. 标准化接口使用ROS2标准消息如LaserScan/Twist保证模块兼容性。c. 可扩展性新增传感器时只需添加新功能包如camera_pkg订阅已有话题。通过工作空间组织代码→功能包划分功能→节点实现具体逻辑雷达小车的模块化设计清晰且易于维护。题外问题1一个功能包是否可以包含多个可执行文件可以设计实例雷达小车中的 navigation 功能包可包含path_planner路径规划可执行文件obstacle_avoidance避障可执行文件localization定位可执行文件2一个可执行文件是否可以包含多个节点可以但有条件设计实例雷达小车的 sensor_fusion 可执行文件可同时运行激光雷达数据处理节点IMU数据处理节点注意事项节点间共享同一进程内存空间需处理线程安全问题调试难度高于单节点单进程模式3一个节点是否可以发布多个话题可以常规操作设计实例雷达小车的控制节点可能发布/motor_speed电机转速指令/brake_signal刹车信号/status_led状态指示灯控制

相关文章:

Day3:拆箱ROS2|一起搭建机器人开发车间

Day1:一起学习了ros2是什么以及ros2为机器人开发提供了哪些核心功能. Day2一起安装了ros2。 接下来自然会想到如果现在要用ROS2开发一个机器人,应该怎样开始? 下面我们以雷达小车机器人举例说明: 1、需要为机器人创建一个【工作空间】作为顶层…...

“为什么我的NotebookLM Agent总在胡说?”——20年NLP老兵手把手调试LLM引用可信度的5个黄金检查点

更多请点击: https://intelliparadigm.com 第一章:NotebookLM Agent研究辅助 核心能力与适用场景 NotebookLM Agent 是 Google 推出的基于私有文档理解的 AI 助手,专为研究者设计。它支持上传 PDF、TXT、Markdown 等格式的研究资料&#xf…...

本地部署AI代码解释器:基于大模型的对话式编程实践指南

1. 项目概述:当本地代码解释器遇上大模型最近在折腾一个挺有意思的项目,叫local-code-interpreter。这名字听起来有点学术,但说白了,它就是一个能让你在自己电脑上,通过自然语言对话来编写、执行和调试代码的“智能助手…...

Degrees of Lewdity中文本地化技术解析:从安装到优化的实践指南

Degrees of Lewdity中文本地化技术解析:从安装到优化的实践指南 Degrees of Lewdity作为一款备受欢迎的游戏,其英文界面一直是中文用户体验的主要障碍。本文提供的Degrees of Lewdity中文本地化技术解析,将系统指导您完成游戏汉化的全过程&a…...

Starter计划配额耗尽预警失效?我们逆向解析其API响应头,发现3个未文档化的速率控制暗门

更多请点击: https://intelliparadigm.com 第一章:Starter计划配额耗尽预警失效?我们逆向解析其API响应头,发现3个未文档化的速率控制暗门 在对 Starter 计划的 API 调用行为进行深度监控时,我们观察到配额耗尽告警频…...

自动驾驶卡车软件平台:技术架构、商业模式与商业化落地解析

1. 自动驾驶卡车软件平台全景解析最近几年,自动驾驶卡车这个赛道真是热闹非凡,感觉每周都有新融资、新合作或者新路测的消息出来。作为一个在汽车电子和软件行业摸爬滚打了十几年的老工程师,我一直在密切关注这个领域的动态。自动驾驶卡车&am…...

大模型上下文长度对Agent的影响:从4K到1M的质变

目录大模型上下文长度对Agent的影响:从4K到1M的质变引言:工作台革命一、上下文窗口演进史:从4K到1M的百倍跃迁1.1 时间线上的技术里程碑1.2 为什么2025年成为“百万Token元年”?二、长上下文的质变:Agent能力的三重跃迁…...

从零构建生成式AI项目:RAG、智能体与微调实战指南

1. 从零到一:构建端到端生成式AI项目的全景图如果你是一名开发者或技术爱好者,最近打开GitHub,大概率会被各种以“RAG”、“Agent”、“Fine-tuning”为标题的项目刷屏。生成式AI,尤其是大语言模型,已经从实验室的尖端…...

资深运维的Helm Chart私藏库:高质量K8s应用部署实战指南

1. 项目概述:一个资深运维的Helm Chart私藏库如果你和我一样,长期在Kubernetes(K8s)的“牧场”里当“牛仔”(Sysop),那你肯定明白,找到一个质量上乘、维护及时、配置合理的Helm Char…...

构建AI智能体技能超市:标准化工作流与多平台适配实践

1. 项目概述:一个面向AI智能体的“技能超市”如果你和我一样,每天都在和Codex、Claude、Cursor这些AI助手打交道,那你肯定也遇到过这样的场景:想让AI帮你生成一份规范的Git提交信息、自动更新文档索引,或者为一个新项目…...

从高通市值超越英特尔看半导体IP价值与Fabless模式

1. 从一则旧闻谈起:当高通市值超越英特尔2012年11月9日,对于全球半导体行业而言,是一个值得被记住的日子。那天,一则消息在业界引发了不小的震动:高通(Qualcomm)的市值首次超越了英特尔&#xf…...

保姆级教程:用Lumerical FDTD参数扫描功能,分析WO3薄膜厚度对反射率的影响

从零到精通:Lumerical FDTD参数扫描在薄膜光学设计中的实战指南 在光电材料研究和器件设计中,薄膜厚度的精确控制往往直接影响器件的光学性能。以三氧化钨(WO₃)薄膜为例,其厚度变化会显著改变反射光谱特性&#xff0c…...

中文知识管理利器:本地化部署与向量检索实践指南

1. 项目概述:一个面向中文用户的知识管理利器 最近在折腾个人知识库,发现了一个挺有意思的开源项目,叫 RomeoSY/zh-knowledge-manager 。乍一看名字,你可能觉得这又是一个“知识管理”工具,市面上不是有 Notion、Ob…...

Hermes Agent:引爆企业AI革命!自进化智能体协作实战与落地指南

Hermes Agent 是一款自进化AI代理系统,具备完整学习循环、跨会话记忆、用户建模等核心特性。本文深入解析其架构、多智能体协作机制及自进化能力,并通过智能客服、DevOps自动化、数据分析等企业级案例,展示如何构建高效AI代理系统。同时提供性…...

Re:Linux系统篇(九)工具篇 · 一:3分钟学会yum,让软件安装像呼吸一样简单

◆ 博主名称: 晓此方-CSDN博客 大家好,欢迎来到晓此方的博客。 ⭐️Linux系列个人专栏: 【主题曲】Linux ⭐️Re系列专栏:我们思考 (Rethink) 我们重建 (Rebuild) 我们记录 (Record) 文章目录概要&序論一、在 Linux 环境下…...

基于PanoSim5.0虚拟仿真平台的自主代客泊车AVP系统开发教程

1. PanoSim5.0与AVP系统开发入门指南 第一次接触PanoSim5.0时,我和大多数开发者一样被它丰富的功能模块震撼到了。这个国产仿真平台不仅支持高精度的车辆动力学建模,还能实现逼真的传感器仿真和环境渲染。对于自主代客泊车(AVP)这种需要反复测试的场景来…...

Narrative-craft:工程化叙事框架的设计、实现与集成指南

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“Narrative-craft”,作者是chengjialu8888。光看名字,你可能会觉得这又是一个讲“叙事”或者“故事创作”的抽象工具。但点进去仔细研究后,我发现它远不止于此。这…...

Kali+MSF 安全攻防实操|Windows 渗透完整流程教程

入侵电脑,并没有我们想象的那么难,今天我们的文章主要是给一些基础比较薄弱的小伙伴们准备的,如果你从来没有利用msf进入过对方计算机,就赶紧找个风和日丽的下午,跟着博主一起来试试吧~ 01 什么是msf 演示环境 02 …...

IGH-1.6.2-创龙RK3506-RT-----8-----my_master.c讲解【应用层PDO读写】

本文解决三个应用层问题: 第一,如何从 TxPDO 里读取 3 个 KEY。 第二,如何向 RxPDO 写入 5 个 LED。 第三,如何新增一个 UINT8 数据 PDO。 当前工程里的过程数据指针是 domain_pd,它是应用层读写 PDO 的基础。LED 和 KEY 的字节偏移、bit 位置,都是前面注册 PDO entry …...

基于GitHub Actions的AI智能体部署指南:exoclaw-github实战解析

1. 项目概述:在GitHub里养一只会看代码的“螃蟹”如果你在GitHub上维护过开源项目,肯定遇到过这样的场景:新开的Issue描述不清,得来回问好几轮才能定位问题;PR提交上来,你得逐行审阅代码,既费时…...

ARM ETE Trace ID寄存器详解与应用

1. ARM ETE Trace ID寄存器概述在ARM架构的嵌入式调试系统中,Trace ID寄存器(TRCIDR)是嵌入式跟踪宏单元(ETE)的核心组件。这些寄存器提供了非侵入式的实时程序流分析能力,对于芯片验证、性能优化和系统调试具有不可替代的价值。ETE的Trace ID寄存器从TR…...

过零电压比较器基础知识及Multisim电路仿真

目录 2.9 过零电压比较器 2.9.1 过零电压比较器基础知识 1.电路结构与核心定义 2. 工作原理 3. 核心特点与用途 2.9.2 过零电压比较器Multisim电路仿真 2. 仿真逻辑与工作原理 3. 波形解读(右侧瞬态分析结果) 摘要:过零电压比较器是一种阈值电压为0V的单限比较器,利…...

OptiSearch:浏览器扩展实现AI与搜索引擎的无缝集成

1. 项目概述:当搜索遇到AI,一次查询,双重答案作为一名长期在信息检索和效率工具领域折腾的开发者,我一直在思考一个问题:我们每天在搜索引擎和AI聊天机器人之间要切换多少次标签页?搜索一个技术问题&#x…...

RAG:嵌入模型评估与选型

在RAG系统中,嵌入模型是检索质量的关键组件,它决定了系统能否真正“理解”用户意图并从海量知识中精准召回相关信息,其语义匹配精度直接决定了整个RAG的性能上限。 一、嵌入模型评估指标 1.1 公开基准 MTEB v2 是目前全球公认最权威的大规…...

AI技能开发脚手架:从零构建大模型应用的标准化起点

1. 项目概述:一个为AI技能开发量身定制的脚手架如果你正在或打算开发一个基于大语言模型的AI技能(Skill),无论是想集成到ChatGPT的GPTs里,还是想构建一个独立的AI Agent,那么你大概率会遇到一个共同的起点问…...

Gemini3.1Pro发布:多模态AI再进化

如果你最近也在跟踪 2026 年的 AI 动态,应该会发现一个很明显的变化:大模型的竞争重点,已经从“会不会生成内容”,转向“能不能真正理解复杂任务并参与工作流”。像KULAAI(dl.877ai.cn) 这类 AI 聚合平台&a…...

Nature级研究启动前必做这5步:Perplexity智能检索校准清单(20年顶刊审稿人压箱底工作流)

更多请点击: https://intelliparadigm.com 第一章:Nature级研究启动前的智能检索认知革命 在高影响力科研项目(如 Nature、Science 级别)立项初期,传统关键词检索已无法应对跨学科文献爆炸、语义歧义与隐性知识关联等…...

ARM HCR_EL2寄存器解析与虚拟化控制

1. ARM HCR_EL2寄存器架构解析HCR_EL2(Hypervisor Configuration Register)是ARMv8/v9架构中用于控制虚拟化行为的关键系统寄存器。作为Hypervisor的主要控制接口,它定义了EL2对低特权级(EL1/EL0)执行环境的监控策略。…...

Markdown元数据自动化管理:mdac-filler工具核心功能与实战指南

1. 项目概述:一个为Markdown文档自动填充元数据的工具如果你经常用Markdown写文档、博客或者项目README,肯定遇到过这样的场景:每次新建一个文件,都得手动去文件头部敲一堆“Front Matter”元数据,比如标题、日期、标签…...

开源状态监控工具openclaw-status:从原理到部署的完整实践指南

1. 项目概述:一个开源状态监控工具的诞生最近在折腾一个开源项目,叫openclaw-status,是vibe-with-me-tools组织下的一个子项目。简单来说,这是一个用于监控和展示各种服务、应用、设备状态的工具。听起来是不是有点像那些商业化的…...