SpotMini末端控制策略
相信很多人都注意到了“机器人学家”两天前推送的Boston Dynamics新机器人Spot-Mini。除了一如既往独领风骚的步态控制外,这次BD还给机器人增加了一个机械臂。视频中的一幕挺有趣,就是Spot-Mini全身都在摆动,但机械臂末端基本保持稳定。

matlab做的GIF好棒,都找不到循环点
使机器人消除底座运动影响,并保持机械臂末端相对于环境稳定(维持期望运动状态),是移动机械臂领域的关键技术之一。那么BD是如何做到这一点的呢?
先把BD放一边,在移动机器人领域,一般有两种方法来保持机械臂末端稳定:基于误差的控制、基于模型的控制(视频在文末)。
其中,两种方法都需要用到雅克比,或者叫做微分运动学(n为机械臂自由度):

利用雅克比矩阵,可以将每个关节的速度换算成机械臂末端速度(反之亦然)。
1. 基于误差的控制
基于误差的控制是将机械臂与移动底座分开考虑,只关注机械臂末端与预期运动状态的误差。通过传感器(加速度计、视觉等)可以实时测量得到机械臂末端的误差,之后利用雅克比(伪)逆转换成机械臂各关节运动状态,从而使得机械臂往误差减小的方向运动(接近期望运动轨迹)。

由于手头没有合适的移动机械臂平台,这里我用上面这个平台代替:认为整个地球+Baxter左臂是移动机械臂,而小车是环境(world)。当小车被拉动时,从小车上看,可以认为是移动机械臂的底座发生了移动(等效于下面这个模型)。

在这里,我利用摄像机识别小车上二维码的位置,并利用如下控制方法确保机械臂末端与二维码相对位置不变,及机械臂在world坐标系下保持稳定。

演示视频见最后(由于摄像机帧率为20Hz,所以控制效果可以看出较明显延时)。
【note】欧拉角表示姿态时,角速度用如下公式计算:

这个方法的优点是不管什么样的底座均可以使用相同的方法进行控制,而缺点就是对传感器精度、实时性要求高,机械臂也容易出现奇异、超出工作空间等问题。
2. 基于模型的控制
基于模型的控制是通过建立整个移动机械臂模型,通过系统冗余性计算控制指令。
当机器人的自由度大于6的时候,便会呈现一定的冗余特性,换句话说,机器人末端的某一动作,可以通过无数种关节运动方式获得。国内做控制的人喜欢将这个特性称为机器人的自运动,但是我个人更喜欢用线性空间的概念(雅克比零空间)。简而言之,如果知道机器人的完整模型,就能利用零空间实现所有关节都运动而末端不动。

后面的视频中,我会用7自由度的Motoman SDA5F左臂来演示这个方法:假设第一个旋转关节是移动底座,后面六个关节是固定在底座上的机械臂。当然,与我在视频中使用的例子不同,移动底座的运动状态往往与下发的控制指令有较大偏差(与地面打滑等),所以,必须增加底座运动状态估计(卡尔曼滤波)模块,利用估计的运动状态作为整个机器人模型前几个广义坐标数值。这个方法的优点是拥有整个机器人的模型,可以实现一些二级任务(保证末端任务的前提下,完成其他优化任务),同时更容易避免机械臂超出工作空间等情况;但是缺点就是底座的运动状态难以准备获得。
3. BD是怎么做的
我没找到他们的论文,所以只能靠猜了。通过仔细观看高清视频,SpotMini底部运动时,机械臂末端会发生(较高频率)抖动,这种感觉非常类似于PID控制时P增益稍微太大的情况;另一方面,BD底座的控制应该是力矩控制,无法保证高精度的位置,采用基于误差的控制可以大大降低建模和控制的复杂度。所以,我猜是采用基于误差的控制方式。
4. 我的视频
我的视频在这里看:

