diff --git a/IndexTree.xmind b/IndexTree.xmind index 7974e47..9be69ad 100644 --- a/IndexTree.xmind +++ b/IndexTree.xmind Binary files differ diff --git a/README.md b/README.md index cea46dd..e063834 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,35 @@ # Roboseum ->**Welcome to the Robot Museum!** +>**Welcome to the Robot Museum!** >**欢迎来到机器人大观园!** -我们是一群来自清华的机器人爱好者,希望对优秀的机器人软硬件科技(包括学界前沿、业界公司、产品)进行归纳分类和介绍,目前主要从硬件角度进行划分。采用Markdown标记语言编写条目,并使用Xmind进行组织和索引,并且每个条目提供标签用以查询。供身边的机器人爱好者参考,当然也欢迎大家积极贡献~ +## 引言 +我们是一群来自清华各工科院系(机械/信息学院下的机械系、自动化系、电机系等院系)的机器人爱好者,希望对优秀的机器人软硬件科技进行收集、归纳、整理、分类和介绍,并涵盖学界前沿设计、业界公司产品两个方面。目前我们主要从机电硬件系统和软件算法原理两个维度展开,共收集了全球20余家公司/实验室的34种产品,和近50种软件算法。我们采用Markdown标记语言编写条目,并根据自己对机器人学的理解使用Xmind进行知识树式的组织管理和索引,并且为每个条目提供多个标签用以适应各种多样化的查询需求。 + +我们认为机器人学是汇集机械、电子、计算机等多个领域的一片汪洋大海,我们希望身边有志于成为机器人学家的少年们在扬帆出海的时候会发现我们提供的这张海图对你有用,能帮你看清方向,少走些弯路。当然也欢迎更多的"老船长"加入我们,积极贡献,共同丰富、扩充这张海图~ + +主要作者: +- 机电硬件系统部分:[顾兆元](https://github.com/guzhaoyuan)(机械系)、[小山嘉](https://github.com/sicoco)(电机系)、[郑亦平](https://github.com/Yiping-Steven)(自动化系) +- 软件算法原理部分:[郑亦平](https://github.com/Yiping-Steven) + + +**清华大学天空工场兴趣团队** + +最后更新于:2018年12月31日 +
-## 分类标签定义 +顺便一提,我们认为“航海”的意义在于寻找秘宝的探险和给世界创造新的价值,我们希望打开的是宝箱而非是潘多拉魔盒(eg. CRISPR基因编辑)。为此,如果有朋友对于机器人伦理道德有浓厚的兴趣,欢迎联系作者,加入到一部关于机器人给社会带来现实问题的硬科幻小说的创作讨论中来~ (目前情节架构已定,正在广泛取材) + +## 关于分类标签的定义 可直接通过本标签树的叶子节点搜索对应的机器人。 +
-## 一个Robot可以有哪些基本信息 +## 一个Robot应该涵盖哪些基本信息? 关于markdown内容如何组织,一个机器人有哪些关注点的问题。 加粗的为必须有的最基本内容。 diff --git a/Robots/ANYdrive.md b/Robots/ANYdrive.md new file mode 100644 index 0000000..d8da09b --- /dev/null +++ b/Robots/ANYdrive.md @@ -0,0 +1,53 @@ +# ANYdrive +tag: *ETHZ* *执行* *电机* +author:gzy +date:2017.11.22 + +--- +- 图1 +![](../meta/pic/ANYdrive.jpg) + +ANYdrive是苏黎世理工的Robot System Lab开发的一款无刷电机,实验室利用电机开发了一款机械臂ANYpulator和机械狗ANYmal. + +然后实验室拿着电机创业开办了ANYbotics,很多人都是原实验室的人,包括实验室老板。 + +ANYdrive最大的亮点是引入了SEA,作为一款有柔性的电机,这个性能还是非常出色的。20Nm的驱动力矩,在SEA的保护下峰值可达到40Nm。 + +## 硬件 + +#### 基本参数 +- 尺寸95 x 90 mm +- 1Kg的质量 +- 无刷+齿轮减速+SEA + +#### 性能 +- 位置精度,0.025°(这个相当高了 +- 力矩控制带宽:60Hz(可以理解,SEA通常带宽都很低。作为对比,BLDC直驱的力控带宽至少上百Hz,可见SEA对电机控制频率的影响。所以这也就是为什么视频里面safe interaction的时候转速这么低,因为控制频率上不去) +- 48V供电,最大功率720W,额定功率240W +- 最大力矩40Nm,额定力矩20Nm(感觉一般,转速这么低) +- 最大峰值转速114rpm(带了减速电机,RPM太低了,这也就是为什么这个电机做的狗动作这么慢,ANYdrive视频里面转速也确实不高) +- IP67的防尘防水精度,堪比iPhone7 +- 支持ROS和Ethercat通信(然而控制带宽这么低,要Ethercat有何用…) +- low-impedance torque control低阻抗控制(不明白有什么用,求讨论) + +#### 控制方式 +- 官方SDK还没有发布 +- 我认为应该会做成ROS包与控制器通讯的形式 +- 控制器支持CAN总线控制,CAN的通讯频率可以达到1Mbit/s,然而,电机执行频率跟不上的,控制频率的瓶颈是电机的响应速度 +- Ethercat,不过意义不大 + +#### 传感器 +- 绝对位置编码器 + +## 应用场景 +- 高精度的位置和力控制 +- 可以抵抗外力,有一定鲁棒性(SEA的功劳) +- 力存储(SEA的功劳) +- safe interaction,人机安全控制(SEA的功劳) + +## 拓展 +[实验室连接](http://www.rsl.ethz.ch/robots-media/actuators/anydrive.html) + +[公司产品链接](https://www.anybotics.com/anydrive/) + +[产品介绍PDF](../meta/datasheet/ANYdrive.pdf) \ No newline at end of file diff --git a/Robots/ANYmal.md b/Robots/ANYmal.md new file mode 100644 index 0000000..8b2538a --- /dev/null +++ b/Robots/ANYmal.md @@ -0,0 +1,59 @@ +# ANYmal +tag: *ETHZ* *四足* *地面* + +author:gzy + +Date:2017.11.16 + +--- +- 图1 +![ASIMO](../meta/pic/ANYmal.PNG) + +- 图2 +![ASIMO_HISTORY](../meta/pic/ANYmal2.png) +## 概述 + +ANYmal是ETHZ的Robotic Systems Lab打造的一款四足机器人。其最初应用为油气勘探,灾难搜救,所以它配备了光学摄像头、红外摄像和热成像摄像头,石油气检测仪,主动光源,通讯设备等。它的电池拥有2小时的续航时间。可远程控制或自主导航。 + +ANYmal的四肢电机通过力矩控制实现柔性(官方说法,关于机器人使用的电机ANYdrive会另外做一个介绍),所以它能够实现动态跑和快速爬。配备了激光雷达和摄像头,能够**实时**对环境建图(包括室内建精确地图和室外粗略地图),并且进行路径规划。 + +这个机器人非常容易搬运,其躯干设计就是为了搬运而打造的:上方的两个手柄用于抬拉机器人,躯干肚子的平台可以在地面稳妥放置。搬运时,两前腿前伸,后腿向后伸,肚子触地,减小体积。躯干周围的框架结构也在一定程度上保护了机器人免于撞击。 + +机器人的机械设计也非常轻巧。腿采用碳纤打造,轻且坚固。但是我有一个问题,为什么机器人的小腿要做成弯曲的形状,这个对于机器人有什么好处,为什么要设计这个复杂的形状,这对于机械加工来说无疑增加了成本(见issue2)。机器人每条腿有3个自由度,直立时一条腿有2个pitch和1个roll,酷炫的是腿的2个pitch有360°的旋转自由度。 + +在狭窄的空间,机器人可以趴下,改四足步态为爬行。爬楼梯的时候也采用了这个作弊的方法,斜趴在楼梯上一级一级往上抬升,改变腿的姿态时身体趴在楼梯上,这也是腿pitch有360旋转空间的好处。ANYmal能够适应各种地形,斜的地面,泥土地,石子路等等都没有问题 + +## 硬件 + +#### 尺寸 +- 重量 30kg(比Laikago重了不少,不过传感器也多 + +#### 关节自由度 +- 头部 2 自由度 +- 腿 3-D0F*4条腿 + +#### 驱动器 +- ANYdrive + + +#### 传感器 +- 头部:Micro-Epsilon Thermal Camera +- 头部:红外传感器 +- 头部:视觉摄像头 + + +## 应用场景 +油气勘探,灾难搜救等。 +### ANYmal的技能表: +- 观察仪表盘并且判断读数 +- 上、下台阶 +- 爬楼梯(趴着上升,一步一趴) +- 原地旋转 + +## 拓展 +[官网链接](http://www.rsl.ethz.ch/robots-media/anymal.html) + +[论文](https://ieeexplore.ieee.org/document/7758092) + +## TODO +- 理解论文的控制方法 diff --git a/Robots/Aibo.md b/Robots/Aibo.md new file mode 100644 index 0000000..27dcd14 --- /dev/null +++ b/Robots/Aibo.md @@ -0,0 +1,36 @@ +# Aibo +tag: *Sony* *四足* *地面* + +--- +- 图1 +![Aibo](../meta/pic/Aibo.jpg) + +- 图2 +![Aibo](../meta/pic/Aibo2.png) + +Sony大法复活了10年前的品牌Aibo(Artificial Intelligence roBOt),利用人工智能的方法创造了新机器狗。在2017的新款前,已经有数款Aibo发布。 + +## 硬件 +- 屁股上有向上的摄像头进行slam +- 4核CPU +- 内置LTE and WiFi +- 4个麦克风 +- 音响 +- gyroscopes +- motors,22-DoF +- 2小时电池续航 + +2017年11月价格:$1700 + +## 应用场景 +家居服务,人机交互等 + +### Aibo的技能表: +- learn the layout of your house over time +- OLED显示眼,可以显示心情,眨眼 +- 避障,向目的地前进 +- 记住能让主人快乐的动作(处理视觉,声音,动作数据分析得出) + +## 拓展 + +[新闻报道](https://www.youtube.com/watch?v=lhESLovHII4) diff --git a/Robots/Asimo new tag structure.md b/Robots/Asimo new tag structure.md new file mode 100644 index 0000000..7ccf1fd --- /dev/null +++ b/Robots/Asimo new tag structure.md @@ -0,0 +1,81 @@ +# ASIMO + +Company/University/Lab/Indivisual tag:*Honda 本田* + +Application tag: *服务* + +Environment tag: *地面* *室内* + +Mechanical Characteristic tag:*人形* *双臂* *双足* *谐波减速器* + +Software Characteristic tag: *ZMP* + +--- +- 图1 +![ASIMO](../meta/pic/Asimo.jpg) + +- 图2 +![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) + +ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 + + + +ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 + +## 硬件 + +### 2011年11月时的公开的性能表: + +#### 尺寸 +- 身高 130cm +- 宽度 45cm +- 深度 34cm +- 重量 48kg +#### 性能 +- 最大速度 9km/h +- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 +#### 关节自由度 +- 头部 3 自由度 +- 腕部 7×2 自由度 +- 手部 13×2 自由度 +- 腰部 2 自由度 +- 脚步 6 自由度 +- 总计 57自由度 + +#### 抓握力 +- 0.5kg/手(五指抓握的状态下) +#### 致动器 +- 伺服电机 + 谐波减速器 + 驱动器 + +#### 传感器 +- 脚部: 6轴力传感器(可感知力在脚掌中的分布) +- 腰部: 陀螺仪 + 加速度传感器 + +## 应用场景 +家居服务,接待,导游等 +### ASIMO的技能表: +- 现场解说 +- 端茶送水 +- 预测行人的行走方向,并自动避开 +- 三个人同说说话时识别谁说了什么 +- 迎接客人并引导 +- 以9km/h的速度行走 +- 双足起跳 +- 在有凹凸起伏的路上行走 +- 单脚跳 +- 脚尖射门 +- 拿起水瓶,拧开盖子,并倒进纸杯 +- 手语 +- 人脸识别 + +## 拓展 +[机器人链接](http://www.honda.co.jp/ASIMO/) + +[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) + +[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) + +[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) + +[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/Robots/Asimo.md b/Robots/Asimo.md new file mode 100644 index 0000000..680c2f4 --- /dev/null +++ b/Robots/Asimo.md @@ -0,0 +1,72 @@ +# ASIMO +tag: *Honda 本田* *人形* *地面* + +--- +- 图1 +![ASIMO](../meta/pic/Asimo.jpg) + +- 图2 +![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) + +ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 + + + +ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 + +## 硬件 + +### 2011年11月时的公开的性能表: + +#### 尺寸 +- 身高 130cm +- 宽度 45cm +- 深度 34cm +- 重量 48kg +#### 性能 +- 最大速度 9km/h +- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 +#### 关节自由度 +- 头部 3 自由度 +- 腕部 7×2 自由度 +- 手部 13×2 自由度 +- 腰部 2 自由度 +- 脚步 6 自由度 +- 总计 57自由度 + +#### 抓握力 +- 0.5kg/手(五指抓握的状态下) +#### 致动器 +- 伺服电机 + 谐波减速器 + 驱动器 + +#### 传感器 +- 脚部: 6轴力传感器(可感知力在脚掌中的分布) +- 腰部: 陀螺仪 + 加速度传感器 + +## 应用场景 +家居服务,接待,导游等 +### ASIMO的技能表: +- 现场解说 +- 端茶送水 +- 预测行人的行走方向,并自动避开 +- 三个人同说说话时识别谁说了什么 +- 迎接客人并引导 +- 以9km/h的速度行走 +- 双足起跳 +- 在有凹凸起伏的路上行走 +- 单脚跳 +- 脚尖射门 +- 拿起水瓶,拧开盖子,并倒进纸杯 +- 手语 +- 人脸识别 + +## 拓展 +[机器人链接](http://www.honda.co.jp/ASIMO/) + +[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) + +[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) + +[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) + +[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/Robots/Atlas.md b/Robots/Atlas.md new file mode 100644 index 0000000..5b7f595 --- /dev/null +++ b/Robots/Atlas.md @@ -0,0 +1,17 @@ +# Atlas + + tag: *Boston Dynamics* *足式* *双足* *地面* + + --- +![atlas](../meta/pic/atlas.jpg) + +波士顿动力公司的一大力作,可以实现在雪地和不平路面的行走。Atlas可以算是现今人形机器人的巅峰。 + +first come out: 2013 +lastest version: Jul, 2017 + +- 头顶有激光雷达用于感知环境信息 +- 身体多个关节全部采用液压驱动 +- 28个关节,双腿12个(和人一样),双手12个,背部3个,脖子1个pitch + +2015年的DARPA挑战赛中,这个机器人被分发给6个不同的team进行各自开发进行任务,最高拿到第二名,败于韩国Kaist。 \ No newline at end of file diff --git a/Robots/BALLU.md b/Robots/BALLU.md new file mode 100644 index 0000000..0585354 --- /dev/null +++ b/Robots/BALLU.md @@ -0,0 +1,10 @@ +# BALLU +tag: *RoMeLa* *地面* *双足* + +--- + +BALLU: Buoyancy Assisted Lightweight Legged Unit + + +[BALLU](https://www.youtube.com/watch?v=EdSoUbXirVI) + diff --git a/Robots/Cassie.md b/Robots/Cassie.md new file mode 100644 index 0000000..78a5622 --- /dev/null +++ b/Robots/Cassie.md @@ -0,0 +1,42 @@ +# Cassie +tag: *Agility Robotics* *仿生* *地面* *双足* + +--- + +![Cassie](../meta/pic/Cassie.jpg) + +Fig1. Cassie在野外测试中的样子 + +![Cassie_walking](../meta/pic/Cassie_walking.jpeg) +Fig2. Cassie在行走中的样子 + +Cassie是由俄勒冈州立大学出来的初创企业Agility Robotics开发的能够双足行走的机器人,外形类似没有头的鸵鸟(虽然官方说他们并不是刻意模仿鸵鸟的)。Agility Robotics的成员之前曾开发过类似的研究用双足机器人MARLO与ATRIAS。这两机器人的开发经验奠定了Cassie的基础。 + +Cassie的行走基于spring-mass model,类似于Boston Dynamics的机器人的行走方式。 + +## 硬件 +Cassie是一个行走时能量利用效率较高的机器人。经过机械结构的优化,控制算法的优化,以及定制的驱动器等,虽然其搭载的电池较小,但能够单次充电运行6~8小时。 + +Cassie的机械结构的特点: +- 每条腿有4个自由度(非官方数据,通过从图片与视频观察得出) +- 每个关节由电机驱动 +- 所有电机均布置在离髋关节(Cassie的话应该叫头?)很近的位置,因此行走时挥动的质量很小,需要的能量就小。 +- 膝关节是由电机通过连杆驱动的,并且在膝关节还有一块能够弯曲的弹性板材,充当弹簧的作用。 +- 足部面积很小 + +## 应用场景 + +其活动范围与人类基本无异,能够到人能所到的地方。 + +具体的应用场景有: +- 送货,并且可以利用已有的路面与行人道 +- 野外探索 +- 抢险救灾 +- 双足研究平台 + +## 拓展 +[Agility Robotics官网](http://www.agilityrobotics.com/#cover) + +[1.视频Cassie](https://www.youtube.com/watch?v=Is4JZqhAy-M) + +[2.视频Cassie](https://youtu.be/5YDIzeW42hg) diff --git a/Robots/CoBot.md b/Robots/CoBot.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Robots/CoBot.md diff --git a/Robots/E2-DR.md b/Robots/E2-DR.md new file mode 100644 index 0000000..fecf93c --- /dev/null +++ b/Robots/E2-DR.md @@ -0,0 +1,75 @@ +# E2-DR +tag: *Honda 本田* *人形* *地面* + +--- +- 图1 通过4足并用爬竖直梯子 +![ASIMO](../meta/pic/E2-DR_1.png) + +- 图2 通过四足步态过毁坏的砖块堆 +![ASIMO_HISTORY](../meta/pic/E2-DR_2.jpeg) + +- 图3 各种技能表集合 +![ASIMO_HISTORY](../meta/pic/E2-DR_3.jpeg) + +E2-DR是日本的汽车厂商巨头本田研发的人形机器人,于2017年10月亮相,契机是在IROS 2017上发表的论文。论文的链接中给出了E2-DR的一些demo,演示了机器人攀爬,过障碍,通过不同地形的能力。 + +早在2015年,Honda在IROS2015上就展示了其救援机器人的一些技能研究,那时的机器人是E2-DR的原型,没有如此美观的外表和性能,但是大体结构上一致。 + +## 硬件 +### 2017年10月时的公开的性能表: +#### 尺寸 + +- 身高 168cm(比Asimo高38cm) +- 深度 25cm(比Asimo还薄) +- 重量 85Kg + +#### 性能 + +- 最大速度 9km/h +- 电池 1000-Wh锂电池 +- 活动时间 90分钟 +- 活动温度范围 -10 and 40 °C +- Intel Core-i7 CPU +- GPU +- 内部冷却系统散热 + +#### 关节自由度 + +- 总共 33 D0F +- 头部 1 DoF +- 躯干 2 DoF +- 手臂 8×2 DoF +- 腿 6×2 DoF +- 手 1×2 DoF + +#### 传感器 + +- 头左右两侧各一个Hokuyo激光雷达,激光雷达可通过电机旋转得到3D点云信息 +- 头上有一个单目摄像头 +- 头上一个SR4000 ToF摄像头 +- 头上一个深度摄像头+红外projector +- 每个手上有一个摄像头和一个深度传感 + +## 应用场景 +官方设定是用于救灾,当然人形机器人的用途还有很多。在救灾这个大场景下,也会有很多的技能需要开发。比如开车,过障碍,环境感知等。 + +### E2-DR的技能表: +- 三维空间的运动,包括爬竖直梯子(包括从梯子下到地面的动作),上楼梯(借助手臂扶hand rail)等 +- 狭窄空间的行进 +- 跨过地上200mm的管道 +- 走过堆满杂乱砖块残骸的地面 +- 沿着走廊通过关着的门(需要打开门的操作) +- 走路过程中允许外力扰动(这个视频中体现不明显,外力太小) +- 环境感知,用于运动规划 +- 爬高梯时,防止猛烈坠落 +- 步行速度 4km/h +- 四足前进速度 2.3km/h +- 在26mm/hour的雨中步行20min +- 在26mm/hour的雨中上下梯子 + +## 拓展 +[机器人介绍(带视频)](https://spectrum.ieee.org/automaton/robotics/humanoids/iros-2017-honda-unveils-prototype-e2dr-disaster-response-robot) + +IROS论文 + +[1] Takahide Yoshiike, Mitsuhide Kuroda, Ryuma Ujino, Hiroyuki Kaneko, Hirofumi Higuchi, Shingo Iwasaki, Yoshiki Kanemoto, Minami Asatani, Takeshi Koshiishi, Honda R&D. **Development of Experimental Legged Robot for Inspection and Disaster Response in Plants**. IROS 2017, Vancouver, Canada. diff --git a/Robots/Electrick.md b/Robots/Electrick.md new file mode 100644 index 0000000..705910f --- /dev/null +++ b/Robots/Electrick.md @@ -0,0 +1,5 @@ +# Electrick +tag: *非机器人* *低成本触摸传感器* *电场* + +## 拓展 +[视频](https://www.youtube.com/watch?v=38h4-5FDdV4) \ No newline at end of file diff --git a/Robots/Epson SCARA Robot Overview.md b/Robots/Epson SCARA Robot Overview.md new file mode 100644 index 0000000..8dd762c --- /dev/null +++ b/Robots/Epson SCARA Robot Overview.md @@ -0,0 +1,41 @@ +# Epson SCARA Robot Overview +tag: *Epson SCARA* *机械臂* *执行* *机器人部件* + +--- +- Epson G1 +![Epson G1](../meta/pic/epson_scara-G1.jpg) + +- Epson G3 +![epson_scara-G3](../meta/pic/epson_scara-G3.jpg) + +- Epson G6 +![epson_scara-G6](../meta/pic/epson_scara-G6.jpg) + +- Epson G10 +![epson_scara-G10](../meta/pic/epson_scara-G10.jpg) + +- Epson G20 +![epson_scara-G20](../meta/pic/epson_scara-G20.jpg) + + +Epson在机器人领域是做的比较好的一家。经常会听到Epson Robot和安川,发那科等公司一起出现。 + +他们也是一家做机械臂和控制器解决方案的公司。其实 +他们家很著名的就是这款Scara机械臂。Scara(Selective Compliance Assembly Robot Arm or Selective Compliance Articulated Robot Arm)的意思是选择性柔性平面机器人,就是这个机械臂的每个关节在XY平面方向上是带有一定柔性(可Back Drive),在Z方向上是完全刚性的。 + +Scara机构示意图: +![scara 示意图](../meta/pic/SCARA_configuration.png) + +这种机械臂的好处是可以在XY平面运动的非常快(由于运动速度叠加) + +## 硬件 + +由于硬件款式较多,先挖个坑之后补(2017.11.13) + +## 应用场景 +码垛,生产线搬运,较精密移动零件。 + +## 拓展 +[Epson Scara Robot 官网](http://robots.epson.com/products/1) + +[wiki-Scara](https://en.wikipedia.org/wiki/SCARA) diff --git a/Robots/Floating_Spring_Joint.md b/Robots/Floating_Spring_Joint.md new file mode 100644 index 0000000..bb4e6f4 --- /dev/null +++ b/Robots/Floating_Spring_Joint.md @@ -0,0 +1,22 @@ +# Floating Spring Joint + +tag: *DRL* *VSJ* + +--- +![FSJ1](../meta/pic/FSJ1.png) + +Fig1. FSJ外观 + +![FSJ2](../meta/pic/FSJ2.png) + +Fig2. FSJ半剖图 + +FSJ最大的亮点是一个关节带有两个自由度,一个自由度用于控制位置,另一个自由度用于控制刚度。但是,由于机械构造的原因,刚度与第二个自由度的电机轴输出为非线性关系,而且,两个自由度之间存在一定的耦合,这给控制和建模带来了难度。 + +## 变刚度原理 +![FSJ3](../meta/pic/FSJ3.png) + +![FSJ4](../meta/pic/FSJ4.png) + +## 拓展 +[1] The DLR FSJ: Energy based design of a variable stiffness joint, S. Wolf, et al. ICRA 2011. \ No newline at end of file diff --git "a/Robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" "b/Robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" new file mode 100644 index 0000000..2a0faf7 --- /dev/null +++ "b/Robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" @@ -0,0 +1,24 @@ +# Fusion-远程操作的寄生机器人 +tag: *Keio University* *协作机器人* + +--- +![Fusion](../meta/pic/Fusion.jpeg) + +## 实验室 +Fusion是一个依附在人(surrogate)身上的人机协作系统,虽然目前做的非常初期,demo效果还是很振奋人心,前景非常好。 + +## 硬件 +- 一个背包,包括通信、控制、供电系统 +- 两个机械臂,各6个自由度 +- 两个机械手,来源不详 +- 一个头,包括3自由度的主动减震,双目立体视觉,双耳听觉 +- 支撑头部的平台 +- 总重量不详,应该不轻,背着很费劲 + +## 应用 +- 支持利用Oculus Rift对机器人进行远程操控 +- 远程教学和交互 + +## 链接 + +- [Fusion官方视频](https://www.youtube.com/watch?time_continue=145&v=Nrc7gH6dydw) diff --git a/Robots/Giacometti Arm with Balloon Body.md b/Robots/Giacometti Arm with Balloon Body.md new file mode 100644 index 0000000..f1e18b3 --- /dev/null +++ b/Robots/Giacometti Arm with Balloon Body.md @@ -0,0 +1,10 @@ +# Giacometti Arm with Balloon Body +tag: *Suzumori Endo Lab* *地面* *空中* *机械臂* + +--- + +长度20m的超长超轻充气机械臂 + + +[Giacometti Arm with Balloon Body](https://www.youtube.com/watch?v=INTHRNcyW9w) + diff --git a/Robots/Gila-Monster.md b/Robots/Gila-Monster.md new file mode 100644 index 0000000..4e52abd --- /dev/null +++ b/Robots/Gila-Monster.md @@ -0,0 +1,35 @@ +# Gila Monster +Author: gzy + +tag: *Biorobotics Lab CMU* *仿生* *地面* + +--- +![SEA-Snake](../meta/pic/Gila_Monster.jpg) + +Fig1. 开发中的Gila Monster蜥蜴型机器人🦎. + + +Gila Monster是Biorobotics LAB出的一款蜥蜴型机器人🦎。 + +## 硬件 + +通过尾巴拖出的工业线缆由控制箱进行给点和通讯。由腰、四肢、头、尾巴组成。 + +- 头, 是一个半圆形的3D打印罩子,连接着脖子,脖子有一个pitch的自由度 +- 腰,有3个自由度,前后2个是yaw方向,中间的1个事pitch方向 +- 尾巴,尾巴也有3个自由度,但尾巴不是控制的重点,更多是作为平衡的配重,没有尾巴也是可以的 +- 四肢,机器人一共有4条腿,每条腿有2个自由度。yaw控制腿向前还是向后,pitch控制抬腿或者下踩。 + +## 应用 +在Gila Monster之前,有一个非常重要的工作是希望在沙地里行走。研究人员在实验室中搭建了模拟沙地的环境,见Fig1。 + +我们知道沙子并非固态,在受力超过临界值后,沙子形态会从固态变成流态。这篇工作主要是研究如何在沙地中行走能防止沙子坍塌,研究能够让沙子保持固态的行走方式。 + +目前,Gila Monster还在开发新的平地行走步态。我们知道脊椎动物的行走是按照特定Pattern周期运动的。研究的主要目标是在一个运动周期内,走的越远越好,同时保证机器人身体平稳不摔(4足不太容易摔不过还是会摔的)。 + +研究的方法是简化模型,将多自由的机器人简化为一个二杆模型,只有二杆的连接处有一个自由度在yaw方向扭动,同时4足简化为只有两个状态的开关,即触地和不触地。触地即足与地面无相对滑动,杆将沿着触地点进行转动。不触地则对当前运动无影响。 + +得到了简化模型后,接下来就是调参了。通过调整参数的变化轨迹,理论上可以得到一个最优的参数轨迹,由此生成一个最优的步态。有一个非常酷炫的方法,用于指导在二维参数空间中选择参数轨迹。这个方法指出,二维参数空间的参数轨迹是一个封闭曲线,选择的参数轨迹曲线包围的面积就是机器人前进的距离。由此可以证明我们可以选择一个最优参数轨迹来得到最优步态(这部分内容非常理论,不是特别理解,欢迎@guzhaoyuan讨论)。 + +## 拓展 +文章: Geometric Mechanics Applied to Tetrapod Locomotion on Granular Media \ No newline at end of file diff --git "a/Robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" "b/Robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" new file mode 100644 index 0000000..1c4ae70 --- /dev/null +++ "b/Robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" @@ -0,0 +1,40 @@ +# HERMES 遥操作机器人 + +tag: *MIT* *BioMimetic Robotics Lab* *双足* + +--- + +![Aibo](../meta/pic/HERMES.jpeg) + +## 硬件 +- 成年人的9成高 +- 24 DoF +- 45kg +- *high-torque-density electric actuator*,该实验室还做高能量密度的电机,正好用于Hermes。这款电机动态性高,瞬时输出功率大。因此hermes可以做非常暴力的“击穿木板”的动作。 +- 自己开发的基于数传的视觉反馈系统 +- 自己开发的带*躯干姿态反馈*的遥操作系统(可以从demo视频看到身体的倾斜会施加给操纵者) +- 全是自己开发的好强…感觉全是2个PhD的工作量 + + +## 应用场景 + +Balance Feedback Interface(BFI) + +> This strategy means that if the robot is about to lose balance, then the BFI attempts to pull the human out of balance as well. In this case, we hypothesize that the BFI is to trigger human’s natural response to disturbances. + +![Aibo](../meta/pic/BFI.jpeg) + +这是设想的机器人平衡方式,通过机器人身上的传感器反馈来拉扯人,使人也产生相同的不平衡。复制人所做出的自然反应施加给机器人,使机器人保持平衡。这也就是标题所说的 + +> MIT Robot Steals Human Brains to Help It Balance + +然而这一功能还在开发,希望将其完善到6DoF的全面反馈。 + +目前机器人还不能行走,可以进行遥操作击穿木板,拿斧头劈门,拿灭火器灭火这样的工作。 + +## 拓展 +[MIT 官方 demo](https://www.youtube.com/watch?time_continue=160&v=2-5n2IsdCqU) + +[官方介绍视频](https://www.youtube.com/watch?time_continue=196&v=p8ozov_xymM) + +J. Ramos, A. Wang, and S. Kim, "Robot-Human Balance State Transfer during Full-Body Humanoid Teleoperation Using Divergent Component of Motion Dynamics" in Robotics and Automation (ICRA), 2016 IEEE International Conference on. IEEE, 2016. \ No newline at end of file diff --git a/Robots/IMPASS.md b/Robots/IMPASS.md new file mode 100644 index 0000000..36d9fd3 --- /dev/null +++ b/Robots/IMPASS.md @@ -0,0 +1,8 @@ +# IMPASS +tag: *RoMeLa* *地面* *轮足* *双轮* + +--- + +IMPASS (Intelligent Mobility Platform with Active Spoke System) + +[IMPASS](https://www.youtube.com/watch?v=pqDFHKEmQGM) diff --git a/Robots/Laikago.md b/Robots/Laikago.md new file mode 100644 index 0000000..633ceb5 --- /dev/null +++ b/Robots/Laikago.md @@ -0,0 +1,38 @@ +# Laikago +tag: *Unitree* *四足* *地面* + +--- +- 图1 +![Laikago](../meta/pic/Laikago.png) + +- 图2 +![LaikagoPushRecovery](../meta/pic/LaikagoPushRecovery.png) + +Laikago是杭州宇树科技(Unitree)开发的一款四足机器人。2017年10月6日推出,瞬间引起国内外机器人爱好者的广泛关注,因为其外形与BDI的大狗类似,并且能够做酷炫的push recovery,一度被认为技术水平距离BDI大狗最近的产品。 + +可以看出,Unitree团队嵌入式方向极强,机械设计能力极强,而且非常懂电机。 + +主控用了STM32F4,每个电机单独有驱动。电机TMD是自己绕的,因为根本没有其他好用的电机。大腿和膝盖电机的扭矩有38.5牛米,而且一定有短时超载,散热是很大的问题,他们也在考虑液冷,不过很麻烦,太折腾。一台22kg,也在考虑减重。API有高层和底层接口,高层利用预置步态算法控制前后左右,底层接口可以控制单个电机,不过开放底层很容易摔的,所以维护会很头疼。 + +之前版本用的同步带,但是腿受冲击容易错齿,非常蛋疼。所以现在改用连杆驱动了,电机都在肚子里,腿非常轻。 + +Laikago作者推荐Legged Robot that Balance,有机会要拜读一下,书作者是Marc Raibert,Founder and CEO of Boston Dynamics。控制大狗的基本方法Marc在这里有提及。 + +## 硬件 +图为2017年11月的数据: + +![Spec](../meta/pic/Laikago_Spec.png) + +## Laikago的技能表: +- 不同地形的行走(草地,石块地,20°斜坡上下坡,) +- Push Recovery (行走中受到轻微外力可以抵抗,收到大外力会下蹲降低重心) +- 走路过程身体平稳,可以放倒立的水瓶 +- 可以拉动较重行李箱,提供25N的拉力 +- Body Following,可以手动调整身体姿态,要求电机有力反馈 +- 在动感平台上保持身体平衡 +- 可以跳着踏步 + +## 拓展 +[视频链接](https://www.youtube.com/watch?v=d6Ja643GqL8) + +[官网](http://www.unitree.cc/) \ No newline at end of file diff --git a/Robots/Modular_Snake.md b/Robots/Modular_Snake.md new file mode 100644 index 0000000..45c445e --- /dev/null +++ b/Robots/Modular_Snake.md @@ -0,0 +1,29 @@ +# Modular Snake +tag: *Biorobotics Lab CMU* *仿生* *地面* + +--- + +![SEA-Snake](../meta/pic/SEA_Snake.jpeg) + +Fig. Modular Snake🐍 + +蛇形机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 +## 硬件 +蛇形机器人的硬件采用模块化的电机连接而成,分为头模块,尾巴模块和躯干模块。模块之间采用Ethernet通讯,供电采用串接方式。即,每个模块都有10个Pogo pin和10个焊盘,用于连接前、后的模块,其中2个pin为供电,另外8个pin为ethernet的8个通讯io。每个模块都带有自己的独立控制器,采用STM32F1系列。 + +- 头模块有探照灯和摄像头。 +- 躯干模块有一个运动自由度,由maxon电机,编码器,惯导模块等组成,这部分构成了机器蛇运动和控制的核心。 +- 尾部模块工业连接头拖出总控制线,连接到控制箱进行控制。 + +## 应用场景 +用于军事探测,可进行管道内壁,树干外壁的攀爬 + +可作为多自由度机械臂,进行空间的操作 + +## TODO +研究其步态,包括 前进,左右移动,转向,横滚,爬树 + +## 拓展 +[机器人链接](http://biorobotics.ri.cmu.edu/projects/modsnake/) + +[视频 Modular Snake](https://www.youtube.com/watch?v=kNH0eAqz_WU&list=PLfxH9gJUcI6GG0fK4st2L8X_IJWhwlzzb&index=6) diff --git a/Robots/NABiRoS.md b/Robots/NABiRoS.md new file mode 100644 index 0000000..9f8cd44 --- /dev/null +++ b/Robots/NABiRoS.md @@ -0,0 +1,12 @@ +# NABiRoS +tag: *RoMeLa* *地面* *双足* + +--- + +Non Anthropomorphic Bipedal Robotic System的简称 + +## 还有这种操作! ## +两只脚前后走叫做双足,两只脚横着走也叫做双足。NABiRos是一个硬是把横向说成前後来行走的双足机器人 + + +[NABiRoS](https://www.youtube.com/watch?v=Y5UoQsHJskw) diff --git a/Robots/Ocean One.md b/Robots/Ocean One.md new file mode 100644 index 0000000..7e492d4 --- /dev/null +++ b/Robots/Ocean One.md @@ -0,0 +1,28 @@ +# Ocean One + + tag: *Stanford Robotics Lab* *人形* *水下* *探索* + + --- +![Ocean One](../meta/pic/Ocean_One.jpg) + +![Ocean One 2](../meta/pic/Ocean_One_2.png) + +斯坦福大学机器人实验室开发的人形水下遥操作机器人。上半身像人形,下半身像传统水下机器人。 + +first come out: 2016 + +- 头部有两个自由度和双目视觉 +- 双臂各有7自由度,力反馈,弹性串联驱动 +- 手部是欠驱动抓手,具有触觉和摄像头 +- 身体共有8个推进器,以及用于探索,导航,姿态估计用的多个广角摄像头,多普勒测速计,气压计等许多传感器 + + + +Video URL: +[Youtube](https://www.youtube.com/watch?v=p1HmgP9l4VY) + +News URL: +[IEEE](https://spectrum.ieee.org/automaton/robotics/humanoids/stanford-humanoid-submarine-robot) + +Official Site URL: +[cs.stanford.edu](http://cs.stanford.edu/group/manips/ocean-one.html) diff --git a/Robots/SEA-Snake.md b/Robots/SEA-Snake.md new file mode 100644 index 0000000..76752cb --- /dev/null +++ b/Robots/SEA-Snake.md @@ -0,0 +1,38 @@ +# SEA-Snake +tag: *Biorobotics Lab CMU* *仿生* *地面* + +--- + +![SEA-Snake](../meta/pic/SEA_Snake.jpeg) + +Fig. 第一代非SEA的蛇形机器人 + +![SEA-Snake](../meta/pic/SEA_Snake2.png) + +Fig. 第二代带SEA的蛇形机器人 + +蛇形机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 +## 硬件 +蛇形机器人的硬件采用模块化的电机连接而成,分为头模块,尾巴模块和躯干模块。模块之间采用Ethernet通讯,供电采用串接方式。即,每个模块都有10个Pogo pin和10个焊盘,用于连接前、后的模块,其中2个pin为供电,另外8个pin为ethernet的8个通讯io。每个模块都带有自己的独立控制器,采用STM32F1系列。 + +- 头模块有探照灯和摄像头。 +- 躯干模块有一个运动自由度,由maxon电机,编码器,SEA弹簧系统,惯导模块等组成,这部分构成了机器蛇运动和控制的核心。 +- 尾部模块工业连接头拖出总控制线,连接到控制箱进行控制。 + + +## SEA(Series Elastic Actuator) +第二代蛇形机器人相对第一代,增加了SEA模块,其实本质就是在电机输出轴末端增加柔性弹簧,使单个模块增加柔性(优点)和不可控性(缺点)。SEA的另一个优点是可以做力控,同时带来的缺点是控制频率降低(至于为什么,欢迎@guzhaoyuan讨论)。 + +## 应用场景 +用于军事探测,可进行管道内壁,树干外壁的攀爬 + +可作为多自由度机械臂,进行空间的操作 + +## 拓展 +[机器人链接](http://biorobotics.ri.cmu.edu/projects/modsnake/) + +[视频第二代SEA-Snake](https://www.youtube.com/watch?v=te4M-b69fVs) + +[视频第一代Snake](https://www.youtube.com/watch?v=kNH0eAqz_WU&list=PLfxH9gJUcI6GG0fK4st2L8X_IJWhwlzzb&index=6) + +论文:Design and Architecture of a Series Elastic Snake Robot, D. Rollinson, et al. \ No newline at end of file diff --git a/Robots/Salto.md b/Robots/Salto.md new file mode 100644 index 0000000..b91b76a --- /dev/null +++ b/Robots/Salto.md @@ -0,0 +1,8 @@ +# Salto +tag: *Berkeley* *地面* *弹跳* + +--- + + +[Salto](https://www.youtube.com/watch?v=xvIk39rkkiU) +[Salto-1P](https://www.youtube.com/watch?v=2dJmArHRn0U) diff --git a/Robots/Sarcos Robotics Overview.md b/Robots/Sarcos Robotics Overview.md new file mode 100644 index 0000000..752f0bf --- /dev/null +++ b/Robots/Sarcos Robotics Overview.md @@ -0,0 +1,5 @@ +# GUARDIAN S +tag: *Sarcos* *蛇形* *外骨骼操作* *轮式* *机械臂* + +## 拓展 +[视频](https://www.youtube.com/watch?v=DfYAvWIfhYY) \ No newline at end of file diff --git a/Robots/Snake-Monster.md b/Robots/Snake-Monster.md new file mode 100644 index 0000000..12814f2 --- /dev/null +++ b/Robots/Snake-Monster.md @@ -0,0 +1,48 @@ +# Snake Monster +tag: *Biorobotics Lab CMU* *仿生* *地面* + +--- + +![SEA-Snake](../meta/pic/snake_monster.jpeg) + +Fig1. 末端是夹持器的SEA蜘蛛型机器人Snake Monster🕷 + +![SEA-Snake](../meta/pic/snake_monster2.jpeg) + +Fig2. SEA蜘蛛型机器人Snake Monster🕷 + +蜘蛛机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 + +同系列的还有[蛇形机器人](https://github.com/thu-skyworks/Roboseum/blob/master/robots/SEA-Snake.md),采用相同的SEA模块化电机拼接而成。关于SEA的描述详见蛇形机器人链接。 +## 硬件 +蜘蛛机器人的硬件采用模块化的电机连接而成,分为**身体模块**和**6条腿**,以及一个标配的**控制箱**。同一架构的也有4条腿的“蜘蛛机器人”,虽然控制采用的步态不一样,但是硬件本质没有区别。 + +- 身体模块:带有电源,控制器 +- 腿:每条腿都与身体连接,有3个自由度,如果腿的末端是抓取器,则多加1个自由度 +- 控制箱:与身体模块的控制器想通讯,主要进行供电和通讯,以及提供好用的用户操作接口 +- 电机模块:电机采用模块化,每个电机包括控制板(Ethernet通讯和供电),有一个运动自由度,带减速器,位置传感和IMU姿态反馈,新版带SEA模块。 + +Snake Monster有无线版和有线版,其实无线版就是把控制器和电源放在身体模块里,而有线版则是由控制箱供电和控制。 + +## SEA(Series Elastic Actuator) +关于SEA的详细描述,见[SEA-Snake](https://github.com/thu-skyworks/Roboseum/blob/master/robots/SEA-Snake.md)。 + +其实Snake Monster分为两个版本,带SEA和不带SEA。SEA Snake Monster的柔性在控制上为其带来了很多不便,虽然可以做力控,但感觉算法仍然没有达到那个水平。就目前的控制效果来看,用传统的控制方法控制带SEA电机显然给机器人带来了一定的不稳定。(尤其在机器人举腿的时候,腿各种在空中晃,严重影响落地点的控制,见视频1) + +但是,力控也带来一个好处,就是可以暴力踩它。这一点说明了SEA电机的力控性能,即在有大外力干扰的情况下。机器人能够增大力矩抵抗干扰,在无干扰或小干扰情况下,机器人就可以减小力矩,这样可以减小功耗,减小冲击(增加了柔性)。 + +## 步态 +蜘蛛机器人采用3足步态,采用CPG(Central Pattern Generator)算法。(什么是CPG,欢迎@guzhaoyuan讨论) + +## 应用场景 +多足机器人的好处就在于特别适应地形,它可以轻松地走过斜坡,充满障碍和多种材质的地形。而这些功能,在双足机器人上没有一个是能够轻松解决的。 + +多足可以有很多花样,比如Fig1中的将一个足改为机械臂,这样就可以做移动抓取。 + +在研究层面,可以研究的点有,改变足的数量,做机器人的自适应控制。比如,在损失一个甚至两个腿的情况下,如何控制机器人仍然完成移动任务。 +## 拓展 +[蜘蛛机器人链接](http://biorobotics.ri.cmu.edu/robots/SEAModularity.php),同时介绍了SEA Module,即电机的信息。 + +[视频SEA Snake Monster](https://www.youtube.com/watch?time_continue=34&v=rULs2E9dpHQ),SEA的柔性在这里体现的非常明显。 + +更鬼畜的是,他们把控制器和腿改造成了[双足机器人](https://www.youtube.com/watch?time_continue=35&v=7CciHJ6SP_o),虽然不能走,但是能简单地站立并且抵抗一些外力。 \ No newline at end of file diff --git a/Robots/Snake_Arm_Robot.md b/Robots/Snake_Arm_Robot.md new file mode 100644 index 0000000..0e5fdf5 --- /dev/null +++ b/Robots/Snake_Arm_Robot.md @@ -0,0 +1,45 @@ +# Snake Arm Robot + +Author: gzy + +tag: *OC Robotics* *机械臂* + +--- + +![Snake Arm Robot](../meta/pic/Snake_Arm_Robot.png) + +Fig1. Snake Arm Robot + +Snake Arm Robot Series II 是有英国公司OC Robotics出品的机器人,主要的亮点是狭小空间的工业机械臂操作应用。 + +## 公司介绍 +OC Robotics的口号是“Reaching the unreachable”. 目标的制作在狭小空间进行操作的机器人,主要产品均为蛇形。 + +## 硬件 +由关节和连杆连接而成,共有12个关节和12个连杆。每个关节有两个自由度,均是由线驱动。每个关节有27.5°的弯曲范围。 + +## 控制 + +![Snake Arm Robot](../meta/pic/Snake_Arm_Robot2.png) + +Fig2. 线驱动控制器 + +每个关节有一圈的不锈钢线进行驱动,共20根(Series II,不同型号驱动线的数目不同,最多有50根驱动线)。每个线驱动装置均是丝杠和螺母进行线的拉扯。丝杠的旋转由60W 的maxon EC motor无刷电机带动。 +20根不锈钢线从基座的螺母出发,连接到不同的关节,就先筋腱拉动手臂一样,拉动不同的关节。具体的机械结构和控制方法,官方没有提供(似乎有专利可寻)。不过官方支持与不同工业应用的厂商进行个性化定制开发,制造具有不同工业应用的机械臂,对每一款的机械结构均有不同。 + +## 应用 +狭小空间的勘探与操作。 +末端的工具头可以替换,可以携带摄像头,灯光,高压水枪碰头等。 +能够进行path following,即后面关节沿着前面关节经过的空间位置前进,整个机器人的空间形状由头结点决定。 + + +## TODO + +- 末端通讯控制方式 +- 和公司其他产品比较 + + +## 拓展 +[Snake Arm 技术文档](http://www.ocrobotics.com/downloads/Website/OC%20Robotics%20-%20Series%20II%20X125%20Snake-arm%20System%20-%20Data%20Sheet%20-%20November%202015.pdf) + +[OC Robotics 技术文档](https://www.nasa.gov/pdf/628551main_4C-1_Buckingham.pdf) \ No newline at end of file diff --git a/Robots/SpotMini.md b/Robots/SpotMini.md new file mode 100644 index 0000000..f2d44c6 --- /dev/null +++ b/Robots/SpotMini.md @@ -0,0 +1,41 @@ +# SpotMini + +tag: *Boston Dynamics* *四足* *地面* + +Author: gzy + +Date: 2017.11.23 + +--- +- 图1 +![ASIMO](../meta/pic/spotmini.jpg) + +SpotMini是机器人公司Boston Dynamics于2017年11月发布。相比前代Spot,机器人最大的改观就是做的更小更精致。全身做了外壳封装,也有了鲜明的黄色色调,整体感觉是倾向于出售的一款机器人。 + +Boston Dynamics自己说这款机器人的最大亮点是安静。 + +## 硬件 + +### 2017年11月时的公开的性能表: + +#### 尺寸 +- 身高 84cm +- 重量 30kg + +#### 性能 +- 可携带重量:14Kg +- 时长90min + +#### 关节自由度 +- 腿 4*3 自由度 +- 机械臂 5 自由度 +- 总计 17自由度 + +#### 传感器 +- 立体相机 +- 深度摄像头 +- IMU +- 位置和力传感器 + +## 拓展 +[机器人链接](https://www.bostondynamics.com/spot-mini) \ No newline at end of file diff --git a/Robots/T-HR3 Humanoid Robot.md b/Robots/T-HR3 Humanoid Robot.md new file mode 100644 index 0000000..9e7af81 --- /dev/null +++ b/Robots/T-HR3 Humanoid Robot.md @@ -0,0 +1,68 @@ +# T-HR3 +tag: *Toyota 丰田* *人形* *外骨骼* *虚拟现实* + +--- +![T-HR3](../meta/pic/T-HR3.jpg) + +![T-HR3](../meta/pic/T-HR3_2.jpg) + +### 一些info: +1. honda=本田,toyota=丰田 +2. toyota于2017年11月最新出的人形机器人 + +### 机器人的优点: +1. 力矩伺服。这个做的非常棒,机器人的关节有应变式的力矩传感 + +![T-HR3](../meta/pic/T-HR3-torque-servo.jpg) +图:力矩执行器的机械结构 + +这是Toyota和Tamagawa Seiki and Nidec Copal Electronics合作的关节,用于测量力矩。该关节同时用于T-HR3和Master Maneuvering System. +2. 远程控制(Master Maneuvering System, MMS). VR+关节力反馈+数据手套,整体方案做的非常棒. 更有猜测,可以利用示教的数据作为机器学习的数据,用以学习控制机器人的策略。 + +### 机器人的问题: +1. 因为人的姿态和机器人姿态不是完美对应,有一个bias,所以人和机器人不能同时操作同一个物品。 +2. 机器人各种抖抖抖,传感器拿到的值也不是特别的精确,或者说没有很好的滤波,所以电机得到的指令一直在tremble。 +3. 机器人的操作一直慢半拍。不知道是通讯时延还是数据处理的问题,又或者是机器人执行速度更不上(毕竟有力控,执行速度会比较慢)。时延十分明显,可以达到0.5甚至1s。毕竟那么多关节的实时同步控制太难。 +4. 从demo中单腿支撑恢复双腿站立的瞬间,上身明显晃动,足以判断脚底没有压力传感。 +5. 机器人甚至连一步都没有走,显然是怕摔,主要精力可能都放在上半身了。而遥操作的座椅不支持控制行走步态,原因可以参考:[知乎:为何双足机器人不直接拷贝人类行动时的数据?](https://www.zhihu.com/question/65813578) +所以这个人形机器人就很尴尬,只能模仿上肢动作而不能移动。 + +## 硬件 + +#### 尺寸 +- 身高 152cm +- 重量 74.8kg (比我重比我矮…) + +#### 关节自由度 +- 头部 2 自由度 +- 手臂 (3+1+3)×2=14 自由度 +- 灵巧手 1×2 自由度(??) +- 腰部 3 自由度 +- 腿脚 6×2 自由度 +- 总计 32 自由度 + +#### 遥操作自由度(手臂+手,带力反馈) +- 肩膀 3×2 自由度 +- 肘 1×2 自由度 +- 手腕 3×2 自由度 +- 手 1×2 自由度(??) +- 总计 16个关节传感 + +#### 传感器 +- 头部:双目视觉(可能只是用于传输数据给HTC VIVE) +- 关节:力矩传感 + +#### 远程控制(Master Maneuvering System, MMS) +利用了HTC VIVE的虚拟现实来实时展现机器人看到的图像,并且通过MMS的位置传感来控制机器人。机器人将得到的力矩反馈通过MMS来施加在操作者身上,这是一个非常棒的解决方案。但是问题也不少,见开头。 + +## 应用场景 +Toyota官方称 "this is a platform with capabilities that can safely assist humans in a variety of settings, such as the home, medical facilities, construction sites, disaster-stricken areas and even outer space."" +### T-HR3的技能表: +- 较低时延的遥操作机器人 +- 单脚站立做各种姿势(预先编程确定各关节角然后执行) + + +## 拓展 +[demo视频](https://www.youtube.com/watch?v=GTw7q3-Bn6M) + +[报道(含更多视频)](https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0ahUKEwi49bDhgtzXAhUN2WMKHXN-Df8QFghBMAY&url=https%3a%2f%2fwww%2eengadget%2ecom%2f2017%2f11%2f21%2ftoyota-t-hr3-robot%2f&usg=AOvVaw2D1Qf048U6b_buHHDM9Dbf) \ No newline at end of file diff --git a/Robots/Template.md b/Robots/Template.md new file mode 100644 index 0000000..680c2f4 --- /dev/null +++ b/Robots/Template.md @@ -0,0 +1,72 @@ +# ASIMO +tag: *Honda 本田* *人形* *地面* + +--- +- 图1 +![ASIMO](../meta/pic/Asimo.jpg) + +- 图2 +![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) + +ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 + + + +ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 + +## 硬件 + +### 2011年11月时的公开的性能表: + +#### 尺寸 +- 身高 130cm +- 宽度 45cm +- 深度 34cm +- 重量 48kg +#### 性能 +- 最大速度 9km/h +- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 +#### 关节自由度 +- 头部 3 自由度 +- 腕部 7×2 自由度 +- 手部 13×2 自由度 +- 腰部 2 自由度 +- 脚步 6 自由度 +- 总计 57自由度 + +#### 抓握力 +- 0.5kg/手(五指抓握的状态下) +#### 致动器 +- 伺服电机 + 谐波减速器 + 驱动器 + +#### 传感器 +- 脚部: 6轴力传感器(可感知力在脚掌中的分布) +- 腰部: 陀螺仪 + 加速度传感器 + +## 应用场景 +家居服务,接待,导游等 +### ASIMO的技能表: +- 现场解说 +- 端茶送水 +- 预测行人的行走方向,并自动避开 +- 三个人同说说话时识别谁说了什么 +- 迎接客人并引导 +- 以9km/h的速度行走 +- 双足起跳 +- 在有凹凸起伏的路上行走 +- 单脚跳 +- 脚尖射门 +- 拿起水瓶,拧开盖子,并倒进纸杯 +- 手语 +- 人脸识别 + +## 拓展 +[机器人链接](http://www.honda.co.jp/ASIMO/) + +[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) + +[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) + +[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) + +[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/Robots/collaborative transportation.md b/Robots/collaborative transportation.md new file mode 100644 index 0000000..2ba0b91 --- /dev/null +++ b/Robots/collaborative transportation.md @@ -0,0 +1,5 @@ +# aslteam +tag: *ETHZ* *aslteam* *多机协作* *四足* *四旋翼* + +## 拓展 +[视频](https://www.youtube.com/watch?v=9PprNdIKRaw) \ No newline at end of file diff --git a/Robots/robonaut2.md b/Robots/robonaut2.md new file mode 100644 index 0000000..9464866 --- /dev/null +++ b/Robots/robonaut2.md @@ -0,0 +1,12 @@ +# Robonaut2 + +tag: *空间* *NASA* + +--- + +![robonaut](../meta/pic/Robonaut2-strongman.png) + +![robonaut](../meta/pic/Robonaut2.jpg) + +Robonaut2是NASA开发的空间机器人,人形。 + diff --git a/Sensors/HardNet.png b/Sensors/HardNet.png new file mode 100644 index 0000000..3d4a3ce --- /dev/null +++ b/Sensors/HardNet.png Binary files differ diff --git a/Sensors/L2Net.png b/Sensors/L2Net.png new file mode 100644 index 0000000..067692a --- /dev/null +++ b/Sensors/L2Net.png Binary files differ diff --git a/Sensors/PPFNet.png b/Sensors/PPFNet.png new file mode 100644 index 0000000..2b76752 --- /dev/null +++ b/Sensors/PPFNet.png Binary files differ diff --git "a/Sensors/\345\255\246\344\271\240\345\236\213\346\217\217\350\277\260\345\255\220.md" "b/Sensors/\345\255\246\344\271\240\345\236\213\346\217\217\350\277\260\345\255\220.md" new file mode 100644 index 0000000..cdfa3b4 --- /dev/null +++ "b/Sensors/\345\255\246\344\271\240\345\236\213\346\217\217\350\277\260\345\255\220.md" @@ -0,0 +1,31 @@ +学习型描述子 + +目前深度学习的识别率/匹配率是绝对比传统的匹配算法如SIFT要高的,但是深度神经网络识别率的提高建立在需求大量训练样本的基础上,在一些没有训练样本的应用(image stitching/ stereo mathing)仍然无法很方便的使用DNN来识别和匹配。但是未来会逐步侵占SIFT/SURF这种固定特征提取算法的生存空间。 + +- L2Net: progressive sampling strategy,relative distance between descriptors and extra supervision. CVPR 2017 + +- HardNet: Working hard to know your neighbor's margins: Local descriptor learning loss. NIPS 2017 +- DeepCD: learns a pair of complementary descriptors of binary and float. ICCV 2017 +- Spread-out: regularization term to maximize the spread in feature descriptor inspired by the property of uniform distribution. ICCV 2017 ( pairwise and triplet losses + regularization technique) +- PPFNet: Global Context Aware Local Features for Robust 3D Point Matching. CVPR 2018 (N-tuple loss, 3D point cloud) +- End-to-End Learning of Keypoint Detector and Descriptor for Pose Invariant 3D Matching. CVPR 2018 (depth image) + +L2Net + +第一个工作是L2Net,输入是32*32 patch,输出是128位浮点型描述子,它输出的描述子能够在欧氏空间采用L2范数进行匹配,因此命名为L2Net。 +![](L2Net.png) +该方法的原创性体现在以下四个方面: +> 采用了一个渐进的采样策略,使得网络在有限步内能够获得大量的样本; +针对块匹配问题,描述子对描述子间的相对距离给予更高的权重; +在中间的特征层施加了额外的监督; +描述子的压缩性也被纳入了考虑范围。 + +HardNet +第二个工作是HardNet,受到Lowe的SIFT的匹配标准启发,引入一种度量学习所用的loss(最大化一个batch中的最近正样本与最近负样本的距离),作为目标函数。将这个loss与L2Net的结构结合,构成了HardNet 。 +![](HardNet.png) +代码链接:[DagnyT/hardnet](https://link.zhihu.com/?target=https%3A//github.com/DagnyT/hardnet) + +PPFNet +第五个是PPFNet,目的是为3D点云生成理想且鲁棒的3D局部特征子。该方法基于深度学习方法来生成易区分且抗旋转的3D局部特征子,首先,将一些简单的几何特征属性如:点的坐标、法线以及点对特征(point pair features, PPF),组合起来成原始特征;接着,又设计了一个新的损失函数:N-tuple Loss。其类似于contrastive loss,能同时将多个同类或者不同类样本嵌入到一个欧式空间中,样本之间的差异用其特征向量的欧式距离表示。最后,PPFNet网络的结构继承自PointNet,因此它天生就可以处理点云以及应对点的无序性。 +最后,PPFNet网络的结构继承自PointNet,因此它天生就可以处理点云以及应对点的无序性。 +![](PPFNet.png) \ No newline at end of file diff --git a/Software/Algorithms/Aerial Robotics/Control.md b/Software/Algorithms/Aerial Robotics/Control.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Aerial Robotics/Control.md +++ /dev/null diff --git a/Software/Algorithms/Aerial Robotics/Geometry.md b/Software/Algorithms/Aerial Robotics/Geometry.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Aerial Robotics/Geometry.md +++ /dev/null diff --git a/Software/Algorithms/Aerial Robotics/Mechanics.md b/Software/Algorithms/Aerial Robotics/Mechanics.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Aerial Robotics/Mechanics.md +++ /dev/null diff --git a/Software/Algorithms/Aerial Robotics/PX4.md b/Software/Algorithms/Aerial Robotics/PX4.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Aerial Robotics/PX4.md +++ /dev/null diff --git a/Software/Algorithms/Aerial Robotics/Planning.md b/Software/Algorithms/Aerial Robotics/Planning.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Aerial Robotics/Planning.md +++ /dev/null diff --git a/Software/Algorithms/Estimation/IterativeClosestPoint.md b/Software/Algorithms/Estimation/IterativeClosestPoint.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Estimation/IterativeClosestPoint.md +++ /dev/null diff --git a/Software/Algorithms/Estimation/KalmanFilter.md b/Software/Algorithms/Estimation/KalmanFilter.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Estimation/KalmanFilter.md +++ /dev/null diff --git a/Software/Algorithms/Estimation/MaximumLikelihoodEstimate.md b/Software/Algorithms/Estimation/MaximumLikelihoodEstimate.md deleted file mode 100644 index a182c6c..0000000 --- a/Software/Algorithms/Estimation/MaximumLikelihoodEstimate.md +++ /dev/null @@ -1,14 +0,0 @@ -# 极大似然估计 -## Maximum Likelihood Estimate - -极大似然估计 MaximumLikelihoodEstimate, 在感知算法中很常用于分类问题,以及在直接法视觉里程计中用于相邻帧配准的问题。 - -想法是将需要根据参数进行估计的问题,转化成一个概率论中的随机变量,如果该变量的分布是单峰的,则用一个多维高斯分布去逼近、拟合这个变量的分布(问题中要估计的量由几个参数决定,就用几维的高斯分布),在极大似然的意义下,可得到闭式的全局最优解。对于单峰的随机变量而言,是很高效的方法,除了预测、分类外,还可以用极大似然估计达到压缩信息的目的——本来为了保存该变量的分布,在不知道其模型的情况下只能把每一个样本的数据都存下来,用高斯分布拟合逼近之后,就只有均值和方差两个数(或向量)需要存了,大大节省空间。 - -[多维高斯分布公式1] - -而如果要逼近的随机变量有多个峰,那么需要用高斯混合模型,并通过最大化期望法(Expectation-Maximization,EM算法)来逼近拟合,此方法无法得到闭式的全局最优解,但可以确保收敛至一个局部最优解。 - -[高斯混合模型公式2] - -[EM算法流程图] \ No newline at end of file diff --git a/Software/Algorithms/Estimation/ParticleFilters.md b/Software/Algorithms/Estimation/ParticleFilters.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Estimation/ParticleFilters.md +++ /dev/null diff --git a/Software/Algorithms/Estimation/TargetTracking.md b/Software/Algorithms/Estimation/TargetTracking.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Estimation/TargetTracking.md +++ /dev/null diff --git a/Software/Algorithms/Learning/Estimation/KalmanFilter.md b/Software/Algorithms/Learning/Estimation/KalmanFilter.md new file mode 100644 index 0000000..8f0506a --- /dev/null +++ b/Software/Algorithms/Learning/Estimation/KalmanFilter.md @@ -0,0 +1,274 @@ +#Kalman Filter + + +卡尔曼滤波是基于传感器对动态系统当前状态的观测,结合动态系统运动的规律,对其未来时刻的运动状态进行预测。首先需要跟踪预测的对象建立一个动力学模型,用微分方程描述。然后对观测和运动引入高斯噪声,然后用概率学的公式和优化理论,给出一个表征系统未来时刻运动状态的极大似然估计。 + +一篇写得很好的[外文博客](http://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/)及其[中文翻译](https://blog.csdn.net/u010720661/article/details/63253509) + + +## 导论 + +卡尔曼滤波本质上是一个数据融合算法,将具有同样测量目的、来自不同传感器、(可能) 具有不同单位 (unit) 的数据融合在一起,得到一个更精确的目的测量值。 + +卡尔曼滤波的局限性在于其只能拟合线性高斯系统。但其最大的优点在于计算量小,能够利用前一时刻的状态(和可能的测量值)来得到当前时刻下的状态的最优估计。 + +本文虽然是小白教程,但还是需要各位至少知道高斯分布,一点点线性代数,还有状态向量这样的名词。 + + +## 简述 + +考虑一个SLAM 问题,它由一个运动方程: +![](../../../meta/pic/kalmanFilter/640.png) + +和一个观测方程组成: + +![](../../../meta/pic/kalmanFilter/640-1.png) + +就把它当作一个线性系统吧(非线性系统请看下一讲扩展卡尔曼滤波),并且为了简化推导,忽略路标的下标j,并把路标y 并入到状态向量一起优化,那么运动方程就可以写为: +![](../../../meta/pic/kalmanFilter/640-2.png) + +其中: + +![](../../../meta/pic/kalmanFilter/640-3.png)为t 时刻的状态向量,包括了相机位姿、路标坐标等信息,也可能有速度、朝向等信息; + +![](../../../meta/pic/kalmanFilter/640-4.png)为运动测量值,如加速度,转向等等; + +![](../../../meta/pic/kalmanFilter/640-5.png)为状态转换方程,将t-1 时刻的状态转换至t 时刻的状态 + +![](../../../meta/pic/kalmanFilter/640-6.png)是控制输入矩阵,将运动测量值![](../../../meta/pic/kalmanFilter/640-4.png)的作用映射到状态向量上; +![](../../../meta/pic/kalmanFilter/640-7.png)是预测的高斯噪声,其均值为0,协方差矩阵为![](../../../meta/pic/kalmanFilter/640-8.png) 。 + +这一步在卡尔曼滤波中也称为预测 (predict)。 + +类似,测量方程可以写为: + +![](../../../meta/pic/kalmanFilter/640-9.png) + +其中: + +![](../../../meta/pic/kalmanFilter/640-10.png)为传感器的测量值; + +![](../../../meta/pic/kalmanFilter/640-11.png)为转换矩阵,它将状态向量映射到测量值所在的空间中; + +![](../../../meta/pic/kalmanFilter/640-12.png)为测量的高斯噪声,其均值为0,协方差矩阵为 。 + +而卡尔曼滤波就是预测 - 测量之间不断循环迭代。当然,对于某些情况,如GPS + IMU,由于IMU 测量频率远比GPS 高,在只有IMU 测量值时,只执行运动更新,在有GPS 测量值时再进行测量更新。 + + +▌一个小例子 + +用一个在解释卡尔曼滤波时最常用的一维例子:小车追踪。如下图所示: +![](../../../meta/pic/kalmanFilter/640.jpeg) + +状态向量为小车的位置和速度: + +![](../../../meta/pic/kalmanFilter/640-13.png) + +而司机要是踩了刹车或者油门,小车就会具有一个加速度,![](../../../meta/pic/kalmanFilter/640-14.png)。 + +假设t 和t-1 时刻之间的时间差为 +![](../../../meta/pic/kalmanFilter/640-15.png) 。根据物理知识,有: +![](../../../meta/pic/kalmanFilter/640-16.png) + +写成矩阵形式就有: + +![](../../../meta/pic/kalmanFilter/640-17.png) + +跟之前的运动方程对比,就知道 + +![](../../../meta/pic/kalmanFilter/640-18.png) + +上式就写为: + +![](../../../meta/pic/kalmanFilter/640-19.png) + + +![](../../../meta/pic/kalmanFilter/640-20.png)表示t-1 时刻卡尔曼滤波的状态估计; +![](../../../meta/pic/kalmanFilter/640-21.png)则表示中t-1 到t 时刻,预测更新所得的预测值。 + +再利用运动模型对状态向量进行更新后,还要继续更新状态向量的协方差矩阵P,公式为: + +![](../../../meta/pic/kalmanFilter/640-22.png) + +假设 +![](../../../meta/pic/kalmanFilter/640-3.png) 为t 时刻下状态向量的真值(自然是永远未知的),由之前的现形运动方程(式(3))给出,将式(3) 与式(9) 相减可得: +![](../../../meta/pic/kalmanFilter/640-23.png) + +而: +![](../../../meta/pic/kalmanFilter/640-24.png) + +考虑到状态向量和噪声是不相关的,则![](../../../meta/pic/kalmanFilter/640-25.png),上式就可以简化为: +![](../../../meta/pic/kalmanFilter/640-26.png) + +**推导完毕。** + +可以看到,经过预测更新,协方差矩阵P 变大了。这是因为状态转换并不完美,而且运动测量值含有噪声,具有较大的不确定性。 + +预测更新实际上相当于“加法”:将当前状态转换到下一时刻(并增加一定不确定性),再把外界的干扰(运动测量值)叠加上去(又增加了一点不确定性) + +![](../../../meta/pic/kalmanFilter/640-1.jpeg) + +上面即为卡尔曼滤波中预测这一步。这一步相对比较直观,推导也较测量更新简单,就只在这里详细给出了。 + +如果得到了测量值,那么我们就可以对状态向量进行测量更新了,对应的公式为: + +![](../../../meta/pic/kalmanFilter/640-27.png) + + +其中: + +![](../../../meta/pic/kalmanFilter/640-3.jpeg) + +为卡尔曼增益。 + +从这里就可以看到,测量更新显然比预测更新复杂,难点也集中在这里。下面就给出测量更性的详细推导。 + + +▌推导 + +一些CASE + +从t-1 时刻起,小车运动后,经过前面所述的预测更新后,我们就得到了t 时刻的小车位置的估计,由于在卡尔曼滤波中,我们使用高斯概率分布来表示小车的位置,因此这个预测的位置可以写为: + +![](../../../meta/pic/kalmanFilter/640-30.png) + +为了与前面的通用的推导区别开来,在这个一维的例子中我们使用了新的符号。不过熟悉高斯概率分布的话应该可以马上看出来, +![](../../../meta/pic/kalmanFilter/640-31.png)为这个高斯分布的均值, +![](../../../meta/pic/kalmanFilter/640-32.png)为方差,而r 为小车的可能位置, +![](../../../meta/pic/kalmanFilter/640-33.png)为某个可能位置 (r) 的概率分布。 + +假设在t 时刻,我们通过某测距仪测得小车距离原点的距离r,由于测量包含噪声(且在面前我们假设了其为高斯噪声),因此该测量值也可以利用高斯概率分布来表示: + +![](../../../meta/pic/kalmanFilter/640-34.png) + +除了下标外,其余的字母的含义都和上面的式子一样。 + +![](../../../meta/pic/kalmanFilter/640-4.jpeg) + + +如上图琐事,现在在t 时刻,我们有了两个关于小车位置的估计。而我们所能得到的关于小测位置的最佳估计就是将预测更新和测量更新所得的数据融合起来,得到一个新的估计。而这个融合,就是一个简单的“乘法”,并利用了一个性质:两个高斯分布的乘积仍然是高斯分布。 + +![](../../../meta/pic/kalmanFilter/640-35.png) + +将上式化简一下: + +![](../../../meta/pic/kalmanFilter/640-36.png) + +其中, +![](../../../meta/pic/kalmanFilter/640-37.png)为 +![](../../../meta/pic/kalmanFilter/640-38.png)和 +![](../../../meta/pic/kalmanFilter/640-39.png)的加权平均, +![](../../../meta/pic/kalmanFilter/640-40.png)则是 +![](../../../meta/pic/kalmanFilter/640-41.png)和 +![](../../../meta/pic/kalmanFilter/640-42.png)的调和平均的二分一: + +![](../../../meta/pic/kalmanFilter/640-43.png) +![](../../../meta/pic/kalmanFilter/640-6.jpeg) + + + +最右边的式子是为了后面的计算而准备的。 + +本质上,这(高斯分布相乘)就是卡尔曼滤波中测量更新的全部了。 + +那么, 怎么由上面两个简单的一维的式子得到前一节 +![](../../../meta/pic/kalmanFilter/640-44.png)和 +![](../../../meta/pic/kalmanFilter/640-45.png)呢?一步一步来。 + + +▌转换矩阵H的引入 + +在刚刚的一维情况的小例子中,我们其实做了一个隐式的假设,即有预测更新得到的位置的概率分布和测距仪所得的测量值具有相同的单位 (unit),如米 (m)。 + +但实际情况往往不是这样的,比如,测距仪给出的可能不是距离,而是信号的飞行时间(由仪器至小车的光的传播时间),单位为秒 (s)。这样的话,我们就无法直接如上面一般直接将两个高斯分布相乘了。 + +此时,就该转换矩阵 +![](../../../meta/pic/kalmanFilter/640-46.png)闪亮登场了。由于 +![](../../../meta/pic/kalmanFilter/640-47.png),c为光速。所以此时 +![](../../../meta/pic/kalmanFilter/640-48.png)(测量方程为 +![](../../../meta/pic/kalmanFilter/640-49.png),可以回去参考一下式(4))。 + +预测值就要写为: + +![](../../../meta/pic/kalmanFilter/640-50.png) + +而测量值保持不变: + +![](../../../meta/pic/kalmanFilter/640-51.png) + +这样,两个高斯概率分布在转换矩阵H 的作用下又在同一个空间下了。根据前面 +![](../../../meta/pic/kalmanFilter/640-52.png)和![](../../../meta/pic/kalmanFilter/640-53.png)的公式 (式(27) 和式(28)),可得: +![](../../../meta/pic/kalmanFilter/640-54.png) + +将上式两端都乘以c 则可得: +![](../../../meta/pic/kalmanFilter/640-55.png) + +由于![](../../../meta/pic/kalmanFilter/640-56.png)(这里转换矩阵H 不随时间变化而变化,所以把下标t 略去),并记![](../../../meta/pic/kalmanFilter/640-57.png),则上式可以写为: +![](../../../meta/pic/kalmanFilter/640-58.png) + +类似的有: + +![](../../../meta/pic/kalmanFilter/640-59.png) + + +两边乘以![](../../../meta/pic/kalmanFilter/640-60.png)有: +![](../../../meta/pic/kalmanFilter/640-61.png) + + +▌小结一下 + +通过这个一维情况的推导,希望能说明卡尔曼滤波就是在给定初始值的情况下,由预测和测量不断迭代、更新状态向量。而预测就是一个“加法”:状态转换和运动预测叠加;测量则是简单的高斯分布相乘,中间引入了一个转换矩阵将测量值和状态向量映射在同一个代数空间中。 + + +▌讨论 + +至此,相信你已经明白了卡尔曼滤波的推导过程。而具体的问题就取决于你的建模了。如在上面的小车的例子中,各个参数如下: + +![](../../../meta/pic/kalmanFilter/640-62.png) + +假设该时刻下运动测量值为加速度![](../../../meta/pic/kalmanFilter/640-63.png),为均值为0标准差为![](../../../meta/pic/kalmanFilter/640-64.png) 的高斯分布(标准差可以为经验值或仪器精度。![](../../../meta/pic/kalmanFilter/640-65.png) : + +![](../../../meta/pic/kalmanFilter/640-66.png) + +对于测量值,同样可以假设![](../../../meta/pic/kalmanFilter/640-67.png),那么![](../../../meta/pic/kalmanFilter/640-68.png)。 + + +▌多问个为什么 + +如果只关心卡尔曼滤波的推导和结果,到这里就可以停止啦。 + +但推完卡尔曼滤波,我还有几个个为什么。知其然更要知其所以然。下面是我对于自己的疑惑学习、思考得到的解答,而且碍于表达能力,不敢说百分百正确。 + +首先是对于预测更新。前面也说到了,预测更新相当于“加法”。这相对好理解一些。在t-1 时刻我们有了对于小车位置的一个估计,根据对小车速度(状态向量之一)、小车的加速度(运动测量值)的建模,在辅以时间间隔,自然可以计算出小车在该时间间隔内的位移和速度增量,再将之叠加到原有的状态向量上即可。由于建模和测量的过程带有噪声,所以此时小车的位置估计的精度是下降的(方差增大)。 + +那么为什么测量更新就是乘法而非加法呢? + +因为测量更新的依据是**贝叶斯法则**。在有了测量值之后,我们求小车位置的概率分布其实就是在求![](../../../meta/pic/kalmanFilter/640-69.png)。根据贝叶斯法则有: +![](../../../meta/pic/kalmanFilter/640-70.png) + +![](../../../meta/pic/kalmanFilter/640-69.png)是**后验概率**。直接求后验概率比较困难(为什么?)。假设就在这个一维的小车例子中,当我们得到一个距离测量值z,那么小车的位置可能是距离原点的-z 或z 的两个点上。对于二维就可能是一个圆,三维则是一个球。此时要精确地知道小车的位置(消除歧义点),一则我们可以继续测量,二则需要额外的信息。这就使得求后验概率比较费时费力。 + +反观贝叶斯法则的右侧,此时我们已经有了**先验概率**![](../../../meta/pic/kalmanFilter/640-71.png),这是上一时刻的状态向量的概率分布,并且我们也有了![](../../../meta/pic/kalmanFilter/640-69.png),因为所得的测量值![](../../../meta/pic/kalmanFilter/640-72.png)表达的就是在当前位置下,我们能得到的测量值,亦即贝叶斯中的**似然**。在![](../../../meta/pic/kalmanFilter/640-73.png)为一个常数的情况下,最大化![](../../../meta/pic/kalmanFilter/640-74.png)就得到了最优的 。 + +既然测量更新是以贝叶斯公式为基础,那么反观预测更新,除了前面那个直观的“加法”解释之外,是不是也有一个概率上的解释呢? + +连续的高斯分布所表示的小车位置的预测更新我没找到(不好意思),但就**离散情况**的话还是有的,就是**全概率公式**。以下图为例,假设t-1 时刻,小车的位置分布概率如图所示,到了t 时刻,预测小车向前运动了3米(3个格子),但由于模型的不确定性和噪音,我们不能保证小车精确地向前走了3米,根据概率分布,我们可以假设小车有80%的概率往前走了3米,10%的概率往前走了两米,而另有10%的概率往前走了4米。 + +![](../../../meta/pic/kalmanFilter/640-7.jpeg) + +那么,在t 时刻,若小车真的运动到了这个位置,其概率分布是怎样的呢?它既有可能是在距离该位置3米远的地方以0.8的概率运动到现在这个位置的,也有可能是以0.1 的概率从2或4米远的地方为初始位置运动到这的,根据全概率公式,可以表达为: + +![](../../../meta/pic/kalmanFilter/640-8.jpeg) + +![](../../../meta/pic/kalmanFilter/640-75.png) + +类似地,t时刻下,小车运动后在其他位置上的概率分布也可以用全概率公式表达出来。当然,最后的计算结果还需要进行**归一化处理**。 + +如果我们不断地减小每个方格的分辨率,并按照高斯分布给予每个方格一个概率值,并对小车运动也做如此的离散化处理,应该也是可以不断逼近连续的情况(个人猜想)。 + +至此,关于卡尔曼滤波的个人浅见就到此为止了。精通还需要不断地实践,但希望读完本文,能让你对卡尔曼滤波有全面的了解。 + +参考文献 +Ramsey Faragher 的 understanding the basis of the kalman filter. +维基百科 Kalman filter +高翔的《视觉SLAM十四讲》 \ No newline at end of file diff --git a/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/1546196212158.png b/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/1546196212158.png new file mode 100644 index 0000000..06d20c4 --- /dev/null +++ b/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/1546196212158.png Binary files differ diff --git a/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/MaximumLikelihoodEstimate.md b/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/MaximumLikelihoodEstimate.md new file mode 100644 index 0000000..bea9663 --- /dev/null +++ b/Software/Algorithms/Learning/Estimation/MaximumLikelihoodEstimate/MaximumLikelihoodEstimate.md @@ -0,0 +1,14 @@ +# 极大似然估计 +## Maximum Likelihood Estimate + +极大似然估计 MaximumLikelihoodEstimate, 在感知算法中很常用于分类问题,以及在直接法视觉里程计中用于相邻帧配准的问题。 + +想法是将需要根据参数进行估计的问题,转化成一个概率论中的随机变量,如果该变量的分布是单峰的,则用一个多维高斯分布去逼近、拟合这个变量的分布(问题中要估计的量由几个参数决定,就用几维的高斯分布),在极大似然的意义下,可得到闭式的全局最优解。对于单峰的随机变量而言,是很高效的方法,除了预测、分类外,还可以用极大似然估计达到压缩信息的目的——本来为了保存该变量的分布,在不知道其模型的情况下只能把每一个样本的数据都存下来,用高斯分布拟合逼近之后,就只有均值和方差两个数(或向量)需要存了,大大节省空间。 + +[多维高斯分布公式1] + +而如果要逼近的随机变量有多个峰,那么需要用高斯混合模型,并通过最大化期望法(Expectation-Maximization,EM算法)来逼近拟合,此方法无法得到闭式的全局最优解,但可以确保收敛至一个局部最优解。 + +[高斯混合模型公式2] + +![EM算法流程图|center|](./1546196212158.png) diff --git a/Software/Algorithms/Learning/Estimation/ParticleFilters.md b/Software/Algorithms/Learning/Estimation/ParticleFilters.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Learning/Estimation/ParticleFilters.md diff --git a/Software/Algorithms/Learning/Estimation/TargetTracking.md b/Software/Algorithms/Learning/Estimation/TargetTracking.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Learning/Estimation/TargetTracking.md diff --git a/Software/Algorithms/Mobility/Aerial Robotics/Control.md b/Software/Algorithms/Mobility/Aerial Robotics/Control.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Mobility/Aerial Robotics/Control.md diff --git a/Software/Algorithms/Mobility/Aerial Robotics/Geometry.md b/Software/Algorithms/Mobility/Aerial Robotics/Geometry.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Mobility/Aerial Robotics/Geometry.md diff --git a/Software/Algorithms/Mobility/Aerial Robotics/Mechanics.md b/Software/Algorithms/Mobility/Aerial Robotics/Mechanics.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Mobility/Aerial Robotics/Mechanics.md diff --git a/Software/Algorithms/Mobility/Aerial Robotics/PX4.md b/Software/Algorithms/Mobility/Aerial Robotics/PX4.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Mobility/Aerial Robotics/PX4.md diff --git a/Software/Algorithms/Mobility/Aerial Robotics/Planning.md b/Software/Algorithms/Mobility/Aerial Robotics/Planning.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Software/Algorithms/Mobility/Aerial Robotics/Planning.md diff --git a/Software/Algorithms/Motion Planning/ConfigurationSpace.md b/Software/Algorithms/Motion Planning/ConfigurationSpace.md deleted file mode 100644 index c69589f..0000000 --- a/Software/Algorithms/Motion Planning/ConfigurationSpace.md +++ /dev/null @@ -1 +0,0 @@ -#Configuration Space diff --git a/Software/Algorithms/Motion Planning/Difference of A* & Dijkstra.md b/Software/Algorithms/Motion Planning/Difference of A* & Dijkstra.md deleted file mode 100644 index 8f118fa..0000000 --- a/Software/Algorithms/Motion Planning/Difference of A* & Dijkstra.md +++ /dev/null @@ -1,46 +0,0 @@ -# Difference of A* & Dijkstra - -tag : *Algorithm* - -author : gzy - ---- - -最短路径搜索,给定了一张地图,已知起始点和目标点,求两点间的最短路径。大家比较常听到的有A*算法和 Dijkstra算法。 - -具体就不用多说,算法比较简单,可以看一下网上的博客(见拓展),30min就可以了解算法是如何运行的。网上也有很多开源代码,ROS也有具体的包实现。 - -## 算法差别 -但是同样是找最短路径,这两种算法有什么不同?这是我主要的疑惑点。我是这么找到答案的。 - -首先,我知道ROS Navigation Stack之前用到了轨迹规划的包叫做Navfn,看网上评论大家似乎用的比较顺手。看了[Navfn的官网](http://wiki.ros.org/navfn),支持Dijkstra但是不支持A* 。我觉得[这个回答](https://answers.ros.org/question/28366/why-navfn-is-using-dijkstra/?answer=28399#post-id-28399)可以接受,但是具体性能如何,还要根据实际情况判断,比较A*的性能和启发函数相关,不能一概而论。 - -## 被搜索图的差别 -另一个疑惑点是,这两个算法使用的map不太一样。A* 使用的是网格图,每个网格代表一个位置,在简介中,网格不带cost,在网格间移动会产生cost。而Dijkstra使用的是“图”数据结构,每个顶点是一个位置,沿着边移动会产生cost。 - -![A*](../../../meta/pic/A_star.png) - -使用A*搜索的 **网格图** - -![Dijkstra](../../../meta/pic/Dijkstra.png) - -使用Dijkstra搜索的 **图** - -但是仔细一想,这两种地图可以相互转化的。如果要进行图搜索,那A* 用的**网格图**可以转化为**图**,只需要把每个网格变成图的顶点,相邻网格之间连上cost为1的边即可;如果要在**网格图**里进行路径搜索,Dijkstra使用的**图**也可以具体化为**网格图**的,只需要让每个顶点的度变成4,每个边的移动cost变成1就相当于**网格图**了。 - -## 算法和实际ROS实现的差别 -但是再仔细一想,还是有点不太对劲,即使沿路移动的cost被计算进去了,但实际ROS中,对环境感知后得到的cost map却比这个还要多一个东西,就是每一个点上的cost。不仅沿着路移动会有cost,进入下一个点cost也会产生cost。这个是合理的,因为有的点是障碍物,cost极大,虽然向那个点移动可能不花费cost,算是踩到那个点相当于撞墙,所以cost极大,这可以帮助机器人避开不合理的点。 - -![Dijkstra](../../../meta/pic/GridNGraph.jpeg) - -**网格图**和**图**的转化 - -所以ROS对上述算法是实现中还做了一个小改动,就是将移动的cost和将要踩到的下一点的cost融合成为一个叫做potential的值,利用这个potential进行排序选择真正的下一点。 - -## 拓展 -[Dijkstra算法详解](https://blog.csdn.net/qq_35644234/article/details/60870719),虽然写的并不太好,不失为快速了解的好方法 - -[A*](https://www.cnblogs.com/zhoug2020/p/3468167.html),一个有趣又简单的举例解释。 - -只有Dijkstra的[navfn](http://wiki.ros.org/navfn)已经不多用了,现在用的更多的是实现了A*和Dijkstra的ROS包[global_planner](http://wiki.ros.org/global_planner) - diff --git a/Software/Algorithms/Motion Planning/GradientBasedPlanner.md b/Software/Algorithms/Motion Planning/GradientBasedPlanner.md deleted file mode 100644 index 701dbde..0000000 --- a/Software/Algorithms/Motion Planning/GradientBasedPlanner.md +++ /dev/null @@ -1 +0,0 @@ -#Gradient Based Planner diff --git a/Software/Algorithms/Motion Planning/ProbabilisticRoadmap.md b/Software/Algorithms/Motion Planning/ProbabilisticRoadmap.md deleted file mode 100644 index 87c74a7..0000000 --- a/Software/Algorithms/Motion Planning/ProbabilisticRoadmap.md +++ /dev/null @@ -1 +0,0 @@ -#Probabilistic Roadmap diff --git a/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200547561.png b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200547561.png new file mode 100644 index 0000000..bd731da --- /dev/null +++ b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200547561.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200571261.png b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200571261.png new file mode 100644 index 0000000..d9b2c85 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200571261.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200603529.png b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200603529.png new file mode 100644 index 0000000..ea23830 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200603529.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200682136.png b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200682136.png new file mode 100644 index 0000000..cf7e560 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Probablistic Road Map/1546200682136.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Probablistic Road Map/Probablistic Road Map.md b/Software/Algorithms/Motion Planning/Probablistic Road Map/Probablistic Road Map.md new file mode 100644 index 0000000..b6bbe7e --- /dev/null +++ b/Software/Algorithms/Motion Planning/Probablistic Road Map/Probablistic Road Map.md @@ -0,0 +1,10 @@ +#Probablistic Road Map + +伪代码: +![Alt text](./1546200547561.png) + +1. 生成随机图: +![Alt text](./1546200571261.png) +2. 碰撞检测![Alt text](./1546200603529.png) +3. 用图规划问题的算法求解 +![Alt text](./1546200682136.png) diff --git a/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201707049.png b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201707049.png new file mode 100644 index 0000000..739e194 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201707049.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201717793.png b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201717793.png new file mode 100644 index 0000000..74b9cbe --- /dev/null +++ b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/1546201717793.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/Rapid Exploring Random Trees.md b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/Rapid Exploring Random Trees.md new file mode 100644 index 0000000..072910c --- /dev/null +++ b/Software/Algorithms/Motion Planning/Rapid Exploring Random Trees/Rapid Exploring Random Trees.md @@ -0,0 +1,25 @@ +# Rapid Exploring Random Trees + +- Add start node to tree +- Repeat n times + - Generate a random configuration, x + - If x is in freespace using the CollisionCheck function + - Find y, the closest node in the tree to the random configuration + - If (Dist (x, y) > delta) – Check if x is too far from y + - Find a configuration, z, that is along the path from x to y such that Dist(z,y) <= delta + - x = z; + - If (LocalPlanner (x,y)) – Check if you can get from x to y Add x to the tree with y as its parent + +![Alt text](./1546201707049.png) + + +- While not done + - Extend Tree A by adding a new node, x + - Find the closest node in Tree B to x, y + - If (LocalPlanner(x,y)) – Check if you can bridge the 2 trees + - Add edge between x and y. + - This completes a route between the root of Tree A and the root of Tree B. Return this route - -- + - Else + - Swap Tree A and Tree B + - +![Alt text](./1546201717793.png) diff --git a/Software/Algorithms/Motion Planning/Sample Based Planners/1546201453749.png b/Software/Algorithms/Motion Planning/Sample Based Planners/1546201453749.png new file mode 100644 index 0000000..47eac1c --- /dev/null +++ b/Software/Algorithms/Motion Planning/Sample Based Planners/1546201453749.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Sample Based Planners/1546201460892.png b/Software/Algorithms/Motion Planning/Sample Based Planners/1546201460892.png new file mode 100644 index 0000000..bcb89ee --- /dev/null +++ b/Software/Algorithms/Motion Planning/Sample Based Planners/1546201460892.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Sample Based Planners/Characteristics of Sample Based Planners.md b/Software/Algorithms/Motion Planning/Sample Based Planners/Characteristics of Sample Based Planners.md new file mode 100644 index 0000000..3b3a0d7 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Sample Based Planners/Characteristics of Sample Based Planners.md @@ -0,0 +1,19 @@ +#Characteristics of Sample Based Planners +There are a couple of characteristics of Random Sampling Based approaches that are worth noting. + +•  First of all, while these methods work very well in practice they are not strictly speaking complete. + +•  A complete path planning algorithm would find a path if one existed and report failure if it didn’t. + +With the PRM procedure it is possible to have a situation where the algorithm would fail to find a path even when one exists if the sampling procedure fails to generate an appropriate set of samples. + +![Alt text](./1546201453749.png) +![Alt text](./1546201460892.png) + +What we can say is that if there is a route and the planner keeps adding random samples it will, eventually find a solution. + +•  However it may take a long time to generate a sufficient number of samples. + +•  A real advantage of these PRM based planners is that they can be applied to systems with lots of degrees of freedom as opposed to grid based sampling schemes which are typically restricted to problems in 2 or 3 dimensions. + +•  In conclusion by relaxing the notion of completeness a bit and embracing the power of randomization these probablistic road map algorithms provide effective methods for planning routes that can be applied to a wide range of robotic systems including systems with many degrees of freedom. \ No newline at end of file diff --git a/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/1546201910730.png b/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/1546201910730.png new file mode 100644 index 0000000..55afeae --- /dev/null +++ b/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/1546201910730.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/Trapezoidal Decomposition.md b/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/Trapezoidal Decomposition.md new file mode 100644 index 0000000..81839c4 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Trapezoidal Decomposition/Trapezoidal Decomposition.md @@ -0,0 +1,4 @@ +#Trapezoidal Decomposition +处理Configuration Space的一种方法,将多边形图切割成一个个梯形 + +![Alt text](./1546201910730.png) diff --git a/Software/Algorithms/Motion Planning/Visibility Graph/1546200410450.png b/Software/Algorithms/Motion Planning/Visibility Graph/1546200410450.png new file mode 100644 index 0000000..c3e0a3c --- /dev/null +++ b/Software/Algorithms/Motion Planning/Visibility Graph/1546200410450.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Visibility Graph/1546200430877.png b/Software/Algorithms/Motion Planning/Visibility Graph/1546200430877.png new file mode 100644 index 0000000..29f454e --- /dev/null +++ b/Software/Algorithms/Motion Planning/Visibility Graph/1546200430877.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Visibility Graph/1546200467850.png b/Software/Algorithms/Motion Planning/Visibility Graph/1546200467850.png new file mode 100644 index 0000000..818539a --- /dev/null +++ b/Software/Algorithms/Motion Planning/Visibility Graph/1546200467850.png Binary files differ diff --git a/Software/Algorithms/Motion Planning/Visibility Graph/Visibility Graph.md b/Software/Algorithms/Motion Planning/Visibility Graph/Visibility Graph.md new file mode 100644 index 0000000..8522802 --- /dev/null +++ b/Software/Algorithms/Motion Planning/Visibility Graph/Visibility Graph.md @@ -0,0 +1,9 @@ +#Configuration Space +首先构建Visibility Graph: +![Alt text](./1546200430877.png) +然后随机取点并进行碰撞检测得到边: +![Alt text](./1546200410450.png) +最后规划出路径: +![Alt text](./1546200467850.png) + + diff --git a/Software/Algorithms/Perception/Localization and Mapping/Dataset/KITTI.md b/Software/Algorithms/Perception/Localization and Mapping/Dataset/KITTI.md index e69de29..bfba820 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Dataset/KITTI.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Dataset/KITTI.md @@ -0,0 +1,6 @@ +#KITTI +KITTI(Karlsruhe Institute of Technology +and Toyota Technological Institute at Chicago)是鼎鼎有名的丰田汽车研究中心,KITTI采集了大量优质的城市道路环境的公开数据集。 + +除了提供数据外,还分为odometry、sceneflow evaluation、tracking、road/lane detection等多项任务,欢迎全世界的研究者公布自己在该任务中的成绩,其成绩榜单上的排名基本代表了该项技术目前世界最高水平。 +[网址](http://www.cvlibs.net/datasets/kitti/eval_object.php) diff --git a/Software/Algorithms/Perception/Localization and Mapping/Dataset/TUM.md b/Software/Algorithms/Perception/Localization and Mapping/Dataset/TUM.md index e69de29..18c638f 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Dataset/TUM.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Dataset/TUM.md @@ -0,0 +1,3 @@ +#TUM +德国慕尼黑大学(Technical University of Munich)的机器视觉小组也是鼎鼎有名的计算机视觉方向的研究团体。他们公布的数据集了大量室内外场景的数据集,种类繁多,不一而足,不像KITTI那样专心在城市道路场景中。 +[网址](https://vision.in.tum.de/data/datasets) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/Optimization.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/Optimization.md index e69de29..5c941e4 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Principle/Optimization.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/Optimization.md @@ -0,0 +1,3 @@ +#Optimization in Mapping(优化在建图中的应用) +优化方法在计算机领域的应用相当广泛,具体到机器人的建图问题中,主要是利用帧间信息提升前端估计的精度,主要有Bundle Adjustment集束调整,图优化,位子图Pose Graph 和因子图集中。 +详情可参见高翔博士的[后端1](https://blog.csdn.net/qq_23225073/article/details/78777311#2-ba%E4%B8%8E%E5%9B%BE%E4%BC%98%E5%8C%96)与[后端2](https://blog.csdn.net/qq_23225073/article/details/78844572)两篇博文 \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/VisualOdometry.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/VisualOdometry.md deleted file mode 100644 index e367819..0000000 --- a/Software/Algorithms/Perception/Localization and Mapping/Principle/VisualOdometry.md +++ /dev/null @@ -1,73 +0,0 @@ -#视觉里程计 Visual Odometry - -[TOC] - -### 1. 里程计 - 在机器人导航问题中,里程计是用从运动执行器所获取的数据来对机器人在经历一段时间之后位置的变化进行估计的一种测量设备或仪器。传统的里程计比如安装在小车机器人上的光电码盘,通过脉冲技术可以确定在一段时间内车轮转过的角度,进而推算出小车行驶过的距离乃至方向。虽然这种光电码盘里程计在许多轮式和轨道机动车上应用广泛,但是它不能使用在许多采取非标准机动方式的移动机器人(比如无人机和足式机器人)上。此外,传统的里程计还有严重的精度问题。由于轮式机动车的轮胎和路面有时会发生打滑,所以轮胎转过的角度和机动车实际驶过的距离之间有时并不一致,而在一些坎坷的路面上行驶的时候产生的误差来源则更为复杂。这些误差会在里程计工作的时候不断累积,随着工作的时间越长,里程计的读数也会变得越来越不可靠。 - -### 2. 视觉里程计 - 随着摄像头的普及,人们发明了基于摄像头信息的一种新型里程计,称之为视觉里程计。视觉里程计通过分析处理摄像头所获取的相互关联的图像序列,来确定机器人移动的位置和朝向,从而进行导航。它具有比传统的基于光电码盘的里程计具有更好的导航精度,以及没有运动方式必须是行驶在平整路面上的轮式机器人(机动车)的限定,因此被应用在许多机器人应用中,比如漫游者火星探测器上就采用了视觉里程计[1]。此外在SLAM系统(Simultaneous Localization And Mapping)中,视觉里程计也是不可缺少的一部分。 - -经过数十年的发展,视觉里程计从硬件设备和软件算法两个层面出发,衍生出了多种分类。 -### 2.1硬件设备层面分类 -根据采用摄像头类型的不同,视觉里程计可以分为单目视觉里程计与立体视觉里程计。单目视觉里程计基于单个摄像头(称为单目),只能获取单目摄像头所处的三维空间投影到其成像平面上的二维影响。然后从二维影像中通过软件算法恢复出三维的运动信息,这对软件算法的设计和实际运行的实时性、精确性造成了一定的负担。而立体视觉里程计则倾向于将主要负担交给硬件设备,即采用立体摄像头(多目摄像头、深度摄像头、激光雷达都属于这一范畴),直接对摄像头所处的三维空间进行观测,观测得到的信息在计算机中以点云形式存储,然后通过软件算法从点云的时间序列中,估计出运动信息。这种方法虽然增加了获取到信息的丰富程度,在软件算法的设计和运动估计的准确度上比基于单目摄像头的视觉里程计具有一定优势,但是增加了硬件成本和功耗,对于一些对重力和电力载荷比较敏感的机器人应用场景,则不如单目视觉里程计合适。 - -### 2.2 软件算法层面分类 -根据采用的硬件设备的不同,视觉里程计的软件算法也需要相应地设计。因此相应地产生了两种方法,基于特征点提取(Feature Based)的方法和直接法(Direct Method),即不提取特征点的方法。 - -#### 2.2.1.1 特征点法 -如何根据图像来估计相机运动是视觉里程计的核心。然而,图像在计算机内部是以一个包含亮度和色彩信息组成的矩阵形式存储的,如果直接从矩阵层面考虑运动估计,将会非常困难。所以,我们习惯于采用这样一种做法——首先,从图像中选取比较有代表性的点。这些点在相机视角发生少量变化后会保持不变,所以我们会在各个图像中找到相同的点。然后,在这些点的基础上,讨论相机位姿估计问题,以及这些点的定位问题。在经典 SLAM 模型中,把它们称为路标。而在视觉 SLAM 中,路标则是指图像特征(Features)。 - -根据维基百科中的定义,图像特征是一组与计算任务相关的信息,计算任务取决于具体的应用 [2]。简而言之,特征是图像信息的另一种数字表达形式。一组好的特征对于在指定任务上的最终表现至关重要,因此多年来研究者们花费了大量的精力对特征进行研究。数字图像在计算机中以灰度值矩阵的方式存储,所以最简单的,单个图像像素也是一种 “特征”。但是,在视觉里程计中,我们希望特征点在相机运动之后保持稳定,而灰度值受光照、形变、物体材质的影响严重,在不同图像之间变化非常大,不够稳定。理想的情况是,当场景和相机视角发生少量改变时,我们还能从图像中判断哪些地方是同一个点,因此仅凭灰度值是不够的,我们需要对图像提取特征点。 - -特征点是图像里一些特别的地方。我们可以把图像中的角点、边缘和区块都当成图像中有代表性的地方。然而,我们更容易精确地指出,某两幅图像当中出现了同一个角点;同一个边缘则稍微困难一些,因为沿着该边缘前进,图像局部是相似的; 同一个区块则是最困难的。可见,图像中的角点、边缘相比于像素区块而言更加“特别”,它们在不同图像之间的辨识度更强。所以,一种直观的提取特征的方式就是在不同图 像间辨认角点,确定它们的对应关系。在这种做法下,角点就是所谓的特征。 - -然而,在大多数应用中,单纯的角点依然不能满足很多我们的需求。例如,从远处看 上去是角点的地方,当相机走近之后,可能就不显示为角点了。或者,当旋转相机时,角点的外观会发生变化,我们也就不容易辨认出那是同一个角点。为此,计算机视觉领域的研究者在长期研究中,设计了许多更加稳定的局部图像特征,如著名的 SIFT[3], SURF[4], ORB[5] 等等。相比于朴素的角点,这些人工设计的特征点能够拥有如下的性质: - -1. 可重复性(Repeatability):相同的“区域”可以在不同的图像中被找到。 -2. 可区别性(Distinctiveness):不同的“区域”有不同的表达。 -3. 高效率(Efficiency):同一图像中,特征点的数量应远小于像素的数量。 -4. 本地性(Locality):特征仅与一小片图像区域相关。 - -特征点由关键点(Key-point)和描述子(Descriptor)两部分组成。比方说,当我们 谈论 SIFT 特征时,是指“提取 SIFT 关键点,并计算 SIFT 描述子”两件事情。关键点是指该特征点在图像里的位置,有些特征点还具有朝向、大小等信息。描述子通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息。描述子是按照“外观相似的特征应该有相似的描述子”的原则设计的。因此,只要两个特征点的描述子在向量空间上的距离相近,就可以认为它们是同样的特征点。 - -历史上,研究者提出过许多图像特征。它们有些很精确,在相机的运动和光照变 化下仍具有相似的表达,但相应地需要较大的计算量。 其中,SIFT(尺度不变特征变换,Scale-Invariant Feature Transform) 当属最为经典的一种。它充分考虑了在图像变换过程中 出现的光照,尺度,旋转等变化,但随之而来的是极大的计算量。由于整个 SLAM 过程中,图像特征的提取与匹配仅仅是诸多环节中的一个,到目前(2017 年)为止,普通 PC 的 CPU 还无法实时地计算 SIFT 特征。所以在 视觉里程计算法的设计中我们甚少使用 这种“奢侈”的图像特征。 - -而另一些特征, 则考虑适当降低精度和鲁棒性,提升计算的速度。 例如 FAST 关键点属于计算特别快的一种特征点(注意这里“关键点”的用词, 说明它没有描述子)。 而 ORB(Oriented FAST and Rotated BRIEF)特征则是目前看来非常具有代表性的实时图像特征。它改进了 FAST 检测子 [6] 不具有方向性的问题,并采用速度极快的二进制描述 子 BRIEF[7], 使整个图像特征提取的环节大大加速。 根据作者在论文中的测试,在同一幅图像中同时提取约 1000 个特征点的情况下, ORB 约要花费 15.3ms, SURF 约花费 217.3ms,SIFT 约花费 5228.7ms。由此可以看出 ORB 在保持了特征子具有旋转,尺度不 变性的同时,速度方面提升明显,对于实时性要求很高的 SLAM 来说是一个很好的选择。 - -大部分特征提取都具有较好的并行性,可以通过 GPU 等设备来加速计算。经过 GPU 加速后的 SIFT,就可以满足实时计算要求。但是,引入 GPU 将带来视觉里程计系统成本的提升。由此带来的性能提升,是否足以抵去付出的计算成本?这是个需要在系统设计时仔细考量的问题。在目前的视觉里程计方案中,ORB 是质量与性能之间较好的折中,其提取特征的整个过程可以在引文[8]中找到。 - -在提取出特征点后,下一步就是如何建立帧间特征点的关联,也就是特征匹配。特征匹配是视觉里程计中极为关键的一步,宽泛地说,特征匹配解决了视觉里程计中的数据关联问题(data association),即确定当前看到的路标与之前看到的路标之间的对应关系。通过对图像与图像,或者图像与地图之间的描述子进行准确的匹配,我们可以为后续的姿态估计,优化等操作减轻大量负担。然而,由于图像特征的局部特性,误匹配的情况广泛存在,而且长期以来一直没有得到有效解决,目前已经成为视觉里程计中制约性能提升的一大瓶颈。部分原因是因为场景中经常存在大量的重复纹理,使得特征描述非常相似。在这种情况下,仅利用局部特征解决误匹配是非常困难的。 - -不过,让我们先来看正确匹配的情况,再回头去讨论误匹配问题。考虑两个时刻的图像。如果在图像It中提取到特征点, 在图像It+1中提取到特征点 ,如何寻找这两个集合元素的对应关系呢?最简单的特征 匹配方法就是暴力匹配(Brute-Force Matcher)。即对每一个特征点 ,与所有的 测量描述子的距离,然后排序,取最近的一个作为匹配点。描述子距离表示了两个特征之 间的相似程度,不过在实际运用中还可以取不同的距离度量范数。对于浮点类型的描述子,使用欧氏距离进行度量即可。而对于二进制的描述子(比如 BRIEF 这样的),我们往往使用汉明距离(Hamming distance)做为度量(即两个二进制串之间的不同位数的个数)。 - -然而,当特征点数量很大时,暴力匹配法的运算量将变得很大,特别是当我们想要匹配一个帧和一张地图的时候。这不符合我们在 SLAM 中的实时性需求。此时快速近似最近邻(FLANN)算法更加适合于匹配点数量极多的情况。由于这些匹配算法理论已经成熟,而且实现上也已集成到开源视觉算法库OpenCV之中,其实现的技术细节可以在引文 [5] 中找到。 - -现在,假设通过以上的特征点提取与匹配过程,我们已经从两张图像中, 得到了一对配对好的特征点。在得到了相邻两帧图像间的一对完成配对的特征点之后,可以利用匹配的特征点对之间存在的对极约束,采用直接线性变换法(Direct Linear Transform),求解出其本质矩阵E(Essential Matrix)和基础矩阵F(Fundamental Matrix),进而根据的关系得到帧间摄像头的旋转矩阵R和平移向量t。实际中只需要在相邻两帧图像之间找到5对匹配的特征点,即可求解出摄像头在拍摄第二张照片时的位姿相对于第一张照片拍摄时的旋转和平移运动信息。 -但由于E 本身具有尺度等价性,它分解得到的 t, R 也有一个尺度等价性。而 R ∈ SO(3) 自身具有约束,所以我们认为 t 具有一个尺度。换言之,在分解过程 中,对 t 乘以任意非零常数,分解都是成立的。直接导致了单目视觉的尺度不确定性(Scale Ambiguity)。换言之,在单目视觉里程计中,对轨迹和地图同时缩放任意倍数,我们得到的图像依然是一样的。为了克服尺度不确定的问题,单目视觉里程计都不可避免地需要有一个初始化的过程。初始化的两张图像必须有一定程度的平移,而后的轨迹和地图都将以此步 的平移为单位。(除了对 t 进行归一化之外,另一种方法是令初始化时所有的特征点平均深度为 1,也可以固定一个尺度。相比于令 t 长度为 1 的做法,把特征点深度归一化可以控制场景的规模大小,使计算在数值上更稳定些。不过这并没有理论上的差别。) -另一方面,从 E 分解到 R, t 的过程中,如果相机发生的是纯旋转,导致 t 为零,那么,得到的 E 也将为零,这将导致我们无从求解 R。因此,单目视觉里程计除了必须要有初始化的过程外,还要求初始化不能只有纯旋转,必须要有一定程度的平移。如果没有平移,单目将无法初始化。这些都是通过匹配特征点之间的对极几何约束估计相机运动的局限之处。 - -在通过提取特征点、特征点匹配、基于对极几何估计相机运动之后,还可通过三角测量(Triangulation)的方法来估计像素特征点的深度信息。从而从2D的投影图像的信息中恢复出3D的空间点。在恢复出3D的空间点之后,可以通过PnP问题(Perspective-n-Point——即当我们知道 n 个 3D 空间点以及它们的投影位置时,如何估计相机所在的位姿的问题),利用P3P法、DLT法、EPnP法、UPnP法、以及通过非线性优化来最小化重投影误差的方法, 反过来求解3D到2D点对的运动。这些方法使得基于特征点提取的运动信息估计,在对极几何求解的基础上更加准确,同时也获得了对于特征点在三维空间中位置的估计。 - -#### 2.2.1.2特征点法的优缺点 -特征点法发展比较成熟,运行比较稳定,并且相较于直接法具有对光照、动态物体不敏感的有点,目前在视觉里程计中占据主流地位。 -尽管如此,研究者们认为它至少有以下几个缺点: -1. 关键点的提取与描述子的计算非常耗时。实践当中,SIFT目前在CPU上是无法实时计算的,而ORB也需要近20毫秒的计算。如果整个SLAM以30毫秒/帧的速度运行,那么一大半时间都花在计算特征点上。 -2. 使用特征点时,忽略了除特征点以外的所有信息。一张图像有几十万个像素,而特征点只有几百个。只使用特征点丢弃了大部分可能有用的图像信息。 -3. 相机有时会运动到特征缺失的地方,往往这些地方都没有什么明显的纹理信息。例如,有时我们会面对一堵白墙,或者一个空荡荡的走廓。这些场景下特征点数量会明显减少,我们可能找不到足够的匹配点来计算相机运动。 - - -#### 2.2.2.1直接法 -近几年,随着深度摄像头和激光雷达等新型立体摄像头的兴起给视觉里程计的算法设计带来了新的思路,使人们有条件抛开特征点提取及其所引起的麻烦,另辟新路,基于光流提出了直接计算的方法,即根据图像的像素信息来计算相机运动,从而避免了特征的计算时间,也避免了特征缺失的情况。只要场景中存在明暗变化(可以是渐变,不形成局部的图像特征),直接法就能工作。 - -使用特征点法估计相机运动时,我们把特征点看作固定在三维空间的不动点。根据它们在相机中的投影位置,通过最小化重投影误差(Reprojection error)来优化相机运动。在这个过程中,我们需要精确地知道空间点在两个相机中投影后的像素位置——这也就是我们为何要对特征进行匹配或跟踪的理由。而在直接法中,最小化的不再是重投影误差,而是测量误差(Phometric error)。而根据使用图像中像素数量的不同,直接法可以分为稀疏、稠密和半稠密三种,具有恢复稠密结构的能力。相比于特征点法通常只能重构稀疏特征点,直接法和稠密重建有更紧密的联系。 - -##### 2.2.2.2直接法的优缺点: -相比于特征点法,直接法具有以下优点: - -- 可以省去计算特征点、描述子的时间。 -- 利用了全部图像中的大部分信息。由于特征点法图像中提取的特征点信息都是稀疏的(换句话说,在图像中只有一些感兴趣的点被提取了出来,通常一幅图像中提取的信息点数目在50~500之间) 通过这一步预拣选的操作,许多有价值的信息都丢失了。 -- 只要求有像素梯度即可,无须特征点。因此,直接法可以在特征缺失的场合下使用(一个极端的例子是只有渐变的一张图像。它可能无法提取角点类特征,但可以用直接法估计它的运动)。 -- 可以构建半稠密乃至稠密的地图,这是特征点法无法做到的。 - -然而,直接法也受到传感器设备的限制,由于直接法需要以获得像素点深度为前提,所以无法在单目摄像头上使用,只能应用于深度摄像头或者激光雷达的场景。虽然计算复杂度比起特征点法显著降低了,但是对于硬件设备的要求提高了。 diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195833078.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195833078.png new file mode 100644 index 0000000..4794695 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195833078.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195904221.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195904221.png new file mode 100644 index 0000000..f64a317 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/1546195904221.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/Iterative Closest Point.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/Iterative Closest Point.md new file mode 100644 index 0000000..e2897a1 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Iterative Closest Point/Iterative Closest Point.md @@ -0,0 +1,5 @@ +# Iterative Closest Point (ICP 迭代最近邻) + +这是一种在各种需要配准两个点云的应用中被广泛采用的算法。采用EM算法的思路,假定在获得一个较准确的先验位姿的前提下,寻找一个最优的R, T,使得x点云中每个点到y点云中离它最近的那个点的距离之和最小 +![Alt text](./1546195833078.png) +![Alt text](./1546195904221.png) diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Optical Flow .md b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Optical Flow .md new file mode 100644 index 0000000..f8b29ed --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Optical Flow .md @@ -0,0 +1,2 @@ +#Optical Flow (光流跟踪) +光流跟踪是一种根据图像灰度在时间轴上变化的连续性来估计速度的一种方法。 \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Particle Filter .md b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Particle Filter .md new file mode 100644 index 0000000..7ea0a64 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/Particle Filter .md @@ -0,0 +1,2 @@ +# Particle Filter (粒子滤波) +这是Map Registration地图配准的最常用算法。基于采样和概率模型。先随机采样一些在均值附近的位姿,然后跟踪这些点随里程计的运动过程,在跟踪过程中进行优化、过滤,得出最可能的位姿。详情可参考这篇博客园的[博客](http://www.cnblogs.com/sanmenyi/p/7091978.html) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196782206.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196782206.png new file mode 100644 index 0000000..440299b --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196782206.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196799209.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196799209.png new file mode 100644 index 0000000..220e7a3 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/1546196799209.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/Odometry Modeling.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/Odometry Modeling.md new file mode 100644 index 0000000..f82f6cc --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/Odometry Modeling/Odometry Modeling.md @@ -0,0 +1,7 @@ +#Odometry Modeling(里程计模型) + +里程计最初是指通过车辆轮胎上的编码器,计算车轮行驶的距离,并从内轮差中估算出转角的一种测量算法。由于其不可避免的随机误差(车辆颠簸、打滑、计数错误引起),通常需要和陀螺仪配合使用以提升精度,但陀螺仪长期也会有积分漂移(温度引起),所以单靠里程计本身并不足以解决定位问题(想象一个人蒙上眼睛,通过数步数在旷野里行走会不会迷路...)。 + +![转角测量](./1546196782206.png) +![移动测量](./1546196799209.png) + diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/VisualOdometry.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/VisualOdometry.md new file mode 100644 index 0000000..e367819 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/localization/odometry/VisualOdometry.md @@ -0,0 +1,73 @@ +#视觉里程计 Visual Odometry + +[TOC] + +### 1. 里程计 + 在机器人导航问题中,里程计是用从运动执行器所获取的数据来对机器人在经历一段时间之后位置的变化进行估计的一种测量设备或仪器。传统的里程计比如安装在小车机器人上的光电码盘,通过脉冲技术可以确定在一段时间内车轮转过的角度,进而推算出小车行驶过的距离乃至方向。虽然这种光电码盘里程计在许多轮式和轨道机动车上应用广泛,但是它不能使用在许多采取非标准机动方式的移动机器人(比如无人机和足式机器人)上。此外,传统的里程计还有严重的精度问题。由于轮式机动车的轮胎和路面有时会发生打滑,所以轮胎转过的角度和机动车实际驶过的距离之间有时并不一致,而在一些坎坷的路面上行驶的时候产生的误差来源则更为复杂。这些误差会在里程计工作的时候不断累积,随着工作的时间越长,里程计的读数也会变得越来越不可靠。 + +### 2. 视觉里程计 + 随着摄像头的普及,人们发明了基于摄像头信息的一种新型里程计,称之为视觉里程计。视觉里程计通过分析处理摄像头所获取的相互关联的图像序列,来确定机器人移动的位置和朝向,从而进行导航。它具有比传统的基于光电码盘的里程计具有更好的导航精度,以及没有运动方式必须是行驶在平整路面上的轮式机器人(机动车)的限定,因此被应用在许多机器人应用中,比如漫游者火星探测器上就采用了视觉里程计[1]。此外在SLAM系统(Simultaneous Localization And Mapping)中,视觉里程计也是不可缺少的一部分。 + +经过数十年的发展,视觉里程计从硬件设备和软件算法两个层面出发,衍生出了多种分类。 +### 2.1硬件设备层面分类 +根据采用摄像头类型的不同,视觉里程计可以分为单目视觉里程计与立体视觉里程计。单目视觉里程计基于单个摄像头(称为单目),只能获取单目摄像头所处的三维空间投影到其成像平面上的二维影响。然后从二维影像中通过软件算法恢复出三维的运动信息,这对软件算法的设计和实际运行的实时性、精确性造成了一定的负担。而立体视觉里程计则倾向于将主要负担交给硬件设备,即采用立体摄像头(多目摄像头、深度摄像头、激光雷达都属于这一范畴),直接对摄像头所处的三维空间进行观测,观测得到的信息在计算机中以点云形式存储,然后通过软件算法从点云的时间序列中,估计出运动信息。这种方法虽然增加了获取到信息的丰富程度,在软件算法的设计和运动估计的准确度上比基于单目摄像头的视觉里程计具有一定优势,但是增加了硬件成本和功耗,对于一些对重力和电力载荷比较敏感的机器人应用场景,则不如单目视觉里程计合适。 + +### 2.2 软件算法层面分类 +根据采用的硬件设备的不同,视觉里程计的软件算法也需要相应地设计。因此相应地产生了两种方法,基于特征点提取(Feature Based)的方法和直接法(Direct Method),即不提取特征点的方法。 + +#### 2.2.1.1 特征点法 +如何根据图像来估计相机运动是视觉里程计的核心。然而,图像在计算机内部是以一个包含亮度和色彩信息组成的矩阵形式存储的,如果直接从矩阵层面考虑运动估计,将会非常困难。所以,我们习惯于采用这样一种做法——首先,从图像中选取比较有代表性的点。这些点在相机视角发生少量变化后会保持不变,所以我们会在各个图像中找到相同的点。然后,在这些点的基础上,讨论相机位姿估计问题,以及这些点的定位问题。在经典 SLAM 模型中,把它们称为路标。而在视觉 SLAM 中,路标则是指图像特征(Features)。 + +根据维基百科中的定义,图像特征是一组与计算任务相关的信息,计算任务取决于具体的应用 [2]。简而言之,特征是图像信息的另一种数字表达形式。一组好的特征对于在指定任务上的最终表现至关重要,因此多年来研究者们花费了大量的精力对特征进行研究。数字图像在计算机中以灰度值矩阵的方式存储,所以最简单的,单个图像像素也是一种 “特征”。但是,在视觉里程计中,我们希望特征点在相机运动之后保持稳定,而灰度值受光照、形变、物体材质的影响严重,在不同图像之间变化非常大,不够稳定。理想的情况是,当场景和相机视角发生少量改变时,我们还能从图像中判断哪些地方是同一个点,因此仅凭灰度值是不够的,我们需要对图像提取特征点。 + +特征点是图像里一些特别的地方。我们可以把图像中的角点、边缘和区块都当成图像中有代表性的地方。然而,我们更容易精确地指出,某两幅图像当中出现了同一个角点;同一个边缘则稍微困难一些,因为沿着该边缘前进,图像局部是相似的; 同一个区块则是最困难的。可见,图像中的角点、边缘相比于像素区块而言更加“特别”,它们在不同图像之间的辨识度更强。所以,一种直观的提取特征的方式就是在不同图 像间辨认角点,确定它们的对应关系。在这种做法下,角点就是所谓的特征。 + +然而,在大多数应用中,单纯的角点依然不能满足很多我们的需求。例如,从远处看 上去是角点的地方,当相机走近之后,可能就不显示为角点了。或者,当旋转相机时,角点的外观会发生变化,我们也就不容易辨认出那是同一个角点。为此,计算机视觉领域的研究者在长期研究中,设计了许多更加稳定的局部图像特征,如著名的 SIFT[3], SURF[4], ORB[5] 等等。相比于朴素的角点,这些人工设计的特征点能够拥有如下的性质: + +1. 可重复性(Repeatability):相同的“区域”可以在不同的图像中被找到。 +2. 可区别性(Distinctiveness):不同的“区域”有不同的表达。 +3. 高效率(Efficiency):同一图像中,特征点的数量应远小于像素的数量。 +4. 本地性(Locality):特征仅与一小片图像区域相关。 + +特征点由关键点(Key-point)和描述子(Descriptor)两部分组成。比方说,当我们 谈论 SIFT 特征时,是指“提取 SIFT 关键点,并计算 SIFT 描述子”两件事情。关键点是指该特征点在图像里的位置,有些特征点还具有朝向、大小等信息。描述子通常是一个向量,按照某种人为设计的方式,描述了该关键点周围像素的信息。描述子是按照“外观相似的特征应该有相似的描述子”的原则设计的。因此,只要两个特征点的描述子在向量空间上的距离相近,就可以认为它们是同样的特征点。 + +历史上,研究者提出过许多图像特征。它们有些很精确,在相机的运动和光照变 化下仍具有相似的表达,但相应地需要较大的计算量。 其中,SIFT(尺度不变特征变换,Scale-Invariant Feature Transform) 当属最为经典的一种。它充分考虑了在图像变换过程中 出现的光照,尺度,旋转等变化,但随之而来的是极大的计算量。由于整个 SLAM 过程中,图像特征的提取与匹配仅仅是诸多环节中的一个,到目前(2017 年)为止,普通 PC 的 CPU 还无法实时地计算 SIFT 特征。所以在 视觉里程计算法的设计中我们甚少使用 这种“奢侈”的图像特征。 + +而另一些特征, 则考虑适当降低精度和鲁棒性,提升计算的速度。 例如 FAST 关键点属于计算特别快的一种特征点(注意这里“关键点”的用词, 说明它没有描述子)。 而 ORB(Oriented FAST and Rotated BRIEF)特征则是目前看来非常具有代表性的实时图像特征。它改进了 FAST 检测子 [6] 不具有方向性的问题,并采用速度极快的二进制描述 子 BRIEF[7], 使整个图像特征提取的环节大大加速。 根据作者在论文中的测试,在同一幅图像中同时提取约 1000 个特征点的情况下, ORB 约要花费 15.3ms, SURF 约花费 217.3ms,SIFT 约花费 5228.7ms。由此可以看出 ORB 在保持了特征子具有旋转,尺度不 变性的同时,速度方面提升明显,对于实时性要求很高的 SLAM 来说是一个很好的选择。 + +大部分特征提取都具有较好的并行性,可以通过 GPU 等设备来加速计算。经过 GPU 加速后的 SIFT,就可以满足实时计算要求。但是,引入 GPU 将带来视觉里程计系统成本的提升。由此带来的性能提升,是否足以抵去付出的计算成本?这是个需要在系统设计时仔细考量的问题。在目前的视觉里程计方案中,ORB 是质量与性能之间较好的折中,其提取特征的整个过程可以在引文[8]中找到。 + +在提取出特征点后,下一步就是如何建立帧间特征点的关联,也就是特征匹配。特征匹配是视觉里程计中极为关键的一步,宽泛地说,特征匹配解决了视觉里程计中的数据关联问题(data association),即确定当前看到的路标与之前看到的路标之间的对应关系。通过对图像与图像,或者图像与地图之间的描述子进行准确的匹配,我们可以为后续的姿态估计,优化等操作减轻大量负担。然而,由于图像特征的局部特性,误匹配的情况广泛存在,而且长期以来一直没有得到有效解决,目前已经成为视觉里程计中制约性能提升的一大瓶颈。部分原因是因为场景中经常存在大量的重复纹理,使得特征描述非常相似。在这种情况下,仅利用局部特征解决误匹配是非常困难的。 + +不过,让我们先来看正确匹配的情况,再回头去讨论误匹配问题。考虑两个时刻的图像。如果在图像It中提取到特征点, 在图像It+1中提取到特征点 ,如何寻找这两个集合元素的对应关系呢?最简单的特征 匹配方法就是暴力匹配(Brute-Force Matcher)。即对每一个特征点 ,与所有的 测量描述子的距离,然后排序,取最近的一个作为匹配点。描述子距离表示了两个特征之 间的相似程度,不过在实际运用中还可以取不同的距离度量范数。对于浮点类型的描述子,使用欧氏距离进行度量即可。而对于二进制的描述子(比如 BRIEF 这样的),我们往往使用汉明距离(Hamming distance)做为度量(即两个二进制串之间的不同位数的个数)。 + +然而,当特征点数量很大时,暴力匹配法的运算量将变得很大,特别是当我们想要匹配一个帧和一张地图的时候。这不符合我们在 SLAM 中的实时性需求。此时快速近似最近邻(FLANN)算法更加适合于匹配点数量极多的情况。由于这些匹配算法理论已经成熟,而且实现上也已集成到开源视觉算法库OpenCV之中,其实现的技术细节可以在引文 [5] 中找到。 + +现在,假设通过以上的特征点提取与匹配过程,我们已经从两张图像中, 得到了一对配对好的特征点。在得到了相邻两帧图像间的一对完成配对的特征点之后,可以利用匹配的特征点对之间存在的对极约束,采用直接线性变换法(Direct Linear Transform),求解出其本质矩阵E(Essential Matrix)和基础矩阵F(Fundamental Matrix),进而根据的关系得到帧间摄像头的旋转矩阵R和平移向量t。实际中只需要在相邻两帧图像之间找到5对匹配的特征点,即可求解出摄像头在拍摄第二张照片时的位姿相对于第一张照片拍摄时的旋转和平移运动信息。 +但由于E 本身具有尺度等价性,它分解得到的 t, R 也有一个尺度等价性。而 R ∈ SO(3) 自身具有约束,所以我们认为 t 具有一个尺度。换言之,在分解过程 中,对 t 乘以任意非零常数,分解都是成立的。直接导致了单目视觉的尺度不确定性(Scale Ambiguity)。换言之,在单目视觉里程计中,对轨迹和地图同时缩放任意倍数,我们得到的图像依然是一样的。为了克服尺度不确定的问题,单目视觉里程计都不可避免地需要有一个初始化的过程。初始化的两张图像必须有一定程度的平移,而后的轨迹和地图都将以此步 的平移为单位。(除了对 t 进行归一化之外,另一种方法是令初始化时所有的特征点平均深度为 1,也可以固定一个尺度。相比于令 t 长度为 1 的做法,把特征点深度归一化可以控制场景的规模大小,使计算在数值上更稳定些。不过这并没有理论上的差别。) +另一方面,从 E 分解到 R, t 的过程中,如果相机发生的是纯旋转,导致 t 为零,那么,得到的 E 也将为零,这将导致我们无从求解 R。因此,单目视觉里程计除了必须要有初始化的过程外,还要求初始化不能只有纯旋转,必须要有一定程度的平移。如果没有平移,单目将无法初始化。这些都是通过匹配特征点之间的对极几何约束估计相机运动的局限之处。 + +在通过提取特征点、特征点匹配、基于对极几何估计相机运动之后,还可通过三角测量(Triangulation)的方法来估计像素特征点的深度信息。从而从2D的投影图像的信息中恢复出3D的空间点。在恢复出3D的空间点之后,可以通过PnP问题(Perspective-n-Point——即当我们知道 n 个 3D 空间点以及它们的投影位置时,如何估计相机所在的位姿的问题),利用P3P法、DLT法、EPnP法、UPnP法、以及通过非线性优化来最小化重投影误差的方法, 反过来求解3D到2D点对的运动。这些方法使得基于特征点提取的运动信息估计,在对极几何求解的基础上更加准确,同时也获得了对于特征点在三维空间中位置的估计。 + +#### 2.2.1.2特征点法的优缺点 +特征点法发展比较成熟,运行比较稳定,并且相较于直接法具有对光照、动态物体不敏感的有点,目前在视觉里程计中占据主流地位。 +尽管如此,研究者们认为它至少有以下几个缺点: +1. 关键点的提取与描述子的计算非常耗时。实践当中,SIFT目前在CPU上是无法实时计算的,而ORB也需要近20毫秒的计算。如果整个SLAM以30毫秒/帧的速度运行,那么一大半时间都花在计算特征点上。 +2. 使用特征点时,忽略了除特征点以外的所有信息。一张图像有几十万个像素,而特征点只有几百个。只使用特征点丢弃了大部分可能有用的图像信息。 +3. 相机有时会运动到特征缺失的地方,往往这些地方都没有什么明显的纹理信息。例如,有时我们会面对一堵白墙,或者一个空荡荡的走廓。这些场景下特征点数量会明显减少,我们可能找不到足够的匹配点来计算相机运动。 + + +#### 2.2.2.1直接法 +近几年,随着深度摄像头和激光雷达等新型立体摄像头的兴起给视觉里程计的算法设计带来了新的思路,使人们有条件抛开特征点提取及其所引起的麻烦,另辟新路,基于光流提出了直接计算的方法,即根据图像的像素信息来计算相机运动,从而避免了特征的计算时间,也避免了特征缺失的情况。只要场景中存在明暗变化(可以是渐变,不形成局部的图像特征),直接法就能工作。 + +使用特征点法估计相机运动时,我们把特征点看作固定在三维空间的不动点。根据它们在相机中的投影位置,通过最小化重投影误差(Reprojection error)来优化相机运动。在这个过程中,我们需要精确地知道空间点在两个相机中投影后的像素位置——这也就是我们为何要对特征进行匹配或跟踪的理由。而在直接法中,最小化的不再是重投影误差,而是测量误差(Phometric error)。而根据使用图像中像素数量的不同,直接法可以分为稀疏、稠密和半稠密三种,具有恢复稠密结构的能力。相比于特征点法通常只能重构稀疏特征点,直接法和稠密重建有更紧密的联系。 + +##### 2.2.2.2直接法的优缺点: +相比于特征点法,直接法具有以下优点: + +- 可以省去计算特征点、描述子的时间。 +- 利用了全部图像中的大部分信息。由于特征点法图像中提取的特征点信息都是稀疏的(换句话说,在图像中只有一些感兴趣的点被提取了出来,通常一幅图像中提取的信息点数目在50~500之间) 通过这一步预拣选的操作,许多有价值的信息都丢失了。 +- 只要求有像素梯度即可,无须特征点。因此,直接法可以在特征缺失的场合下使用(一个极端的例子是只有渐变的一张图像。它可能无法提取角点类特征,但可以用直接法估计它的运动)。 +- 可以构建半稠密乃至稠密的地图,这是特征点法无法做到的。 + +然而,直接法也受到传感器设备的限制,由于直接法需要以获得像素点深度为前提,所以无法在单目摄像头上使用,只能应用于深度摄像头或者激光雷达的场景。虽然计算复杂度比起特征点法显著降低了,但是对于硬件设备的要求提高了。 diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192242493.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192242493.png new file mode 100644 index 0000000..22754b1 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192242493.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192300405.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192300405.png new file mode 100644 index 0000000..136370e --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192300405.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192397305.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192397305.png new file mode 100644 index 0000000..2ecb8f9 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192397305.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192501079.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192501079.png new file mode 100644 index 0000000..e0e7810 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/1546192501079.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/3D Mapping.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/3D Mapping.md new file mode 100644 index 0000000..4f8e8dd --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/3D Mapping/3D Mapping.md @@ -0,0 +1,10 @@ +#3D Mapping +当数据维度从2维扩展到3维,Occupancy Grid Mapping 在信息存储上低效的缺点就充分暴露了出来: +![Alt text](./1546192242493.png) +因此Occupancy Grid Map 的数据结构常用于2维地图的构建。 + +而列表法的表示虽然在信息存储上非常高效,但是搜索起来运算量太大: +![Alt text](./1546192300405.png) +因此在3维中通常使用的是树结构,常用的树结构有两种:[KD树](https://en.wikipedia.org/wiki/K-d_tree)和[八叉树](https://en.wikipedia.org/wiki/Octree)。 +![](./1546192397305.png) +![Alt text](./1546192501079.png) diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193899530.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193899530.png new file mode 100644 index 0000000..e2e9888 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193899530.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193952850.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193952850.png new file mode 100644 index 0000000..df84fc8 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193952850.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193969018.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193969018.png new file mode 100644 index 0000000..e8e06da --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193969018.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193984129.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193984129.png new file mode 100644 index 0000000..855bb6b --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193984129.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193989361.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193989361.png new file mode 100644 index 0000000..9f5249c --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/1546193989361.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/Map Registration.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/Map Registration.md new file mode 100644 index 0000000..8668a10 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Map Registration/Map Registration.md @@ -0,0 +1,12 @@ +#Map Registration(地图配准) +LIDAR depth sensor (Light Detection and Ranging), 通常嵌入在激光雷达中,提供一个二维或三维的点,可建模如下: +![Alt text](./1546193899530.png) + +地图配准即是在已知一个全局地图的情况下,将LIDAR depth sensor的当前读数与之匹配,如下图所示: +![Alt text](./1546193952850.png) + +![Alt text](./1546193969018.png) +![Alt text](./1546193984129.png) +![Alt text](./1546193989361.png) + +$a-b$ \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/MapRegistration.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/MapRegistration.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/MapRegistration.md +++ /dev/null diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190828503.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190828503.png new file mode 100644 index 0000000..2499866 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190828503.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190853493.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190853493.png new file mode 100644 index 0000000..0fb37bc --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190853493.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190996920.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190996920.png new file mode 100644 index 0000000..5df5f0b --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546190996920.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191110511.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191110511.png new file mode 100644 index 0000000..a71ced6 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191110511.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191222687.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191222687.png new file mode 100644 index 0000000..9768583 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191222687.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191243862.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191243862.png new file mode 100644 index 0000000..39200be --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/1546191243862.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/Occupancy Grid Mapping.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/Occupancy Grid Mapping.md new file mode 100644 index 0000000..f3b768a --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/Occupancy Grid Mapping/Occupancy Grid Mapping.md @@ -0,0 +1,16 @@ +#Occupancy Grid Mapping(占用栅格地图构建) + +一、栅格的定义 +将连续空间离散化成一个个栅格。然后每个栅格用一个布尔随机变量来描述: +![Alt text](./1546190828503.png) +二、传感器测量模型 +激光传感器的一次测量可以确定一条线段上所有栅格是否被占用(不是一般性,假设是单线激光雷达),相应的附一个概率值,总共有如下四中情况 +![Alt text](./1546190853493.png) +三、带入贝叶斯公式 +在(随机)先验的地图下,通过读取激光雷达传感器的测量数据,对地图用贝叶斯公式进行实时更新: +![Alt text](./1546190996920.png) +四、Log-odd +定义odd运算,然后再取log,可以将贝叶斯公式中的相乘各项化为相加,达到变量分离方便迭代更新的目的: +![odd的定义](./1546191110511.png) +![取对数](./1546191222687.png) +![log odd更新](./1546191243862.png) diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/OccupancyGridMapping.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/OccupancyGridMapping.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/OccupancyGridMapping.md +++ /dev/null diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping.md +++ /dev/null diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190477979.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190477979.png new file mode 100644 index 0000000..67f0a2b --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190477979.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190517286.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190517286.png new file mode 100644 index 0000000..e9b9495 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190517286.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190552329.png b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190552329.png new file mode 100644 index 0000000..2976b26 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/1546190552329.png Binary files differ diff --git a/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/mapping.md b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/mapping.md new file mode 100644 index 0000000..db7fa16 --- /dev/null +++ b/Software/Algorithms/Perception/Localization and Mapping/Principle/mapping/mapping/mapping.md @@ -0,0 +1,11 @@ +#Mapping(建图) + +地图可以分为以下三种 +![Alt text](./1546190477979.png) +有测度的坐标系地图。 +![Alt text](./1546190517286.png) +只存储拓扑结构的地图。 +![Alt text](./1546190552329.png) +以及带有上层语义信息的地图。(需要人工标注或者上层强大的模式识别算法支持) + +在机器人学中,底层最常用的是第一种,metric map。 \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Project/DVO.md b/Software/Algorithms/Perception/Localization and Mapping/Project/DVO.md index e69de29..f7b17b3 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Project/DVO.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Project/DVO.md @@ -0,0 +1,5 @@ +#Dense Visual Odometry + +[DVO项目地址](https://github.com/tum-vision/dvo) + +后来TUM组还在DVO基础上加上了后端的实现,构成了[DVOslam项目](https://github.com/tum-vision/dvo_slam) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Project/LSD.md b/Software/Algorithms/Perception/Localization and Mapping/Project/LSD.md index e69de29..15fde6d 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Project/LSD.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Project/LSD.md @@ -0,0 +1,2 @@ +#LSDslam +[网址](https://github.com/tum-vision/lsd_slam) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Project/ORB.md b/Software/Algorithms/Perception/Localization and Mapping/Project/ORB.md index e69de29..357d31b 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Project/ORB.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Project/ORB.md @@ -0,0 +1,2 @@ +#ORBSlam +可以说是目前综合性能最好的SLAM了,有单目、立体、RGB-D三种实现,代码风格也好,适合SLAM爱好者钻研。ORB是作者提出的一种特征点提取算子,具有很好的特性。[网址](https://github.com/raulmur/ORB_SLAM2) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Project/SVO.md b/Software/Algorithms/Perception/Localization and Mapping/Project/SVO.md index e69de29..44f0850 100644 --- a/Software/Algorithms/Perception/Localization and Mapping/Project/SVO.md +++ b/Software/Algorithms/Perception/Localization and Mapping/Project/SVO.md @@ -0,0 +1,4 @@ +# Semi-Direct Monocular Visual Odometry +这种视觉里程计是目前运算量最小的,比较适合放在计算资源有限的移动机器人平台上。采用直接法和最小化重投影误差。 +[github项目地址](https://github.com/uzh-rpg/rpg_svo) +[SVO原理解析-博客园](http://www.cnblogs.com/luyb/p/5773691.html) \ No newline at end of file diff --git a/Software/Algorithms/Perception/Localization and Mapping/Project/Tango.md b/Software/Algorithms/Perception/Localization and Mapping/Project/Tango.md deleted file mode 100644 index e69de29..0000000 --- a/Software/Algorithms/Perception/Localization and Mapping/Project/Tango.md +++ /dev/null diff --git a/Software/Algorithms/Robotics Algorithms.xmind b/Software/Algorithms/Robotics Algorithms.xmind index ed5ece4..6a5421c 100644 --- a/Software/Algorithms/Robotics Algorithms.xmind +++ b/Software/Algorithms/Robotics Algorithms.xmind Binary files differ diff --git a/meta/pic/Robotic_Algorithm.png b/meta/pic/Robotic_Algorithm.png new file mode 100644 index 0000000..8c105f9 --- /dev/null +++ b/meta/pic/Robotic_Algorithm.png Binary files differ diff --git a/meta/pic/examplev2.png b/meta/pic/examplev2.png index 235def1..ddbb242 100644 --- a/meta/pic/examplev2.png +++ b/meta/pic/examplev2.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-1.jpeg b/meta/pic/kalmanFilter/640-1.jpeg new file mode 100644 index 0000000..92008d4 --- /dev/null +++ b/meta/pic/kalmanFilter/640-1.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-1.png b/meta/pic/kalmanFilter/640-1.png new file mode 100644 index 0000000..09a604a --- /dev/null +++ b/meta/pic/kalmanFilter/640-1.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-10.png b/meta/pic/kalmanFilter/640-10.png new file mode 100644 index 0000000..619bf1b --- /dev/null +++ b/meta/pic/kalmanFilter/640-10.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-11.png b/meta/pic/kalmanFilter/640-11.png new file mode 100644 index 0000000..27f01b9 --- /dev/null +++ b/meta/pic/kalmanFilter/640-11.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-12.png b/meta/pic/kalmanFilter/640-12.png new file mode 100644 index 0000000..2626d1e --- /dev/null +++ b/meta/pic/kalmanFilter/640-12.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-13.png b/meta/pic/kalmanFilter/640-13.png new file mode 100644 index 0000000..dd67d29 --- /dev/null +++ b/meta/pic/kalmanFilter/640-13.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-14.png b/meta/pic/kalmanFilter/640-14.png new file mode 100644 index 0000000..db424f4 --- /dev/null +++ b/meta/pic/kalmanFilter/640-14.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-15.png b/meta/pic/kalmanFilter/640-15.png new file mode 100644 index 0000000..77aa157 --- /dev/null +++ b/meta/pic/kalmanFilter/640-15.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-16.png b/meta/pic/kalmanFilter/640-16.png new file mode 100644 index 0000000..818ec66 --- /dev/null +++ b/meta/pic/kalmanFilter/640-16.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-17.png b/meta/pic/kalmanFilter/640-17.png new file mode 100644 index 0000000..26efcfc --- /dev/null +++ b/meta/pic/kalmanFilter/640-17.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-18.png b/meta/pic/kalmanFilter/640-18.png new file mode 100644 index 0000000..b00e2e7 --- /dev/null +++ b/meta/pic/kalmanFilter/640-18.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-19.png b/meta/pic/kalmanFilter/640-19.png new file mode 100644 index 0000000..e3c07c4 --- /dev/null +++ b/meta/pic/kalmanFilter/640-19.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-2.jpeg b/meta/pic/kalmanFilter/640-2.jpeg new file mode 100644 index 0000000..05cd6e9 --- /dev/null +++ b/meta/pic/kalmanFilter/640-2.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-2.png b/meta/pic/kalmanFilter/640-2.png new file mode 100644 index 0000000..76db8fa --- /dev/null +++ b/meta/pic/kalmanFilter/640-2.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-20.png b/meta/pic/kalmanFilter/640-20.png new file mode 100644 index 0000000..e8064ad --- /dev/null +++ b/meta/pic/kalmanFilter/640-20.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-21.png b/meta/pic/kalmanFilter/640-21.png new file mode 100644 index 0000000..19795f9 --- /dev/null +++ b/meta/pic/kalmanFilter/640-21.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-22.png b/meta/pic/kalmanFilter/640-22.png new file mode 100644 index 0000000..a5689ff --- /dev/null +++ b/meta/pic/kalmanFilter/640-22.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-23.png b/meta/pic/kalmanFilter/640-23.png new file mode 100644 index 0000000..374fb05 --- /dev/null +++ b/meta/pic/kalmanFilter/640-23.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-24.png b/meta/pic/kalmanFilter/640-24.png new file mode 100644 index 0000000..f5e6042 --- /dev/null +++ b/meta/pic/kalmanFilter/640-24.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-25.png b/meta/pic/kalmanFilter/640-25.png new file mode 100644 index 0000000..43f3937 --- /dev/null +++ b/meta/pic/kalmanFilter/640-25.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-26.png b/meta/pic/kalmanFilter/640-26.png new file mode 100644 index 0000000..75c0347 --- /dev/null +++ b/meta/pic/kalmanFilter/640-26.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-27.png b/meta/pic/kalmanFilter/640-27.png new file mode 100644 index 0000000..5f34945 --- /dev/null +++ b/meta/pic/kalmanFilter/640-27.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-28.png b/meta/pic/kalmanFilter/640-28.png new file mode 100644 index 0000000..b933b87 --- /dev/null +++ b/meta/pic/kalmanFilter/640-28.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-29.png b/meta/pic/kalmanFilter/640-29.png new file mode 100644 index 0000000..75c0347 --- /dev/null +++ b/meta/pic/kalmanFilter/640-29.png Binary files differ diff --git "a/meta/pic/kalmanFilter/640-2\347\232\204\345\211\257\346\234\254.jpeg" "b/meta/pic/kalmanFilter/640-2\347\232\204\345\211\257\346\234\254.jpeg" new file mode 100644 index 0000000..92008d4 --- /dev/null +++ "b/meta/pic/kalmanFilter/640-2\347\232\204\345\211\257\346\234\254.jpeg" Binary files differ diff --git a/meta/pic/kalmanFilter/640-3.jpeg b/meta/pic/kalmanFilter/640-3.jpeg new file mode 100644 index 0000000..05cd6e9 --- /dev/null +++ b/meta/pic/kalmanFilter/640-3.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-3.png b/meta/pic/kalmanFilter/640-3.png new file mode 100644 index 0000000..340170c --- /dev/null +++ b/meta/pic/kalmanFilter/640-3.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-30.png b/meta/pic/kalmanFilter/640-30.png new file mode 100644 index 0000000..b933b87 --- /dev/null +++ b/meta/pic/kalmanFilter/640-30.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-31.png b/meta/pic/kalmanFilter/640-31.png new file mode 100644 index 0000000..b08871c --- /dev/null +++ b/meta/pic/kalmanFilter/640-31.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-32.png b/meta/pic/kalmanFilter/640-32.png new file mode 100644 index 0000000..8c33f2b --- /dev/null +++ b/meta/pic/kalmanFilter/640-32.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-33.png b/meta/pic/kalmanFilter/640-33.png new file mode 100644 index 0000000..4a8211a --- /dev/null +++ b/meta/pic/kalmanFilter/640-33.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-34.png b/meta/pic/kalmanFilter/640-34.png new file mode 100644 index 0000000..b1ce18e --- /dev/null +++ b/meta/pic/kalmanFilter/640-34.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-35.png b/meta/pic/kalmanFilter/640-35.png new file mode 100644 index 0000000..ed0aa50 --- /dev/null +++ b/meta/pic/kalmanFilter/640-35.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-36.png b/meta/pic/kalmanFilter/640-36.png new file mode 100644 index 0000000..e0580ab --- /dev/null +++ b/meta/pic/kalmanFilter/640-36.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-37.png b/meta/pic/kalmanFilter/640-37.png new file mode 100644 index 0000000..19a5c4b --- /dev/null +++ b/meta/pic/kalmanFilter/640-37.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-38.png b/meta/pic/kalmanFilter/640-38.png new file mode 100644 index 0000000..7f44829 --- /dev/null +++ b/meta/pic/kalmanFilter/640-38.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-39.png b/meta/pic/kalmanFilter/640-39.png new file mode 100644 index 0000000..3931f23 --- /dev/null +++ b/meta/pic/kalmanFilter/640-39.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-4.jpeg b/meta/pic/kalmanFilter/640-4.jpeg new file mode 100644 index 0000000..42e761a --- /dev/null +++ b/meta/pic/kalmanFilter/640-4.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-4.png b/meta/pic/kalmanFilter/640-4.png new file mode 100644 index 0000000..7ef3981 --- /dev/null +++ b/meta/pic/kalmanFilter/640-4.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-40.png b/meta/pic/kalmanFilter/640-40.png new file mode 100644 index 0000000..a5d0908 --- /dev/null +++ b/meta/pic/kalmanFilter/640-40.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-41.png b/meta/pic/kalmanFilter/640-41.png new file mode 100644 index 0000000..a90abb6 --- /dev/null +++ b/meta/pic/kalmanFilter/640-41.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-42.png b/meta/pic/kalmanFilter/640-42.png new file mode 100644 index 0000000..2907374 --- /dev/null +++ b/meta/pic/kalmanFilter/640-42.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-43.png b/meta/pic/kalmanFilter/640-43.png new file mode 100644 index 0000000..2d6045e --- /dev/null +++ b/meta/pic/kalmanFilter/640-43.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-44.png b/meta/pic/kalmanFilter/640-44.png new file mode 100644 index 0000000..06fe6ed --- /dev/null +++ b/meta/pic/kalmanFilter/640-44.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-45.png b/meta/pic/kalmanFilter/640-45.png new file mode 100644 index 0000000..66b2a56 --- /dev/null +++ b/meta/pic/kalmanFilter/640-45.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-46.png b/meta/pic/kalmanFilter/640-46.png new file mode 100644 index 0000000..999b65c --- /dev/null +++ b/meta/pic/kalmanFilter/640-46.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-47.png b/meta/pic/kalmanFilter/640-47.png new file mode 100644 index 0000000..6fbc173 --- /dev/null +++ b/meta/pic/kalmanFilter/640-47.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-48.png b/meta/pic/kalmanFilter/640-48.png new file mode 100644 index 0000000..4e19b49 --- /dev/null +++ b/meta/pic/kalmanFilter/640-48.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-49.png b/meta/pic/kalmanFilter/640-49.png new file mode 100644 index 0000000..b113fc2 --- /dev/null +++ b/meta/pic/kalmanFilter/640-49.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-5.jpeg b/meta/pic/kalmanFilter/640-5.jpeg new file mode 100644 index 0000000..995227f --- /dev/null +++ b/meta/pic/kalmanFilter/640-5.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-5.png b/meta/pic/kalmanFilter/640-5.png new file mode 100644 index 0000000..11520b9 --- /dev/null +++ b/meta/pic/kalmanFilter/640-5.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-50.png b/meta/pic/kalmanFilter/640-50.png new file mode 100644 index 0000000..3ff7417 --- /dev/null +++ b/meta/pic/kalmanFilter/640-50.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-51.png b/meta/pic/kalmanFilter/640-51.png new file mode 100644 index 0000000..2a8ee89 --- /dev/null +++ b/meta/pic/kalmanFilter/640-51.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-52.png b/meta/pic/kalmanFilter/640-52.png new file mode 100644 index 0000000..a420c1c --- /dev/null +++ b/meta/pic/kalmanFilter/640-52.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-53.png b/meta/pic/kalmanFilter/640-53.png new file mode 100644 index 0000000..e70ca76 --- /dev/null +++ b/meta/pic/kalmanFilter/640-53.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-54.png b/meta/pic/kalmanFilter/640-54.png new file mode 100644 index 0000000..6ae6b88 --- /dev/null +++ b/meta/pic/kalmanFilter/640-54.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-55.png b/meta/pic/kalmanFilter/640-55.png new file mode 100644 index 0000000..539ffd3 --- /dev/null +++ b/meta/pic/kalmanFilter/640-55.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-56.png b/meta/pic/kalmanFilter/640-56.png new file mode 100644 index 0000000..9a5c209 --- /dev/null +++ b/meta/pic/kalmanFilter/640-56.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-57.png b/meta/pic/kalmanFilter/640-57.png new file mode 100644 index 0000000..0339141 --- /dev/null +++ b/meta/pic/kalmanFilter/640-57.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-58.png b/meta/pic/kalmanFilter/640-58.png new file mode 100644 index 0000000..26b0308 --- /dev/null +++ b/meta/pic/kalmanFilter/640-58.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-59.png b/meta/pic/kalmanFilter/640-59.png new file mode 100644 index 0000000..2c0e897 --- /dev/null +++ b/meta/pic/kalmanFilter/640-59.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-6.jpeg b/meta/pic/kalmanFilter/640-6.jpeg new file mode 100644 index 0000000..995227f --- /dev/null +++ b/meta/pic/kalmanFilter/640-6.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-6.png b/meta/pic/kalmanFilter/640-6.png new file mode 100644 index 0000000..bf94f06 --- /dev/null +++ b/meta/pic/kalmanFilter/640-6.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-60.png b/meta/pic/kalmanFilter/640-60.png new file mode 100644 index 0000000..374c201 --- /dev/null +++ b/meta/pic/kalmanFilter/640-60.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-61.png b/meta/pic/kalmanFilter/640-61.png new file mode 100644 index 0000000..7038ea8 --- /dev/null +++ b/meta/pic/kalmanFilter/640-61.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-62.png b/meta/pic/kalmanFilter/640-62.png new file mode 100644 index 0000000..67056ec --- /dev/null +++ b/meta/pic/kalmanFilter/640-62.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-63.png b/meta/pic/kalmanFilter/640-63.png new file mode 100644 index 0000000..2873ad6 --- /dev/null +++ b/meta/pic/kalmanFilter/640-63.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-64.png b/meta/pic/kalmanFilter/640-64.png new file mode 100644 index 0000000..faa91b2 --- /dev/null +++ b/meta/pic/kalmanFilter/640-64.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-65.png b/meta/pic/kalmanFilter/640-65.png new file mode 100644 index 0000000..421f170 --- /dev/null +++ b/meta/pic/kalmanFilter/640-65.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-66.png b/meta/pic/kalmanFilter/640-66.png new file mode 100644 index 0000000..e4127e1 --- /dev/null +++ b/meta/pic/kalmanFilter/640-66.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-67.png b/meta/pic/kalmanFilter/640-67.png new file mode 100644 index 0000000..5be46f2 --- /dev/null +++ b/meta/pic/kalmanFilter/640-67.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-68.png b/meta/pic/kalmanFilter/640-68.png new file mode 100644 index 0000000..b0c4259 --- /dev/null +++ b/meta/pic/kalmanFilter/640-68.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-69.png b/meta/pic/kalmanFilter/640-69.png new file mode 100644 index 0000000..3a6ad7b --- /dev/null +++ b/meta/pic/kalmanFilter/640-69.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-7.jpeg b/meta/pic/kalmanFilter/640-7.jpeg new file mode 100644 index 0000000..129d5ed --- /dev/null +++ b/meta/pic/kalmanFilter/640-7.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-7.png b/meta/pic/kalmanFilter/640-7.png new file mode 100644 index 0000000..2e4a471 --- /dev/null +++ b/meta/pic/kalmanFilter/640-7.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-70.png b/meta/pic/kalmanFilter/640-70.png new file mode 100644 index 0000000..cdb1a3e --- /dev/null +++ b/meta/pic/kalmanFilter/640-70.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-71.png b/meta/pic/kalmanFilter/640-71.png new file mode 100644 index 0000000..fe4c871 --- /dev/null +++ b/meta/pic/kalmanFilter/640-71.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-72.png b/meta/pic/kalmanFilter/640-72.png new file mode 100644 index 0000000..4767613 --- /dev/null +++ b/meta/pic/kalmanFilter/640-72.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-73.png b/meta/pic/kalmanFilter/640-73.png new file mode 100644 index 0000000..e072234 --- /dev/null +++ b/meta/pic/kalmanFilter/640-73.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-74.png b/meta/pic/kalmanFilter/640-74.png new file mode 100644 index 0000000..a6dd223 --- /dev/null +++ b/meta/pic/kalmanFilter/640-74.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-75.png b/meta/pic/kalmanFilter/640-75.png new file mode 100644 index 0000000..bab8db4 --- /dev/null +++ b/meta/pic/kalmanFilter/640-75.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-8.jpeg b/meta/pic/kalmanFilter/640-8.jpeg new file mode 100644 index 0000000..086aa6b --- /dev/null +++ b/meta/pic/kalmanFilter/640-8.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640-8.png b/meta/pic/kalmanFilter/640-8.png new file mode 100644 index 0000000..6026325 --- /dev/null +++ b/meta/pic/kalmanFilter/640-8.png Binary files differ diff --git a/meta/pic/kalmanFilter/640-9.png b/meta/pic/kalmanFilter/640-9.png new file mode 100644 index 0000000..6a713fa --- /dev/null +++ b/meta/pic/kalmanFilter/640-9.png Binary files differ diff --git a/meta/pic/kalmanFilter/640.jpeg b/meta/pic/kalmanFilter/640.jpeg new file mode 100644 index 0000000..69faca0 --- /dev/null +++ b/meta/pic/kalmanFilter/640.jpeg Binary files differ diff --git a/meta/pic/kalmanFilter/640.png b/meta/pic/kalmanFilter/640.png new file mode 100644 index 0000000..9b7ca8e --- /dev/null +++ b/meta/pic/kalmanFilter/640.png Binary files differ diff --git a/robots/ANYdrive.md b/robots/ANYdrive.md deleted file mode 100644 index d8da09b..0000000 --- a/robots/ANYdrive.md +++ /dev/null @@ -1,53 +0,0 @@ -# ANYdrive -tag: *ETHZ* *执行* *电机* -author:gzy -date:2017.11.22 - ---- -- 图1 -![](../meta/pic/ANYdrive.jpg) - -ANYdrive是苏黎世理工的Robot System Lab开发的一款无刷电机,实验室利用电机开发了一款机械臂ANYpulator和机械狗ANYmal. - -然后实验室拿着电机创业开办了ANYbotics,很多人都是原实验室的人,包括实验室老板。 - -ANYdrive最大的亮点是引入了SEA,作为一款有柔性的电机,这个性能还是非常出色的。20Nm的驱动力矩,在SEA的保护下峰值可达到40Nm。 - -## 硬件 - -#### 基本参数 -- 尺寸95 x 90 mm -- 1Kg的质量 -- 无刷+齿轮减速+SEA - -#### 性能 -- 位置精度,0.025°(这个相当高了 -- 力矩控制带宽:60Hz(可以理解,SEA通常带宽都很低。作为对比,BLDC直驱的力控带宽至少上百Hz,可见SEA对电机控制频率的影响。所以这也就是为什么视频里面safe interaction的时候转速这么低,因为控制频率上不去) -- 48V供电,最大功率720W,额定功率240W -- 最大力矩40Nm,额定力矩20Nm(感觉一般,转速这么低) -- 最大峰值转速114rpm(带了减速电机,RPM太低了,这也就是为什么这个电机做的狗动作这么慢,ANYdrive视频里面转速也确实不高) -- IP67的防尘防水精度,堪比iPhone7 -- 支持ROS和Ethercat通信(然而控制带宽这么低,要Ethercat有何用…) -- low-impedance torque control低阻抗控制(不明白有什么用,求讨论) - -#### 控制方式 -- 官方SDK还没有发布 -- 我认为应该会做成ROS包与控制器通讯的形式 -- 控制器支持CAN总线控制,CAN的通讯频率可以达到1Mbit/s,然而,电机执行频率跟不上的,控制频率的瓶颈是电机的响应速度 -- Ethercat,不过意义不大 - -#### 传感器 -- 绝对位置编码器 - -## 应用场景 -- 高精度的位置和力控制 -- 可以抵抗外力,有一定鲁棒性(SEA的功劳) -- 力存储(SEA的功劳) -- safe interaction,人机安全控制(SEA的功劳) - -## 拓展 -[实验室连接](http://www.rsl.ethz.ch/robots-media/actuators/anydrive.html) - -[公司产品链接](https://www.anybotics.com/anydrive/) - -[产品介绍PDF](../meta/datasheet/ANYdrive.pdf) \ No newline at end of file diff --git a/robots/ANYmal.md b/robots/ANYmal.md deleted file mode 100644 index 8b2538a..0000000 --- a/robots/ANYmal.md +++ /dev/null @@ -1,59 +0,0 @@ -# ANYmal -tag: *ETHZ* *四足* *地面* - -author:gzy - -Date:2017.11.16 - ---- -- 图1 -![ASIMO](../meta/pic/ANYmal.PNG) - -- 图2 -![ASIMO_HISTORY](../meta/pic/ANYmal2.png) -## 概述 - -ANYmal是ETHZ的Robotic Systems Lab打造的一款四足机器人。其最初应用为油气勘探,灾难搜救,所以它配备了光学摄像头、红外摄像和热成像摄像头,石油气检测仪,主动光源,通讯设备等。它的电池拥有2小时的续航时间。可远程控制或自主导航。 - -ANYmal的四肢电机通过力矩控制实现柔性(官方说法,关于机器人使用的电机ANYdrive会另外做一个介绍),所以它能够实现动态跑和快速爬。配备了激光雷达和摄像头,能够**实时**对环境建图(包括室内建精确地图和室外粗略地图),并且进行路径规划。 - -这个机器人非常容易搬运,其躯干设计就是为了搬运而打造的:上方的两个手柄用于抬拉机器人,躯干肚子的平台可以在地面稳妥放置。搬运时,两前腿前伸,后腿向后伸,肚子触地,减小体积。躯干周围的框架结构也在一定程度上保护了机器人免于撞击。 - -机器人的机械设计也非常轻巧。腿采用碳纤打造,轻且坚固。但是我有一个问题,为什么机器人的小腿要做成弯曲的形状,这个对于机器人有什么好处,为什么要设计这个复杂的形状,这对于机械加工来说无疑增加了成本(见issue2)。机器人每条腿有3个自由度,直立时一条腿有2个pitch和1个roll,酷炫的是腿的2个pitch有360°的旋转自由度。 - -在狭窄的空间,机器人可以趴下,改四足步态为爬行。爬楼梯的时候也采用了这个作弊的方法,斜趴在楼梯上一级一级往上抬升,改变腿的姿态时身体趴在楼梯上,这也是腿pitch有360旋转空间的好处。ANYmal能够适应各种地形,斜的地面,泥土地,石子路等等都没有问题 - -## 硬件 - -#### 尺寸 -- 重量 30kg(比Laikago重了不少,不过传感器也多 - -#### 关节自由度 -- 头部 2 自由度 -- 腿 3-D0F*4条腿 - -#### 驱动器 -- ANYdrive - - -#### 传感器 -- 头部:Micro-Epsilon Thermal Camera -- 头部:红外传感器 -- 头部:视觉摄像头 - - -## 应用场景 -油气勘探,灾难搜救等。 -### ANYmal的技能表: -- 观察仪表盘并且判断读数 -- 上、下台阶 -- 爬楼梯(趴着上升,一步一趴) -- 原地旋转 - -## 拓展 -[官网链接](http://www.rsl.ethz.ch/robots-media/anymal.html) - -[论文](https://ieeexplore.ieee.org/document/7758092) - -## TODO -- 理解论文的控制方法 diff --git a/robots/Aibo.md b/robots/Aibo.md deleted file mode 100644 index 27dcd14..0000000 --- a/robots/Aibo.md +++ /dev/null @@ -1,36 +0,0 @@ -# Aibo -tag: *Sony* *四足* *地面* - ---- -- 图1 -![Aibo](../meta/pic/Aibo.jpg) - -- 图2 -![Aibo](../meta/pic/Aibo2.png) - -Sony大法复活了10年前的品牌Aibo(Artificial Intelligence roBOt),利用人工智能的方法创造了新机器狗。在2017的新款前,已经有数款Aibo发布。 - -## 硬件 -- 屁股上有向上的摄像头进行slam -- 4核CPU -- 内置LTE and WiFi -- 4个麦克风 -- 音响 -- gyroscopes -- motors,22-DoF -- 2小时电池续航 - -2017年11月价格:$1700 - -## 应用场景 -家居服务,人机交互等 - -### Aibo的技能表: -- learn the layout of your house over time -- OLED显示眼,可以显示心情,眨眼 -- 避障,向目的地前进 -- 记住能让主人快乐的动作(处理视觉,声音,动作数据分析得出) - -## 拓展 - -[新闻报道](https://www.youtube.com/watch?v=lhESLovHII4) diff --git a/robots/Asimo new tag structure.md b/robots/Asimo new tag structure.md deleted file mode 100644 index 7ccf1fd..0000000 --- a/robots/Asimo new tag structure.md +++ /dev/null @@ -1,81 +0,0 @@ -# ASIMO - -Company/University/Lab/Indivisual tag:*Honda 本田* - -Application tag: *服务* - -Environment tag: *地面* *室内* - -Mechanical Characteristic tag:*人形* *双臂* *双足* *谐波减速器* - -Software Characteristic tag: *ZMP* - ---- -- 图1 -![ASIMO](../meta/pic/Asimo.jpg) - -- 图2 -![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) - -ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 - - - -ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 - -## 硬件 - -### 2011年11月时的公开的性能表: - -#### 尺寸 -- 身高 130cm -- 宽度 45cm -- 深度 34cm -- 重量 48kg -#### 性能 -- 最大速度 9km/h -- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 -#### 关节自由度 -- 头部 3 自由度 -- 腕部 7×2 自由度 -- 手部 13×2 自由度 -- 腰部 2 自由度 -- 脚步 6 自由度 -- 总计 57自由度 - -#### 抓握力 -- 0.5kg/手(五指抓握的状态下) -#### 致动器 -- 伺服电机 + 谐波减速器 + 驱动器 - -#### 传感器 -- 脚部: 6轴力传感器(可感知力在脚掌中的分布) -- 腰部: 陀螺仪 + 加速度传感器 - -## 应用场景 -家居服务,接待,导游等 -### ASIMO的技能表: -- 现场解说 -- 端茶送水 -- 预测行人的行走方向,并自动避开 -- 三个人同说说话时识别谁说了什么 -- 迎接客人并引导 -- 以9km/h的速度行走 -- 双足起跳 -- 在有凹凸起伏的路上行走 -- 单脚跳 -- 脚尖射门 -- 拿起水瓶,拧开盖子,并倒进纸杯 -- 手语 -- 人脸识别 - -## 拓展 -[机器人链接](http://www.honda.co.jp/ASIMO/) - -[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) - -[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) - -[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) - -[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/robots/Asimo.md b/robots/Asimo.md deleted file mode 100644 index 680c2f4..0000000 --- a/robots/Asimo.md +++ /dev/null @@ -1,72 +0,0 @@ -# ASIMO -tag: *Honda 本田* *人形* *地面* - ---- -- 图1 -![ASIMO](../meta/pic/Asimo.jpg) - -- 图2 -![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) - -ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 - - - -ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 - -## 硬件 - -### 2011年11月时的公开的性能表: - -#### 尺寸 -- 身高 130cm -- 宽度 45cm -- 深度 34cm -- 重量 48kg -#### 性能 -- 最大速度 9km/h -- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 -#### 关节自由度 -- 头部 3 自由度 -- 腕部 7×2 自由度 -- 手部 13×2 自由度 -- 腰部 2 自由度 -- 脚步 6 自由度 -- 总计 57自由度 - -#### 抓握力 -- 0.5kg/手(五指抓握的状态下) -#### 致动器 -- 伺服电机 + 谐波减速器 + 驱动器 - -#### 传感器 -- 脚部: 6轴力传感器(可感知力在脚掌中的分布) -- 腰部: 陀螺仪 + 加速度传感器 - -## 应用场景 -家居服务,接待,导游等 -### ASIMO的技能表: -- 现场解说 -- 端茶送水 -- 预测行人的行走方向,并自动避开 -- 三个人同说说话时识别谁说了什么 -- 迎接客人并引导 -- 以9km/h的速度行走 -- 双足起跳 -- 在有凹凸起伏的路上行走 -- 单脚跳 -- 脚尖射门 -- 拿起水瓶,拧开盖子,并倒进纸杯 -- 手语 -- 人脸识别 - -## 拓展 -[机器人链接](http://www.honda.co.jp/ASIMO/) - -[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) - -[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) - -[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) - -[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/robots/Atlas.md b/robots/Atlas.md deleted file mode 100644 index 5b7f595..0000000 --- a/robots/Atlas.md +++ /dev/null @@ -1,17 +0,0 @@ -# Atlas - - tag: *Boston Dynamics* *足式* *双足* *地面* - - --- -![atlas](../meta/pic/atlas.jpg) - -波士顿动力公司的一大力作,可以实现在雪地和不平路面的行走。Atlas可以算是现今人形机器人的巅峰。 - -first come out: 2013 -lastest version: Jul, 2017 - -- 头顶有激光雷达用于感知环境信息 -- 身体多个关节全部采用液压驱动 -- 28个关节,双腿12个(和人一样),双手12个,背部3个,脖子1个pitch - -2015年的DARPA挑战赛中,这个机器人被分发给6个不同的team进行各自开发进行任务,最高拿到第二名,败于韩国Kaist。 \ No newline at end of file diff --git a/robots/BALLU.md b/robots/BALLU.md deleted file mode 100644 index 0585354..0000000 --- a/robots/BALLU.md +++ /dev/null @@ -1,10 +0,0 @@ -# BALLU -tag: *RoMeLa* *地面* *双足* - ---- - -BALLU: Buoyancy Assisted Lightweight Legged Unit - - -[BALLU](https://www.youtube.com/watch?v=EdSoUbXirVI) - diff --git a/robots/Cassie.md b/robots/Cassie.md deleted file mode 100644 index 78a5622..0000000 --- a/robots/Cassie.md +++ /dev/null @@ -1,42 +0,0 @@ -# Cassie -tag: *Agility Robotics* *仿生* *地面* *双足* - ---- - -![Cassie](../meta/pic/Cassie.jpg) - -Fig1. Cassie在野外测试中的样子 - -![Cassie_walking](../meta/pic/Cassie_walking.jpeg) -Fig2. Cassie在行走中的样子 - -Cassie是由俄勒冈州立大学出来的初创企业Agility Robotics开发的能够双足行走的机器人,外形类似没有头的鸵鸟(虽然官方说他们并不是刻意模仿鸵鸟的)。Agility Robotics的成员之前曾开发过类似的研究用双足机器人MARLO与ATRIAS。这两机器人的开发经验奠定了Cassie的基础。 - -Cassie的行走基于spring-mass model,类似于Boston Dynamics的机器人的行走方式。 - -## 硬件 -Cassie是一个行走时能量利用效率较高的机器人。经过机械结构的优化,控制算法的优化,以及定制的驱动器等,虽然其搭载的电池较小,但能够单次充电运行6~8小时。 - -Cassie的机械结构的特点: -- 每条腿有4个自由度(非官方数据,通过从图片与视频观察得出) -- 每个关节由电机驱动 -- 所有电机均布置在离髋关节(Cassie的话应该叫头?)很近的位置,因此行走时挥动的质量很小,需要的能量就小。 -- 膝关节是由电机通过连杆驱动的,并且在膝关节还有一块能够弯曲的弹性板材,充当弹簧的作用。 -- 足部面积很小 - -## 应用场景 - -其活动范围与人类基本无异,能够到人能所到的地方。 - -具体的应用场景有: -- 送货,并且可以利用已有的路面与行人道 -- 野外探索 -- 抢险救灾 -- 双足研究平台 - -## 拓展 -[Agility Robotics官网](http://www.agilityrobotics.com/#cover) - -[1.视频Cassie](https://www.youtube.com/watch?v=Is4JZqhAy-M) - -[2.视频Cassie](https://youtu.be/5YDIzeW42hg) diff --git a/robots/CoBot.md b/robots/CoBot.md deleted file mode 100644 index e69de29..0000000 --- a/robots/CoBot.md +++ /dev/null diff --git a/robots/E2-DR.md b/robots/E2-DR.md deleted file mode 100644 index fecf93c..0000000 --- a/robots/E2-DR.md +++ /dev/null @@ -1,75 +0,0 @@ -# E2-DR -tag: *Honda 本田* *人形* *地面* - ---- -- 图1 通过4足并用爬竖直梯子 -![ASIMO](../meta/pic/E2-DR_1.png) - -- 图2 通过四足步态过毁坏的砖块堆 -![ASIMO_HISTORY](../meta/pic/E2-DR_2.jpeg) - -- 图3 各种技能表集合 -![ASIMO_HISTORY](../meta/pic/E2-DR_3.jpeg) - -E2-DR是日本的汽车厂商巨头本田研发的人形机器人,于2017年10月亮相,契机是在IROS 2017上发表的论文。论文的链接中给出了E2-DR的一些demo,演示了机器人攀爬,过障碍,通过不同地形的能力。 - -早在2015年,Honda在IROS2015上就展示了其救援机器人的一些技能研究,那时的机器人是E2-DR的原型,没有如此美观的外表和性能,但是大体结构上一致。 - -## 硬件 -### 2017年10月时的公开的性能表: -#### 尺寸 - -- 身高 168cm(比Asimo高38cm) -- 深度 25cm(比Asimo还薄) -- 重量 85Kg - -#### 性能 - -- 最大速度 9km/h -- 电池 1000-Wh锂电池 -- 活动时间 90分钟 -- 活动温度范围 -10 and 40 °C -- Intel Core-i7 CPU -- GPU -- 内部冷却系统散热 - -#### 关节自由度 - -- 总共 33 D0F -- 头部 1 DoF -- 躯干 2 DoF -- 手臂 8×2 DoF -- 腿 6×2 DoF -- 手 1×2 DoF - -#### 传感器 - -- 头左右两侧各一个Hokuyo激光雷达,激光雷达可通过电机旋转得到3D点云信息 -- 头上有一个单目摄像头 -- 头上一个SR4000 ToF摄像头 -- 头上一个深度摄像头+红外projector -- 每个手上有一个摄像头和一个深度传感 - -## 应用场景 -官方设定是用于救灾,当然人形机器人的用途还有很多。在救灾这个大场景下,也会有很多的技能需要开发。比如开车,过障碍,环境感知等。 - -### E2-DR的技能表: -- 三维空间的运动,包括爬竖直梯子(包括从梯子下到地面的动作),上楼梯(借助手臂扶hand rail)等 -- 狭窄空间的行进 -- 跨过地上200mm的管道 -- 走过堆满杂乱砖块残骸的地面 -- 沿着走廊通过关着的门(需要打开门的操作) -- 走路过程中允许外力扰动(这个视频中体现不明显,外力太小) -- 环境感知,用于运动规划 -- 爬高梯时,防止猛烈坠落 -- 步行速度 4km/h -- 四足前进速度 2.3km/h -- 在26mm/hour的雨中步行20min -- 在26mm/hour的雨中上下梯子 - -## 拓展 -[机器人介绍(带视频)](https://spectrum.ieee.org/automaton/robotics/humanoids/iros-2017-honda-unveils-prototype-e2dr-disaster-response-robot) - -IROS论文 - -[1] Takahide Yoshiike, Mitsuhide Kuroda, Ryuma Ujino, Hiroyuki Kaneko, Hirofumi Higuchi, Shingo Iwasaki, Yoshiki Kanemoto, Minami Asatani, Takeshi Koshiishi, Honda R&D. **Development of Experimental Legged Robot for Inspection and Disaster Response in Plants**. IROS 2017, Vancouver, Canada. diff --git a/robots/Electrick.md b/robots/Electrick.md deleted file mode 100644 index 705910f..0000000 --- a/robots/Electrick.md +++ /dev/null @@ -1,5 +0,0 @@ -# Electrick -tag: *非机器人* *低成本触摸传感器* *电场* - -## 拓展 -[视频](https://www.youtube.com/watch?v=38h4-5FDdV4) \ No newline at end of file diff --git a/robots/Epson SCARA Robot Overview.md b/robots/Epson SCARA Robot Overview.md deleted file mode 100644 index 8dd762c..0000000 --- a/robots/Epson SCARA Robot Overview.md +++ /dev/null @@ -1,41 +0,0 @@ -# Epson SCARA Robot Overview -tag: *Epson SCARA* *机械臂* *执行* *机器人部件* - ---- -- Epson G1 -![Epson G1](../meta/pic/epson_scara-G1.jpg) - -- Epson G3 -![epson_scara-G3](../meta/pic/epson_scara-G3.jpg) - -- Epson G6 -![epson_scara-G6](../meta/pic/epson_scara-G6.jpg) - -- Epson G10 -![epson_scara-G10](../meta/pic/epson_scara-G10.jpg) - -- Epson G20 -![epson_scara-G20](../meta/pic/epson_scara-G20.jpg) - - -Epson在机器人领域是做的比较好的一家。经常会听到Epson Robot和安川,发那科等公司一起出现。 - -他们也是一家做机械臂和控制器解决方案的公司。其实 -他们家很著名的就是这款Scara机械臂。Scara(Selective Compliance Assembly Robot Arm or Selective Compliance Articulated Robot Arm)的意思是选择性柔性平面机器人,就是这个机械臂的每个关节在XY平面方向上是带有一定柔性(可Back Drive),在Z方向上是完全刚性的。 - -Scara机构示意图: -![scara 示意图](../meta/pic/SCARA_configuration.png) - -这种机械臂的好处是可以在XY平面运动的非常快(由于运动速度叠加) - -## 硬件 - -由于硬件款式较多,先挖个坑之后补(2017.11.13) - -## 应用场景 -码垛,生产线搬运,较精密移动零件。 - -## 拓展 -[Epson Scara Robot 官网](http://robots.epson.com/products/1) - -[wiki-Scara](https://en.wikipedia.org/wiki/SCARA) diff --git a/robots/Floating_Spring_Joint.md b/robots/Floating_Spring_Joint.md deleted file mode 100644 index bb4e6f4..0000000 --- a/robots/Floating_Spring_Joint.md +++ /dev/null @@ -1,22 +0,0 @@ -# Floating Spring Joint - -tag: *DRL* *VSJ* - ---- -![FSJ1](../meta/pic/FSJ1.png) - -Fig1. FSJ外观 - -![FSJ2](../meta/pic/FSJ2.png) - -Fig2. FSJ半剖图 - -FSJ最大的亮点是一个关节带有两个自由度,一个自由度用于控制位置,另一个自由度用于控制刚度。但是,由于机械构造的原因,刚度与第二个自由度的电机轴输出为非线性关系,而且,两个自由度之间存在一定的耦合,这给控制和建模带来了难度。 - -## 变刚度原理 -![FSJ3](../meta/pic/FSJ3.png) - -![FSJ4](../meta/pic/FSJ4.png) - -## 拓展 -[1] The DLR FSJ: Energy based design of a variable stiffness joint, S. Wolf, et al. ICRA 2011. \ No newline at end of file diff --git "a/robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" "b/robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" deleted file mode 100644 index 2a0faf7..0000000 --- "a/robots/Fusion-\350\277\234\347\250\213\346\223\215\344\275\234\347\232\204\345\257\204\347\224\237\346\234\272\345\231\250\344\272\272.md" +++ /dev/null @@ -1,24 +0,0 @@ -# Fusion-远程操作的寄生机器人 -tag: *Keio University* *协作机器人* - ---- -![Fusion](../meta/pic/Fusion.jpeg) - -## 实验室 -Fusion是一个依附在人(surrogate)身上的人机协作系统,虽然目前做的非常初期,demo效果还是很振奋人心,前景非常好。 - -## 硬件 -- 一个背包,包括通信、控制、供电系统 -- 两个机械臂,各6个自由度 -- 两个机械手,来源不详 -- 一个头,包括3自由度的主动减震,双目立体视觉,双耳听觉 -- 支撑头部的平台 -- 总重量不详,应该不轻,背着很费劲 - -## 应用 -- 支持利用Oculus Rift对机器人进行远程操控 -- 远程教学和交互 - -## 链接 - -- [Fusion官方视频](https://www.youtube.com/watch?time_continue=145&v=Nrc7gH6dydw) diff --git a/robots/Giacometti Arm with Balloon Body.md b/robots/Giacometti Arm with Balloon Body.md deleted file mode 100644 index f1e18b3..0000000 --- a/robots/Giacometti Arm with Balloon Body.md +++ /dev/null @@ -1,10 +0,0 @@ -# Giacometti Arm with Balloon Body -tag: *Suzumori Endo Lab* *地面* *空中* *机械臂* - ---- - -长度20m的超长超轻充气机械臂 - - -[Giacometti Arm with Balloon Body](https://www.youtube.com/watch?v=INTHRNcyW9w) - diff --git a/robots/Gila-Monster.md b/robots/Gila-Monster.md deleted file mode 100644 index 4e52abd..0000000 --- a/robots/Gila-Monster.md +++ /dev/null @@ -1,35 +0,0 @@ -# Gila Monster -Author: gzy - -tag: *Biorobotics Lab CMU* *仿生* *地面* - ---- -![SEA-Snake](../meta/pic/Gila_Monster.jpg) - -Fig1. 开发中的Gila Monster蜥蜴型机器人🦎. - - -Gila Monster是Biorobotics LAB出的一款蜥蜴型机器人🦎。 - -## 硬件 - -通过尾巴拖出的工业线缆由控制箱进行给点和通讯。由腰、四肢、头、尾巴组成。 - -- 头, 是一个半圆形的3D打印罩子,连接着脖子,脖子有一个pitch的自由度 -- 腰,有3个自由度,前后2个是yaw方向,中间的1个事pitch方向 -- 尾巴,尾巴也有3个自由度,但尾巴不是控制的重点,更多是作为平衡的配重,没有尾巴也是可以的 -- 四肢,机器人一共有4条腿,每条腿有2个自由度。yaw控制腿向前还是向后,pitch控制抬腿或者下踩。 - -## 应用 -在Gila Monster之前,有一个非常重要的工作是希望在沙地里行走。研究人员在实验室中搭建了模拟沙地的环境,见Fig1。 - -我们知道沙子并非固态,在受力超过临界值后,沙子形态会从固态变成流态。这篇工作主要是研究如何在沙地中行走能防止沙子坍塌,研究能够让沙子保持固态的行走方式。 - -目前,Gila Monster还在开发新的平地行走步态。我们知道脊椎动物的行走是按照特定Pattern周期运动的。研究的主要目标是在一个运动周期内,走的越远越好,同时保证机器人身体平稳不摔(4足不太容易摔不过还是会摔的)。 - -研究的方法是简化模型,将多自由的机器人简化为一个二杆模型,只有二杆的连接处有一个自由度在yaw方向扭动,同时4足简化为只有两个状态的开关,即触地和不触地。触地即足与地面无相对滑动,杆将沿着触地点进行转动。不触地则对当前运动无影响。 - -得到了简化模型后,接下来就是调参了。通过调整参数的变化轨迹,理论上可以得到一个最优的参数轨迹,由此生成一个最优的步态。有一个非常酷炫的方法,用于指导在二维参数空间中选择参数轨迹。这个方法指出,二维参数空间的参数轨迹是一个封闭曲线,选择的参数轨迹曲线包围的面积就是机器人前进的距离。由此可以证明我们可以选择一个最优参数轨迹来得到最优步态(这部分内容非常理论,不是特别理解,欢迎@guzhaoyuan讨论)。 - -## 拓展 -文章: Geometric Mechanics Applied to Tetrapod Locomotion on Granular Media \ No newline at end of file diff --git "a/robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" "b/robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" deleted file mode 100644 index 1c4ae70..0000000 --- "a/robots/HERMES \351\201\245\346\223\215\344\275\234\346\234\272\345\231\250\344\272\272.md" +++ /dev/null @@ -1,40 +0,0 @@ -# HERMES 遥操作机器人 - -tag: *MIT* *BioMimetic Robotics Lab* *双足* - ---- - -![Aibo](../meta/pic/HERMES.jpeg) - -## 硬件 -- 成年人的9成高 -- 24 DoF -- 45kg -- *high-torque-density electric actuator*,该实验室还做高能量密度的电机,正好用于Hermes。这款电机动态性高,瞬时输出功率大。因此hermes可以做非常暴力的“击穿木板”的动作。 -- 自己开发的基于数传的视觉反馈系统 -- 自己开发的带*躯干姿态反馈*的遥操作系统(可以从demo视频看到身体的倾斜会施加给操纵者) -- 全是自己开发的好强…感觉全是2个PhD的工作量 - - -## 应用场景 - -Balance Feedback Interface(BFI) - -> This strategy means that if the robot is about to lose balance, then the BFI attempts to pull the human out of balance as well. In this case, we hypothesize that the BFI is to trigger human’s natural response to disturbances. - -![Aibo](../meta/pic/BFI.jpeg) - -这是设想的机器人平衡方式,通过机器人身上的传感器反馈来拉扯人,使人也产生相同的不平衡。复制人所做出的自然反应施加给机器人,使机器人保持平衡。这也就是标题所说的 - -> MIT Robot Steals Human Brains to Help It Balance - -然而这一功能还在开发,希望将其完善到6DoF的全面反馈。 - -目前机器人还不能行走,可以进行遥操作击穿木板,拿斧头劈门,拿灭火器灭火这样的工作。 - -## 拓展 -[MIT 官方 demo](https://www.youtube.com/watch?time_continue=160&v=2-5n2IsdCqU) - -[官方介绍视频](https://www.youtube.com/watch?time_continue=196&v=p8ozov_xymM) - -J. Ramos, A. Wang, and S. Kim, "Robot-Human Balance State Transfer during Full-Body Humanoid Teleoperation Using Divergent Component of Motion Dynamics" in Robotics and Automation (ICRA), 2016 IEEE International Conference on. IEEE, 2016. \ No newline at end of file diff --git a/robots/IMPASS.md b/robots/IMPASS.md deleted file mode 100644 index 36d9fd3..0000000 --- a/robots/IMPASS.md +++ /dev/null @@ -1,8 +0,0 @@ -# IMPASS -tag: *RoMeLa* *地面* *轮足* *双轮* - ---- - -IMPASS (Intelligent Mobility Platform with Active Spoke System) - -[IMPASS](https://www.youtube.com/watch?v=pqDFHKEmQGM) diff --git a/robots/Laikago.md b/robots/Laikago.md deleted file mode 100644 index 633ceb5..0000000 --- a/robots/Laikago.md +++ /dev/null @@ -1,38 +0,0 @@ -# Laikago -tag: *Unitree* *四足* *地面* - ---- -- 图1 -![Laikago](../meta/pic/Laikago.png) - -- 图2 -![LaikagoPushRecovery](../meta/pic/LaikagoPushRecovery.png) - -Laikago是杭州宇树科技(Unitree)开发的一款四足机器人。2017年10月6日推出,瞬间引起国内外机器人爱好者的广泛关注,因为其外形与BDI的大狗类似,并且能够做酷炫的push recovery,一度被认为技术水平距离BDI大狗最近的产品。 - -可以看出,Unitree团队嵌入式方向极强,机械设计能力极强,而且非常懂电机。 - -主控用了STM32F4,每个电机单独有驱动。电机TMD是自己绕的,因为根本没有其他好用的电机。大腿和膝盖电机的扭矩有38.5牛米,而且一定有短时超载,散热是很大的问题,他们也在考虑液冷,不过很麻烦,太折腾。一台22kg,也在考虑减重。API有高层和底层接口,高层利用预置步态算法控制前后左右,底层接口可以控制单个电机,不过开放底层很容易摔的,所以维护会很头疼。 - -之前版本用的同步带,但是腿受冲击容易错齿,非常蛋疼。所以现在改用连杆驱动了,电机都在肚子里,腿非常轻。 - -Laikago作者推荐Legged Robot that Balance,有机会要拜读一下,书作者是Marc Raibert,Founder and CEO of Boston Dynamics。控制大狗的基本方法Marc在这里有提及。 - -## 硬件 -图为2017年11月的数据: - -![Spec](../meta/pic/Laikago_Spec.png) - -## Laikago的技能表: -- 不同地形的行走(草地,石块地,20°斜坡上下坡,) -- Push Recovery (行走中受到轻微外力可以抵抗,收到大外力会下蹲降低重心) -- 走路过程身体平稳,可以放倒立的水瓶 -- 可以拉动较重行李箱,提供25N的拉力 -- Body Following,可以手动调整身体姿态,要求电机有力反馈 -- 在动感平台上保持身体平衡 -- 可以跳着踏步 - -## 拓展 -[视频链接](https://www.youtube.com/watch?v=d6Ja643GqL8) - -[官网](http://www.unitree.cc/) \ No newline at end of file diff --git a/robots/Modular_Snake.md b/robots/Modular_Snake.md deleted file mode 100644 index 45c445e..0000000 --- a/robots/Modular_Snake.md +++ /dev/null @@ -1,29 +0,0 @@ -# Modular Snake -tag: *Biorobotics Lab CMU* *仿生* *地面* - ---- - -![SEA-Snake](../meta/pic/SEA_Snake.jpeg) - -Fig. Modular Snake🐍 - -蛇形机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 -## 硬件 -蛇形机器人的硬件采用模块化的电机连接而成,分为头模块,尾巴模块和躯干模块。模块之间采用Ethernet通讯,供电采用串接方式。即,每个模块都有10个Pogo pin和10个焊盘,用于连接前、后的模块,其中2个pin为供电,另外8个pin为ethernet的8个通讯io。每个模块都带有自己的独立控制器,采用STM32F1系列。 - -- 头模块有探照灯和摄像头。 -- 躯干模块有一个运动自由度,由maxon电机,编码器,惯导模块等组成,这部分构成了机器蛇运动和控制的核心。 -- 尾部模块工业连接头拖出总控制线,连接到控制箱进行控制。 - -## 应用场景 -用于军事探测,可进行管道内壁,树干外壁的攀爬 - -可作为多自由度机械臂,进行空间的操作 - -## TODO -研究其步态,包括 前进,左右移动,转向,横滚,爬树 - -## 拓展 -[机器人链接](http://biorobotics.ri.cmu.edu/projects/modsnake/) - -[视频 Modular Snake](https://www.youtube.com/watch?v=kNH0eAqz_WU&list=PLfxH9gJUcI6GG0fK4st2L8X_IJWhwlzzb&index=6) diff --git a/robots/NABiRoS.md b/robots/NABiRoS.md deleted file mode 100644 index 9f8cd44..0000000 --- a/robots/NABiRoS.md +++ /dev/null @@ -1,12 +0,0 @@ -# NABiRoS -tag: *RoMeLa* *地面* *双足* - ---- - -Non Anthropomorphic Bipedal Robotic System的简称 - -## 还有这种操作! ## -两只脚前后走叫做双足,两只脚横着走也叫做双足。NABiRos是一个硬是把横向说成前後来行走的双足机器人 - - -[NABiRoS](https://www.youtube.com/watch?v=Y5UoQsHJskw) diff --git a/robots/Ocean One.md b/robots/Ocean One.md deleted file mode 100644 index 7e492d4..0000000 --- a/robots/Ocean One.md +++ /dev/null @@ -1,28 +0,0 @@ -# Ocean One - - tag: *Stanford Robotics Lab* *人形* *水下* *探索* - - --- -![Ocean One](../meta/pic/Ocean_One.jpg) - -![Ocean One 2](../meta/pic/Ocean_One_2.png) - -斯坦福大学机器人实验室开发的人形水下遥操作机器人。上半身像人形,下半身像传统水下机器人。 - -first come out: 2016 - -- 头部有两个自由度和双目视觉 -- 双臂各有7自由度,力反馈,弹性串联驱动 -- 手部是欠驱动抓手,具有触觉和摄像头 -- 身体共有8个推进器,以及用于探索,导航,姿态估计用的多个广角摄像头,多普勒测速计,气压计等许多传感器 - - - -Video URL: -[Youtube](https://www.youtube.com/watch?v=p1HmgP9l4VY) - -News URL: -[IEEE](https://spectrum.ieee.org/automaton/robotics/humanoids/stanford-humanoid-submarine-robot) - -Official Site URL: -[cs.stanford.edu](http://cs.stanford.edu/group/manips/ocean-one.html) diff --git a/robots/SEA-Snake.md b/robots/SEA-Snake.md deleted file mode 100644 index 76752cb..0000000 --- a/robots/SEA-Snake.md +++ /dev/null @@ -1,38 +0,0 @@ -# SEA-Snake -tag: *Biorobotics Lab CMU* *仿生* *地面* - ---- - -![SEA-Snake](../meta/pic/SEA_Snake.jpeg) - -Fig. 第一代非SEA的蛇形机器人 - -![SEA-Snake](../meta/pic/SEA_Snake2.png) - -Fig. 第二代带SEA的蛇形机器人 - -蛇形机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 -## 硬件 -蛇形机器人的硬件采用模块化的电机连接而成,分为头模块,尾巴模块和躯干模块。模块之间采用Ethernet通讯,供电采用串接方式。即,每个模块都有10个Pogo pin和10个焊盘,用于连接前、后的模块,其中2个pin为供电,另外8个pin为ethernet的8个通讯io。每个模块都带有自己的独立控制器,采用STM32F1系列。 - -- 头模块有探照灯和摄像头。 -- 躯干模块有一个运动自由度,由maxon电机,编码器,SEA弹簧系统,惯导模块等组成,这部分构成了机器蛇运动和控制的核心。 -- 尾部模块工业连接头拖出总控制线,连接到控制箱进行控制。 - - -## SEA(Series Elastic Actuator) -第二代蛇形机器人相对第一代,增加了SEA模块,其实本质就是在电机输出轴末端增加柔性弹簧,使单个模块增加柔性(优点)和不可控性(缺点)。SEA的另一个优点是可以做力控,同时带来的缺点是控制频率降低(至于为什么,欢迎@guzhaoyuan讨论)。 - -## 应用场景 -用于军事探测,可进行管道内壁,树干外壁的攀爬 - -可作为多自由度机械臂,进行空间的操作 - -## 拓展 -[机器人链接](http://biorobotics.ri.cmu.edu/projects/modsnake/) - -[视频第二代SEA-Snake](https://www.youtube.com/watch?v=te4M-b69fVs) - -[视频第一代Snake](https://www.youtube.com/watch?v=kNH0eAqz_WU&list=PLfxH9gJUcI6GG0fK4st2L8X_IJWhwlzzb&index=6) - -论文:Design and Architecture of a Series Elastic Snake Robot, D. Rollinson, et al. \ No newline at end of file diff --git a/robots/Salto.md b/robots/Salto.md deleted file mode 100644 index b91b76a..0000000 --- a/robots/Salto.md +++ /dev/null @@ -1,8 +0,0 @@ -# Salto -tag: *Berkeley* *地面* *弹跳* - ---- - - -[Salto](https://www.youtube.com/watch?v=xvIk39rkkiU) -[Salto-1P](https://www.youtube.com/watch?v=2dJmArHRn0U) diff --git a/robots/Sarcos Robotics Overview.md b/robots/Sarcos Robotics Overview.md deleted file mode 100644 index 752f0bf..0000000 --- a/robots/Sarcos Robotics Overview.md +++ /dev/null @@ -1,5 +0,0 @@ -# GUARDIAN S -tag: *Sarcos* *蛇形* *外骨骼操作* *轮式* *机械臂* - -## 拓展 -[视频](https://www.youtube.com/watch?v=DfYAvWIfhYY) \ No newline at end of file diff --git a/robots/Snake-Monster.md b/robots/Snake-Monster.md deleted file mode 100644 index 12814f2..0000000 --- a/robots/Snake-Monster.md +++ /dev/null @@ -1,48 +0,0 @@ -# Snake Monster -tag: *Biorobotics Lab CMU* *仿生* *地面* - ---- - -![SEA-Snake](../meta/pic/snake_monster.jpeg) - -Fig1. 末端是夹持器的SEA蜘蛛型机器人Snake Monster🕷 - -![SEA-Snake](../meta/pic/snake_monster2.jpeg) - -Fig2. SEA蜘蛛型机器人Snake Monster🕷 - -蜘蛛机器人由CMU的Howie Choset带领的Biorobotics Lab开发。其最大的亮点是模块化可拼接的身体。 - -同系列的还有[蛇形机器人](https://github.com/thu-skyworks/Roboseum/blob/master/robots/SEA-Snake.md),采用相同的SEA模块化电机拼接而成。关于SEA的描述详见蛇形机器人链接。 -## 硬件 -蜘蛛机器人的硬件采用模块化的电机连接而成,分为**身体模块**和**6条腿**,以及一个标配的**控制箱**。同一架构的也有4条腿的“蜘蛛机器人”,虽然控制采用的步态不一样,但是硬件本质没有区别。 - -- 身体模块:带有电源,控制器 -- 腿:每条腿都与身体连接,有3个自由度,如果腿的末端是抓取器,则多加1个自由度 -- 控制箱:与身体模块的控制器想通讯,主要进行供电和通讯,以及提供好用的用户操作接口 -- 电机模块:电机采用模块化,每个电机包括控制板(Ethernet通讯和供电),有一个运动自由度,带减速器,位置传感和IMU姿态反馈,新版带SEA模块。 - -Snake Monster有无线版和有线版,其实无线版就是把控制器和电源放在身体模块里,而有线版则是由控制箱供电和控制。 - -## SEA(Series Elastic Actuator) -关于SEA的详细描述,见[SEA-Snake](https://github.com/thu-skyworks/Roboseum/blob/master/robots/SEA-Snake.md)。 - -其实Snake Monster分为两个版本,带SEA和不带SEA。SEA Snake Monster的柔性在控制上为其带来了很多不便,虽然可以做力控,但感觉算法仍然没有达到那个水平。就目前的控制效果来看,用传统的控制方法控制带SEA电机显然给机器人带来了一定的不稳定。(尤其在机器人举腿的时候,腿各种在空中晃,严重影响落地点的控制,见视频1) - -但是,力控也带来一个好处,就是可以暴力踩它。这一点说明了SEA电机的力控性能,即在有大外力干扰的情况下。机器人能够增大力矩抵抗干扰,在无干扰或小干扰情况下,机器人就可以减小力矩,这样可以减小功耗,减小冲击(增加了柔性)。 - -## 步态 -蜘蛛机器人采用3足步态,采用CPG(Central Pattern Generator)算法。(什么是CPG,欢迎@guzhaoyuan讨论) - -## 应用场景 -多足机器人的好处就在于特别适应地形,它可以轻松地走过斜坡,充满障碍和多种材质的地形。而这些功能,在双足机器人上没有一个是能够轻松解决的。 - -多足可以有很多花样,比如Fig1中的将一个足改为机械臂,这样就可以做移动抓取。 - -在研究层面,可以研究的点有,改变足的数量,做机器人的自适应控制。比如,在损失一个甚至两个腿的情况下,如何控制机器人仍然完成移动任务。 -## 拓展 -[蜘蛛机器人链接](http://biorobotics.ri.cmu.edu/robots/SEAModularity.php),同时介绍了SEA Module,即电机的信息。 - -[视频SEA Snake Monster](https://www.youtube.com/watch?time_continue=34&v=rULs2E9dpHQ),SEA的柔性在这里体现的非常明显。 - -更鬼畜的是,他们把控制器和腿改造成了[双足机器人](https://www.youtube.com/watch?time_continue=35&v=7CciHJ6SP_o),虽然不能走,但是能简单地站立并且抵抗一些外力。 \ No newline at end of file diff --git a/robots/Snake_Arm_Robot.md b/robots/Snake_Arm_Robot.md deleted file mode 100644 index 0e5fdf5..0000000 --- a/robots/Snake_Arm_Robot.md +++ /dev/null @@ -1,45 +0,0 @@ -# Snake Arm Robot - -Author: gzy - -tag: *OC Robotics* *机械臂* - ---- - -![Snake Arm Robot](../meta/pic/Snake_Arm_Robot.png) - -Fig1. Snake Arm Robot - -Snake Arm Robot Series II 是有英国公司OC Robotics出品的机器人,主要的亮点是狭小空间的工业机械臂操作应用。 - -## 公司介绍 -OC Robotics的口号是“Reaching the unreachable”. 目标的制作在狭小空间进行操作的机器人,主要产品均为蛇形。 - -## 硬件 -由关节和连杆连接而成,共有12个关节和12个连杆。每个关节有两个自由度,均是由线驱动。每个关节有27.5°的弯曲范围。 - -## 控制 - -![Snake Arm Robot](../meta/pic/Snake_Arm_Robot2.png) - -Fig2. 线驱动控制器 - -每个关节有一圈的不锈钢线进行驱动,共20根(Series II,不同型号驱动线的数目不同,最多有50根驱动线)。每个线驱动装置均是丝杠和螺母进行线的拉扯。丝杠的旋转由60W 的maxon EC motor无刷电机带动。 -20根不锈钢线从基座的螺母出发,连接到不同的关节,就先筋腱拉动手臂一样,拉动不同的关节。具体的机械结构和控制方法,官方没有提供(似乎有专利可寻)。不过官方支持与不同工业应用的厂商进行个性化定制开发,制造具有不同工业应用的机械臂,对每一款的机械结构均有不同。 - -## 应用 -狭小空间的勘探与操作。 -末端的工具头可以替换,可以携带摄像头,灯光,高压水枪碰头等。 -能够进行path following,即后面关节沿着前面关节经过的空间位置前进,整个机器人的空间形状由头结点决定。 - - -## TODO - -- 末端通讯控制方式 -- 和公司其他产品比较 - - -## 拓展 -[Snake Arm 技术文档](http://www.ocrobotics.com/downloads/Website/OC%20Robotics%20-%20Series%20II%20X125%20Snake-arm%20System%20-%20Data%20Sheet%20-%20November%202015.pdf) - -[OC Robotics 技术文档](https://www.nasa.gov/pdf/628551main_4C-1_Buckingham.pdf) \ No newline at end of file diff --git a/robots/SpotMini.md b/robots/SpotMini.md deleted file mode 100644 index f2d44c6..0000000 --- a/robots/SpotMini.md +++ /dev/null @@ -1,41 +0,0 @@ -# SpotMini - -tag: *Boston Dynamics* *四足* *地面* - -Author: gzy - -Date: 2017.11.23 - ---- -- 图1 -![ASIMO](../meta/pic/spotmini.jpg) - -SpotMini是机器人公司Boston Dynamics于2017年11月发布。相比前代Spot,机器人最大的改观就是做的更小更精致。全身做了外壳封装,也有了鲜明的黄色色调,整体感觉是倾向于出售的一款机器人。 - -Boston Dynamics自己说这款机器人的最大亮点是安静。 - -## 硬件 - -### 2017年11月时的公开的性能表: - -#### 尺寸 -- 身高 84cm -- 重量 30kg - -#### 性能 -- 可携带重量:14Kg -- 时长90min - -#### 关节自由度 -- 腿 4*3 自由度 -- 机械臂 5 自由度 -- 总计 17自由度 - -#### 传感器 -- 立体相机 -- 深度摄像头 -- IMU -- 位置和力传感器 - -## 拓展 -[机器人链接](https://www.bostondynamics.com/spot-mini) \ No newline at end of file diff --git a/robots/T-HR3 Humanoid Robot.md b/robots/T-HR3 Humanoid Robot.md deleted file mode 100644 index 9e7af81..0000000 --- a/robots/T-HR3 Humanoid Robot.md +++ /dev/null @@ -1,68 +0,0 @@ -# T-HR3 -tag: *Toyota 丰田* *人形* *外骨骼* *虚拟现实* - ---- -![T-HR3](../meta/pic/T-HR3.jpg) - -![T-HR3](../meta/pic/T-HR3_2.jpg) - -### 一些info: -1. honda=本田,toyota=丰田 -2. toyota于2017年11月最新出的人形机器人 - -### 机器人的优点: -1. 力矩伺服。这个做的非常棒,机器人的关节有应变式的力矩传感 - -![T-HR3](../meta/pic/T-HR3-torque-servo.jpg) -图:力矩执行器的机械结构 - -这是Toyota和Tamagawa Seiki and Nidec Copal Electronics合作的关节,用于测量力矩。该关节同时用于T-HR3和Master Maneuvering System. -2. 远程控制(Master Maneuvering System, MMS). VR+关节力反馈+数据手套,整体方案做的非常棒. 更有猜测,可以利用示教的数据作为机器学习的数据,用以学习控制机器人的策略。 - -### 机器人的问题: -1. 因为人的姿态和机器人姿态不是完美对应,有一个bias,所以人和机器人不能同时操作同一个物品。 -2. 机器人各种抖抖抖,传感器拿到的值也不是特别的精确,或者说没有很好的滤波,所以电机得到的指令一直在tremble。 -3. 机器人的操作一直慢半拍。不知道是通讯时延还是数据处理的问题,又或者是机器人执行速度更不上(毕竟有力控,执行速度会比较慢)。时延十分明显,可以达到0.5甚至1s。毕竟那么多关节的实时同步控制太难。 -4. 从demo中单腿支撑恢复双腿站立的瞬间,上身明显晃动,足以判断脚底没有压力传感。 -5. 机器人甚至连一步都没有走,显然是怕摔,主要精力可能都放在上半身了。而遥操作的座椅不支持控制行走步态,原因可以参考:[知乎:为何双足机器人不直接拷贝人类行动时的数据?](https://www.zhihu.com/question/65813578) -所以这个人形机器人就很尴尬,只能模仿上肢动作而不能移动。 - -## 硬件 - -#### 尺寸 -- 身高 152cm -- 重量 74.8kg (比我重比我矮…) - -#### 关节自由度 -- 头部 2 自由度 -- 手臂 (3+1+3)×2=14 自由度 -- 灵巧手 1×2 自由度(??) -- 腰部 3 自由度 -- 腿脚 6×2 自由度 -- 总计 32 自由度 - -#### 遥操作自由度(手臂+手,带力反馈) -- 肩膀 3×2 自由度 -- 肘 1×2 自由度 -- 手腕 3×2 自由度 -- 手 1×2 自由度(??) -- 总计 16个关节传感 - -#### 传感器 -- 头部:双目视觉(可能只是用于传输数据给HTC VIVE) -- 关节:力矩传感 - -#### 远程控制(Master Maneuvering System, MMS) -利用了HTC VIVE的虚拟现实来实时展现机器人看到的图像,并且通过MMS的位置传感来控制机器人。机器人将得到的力矩反馈通过MMS来施加在操作者身上,这是一个非常棒的解决方案。但是问题也不少,见开头。 - -## 应用场景 -Toyota官方称 "this is a platform with capabilities that can safely assist humans in a variety of settings, such as the home, medical facilities, construction sites, disaster-stricken areas and even outer space."" -### T-HR3的技能表: -- 较低时延的遥操作机器人 -- 单脚站立做各种姿势(预先编程确定各关节角然后执行) - - -## 拓展 -[demo视频](https://www.youtube.com/watch?v=GTw7q3-Bn6M) - -[报道(含更多视频)](https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0ahUKEwi49bDhgtzXAhUN2WMKHXN-Df8QFghBMAY&url=https%3a%2f%2fwww%2eengadget%2ecom%2f2017%2f11%2f21%2ftoyota-t-hr3-robot%2f&usg=AOvVaw2D1Qf048U6b_buHHDM9Dbf) \ No newline at end of file diff --git a/robots/Template.md b/robots/Template.md deleted file mode 100644 index 680c2f4..0000000 --- a/robots/Template.md +++ /dev/null @@ -1,72 +0,0 @@ -# ASIMO -tag: *Honda 本田* *人形* *地面* - ---- -- 图1 -![ASIMO](../meta/pic/Asimo.jpg) - -- 图2 -![ASIMO_HISTORY](../meta/pic/Asimo_history.jpg) - -ASIMO是Advanced Step in Innovative Mobility的简称。由日本的汽车厂商巨头本田历经多年研发而成,是日本人形机器人中最尖端的一个,也是最出名,最上镜的机器人。最初以「创造能够与社会共存,协调,并赋予人类社会以新价值的机器人」为愿景,由一群充满热情的本田公司的技术专家,在1986年开始了双足行走机器人的研发。最近虽然没什么新闻了,但是听说本田一直有在持续研发,还开始了抢险救灾版本的ASIMO的研发。 - - - -ASIMO能够根据周围的人的行动而自行移动。具有较强的双足自平衡能力。能够利用多个传感器对外界进行精确的感知,并作出复杂的行为。并且ASIMO的手臂拥有足够多的自由度,使得它能够作出许多复杂,拟人的手部动作。 - -## 硬件 - -### 2011年11月时的公开的性能表: - -#### 尺寸 -- 身高 130cm -- 宽度 45cm -- 深度 34cm -- 重量 48kg -#### 性能 -- 最大速度 9km/h -- 活动时间 40分钟(步行时)可用自动充电功能进行连续活动 -#### 关节自由度 -- 头部 3 自由度 -- 腕部 7×2 自由度 -- 手部 13×2 自由度 -- 腰部 2 自由度 -- 脚步 6 自由度 -- 总计 57自由度 - -#### 抓握力 -- 0.5kg/手(五指抓握的状态下) -#### 致动器 -- 伺服电机 + 谐波减速器 + 驱动器 - -#### 传感器 -- 脚部: 6轴力传感器(可感知力在脚掌中的分布) -- 腰部: 陀螺仪 + 加速度传感器 - -## 应用场景 -家居服务,接待,导游等 -### ASIMO的技能表: -- 现场解说 -- 端茶送水 -- 预测行人的行走方向,并自动避开 -- 三个人同说说话时识别谁说了什么 -- 迎接客人并引导 -- 以9km/h的速度行走 -- 双足起跳 -- 在有凹凸起伏的路上行走 -- 单脚跳 -- 脚尖射门 -- 拿起水瓶,拧开盖子,并倒进纸杯 -- 手语 -- 人脸识别 - -## 拓展 -[机器人链接](http://www.honda.co.jp/ASIMO/) - -[ASIMO英文解说视频](https://www.youtube.com/watch?v=JlRPICfnmhw) - -[ASIMO进化史视频](https://www.youtube.com/watch?v=cqL2ZvZ-q14) - -[ASIMO公开的技术资料](http://asimo.honda.com/downloads/pdf/asimo-technical-information.pdf) - -[ASIMO公开的技术资料2](http://asimo.honda.com/asimo-specs/) diff --git a/robots/collaborative transportation.md b/robots/collaborative transportation.md deleted file mode 100644 index 2ba0b91..0000000 --- a/robots/collaborative transportation.md +++ /dev/null @@ -1,5 +0,0 @@ -# aslteam -tag: *ETHZ* *aslteam* *多机协作* *四足* *四旋翼* - -## 拓展 -[视频](https://www.youtube.com/watch?v=9PprNdIKRaw) \ No newline at end of file diff --git a/robots/robonaut2.md b/robots/robonaut2.md deleted file mode 100644 index 9464866..0000000 --- a/robots/robonaut2.md +++ /dev/null @@ -1,12 +0,0 @@ -# Robonaut2 - -tag: *空间* *NASA* - ---- - -![robonaut](../meta/pic/Robonaut2-strongman.png) - -![robonaut](../meta/pic/Robonaut2.jpg) - -Robonaut2是NASA开发的空间机器人,人形。 -