ROS Learning-027 (提高篇-005 A Mobile Base-03) 控制移动平台 --- Twist 消息
ROS 提高篇 之 A Mobile Base-03 — 控制移动平台 — Twist 消息
我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
注意:
1 . ROS 提高篇这个专栏的教学有门槛。
2 . 如果你没有学习前面的教程,请想学习前面的 beginner_Tutorials 和 learning_tf 的ROS 相关教程。
Twist消息 :
ROS使用geometry_msgs/Twist消息类型 来发布运动命令。控制命令会被base controller节点使用。话题 /cmd_vel 全名” command velocities “。base controller节点订阅 /cmd_vel 话题,并将里面的运动命令(Twist 消息)通过 PID 控制算法转换成电机信号(就是转动轮子)。
执行下面的命令,可以查看 Twist 消息里有哪些组件:
$ rosmsg show geometry_msgs/Twist
会出现下面的输出:
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
线速度指定 m/s ;角速度指定 rad/s 。(6弧度相当于一个整圆)
一个轮式机器人是在一个2维平台内操作的(比如地板)我们只需要 Twist 消息中的 x轴 线速度和 z轴 角速度。这是因为这种类型的机器人只会在 x轴 上前进和后退,只会绕着 z轴 旋转。换句话说:y和z轴 的线速度永远是0,并且机器人不会再其他的轴上旋转。
但是,一个全方向机器人,比如飞行机器人或水下机器人就可以使用 Twist 消息里面所有的6个组件。
使用实际的例子介绍Twist消息:
假设我们想要机器人以速度 0.1m/s 直线前进。如果我们在终端的命令行中发布 Twist 消息的话题,消息部分就写成下面的形式:(如果你还不清楚 “发布话题” 的意思,请看这一节的教程)
'[0.1, 0.0, 0.0]' '[0.0, 0.0, 0.0]'
或者
'{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'
正如我们所看到的,Twist 消息将会被发送给机器人,并被其他 ROS 节点使用。
假设我们想要机器人以 1.0rad/s 的角速度逆时针旋转。(如果你忘记了:ROS 系统坐标系统是使用右手定义的,请看这一节的教程。)
'[0.0, 0.0, 0.0]' '[0.0, 0.0, 1.0]'
或者
'{linear: {x: 0.0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 1.0}}'
如果你想合并上面两个消息,那么 Twist 消息就会变成下面这个样子:
'[0.1, 0.0, 0.0]' '[0.0, 0.0, 1.0]'
或者
'{linear: {x: 0.1, y: 0, z: 0}, angular: {x: 0, y: 0, z: 1.0}}'
By The Way:z轴角速度的值比x轴线速度的值越大,就越紧急转弯。
使用 Rviz 监控机器人运动 :
如果你想要机器人从旋转的状态停下来,你可以再发布话题的终端按 Ctrl+C, 或者新来一个终端,执行下面的命令:
$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{}'
我突然想到一件事情,我必须记录下来:
我曾经非常认真的思考过:我为了什么而活着,活着的意义:
- 享受这个世界,这个你脚底下踩着的世界。
- 你可以选择怎样去死。人必然要死,那就要看你选择鸿毛还是泰山。
现在让我们来运行第一个例子。
运行这个例子前,需要先启动 虚拟机器人 和 Rviz 软件。打开两个终端分别执行先的命令:
$ roslaunch rbx1_bringup fake_turtlebot.launch #或者 roslaunch rbx1_bringup fake_pi_robot.launch
$ rosrun rviz rviz -d `rospack find rbx1_nav`/sim.rviz #注意:这条指令中的'`'是键盘左上角'Esc'键下面的那个键
在Rviz中,我们先点击Reset按钮来清屏,去掉odometry箭头。下面的命令将会让机器人向前前进3秒钟( -1 表示”仅发布一次”),然后继续无限的逆时针圆周运动。
$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0}}'; rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'
如果你想要机器人从旋转的状态停下来,你可以再发布话题的终端按 Ctrl+C, 或者新来一个终端,执行下面的命令:
$ rostopic pub -1 /cmd_vel geometry_msgs/Twist '{}'
总结:
如果你现在迫不及待的想给真实的机器人发布 Twist 消息控制它移动的话,并且你手头有一个真实的机器人,请学习这一章的教程。但是我不建议你现在就学习。我希望你将 ROS 教程提高篇的教程全部学完,再去学习ROS教程实战篇,实战篇的教程全都是以真实机器人为对象进行学习的,所以你不用着急。如果你说,我说上没有真实的机器人,没有关系,ROS教程实战篇的开始就是教你如何制作一个价钱适中的机器人。所以,你完全可以放心的学习,用你最轻松的状态去学习我们这个ROS教程,这是我最希望的事情。O(∩_∩)O~
这一讲,我们都是在终端命令行中发布带有 Twist 消息的控制话题.
下一节,我们将学习如何编写程序(一个节点程序)来发布带有Twist消息的控制话题。(我们在ROS教程beginner_Tutorials篇,已经学习过,如何编写发布器,但那只是个入门级的。)
ROS Learning-027 (提高篇-005 A Mobile Base-03) 控制移动平台 --- Twist 消息的更多相关文章
- ROS Learning-025 (提高篇-003 A Mobile Base-01) 控制移动平台
ROS 提高篇 A Mobile Base-01 - 控制移动平台 - 基本知识 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 ...
- ROS Learning-031 (提高篇-009 A Mobile Base-07) 控制移动平台 --- (操作)人机交互
ROS 提高篇 之 A Mobile Base-07 - 控制移动平台 - (操作)人机交互 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...
- ROS Learning-030 (提高篇-008 A Mobile Base-06) 控制移动平台 --- (Python)odom导航的例子:移动一个方块路径
ROS 提高篇 之 A Mobile Base-06 - 控制移动平台 - (Python)再次使用odom导航的一个例子:移动一个方块路径 我使用的虚拟机软件:VMware Workstation ...
- ROS Learning-029 (提高篇-007 A Mobile Base-05) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(精确的制定目标位置)
ROS 提高篇 之 A Mobile Base-05 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(精确的制定目标位置) 使用 odometry 消息类型 重写 out_and_ba ...
- ROS Learning-028 (提高篇-006 A Mobile Base-04) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(不精确的制定目标位置)
ROS 提高篇 之 A Mobile Base-04 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(不精确的制定目标位置) 我使用的虚拟机软件:VMware Workstation ...
- ROS Learning-026 (提高篇-004 A Mobile Base-02) 控制移动平台 --- “分封制”
ROS 提高篇 之 A Mobile Base-02 - 控制移动平台 - "分封制" 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ub ...
- ROS Learning-032 (提高篇-010 Launch)Launch 深入研究 --- (启动文件编程)ROS 的 XML语法简介
ROS 提高篇 之 Launch 深入研究 - 01 - 启动文件的编程 - ROS 的 XML语法简介 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...
- ROS Learning-024 (提高篇-002) rviz的安装和使用
ROS 提高篇-002 - rviz 的安装和使用 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LTS ROS 版本:ROS ...
- ROS Learning-023 (提高篇-001) 准备工作 --- 安装一些必要的软件包
ROS 提高篇-001 - 准备工作 - 安装一些必要的软件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.04.4 LTS ROS 版本 ...
随机推荐
- oralce 索引(1)
本文来自网上整理 来自以下博客内容 http://www.360doc.com/content/13/0712/11/13136648_299364992.shtml; http://www.cnbl ...
- vue项目中引入element-ui时,如何更改主题色
在我们做项目时,我们经常会遇到切换主题色的功能,下面我们就来说一下通过颜色选择器我们就能改变项目的主题颜色 代码如下: 颜色选择器所在组件: top-theme.vue内容如下: <templa ...
- js 读取json数据 挖坑
一般遇到后台给的json数据格式不对 比如key和value都是单引号. 但真正的json 的key和value都是双引号,必须双引号才能取值. 再来一个例子看看 var test = [{ &quo ...
- 分布式事务_01_2PC框架raincat快速体验
一.前言 关于2PC的理论知识请见:分布式_理论_03_2PC 这一节我们来看下github上一个优秀的2PC分布式事务开源框架的快速体验. 二.源码 源码请见: https://github.com ...
- java_报表_00_资源帖
一.精选资料 二.java api 1.jfreechart (1).Java-jfree报表(学习整理)----饼状图.柱状图.折线统计图 (2).Jfreechart打造专业图表-原来Jfreec ...
- DataTable的用法
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...
- DECLARE_MESSAGE_MAP用法
DECLARE_MESSAGE_MAP( ) 说明: 你的程序中的每一个CCmdTarget的派生类都可以提供一个消息映射以处理消息.在你的类声明的末尾使用DECLARE_MESSAGE_MAP宏. ...
- web 压力测试工具ab压力测试详解
Web性能压力测试工具之ApacheBench(ab)详解 原文:http://www.ha97.com/4617.html PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压 ...
- POJ - 1324 Holedox Moving (状态压缩+BFS/A*)
题目链接 有一个n*m(1<=n,m<=20)的网格图,图中有k堵墙和有一条长度为L(L<=8)的蛇,蛇在移动的过程中不能碰到自己的身体.求蛇移动到点(1,1)所需的最小步数. 显然 ...
- linux上安装gitolite和windows上安装tortoisegit及msysgit
1 quick install+setup for experts If your Unix-fu and ssh-fu are good, just copy your ssh public key ...