【ROS】鱼香ROS2学习笔记一

一、ROS是什么(核心定义)

  • 全称:ROS = Robot Operating System,即机器人操作系统。
  • 关键澄清:ROS 不是像 Windows、Linux 那样的"完整操作系统"(不具备独立运行的系统内核),而是一套 机器人开发框架/工具集。
  • 核心作用:为机器人开发提供现成的工具、接口和规范,帮开发者快速搭建机器人软件系统,无需从零编写所有底层代码(如通信、控制等基础模块),提高开发效率。

二、ROS 分布式架构类比(便于理解)

  • 整个机器人软件系统 = 一个完整的"ROS 部落"
  • 节点(Node)= 部落里的每一个人/每一个具体职业(如农民、工匠、医生),各自负责一项具体工作。
  • 话题、服务、动作 = 部落成员之间的交流方式(如说话、书信、协作干活),实现节点之间的信息传递和配合。
  • 功能包(Package)= 部落里的分工小组(如农耕小组、手工业小组),将相关的节点、代码、配置文件整合在一起,实现特定的功能模块。
  • 核心特点:整个 ROS 系统是分布式、模块化的,每个"成员"(节点)、"小组"(功能包)各司其职,又能通过"交流方式"(话题/服务等)互相配合,完成整个机器人的复杂任务。

三、ROS 能做什么(核心应用场景)

ROS 是当前机器人领域最主流的开发平台,应用场景覆盖广泛,主要包括:

  • 移动机器人:AGV(自动导引车)、家用扫地机器人、工业巡检机器人、无人小车等。
  • 机械臂:工业机械臂(抓取、分拣、上下料)、协作机械臂、教学机械臂等。
  • 其他智能设备:自动驾驶车辆、无人机、服务机器人(如酒店送餐机器人)。
  • 科研与教学:高校机器人相关专业教学、科研项目开发、机器人竞赛(如RoboMaster、RoboCup)。
  • 工业落地:工业机器人自动化生产线、智能仓储机器人等产品级开发。

四、ROS1 与 ROS2 的区别

(1) ROS1

  • 优势:经典版本,生态非常成熟,相关教程、工具、第三方包数量多.
  • 适用场景:主要用于学习入门、科研项目、旧的机器人项目维护。
  • 不足:实时性较差、安全性不足、不支持多机协作(或协作难度高),难以满足工业级、产品级的严格需求。

(2) ROS2

  • 优势:新一代 ROS 框架,基于 DDS 通信协议开发,实时性更强、系统更稳定、支持多机协作、安全性更高。
  • 适用场景:工业级开发、产品级机器人落地、需要多机协同的复杂项目,是目前机器人开发的主流选择。

五、鱼香课程大致内容方向(从基础到实战)

  • 基础阶段:ROS 2 核心概念(节点、话题、服务、动作、参数等)。
  • 编程阶段:Python / C++ 两种语言的 ROS 2 开发实操(对应不同需求)。
  • 仿真阶段:Gazebo 等仿真工具的使用,实现机器人虚拟环境调试。
  • 实战阶段:实体机器人开发(小车、机械臂)、SLAM 地图构建、自主导航等完整项目。
  • 核心目标:从"能跑通简单代码"到"能独立完成机器人项目开发",贴合实际工作需求。

六、学习笔记

  • 核心原则:一定要动手实操,ROS 是"练出来"的,只看视频、不敲代码,永远学不会。
  • 学习方法:跟着视频一步一步敲代码、编译、运行,遇到报错不要逃避,主动排查问题。
  • 习惯培养:遇到问题先查日志、查命令手册,培养工程思维和问题排查能力,为后续复杂开发打下基础。
  • 节奏把控:循序渐进,先理解核心概念,再动手写程序,最后尝试在实体机器人上调试,不要急于求成。

七、总结

ROS 2 是新一代机器人开发框架,并非独立操作系统,而是一套工具集;其采用分布式"部落式"节点架构,实时性、稳定性更强,适合工业与产品级开发;本课程从基础概念入手,循序渐进,手把手带零基础新手入门,最终掌握 ROS 2 实战开发能力。

相关推荐
-Springer-2 小时前
STM32 学习 —— 个人学习笔记11-1(SPI 通信协议及 W25Q64 简介 & 软件 SPI 读写 W25Q64)
笔记·stm32·学习
weixin_586061462 小时前
C#怎么通过反射获取类属性_C#如何动态读取元数据【进阶】
jvm·数据库·python
疏星浅月2 小时前
数据对齐的底层原理与性能优化
linux
Jurio.2 小时前
本机开发 + 多机执行的极简远端运行工具
linux·git·python·github·远程工作
skywalk81632 小时前
pytest测试的时候这是什么意思?Migrating <class ‘kotti.resources.File‘>
前端·python
overmind2 小时前
oeasy Python 121[专业选修]列表_多维列表运算_列表相加_列表相乘
java·windows·python
m0_678485453 小时前
CSS如何控制表格单元格边框合并_通过border-collapse实现
jvm·数据库·python
m0_748839493 小时前
如何用组合继承模式实现父类方法复用与子类属性独立
jvm·数据库·python
qq_334563553 小时前
PHP源码是否依赖特定芯片组_Intel与AMD平台差异【操作】
jvm·数据库·python