前言
- 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”终止了命令,机器人仍将保持运动。这是由于机器人仍在监听你发布在该主题上的最后一条消息。
主题实例
- 启动发布器(ROS程序)
- 发布器负责将消息写入主题
- 主题发送命令
工作原理:启动了一个发布器。发布器是一个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
进入可视化工具操作界面,某些节点需要使用一些标准的可视化工具