首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ROS教程——1.1 入门

目 录

ROS简介

ROS主要特征

ROS主要概念

基本的ROS命令

Turtlesim Demo

The Problem

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

ROS是什么?

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

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

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

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

ROS的主要特征

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

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

硬件抽象

底层设备控制

实现常用的功能

进程之间的消息传递

包(package)的管理

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

ROS Wiki

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

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

使用ROS的机器人

ROS的分布式架构

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 Computation Graph

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,为节点,主题,服务等提供命名和注册服务。

Parameter Server(参数服务器)

一个可通过网络API访问的共享的多变量字典。

最适用于静态非二进制数据,如配置参数。

在ROS主控内运行

ROS Packages(包)

ROS中的软件以包的形式组织。

一个(软件)包含一个或多个节点并提供ROS接口

大多数ROS(软件)包都在GitHub中

ROS Package System

ROS Important Packages

TF #维护多个坐标系之间的变换关系

actionlib #提供标准化的接口用于处理优先任务

gmapping #提供使用网格地图的基于激光的SLAM

amcl #用于机器人在2D运动的概率定位系统

move_base # 实现移动到目的地的动作

stage_ros: 2D # 多机器人仿真器

ROS 版本发布

ROS 基本命令

roscore

rosrun

rosnode

rostopic

roscore

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

ROS Master(主控)

ROS 参数服务器

rosout日记节点

rosrun

使用rosrun运行节点

使用方法:

rosrun

使用示例:

rosrun turtlesim turtlesim_node

Demo - Turtlesim

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

roscore

rosrun turtlesim turtlesim_node

rosrun turtlesim turtle_teleop_key

rosnode

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

命令:

rosnodelist #列出活动节点

rosnodeping #测试节点联接

rosnodeinfo #打印节点信息

rosnodekill #终止运行的节点

rosnodemachine #列出运行于某个机器的节点

比较常用的是rosnode list和rosnode info

rostopic

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

常用命令及功能

rotopic list #列出活动话题

rostopicecho /topic #打印话题消息到窗口

rostopicinfo /topic #打印关于话题的信息

rostopictype /topic #答应话题发布的消息的类型

rostopicpub /topic type args #发布数据到话题

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

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

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

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist ', angular: }'

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

rostopic pub /turtle1/cmd_vel geometry_msgs/Twist '}'

课后作业

安装ROS(参考之前的文档:如何安装ubuntu和ROS)

阅读并实践所有初学者级别的教程:http://wiki.ros.org/ROS/Tutorials

发布10Hz的命令到turtlesim,让其向后运动。

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

欢迎关注交流,搜”Robot404”或扫描如下二维码:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180519G0FLLW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券