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

ROS是什么?

一、什么是ROS?为什么要用它?

定义:ROS(Robot Operating System,机器人操作系统)是一个用于机器人软件开发的开源中间件框架,主要提供消息通信、硬件抽象、驱动程序封装、调试工具等功能。

类比:可以把 ROS 想象成“机器人操作系统中的 Windows/Ubuntu”,它并不控制硬件,但提供了一个模块化通信与协作的平台,让你开发的各个功能模块(如感知、控制、路径规划)能够高效协作。

目标:

        降低机器人系统开发门槛;

        提供可复用的模块;

        方便集成第三方算法与传感器。

二、ROS 系统的核心结构

组件作用举例
Node(节点)功能模块的最小单元激光雷达节点、路径规划节点
Topic(话题)异步发布/订阅消息的通道/scan(激光数据),/cmd_vel(速度控制)
Msg(消息)Topic 中传输的数据类型sensor_msgs/LaserScan
Service(服务)同步请求-响应机制让机器人执行一次性任务,如"回原点"
Parameter全局参数服务器,存储配置传感器偏差、PID参数
Launch file启动多个节点并设置参数的 xml 脚本启动整个机器人系统
Master中央协调器,管理节点名称与注册ROS 核心组件之一

三、ROS 的运行机制

1. ROS Master

  • 所有节点都首先向 master 注册自己

  • master 不转发数据,只负责登记“谁是谁”

2. 节点通信方式

  • Topic:发布-订阅机制(类似广播)

  • Service:请求-应答机制(类似函数调用)

  • Action:带反馈的长时间任务(如导航、抓取)

3. 通信协议

  • 底层使用 TCPROS(基于 TCP)UDPROS(基于 UDP) 传输

四、ROS 开发实践

语言支持

  • ROS1 支持 C++ 和 Python,常用的是:

    • C++:效率高,用于控制与底层设备

    • Python:开发快速,适合逻辑与集成

一个典型流程

# 1. 创建工作空间
mkdir -p ~/catkin_ws/src && cd ~/catkin_ws && catkin_make# 2. 创建功能包
cd src && catkin_create_pkg my_robot std_msgs roscpp rospy# 3. 编写节点
vim src/my_robot/src/talker.cpp

典型代码:C++ 发布话题

ros::Publisher pub = nh.advertise<std_msgs::String>("chatter", 10);
std_msgs::String msg;
msg.data = "Hello ROS!";
pub.publish(msg);

五、ROS 与硬件驱动

如何让 ROS 控制真实机器人?

设备通常方式
激光雷达使用厂商提供的 ROS 驱动节点
相机使用 usb_camrealsense-ros 等包
电机控制板写串口通信程序,封装成 ROS 节点
IMU/GPS通常用 serialcan 接口,通过 ROS 发布

通常你需要写“驱动层节点(node)”,将硬件数据转换为 ROS 消息,并发布出来供其他模块使用。

http://www.dtcms.com/a/294778.html

相关文章:

  • 力扣面试150(39/150)
  • PyTorch中的词嵌入层(nn.Embedding)详解与实践指南
  • js生成器
  • 【黑产大数据】2025年上半年互联网黑灰产趋势年度总结
  • MySQL 8.0 OCP 1Z0-908 题目解析(33)
  • 【硬件】Fan in和Fan out
  • 《地牢探险者:深渊回响》(C++游戏,爆肝7.8个小时,全文14591字)(求一个免费的三连)
  • c# sqlsuger 获取关联表中一个值
  • SET: Spectral Enhancement for Tiny Object Detection(CVPR2025)
  • iOS WebView 远程调试实战 解决表单输入被键盘遮挡和焦点丢失问题
  • VRRP技术-设备备份技术
  • 5️⃣ set(集合)速查表
  • UI测试平台TestComplete:高效覆盖风险,加速持续交付
  • 情况:后端涉及到异步操作,数据还没更新完就直接向前端返回success的结果。
  • 如何做好性能测试?
  • 自定义类型:结构体,联合和枚举
  • 慢 SQL接口性能优化实战
  • 线路板快板厂家有哪些?
  • HCIA复习+网络类型及数据链路层协议复习
  • 【已解决】ubuntu执行sudo apt update镜像源更新失败:404 Not Found 没有 Release 文件。
  • 2025暑期—04环境设置-D2L+Jupyter
  • Java应用程序内存占用分析
  • Android root和完整性检测实现方案深度分析
  • 第三章 浏览器 【1. 文档对象模型(DOM)】
  • Pandas库全面学习指南(一)
  • 视觉大模型
  • Linux基本命令
  • 【读代码】Facebook Denoiser:开源端到端语音降噪系统原理与实战
  • 主流软件开发方法综述:从敏捷到开源
  • 表征工程与置信度增强:表征工程是提取隐藏层状态表征,LLM的置信度增强是优化的logist数值