ROS教程——1.1 入门

ROS1/一代机器人系统 少儿编程 598浏览 0评论
Ros教程01

 

目  录

  • ROS简介

  • ROS主要特征

  • ROS主要概念

  • 基本的ROS命令

  • Turtlesim Demo


The Problem

随着科技飞速发展,尤其是人工智能技术的日新月异,研发出的机器人平台不可胜数,如下图所示。但是各平台之间缺乏统一的标准,不利于跨平台交互、技术交流、沿承和应用,在此背景下,ROS应运而生。

ROS教程——1.1 入门


ROS是什么?

  • ROS是开源的机器人操作系统(robot operating sySTEM, ROS)

  • ROS是一系列软件库和工具的集合,有助于构建跨多种机器人平台的机器人应用。

  • 2007年,由Stanford的人工智能实验室开发,后由Willow Garage继续维护和开发。

  • 2013年起,由OSRF (Open Source Robotics Foundation)进行管理。


ROS的主要特征

ROS教程——1.1 入门


如上图所示,ROS具有两方面的属性:

  • 作为操作系统,提供标准的系统服务:

  • 硬件抽象

  • 底层设备控制

  • 实现常用的功能

  • 进程之间的消息传递

  • 包(package)的管理

  • 一套用户贡献的软件包(组织成称为堆栈的集合),实现常见的机器人功能,如SLAM,路径规划,感知,仿真等。


ROS Wiki

•http://wiki.ros.org/

•Installation: http://wiki.ros.org/ROS/Installation

•Tutorials: http://wiki.ros.org/ROS/Tutorials

•ROSTutorial Videos: http://www.youtube.com/playlist?list=PLDC89965A56E6A8D6


使用ROS的机器人

ROS教程——1.1 入门

http://wiki.ros.org/Robots


ROS的分布式架构

ROS教程——1.1 入门


ROS 核心概念

  • Nodes(节点)

  • Messages and Topics(消息和话题)

  • Services(服务)

  • ROS Master(ROS主控)

  • Parameters(参数)

  • Stacks and packages(堆栈和包)


ROS Nodes(节点)

  • 单用途可执行程序

例如: 传感器驱动程序,执行器驱动程序,地图构建,路径规划,UI等。

  • 模块化设计

单独编译,执行和管理

  • 节点使用ROS客户端库编写

roscpp –C ++客户端库

rospy –Python客户端库

  • 节点可以发布或订阅话题

  • 节点也可以提供或使用服务


ROS Topics(话题)

  • 节点通过发布消息到话题实现与其它节点的通信

  • 发布/订阅模型: 1-N 广播

ROS教程——1.1 入门


ROS Computation Graph

ROS教程——1.1 入门


ROS Messages(消息)

  • 用于节点间通信的严格类型的数据结构
  • 例如,geometry_msgs / Twist用于表示速度分解为线性和角度部分:
Vector3 linear
Vector3 angular
  • Vector3是另一种消息类型,由以下组成:

 

float64 x
float64 y
float64 z


ROS Services(服务)

  • 同步节点间事务 / RPC 

  • 服务/客户端模型:1对1请求响应 

  • 服务角色: 

执行远程计算

触发功能/行为

  • 例如:

map_server / static_map – 检索机器人用于导航的当前网格图


ROS Master(主控)

  • 使能ROS节点以互相定位
  • 将其视为ROS目录服务,有点类似DNS,为节点,主题,服务等提供命名和注册服务。

ROS教程——1.1 入门


Parameter Server(参数服务器)

  • 一个可通过网络API访问的共享的多变量字典。
  • 最适用于静态非二进制数据,如配置参数。
  • 在ROS主控内运行

ROS教程——1.1 入门


ROS Packages(包)

  • ROS中的软件以包的形式组织。
  • 一个(软件)包含一个或多个节点并提供ROS接口
  • 大多数ROS(软件)包都在GitHub中

ROS教程——1.1 入门


ROS Package SySTEM

ROS教程——1.1 入门


ROS Important Packages

 

 

TF                      # 维护多个坐标系之间的变换关系
actionlib           # 提供标准化的接口用于处理优先任务
gmapping         # 提供使用网格地图的基于激光的SLAM
amcl                  # 用于机器人在2D运动的概率定位系统
move_base      # 实现移动到目的地的动作
stage_ros: 2D  # 多机器人仿真器

 


ROS 版本发布

ROS教程——1.1 入门

http://wiki.ros.org/Distributions


ROS 基本命令

  • roscore
  • rosrun 
  • rosnode 
  • rostopic

roscore

“roscore”是使用ROS时应该首先运行的命令,该命令将开启:

  • ROS Master(主控)
  • ROS 参数服务器
  • rosout日记节点

 

ROS教程——1.1 入门

 

rosrun

使用rosrun运行节点

使用方法:

rosrun <package> <executable>

使用示例:

rosrun turtlesim turtlesim_node


Demo – Turtlesim

分别在3个Terminal窗口运行如下指令:

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

ROS教程——1.1 入门


rosnode

使用该命令输出关于ROS节点的调试信息,包括发布、订阅和联接信息。

命令:

rosnode list    #列出活动节点
rosnode ping    #测试节点联接
rosnode info    #打印节点信息
rosnode kill    #终止运行的节点
rosnode machine #列出运行于某个机器的节点

比较常用的是rosnode list和rosnode info

ROS教程——1.1 入门


rostopic

输出话题的信息,能够发布消息到话题上。

常用命令及功能

rotopic list                  #列出活动话题
rostopic echo /topic          #打印话题消息到窗口
rostopic info /topic          #打印关于话题的信息
rostopic type /topic          #答应话题发布的消息的类型
rostopic pub /topic type args #发布数据到话题

ROS教程——1.1 入门


如何发布消息数据到ROS话题?

使用rostopic pub命令可以发布消息到话题

例如,让turtle以0.2m/s的速度前行,可以发布cmd_vel消息到话题: /turtle1/cmd_vel: 

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'

还可以仅仅指定线速度x:

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist '{linear: {x: 0.2}}'

ROS教程——1.1 入门


课后作业

  • 安装ROS(参考之前的文档:如何安装ubuntu和ROS
  • 阅读并实践所有初学者级别的教程:http://wiki.ros.org/ROS/Tutorials
  • 发布10Hz的命令到turtlesim,让其向后运动。

 


 

后台发送”ROS教程1.1″即可获得本文对应的PPT。

 

转自公众号:
Robot404

您必须 登录 才能发表评论!