SpotMini末端控制策略的更多相关文章
- SELINUX、Security Access Control Strategy && Method And Technology Research - 安全访问控制策略及其方法技术研究
catalog . 引言 . 访问控制策略 . 访问控制方法.实现技术 . SELINUX 0. 引言 访问控制是网络安全防范和客户端安全防御的主要策略,它的主要任务是保证资源不被非法使用.保证网络/ ...
- **RESTful API版本控制策略
做RESTful开放平台,一方面其API变动越少, 对API调用者越有利:另一方面,没有人可以预测未来,系统在发展的过程中,不可避免的需要添加新的资源,或者修改现有资源.因此,改动升级必不可少,但是, ...
- Trusted Execution Technology (TXT) --- 启动控制策略(LCP)篇
版权声明:本文为博主原创文章,未经博主允许不得转载.http://www.cnblogs.com/tsec/p/8428631.html 在TXT平台中,启动控制策略(Launch Control P ...
- 监听RecyclerView滑动到末端
监听RecyclerView滑动到末端 效果图 实现 1. 添加滑动到末端的接口 package com.kongqw.recyclerviewdemo; /** * Created by kongq ...
- 08-OpenLDAP主机控制策略
OpenLDAP主机控制策略 阅读视图 参考 环境准备 openldap服务端配置 openldap客户端配置 客户端测试登录 故障处理 1. 参考 本文基本转载博客openldap主机访问控制(基于 ...
- flask路由末端带斜线和不带斜线的区别
路由末端带有“/” app.route('/test/') 在浏览器中输入http://127.0.0.1:5000/test/ 和http://127.0.0.1:5000/test都能访问 路由末 ...
- 9.11排序与查找(一)——给定两个排序后的数组A和B,当中A的末端有足够的缓冲空间容纳B。将B合并入A并排序
/** * 功能:给定两个排序后的数组A和B,当中A的末端有足够的缓冲空间容纳B.将B合并入A并排序. */ /** * 问题:假设将元素插入数组A的前端,就必须将原有的元素向后移动,以腾出空间. ...
- Security Access Control Strategy && Method And Technology Research - 安全访问控制策略及其方法技术研究
1. 访问控制基本概念 访问控制是网络安全防范和客户端安全防御的重要基础策略,它的主要任务是保证资源不被非法使用.保证网络/客户端安全最重要的核心策略之一. 访问控制包括 入网访问控制 网络权限控制 ...
- java 字符串 大小写转换 、去掉首末端空格 、根据索引切割字符 、判断是否含有某连续字符串
1. 字符串转大写: toUpperCase() 字符串转小写: toLowerCase() @Test public void tt(){ String d = "sdgGHJGjghGH ...
随机推荐
- NGINX小技巧--将所有目录和目录下所有文件分别给与不同的权限
为了安全,有时要将文件的权限进行限制,但,目录如果没有755,则不能进入. 所以需要分别给权限 find ./ -type f -name "*" |xargs ls -l
- Codeforces 527D Clique Problem
http://codeforces.com/problemset/problem/527/D 题意:给出一些点的xi和wi,当|xi−xj|≥wi+wj的时候,两点间存在一条边,找出一个最大的集合,集 ...
- windows driver inf文件
原来修改了inf文件会导致签名过的驱动包哈希值不正确了啊.现在才知道. = = http://www.chiphell.com/thread-827956-1-1.html
- 回收带Lob字段表占用的空间
SQL> select object_name from user_objects; no rows selected SQL> select segment_name from user ...
- (转)iOS7界面设计规范(8) - UI基础 - 术语和措辞
讨厌周一,讨厌一周.今天中午交互组聚餐,却很开心:大家都是很厉害的人,你可以感到他们身上的能量,可以感到有些什么东西正在推着自己尽力向前走.这是一种很健康的状态,同时也很难得,自然越发需要珍惜.从无到 ...
- 最全的js正则表达式用法大全
匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一 ...
- Linux备份
Eking<longpeisky@vip.qq.com> 19:35:17 增量备份是针对于上一次备份(无论是哪种备份):备份上一次备份后,所有发生变化的文件. (增量备份过程中,只备份 ...
- linux文件权限解说
我们进入一个目录, 执行ls -l会显示该目录下所有档案(这里用"档案"这个词, 代表文件和文件夹)的详细信息. 如图: 一共有7列信息, 分别为: [权限], [连结数], [拥 ...
- Windows下命令行直接编译程序
D:\> cl hello.cpp Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86 Cop ...
- 执行eclipse,迅速failed to create the java virtual machine。
它们必须在一排,否则会出现The Eclipse executable launcher was unable to locate its companion shared library的错误 打开 ...