ROS 简介

ROS简介

核心概念

ROS(Robot Operating System)是一个开源的机器人操作系统。它提供了一系列的软件库和工具,旨在帮助开发人员创建和运行机器人应用程序。

ROS的设计目标是促进机器人软件的开发、共享和重用。它提供了一个灵活的框架,使开发人员能够编写独立的模块化程序,这些程序可以通过ROS的通信机制相互交互。ROS采用了分布式架构,允许不同的软件模块在多个计算机上运行,并通过网络进行通信。

是一种用于编写机器人软件的灵活框架,工具,库,协议的集合。

提供开发平台,工具及生态给开发人员

一种中间件框架

主要目标 ”提高机器人软件复用率”

ROS的核心概念是节点(Nodes)、话题(Topics)和服务(Services)。节点是独立运行的ROS进程,可以执行各种任务。话题是节点之间进行异步通信的机制,节点可以通过发布和订阅话题来交换消息。服务是节点之间进行同步通信的机制,节点可以请求和提供服务来完成特定的任务。

连接了操作系统和你开发的ROS应用程序, 一个中间件, 基于ROS的应用程序之间建立起了沟通的桥梁, 所以也是运行在Linux上的运行环境, 在这个环境上, 机器人的感知、 决策、 控制算法可以更好的组织和运行。

ROS Driver 流程

节点(Node)

通讯机制 - 松耦合分布式通信框架, 每个具体的功能模块都可以抽象成一个节点

执行具体任务的进程、独立运行的可执行文件

不同节点可使用不同的编程语言,可分布式运行在不同的主机上

节点在系统中的名称必须是唯一的。

例:Ros驱动是一个Node, 发布数据到topic上,然后rviz也是一个Node, 来订阅topic上的数据来显示

节点管理器(ROS Master)

为Node提供命名和注册服务

跟踪和记录Topic/Serive通信,辅助节点相互查找、建立连接

提供参数服务器,节点使用此服务器存储和检索运行时的参数

Node可以认为一个功能模块,完成独立功能的可执行文件

Master 为Node提供注册、建立连接等管理功能

ROS1中的roscore,就是用来启动ROS Master的

使用roslaunch命令的时候,会自动检查有没有ROS Master, 没有的话会自己启动一个

话题(Topic)–异步通信机制

节点之间用来传输数据的总线

使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者不唯一

消息(Message)

具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型

使用编成语言无关的.msg文件定义,编译过程中生成对应的代码文件

话题理解为数据管道,消息就是传递的数据结构

服务(Service)–同步通信机制

使用C/S模型, 客户发送请求数据,服务器处理完后应答数据

使用编程语言无关的.srv文件定义请求和应答数据结构,编译过程中生成对应的代码文件

Service

类似web访问

文件系统

功能包(Package): ROS软件中的基本单元,包含节点源码、配置文件、数据定义等

功能包清单(Package manifest): 记录功能包的基本信息,包含作者信息、许可信息、依赖选项、编译标志等

元功能包(Meta Packages): 组织多个用于同一个目的功能包

文件系统

学习资料:

cn - ROS Wiki

古月居·ROS入门21讲

Nodelet: ROS技术:Nodelet学习

安装

一键安装(推荐)

wget http://fishros.com/install -O fishros && . fishros
// 支持noetic(ROS1) foxy(ROS2) galactic(ROS2) rolling(ROS2) iron(ROS2) humble(ROS2)

官网教程安装

https://docs.ros.org/

https://www.bilibili.com/video/BV1zt411G7Vn?p=5&vd_source=daa00443670b5d4e3c49ff43f6b3301f

使用

设置环境变量

source /opt/ros/<ros_version>/setup.bash

为了每次打开新终端时自动设置ROS环境变量,可以将以下命令添加到您的bash配置文件

vim ~/.bashrc
echo "ros:foxy(1) galactic(2) noetic(3) ?"
read choose
case $choose in
1) source  /opt/ros/foxy/setup.bash;;
2) source  /opt/ros/galactic/setup.bash;;
3) source  /opt/ros/noetic/setup.bash;;
esac

ROS常用命令

//启动 ROS Master
roscore

//可视化工具
rviz 

//录制/回放bag包
rosbag record -a                                 // 录制当前所有的topic, 以时间戳命名文件夹
rosbag record -o xxx  /topic1 /topic2        // 录制指定topic消息(可多选)  -o是xxx_时间戳.bag,-O就是xxx.bag
rosbag play xxx.bag                              // 回放bag包
rosbag play xxx.bag -d <delay time>              //延时指定时间后,回放


//查看实时消息数据
rostopic list                                    // 查看当前正在通信的topic
rostopic echo /iv_points/header                  // 查看你指定topic内容

rqt_graph                            //QT节点可视化工具
rosnode list                         //列出当前节点
rosnode info nodename                //node信息
rosservice list                      //查看服务

rosrun turtlesim turtlesim_node     //启动小海龟仿真器
rosrun turtlesim turtle_teleop_key  //启动小海龟控制节点
rosrun rqt_reconfigure rqt_reconfigure   // rqt参数配置工具介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值