ROS Learning-025 (提高篇-003 A Mobile Base-01) 控制移动平台
ROS 提高篇 A Mobile Base-01 — 控制移动平台 — 基本知识
我使用的虚拟机软件:VMware Workstation 11
使用的Ubuntu系统:Ubuntu 14.04.4 LTS
ROS 版本:ROS Indigo
注意:
1 . ROS 提高篇这个专栏的教学有门槛。
2 . 如果你没有学习前面的教程,请想学习前面的 beginner_Tutorials 和 learning_tf 的ROS 相关教程。
这一节没没有编写程序或者在终端中执行什么命令,这一节我们讲一些需要你了解的事,目的是:为了告诉你你现在要怎么学 ROS 。
一 . 怎么理解 “移动平台”:
“移动平台” : A Mobile Base。
就以 Pi 机器人为例 :
完整的 Pi 机器人: ————————————- 移动平台 就是:
对于陆地式轮式机器人,它们的移动平台就简单的组成零件是:一对轮子和一个万向轮。ROS也可用于控制其他方面的机器人,比如基于飞行的,水下的。但是陆地轮式移动平台是学习开始ROS最好的移动平台。
理解了吗。这一部分的教程(ROS 提高篇之 A Mobile Base),我们就来介绍:如何控制移动平台。(在这部分教程里面,我们使用现成的机器人,所以不介绍如何创建移动平台模型。并且整个 ROS 教程提高篇里面我们都不讲如何创建机器人模型,我们会在ROS 教程实战篇中教你如何创建自己的机器人模型。)
在学习这部分的教程(ROS 提高篇之 A Mobile Base)的开始,知道什么是 移动平台 是十分重要的事情,这样你就知道我们这一章在讲什么。
要想做一个机器人,我们需要先让它能动起来,然后在往上面加传感器,加算法….。
二 . ROS的测量单位和坐标系统:
在我们给我们的机器人发送运动命令前,我们有必要先来了解一下ROS的 测量单位 和 坐标系统 。
1 . 坐标系统:
当你工作于参考坐标系空间,记住:ROS使用 右手定义 :
所以,对于 ROS 机器人,如果以它为坐标系的原心,那么:
- x轴:前方
- y轴:左方
- z轴:上方
2 . 在一个绕轴线上的旋转,也使用 右手定义:
根据右手定义,围绕 z轴正旋转 是 逆时针旋转
3 . 测量单位:
ROS使用公制 :
- 线速度:
m/s - 角速度:
rad/s
线速度=0.5m/s 对于一个室内机器人来说是一个相当快的速度了。角速度=1.0rad/s 就是旋转一圈6秒钟。
例子:下面这条命令不用运行,只是为了讲解后面数字参数的意义。
$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
这句话就是给 /turtle1/cmd_vel 话题发布一次:让机器人 向x轴正方向前进:线速度:2.0m/s; 绕z轴正方向旋转:角速度:1.8ral/s。
搞定
下一讲,我们来介绍: ROS的控制运动的层次。ROS控制运动并不单纯,它分好多层。类似于中国西周时代的统治层次(天子-> 诸侯 -> 卿大夫 ->士 -> 平民 -> 奴隶)。
ROS Learning-025 (提高篇-003 A Mobile Base-01) 控制移动平台的更多相关文章
- 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-027 (提高篇-005 A Mobile Base-03) 控制移动平台 --- Twist 消息
ROS 提高篇 之 A Mobile Base-03 - 控制移动平台 - Twist 消息 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...
- 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 版本 ...
随机推荐
- 07-THREE.JS 各种形状的几何图形
<!DOCTYPE html> <html> <head> <title>Example 02.04 - Geometries</title> ...
- 使用javah生成jni 头文件和使用ndk编译so库
1.jni 首先clean Project,在makeProject生成对应的class文件 然后点出命名框,输入命令: cd app/build/intermediates/classes/debu ...
- Oracle 11g 客户端连接 oracle 10g 服务端,乱码问题
从网上搜索资料基本确定:字符集错误 Pl/sql 连接到oracle 数据库 “select userenv('language') from dual” 找到服务端的对应的字符集,拷贝之: 到本 ...
- Shell编程-运算符
1.declare命令 declare声明变量类型:declare [+/-][选项] 变量名 -:给变量设定类型属性 +:取消变量的类型属性 -a:将变量声明为数组型 -i:整数型 -x:环境变量 ...
- hdoj-1013-Digital Roots(九余数定理)
题目链接 #include <iostream> using namespace std; int main() { string a; int b; ") { b = ; ;i ...
- Java 代码复用 —— 泛型
public interface Comparable<T> { public int compareTo(T o); } 1. 接口(Comparable:可比较接口) public s ...
- 【LeetCode】025. Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k ...
- TP上传图片
//更新 更新中的话,一定要写那一个if判断 public function update(){ $model = M('link'); $upload = new \Think\Upload();/ ...
- 使用base64对图片的加密解密
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOu ...
- Java基础--反射Reflection
Reflection 反射能在运行时获取一个类的全部信息,并且可以调用类方法,修改类属性,创建类实例. 而在编译期间不用关心对象是谁 反射可用在动态代理,注解解释,和反射工厂等地方. -------- ...