1.0 ROS学习笔记之课程预览

  • 前言
    • 学习目的
    • 基本概念
    • 项目实践
    • 进阶
  • 开始学习
    • 主题概述
    • 主题实例
    • 服务概述
    • 服务实例
    • 行为概述
    • 行为实例
  • 调试工具RViz

前言

  • 5天学习ROS系列,分为基本概念学习,项目实践和进阶

学习目的

  • 基本概念章节学习创建和理解ROS程序所需的主要概念
  • 为你提供**理解和创建**ROS项目所需的工具和知识。你将学会移动机器人, 读取机器人传感器数据,使机器人执行规定任务,查看复杂数据(如点云、程序中的调试错误等)的可视化表示

基本概念

  • Unit 1: ROS 基本结构 是如何工作的?
  • Units 2 and 3: 什么是 ROS 主题 ,如何使用它们?
  • Units 4 and 5: 什么是 ROS 服务 ,如何使用它们?
  • Units 7 and 8: 什么是 ROS 行为 ,如何使用它们?
  • Unit 9: 如何使用 ROS 调试工具 (主要是Rviz)查找程序中的错误?

项目实践

  • 阶段 1: 创建一个主题发布器和订阅器来移动sphero机器人,读取其IMU和测距仪数据。
  • 阶段 2: 创建一个服务,被调用时,读取IMU数据,告诉你朝哪个方向走。
  • 阶段 3: 创建一个行为,被调用时,记录测距仪的数据,告诉你Sphero移动了多少距离。
  • 阶段 4: 创建一个全局程序,使用你创建的服务和行为读/写主题,使机器人走出迷宫。

进阶

  • 可以从 Robository下载仿真机器人模型,在一个安装在本地的ROS中进行实践
  • 你可以访问 ROS Wiki ,查看ROS的官方文档

开始学习

  • 本节对课程涵盖的单元进行简单的介绍,对所学内容进行初步了解。为了对机器人进行编程,需要掌握主题,服务和行为

主题概述

  • ROS通过主题处理几乎所有的通信。即使更复杂的通信系统,比如服务或行动,最终也依赖于主题。(主题处理通信
  • 通过ROS主题,你可以与你的机器人进行通信以便使其移动,可以从你的机器人传感器读取数据,还可以做很多其他事情。

  • WebShells 类似于Linux终端, 但是是在网页上的,可以将Linux命令发送到机器人计算机

    • 命令1:
      roslaunch publisher_example move.launch

    • 命令2:
      roslaunch publisher_example stop.launch

注 1: WebShell中按下Ctrl + C,停止程序。

注 2: 停止该程序后,机器人继续保持移动。要使它停止运动,必须运行另外一条指令。
即使使用“Ctrl+C”终止了命令,机器人仍将保持运动。这是由于机器人仍在监听你发布在该主题上的最后一条消息

主题实例

  1. 启动发布器(ROS程序)
  2. 发布器负责将消息写入主题
  3. 主题发送命令

工作原理:启动了一个发布器发布器是一个ROS程序,它将一条消息发布进一个主题(这里是/cmd_vel主题)。该主题用来向机器人底座发送速度命令。这样,通过该主题发送速度命令(消息),你就可以使机器人动起来。

为什么我停止了程序后机器人仍在保持运动? 这是由于该主题仍在监听发布的最后一条消息,该消息告诉它继续移动机器人。因此,要停止机器人的运动,你只需要启动另一个发布器,发布一条告诉机器人停止运动的消息即可。

服务概述

除了主题,ROS还提供了服务. 服务允许你编写特定功能的代码,然后供任何机器人调用。例如,你可以创建一个服务,使你的机器人移动一段时间,然后停止。

服务比主题稍微复杂一些,这是由于它包括两部分。一方面,你需要一个提供服务的服务器,它向任何想调用它的对象提供某项功能另一方面,你需要一个客户端,它调用/请求服务功能

服务实例

调用已创建的服务的例子

  • 命令1(启动服务)
    roslaunch service_demo service_launch.launch
  • 命令2(调用服务)
    rosservice call /service_demo “{}”

  • 在服务被调用之前,服务必须启动且在运行。因此,确保在被调用之前启动服务

  • 首先,启动服务以便使它能被任何想调用它的机器人调用。接着,执行命令调用那个服务。该服务的目的是使Kobuki机器人绕圆周运动4秒钟,然后停止。 因此,当你调用服务时,机器人开始进行运动。

行为概述

  • ROS提供了行为。行为与服务类似,它们都允许你为你的机器人编写特定功能的代码,然后供任何需要它的对象调用。行为和服务的主要区别是,当你调用服务时,机器人一直等着,直到服务结束才能做其他的事情;当你调用行为时,机器人在执行该行为的同时还可以做其他的事情
  • 还有一些其他的区别,比如行为允许你在行为被执行时提供反馈

行为实例

  • 命令1(启动行为)
    roslaunch action_demo action_launch.launch
  • 命令2(调用行为)
    roslaunch action_demo_client client_launch.launch

  • 确保行为服务器运行

  • 首先,你通过第一条指令 启动了行为服务器 。接着,你通过第二条指令 调用那个行为 。

调试工具RViz

启动命令

rosrun rviz rviz

进入可视化工具操作界面,某些节点需要使用一些标准的可视化工具

你可能感兴趣的:(ROS学习笔记)