开源数学软件(讨论群:qq群号 231033271) -凯发推荐

uesoft 发表于 2013-9-25 21:24:52

开源数学软件(讨论群:qq群号 231033271)

市场有一些商业仿真软件如matlab、labview、mathematica、maple、ansys、fluent,也有一些开源仿真软件如scilab、scicoslab、octave、freemat、jama、sage、maxima、reduce、openmodelica、modelio,开源cfd软件如openfoam、openlb、palabos、calculix、fenics、rheolef、openfem、oofem、opensees、dune、openfvm、gmsh、opencfd、cfd-su2、foam-extend、dune、duns、issac-cfd、dolfyn、efd、fastest、peano、ateles(apes)、alya system、code_aster、carat 、z88,多物理场耦合库precice,其他linux的开源cfd软件,有限体积法fvm,有限元法fem,离散元法dem,有限差分法fdm,谱方法fft,格子玻尔兹曼方法lbm,时域有限差分fdtd,连续介质力学,流体力学,电动力学,固体力学,流固耦合,多物理场耦合。计算电磁学meep。分子动力学软件如 lammps、namd、tinker、gromacs、 ms、amber、ls1-mradyn、comd。还有一些开源c/c 库如opengl、opencv、opencl、cgal、gdal/ogr、vxl和网络通信库等。
uesoft公司计划开发一个开源仿真软件假设为a,该软件a开发目标如下:
15.使用c/c 开发的类似matlab/simulink的开源数学软件
15.0,开发原则:所有模块均以开源代码为基础构建,集成。
15.1,直接利用c 集成开发环境如vc 或开源的dev-c 、qt、glade、gtkmm、codeblocks、eclipse cdt、gcc、gdb等作为编辑器、编译器或调试器。适用系统:windows、linux、android、ios。
15.2,直接利用c/c 标准模板库stl、扩展库boost或其他开源库。
15.3,集成麻省理工学院mit开源的c语言解释器cint,直接解释运行c语言程序。
15.4,集成一个开源符号解释器yacas,它有自己的编程语言,执行符号计算。或者直接利用c 符号计算库ginac。ginac is a c library. it has been developed to become a replacement engine for xloops which in the past was powered by the maple cas. its design is revolutionary in a sense that contrary to other cas it does not try to provide extensive algebraic capabilities and a simple programming language but instead accepts a given language (c ) and extends it by a set of algebraic capabilities. the name ginac is an iterated and recursive abbreviation for ginac is not a cas, where cas stands for computer algebra system.
ginac(ginac 不是一个 cas 计算机代数系统))是一个用于符号计算的c 库。它的设计允许集成系统创造,象征性的操作嵌入与更成熟的计算机科学(如计算密集型,图形界面等),数字应用领域。相对于其他情况下,它不会尝试代数提供广泛的功能和简单的编程语言,而是接受一个给定语言(c )和扩展了代数功能设置。

15.5,模型驱动架构mda,采用通用uml实现simulink图形建模功能。17.2列出的开源仿真软件scicoslab可以实现simulink功能也即 15.5、 15.6、 15.11功能。
15.6,模型驱动架构mda,采用通用uml实现simulink代码生成器,从模型生成c/c 或java代码,编译后能部署到嵌入式控制器或目标机器运行。或者采用swig工具在c/c 与其他语言代码之间互相转换。
15.7,通用,兼容matlab。
15.8,有matlab批处理解释器,能解释执行.m文件。
15.9,有simulink解释器,能解释执行simulink模型文件。
15.10,实现所有matlab的工具箱。
15.11,实现所有simulink的模块。
15.12,转换器c1:把matlab程序转换为a程序,把a程序转换为matlab程序。
15.13,转换器c2:把simulink模型文件.mdl格式转换为a模型文件格式,把a模型文件格式转换为simulink模型文件.mdl格式。
15.14,转换器c3:调用c1把matlab安装文件夹子目录toolbox下的例子程序全部转换为a程序格式。调用c2把matlab安装文件夹子目录toolbox下的例子程序simulink模型文件格式全部转换为a模型文件格式。
15.15,自动测试程序:利用自动化测试程序对第 15.14条所列的matlab/simulink程序及模型和对应的转换后的a程序及模型执行自动化测试,对出现的不一致自动分析,去除a程序的bug。
15.16,其他功能。

uesoft 发表于 2013-10-21 18:59:38

17.1,
scilab for linux移植到android。由于scilab的函数名和命令名与matlab一致,能运行matlab的.m文件,与matlab兼容性好。以scilab为核心构建开源仿真软件,有可能尽快实现15.0-15.16的功能,缩短开发时间。
17.2,
scicoslab是由一些曾在inria和enpc参与scilab开发的研究人员,在scilab build4版本的基础上开发出来的gtk 版本,它集成了建模/模拟工具scicos及其它数量众多的工具箱,被认为是“惟一一款可以与商业软件matlab/simulink及matrixx/sysstembuild媲美的开源软件”。最新稳定版本是4.4.1。
第一个版本的scicos是完全用scilab语言写成的,但后续版本逐步改用c语言进行开发。由于在scilab 5版本中出现稳定性及性能问题,开发人员决定此后scicos仅在scicoslab中进行后续开发。详情见scilab/scicos history    scicos和scicoslab是同一个软件,官方网站http://www.scicos.org,第二段倒数的5个行与嵌入式和电子信息工程有关。
17.2.1
本项目计划投资n万元,以scicoslab开源代码为基本代码,修改使scicoslab达到如下功能:
17.2.1.1 完全兼容matlab/simulink,即
17.2.1.1.1 所有函数名、函数类型和形参、实参、调用方式与matlab/simulink完全相同。即.m文件、.mdl文件、.mex、.c、.cpp文件能够直接在scicoslab运行,运行结果完全相同。即实现第1贴15.7-15.15的所有功能。付款方式:第15项第1个指定例题完成,支付x万元,第2、3个例题每个例题支付y万元,第4-13个例题每个例题支付1000元,第14-1213个例题每个例题支付100元。当所有例题完成,测试发现如果有例题不能通过,不能通过的每个例题罚款z万元,最多罚款20个例题,其它未罚款的例题按bug管理。
现在scicoslab有一个转换功能,能够把matlab批处理.m文件转换为scilab格式文件,但有很多函数不能转换。
17.2.1.2 scicoslab现在能够运行scilab格式文件。scilab的变量都是%开头。
17.2.2
本项目计划投资n万元,以17.2.1项目为基础,使scicoslab可以运行在android和ios手机系统。
17.2.3
本项目计划投资r万元含税,即:若17.2.1不能实现,则17.2.2也不能实现。此时执行本计划,即结合android ndk开发工具http://developer.android.com/tools/sdk/ndk/index.html 和库,使scicoslab可以运行在android系统上。程序在android全部测试完成后,程序可下载了,一次性支付费用含税,或者分月支付每月s元含税直到全部付清。
17.2.4
本计划与17.2.3相似,但手机系统换成ios。必须在完成17.2.3后才能执行17.2.4计划。


17.6
openmodelica是一个开源的基于modelica语言的建模和仿真环境,用于工业界和学术界研究。由非赢利组织 open source modelica consortium (osmc) 长期开发.
the goal with the openmodelica effort is to create a comprehensive open source modelica modeling, compilation and simulation environment based on free software distributed in binary and source code form for research, teaching, and industrial usage. we invite researchers and students, or any interested developer to participate in the project and cooperate around openmodelica, tools, and applications.   凯发app下载主页:https://www.openmodelica.org/
17.6.1 openmodelica带有一个类似simulink的图形化建模编辑器omedit,该编辑器采用qt开发。openmodelica可运行于windows和linux、mac osx。

uesoft 发表于 2013-10-22 18:04:40

18.octave开源仿真软件已经有了android版本,与matlab兼容性更好,用c写的,但没有gui。octave集成了ginac符号计算库。以octave为核心开发开源仿真软件,主要提供gui和类似simulink的工具。
与前面介绍的scilab相比,首先它们的共同点是开放源代码软件。
octave的比起scilab,对matlab的语法兼容性更好,几乎没有差别。比如,octave也使用m文件的形式来扩展功能和定义函数。因此熟悉matlab的用户更容易接受octave环境。
octave的功能比起scilab要简单一些,这使得octave对一些用户来说意义不如scilab大。
很不幸的是octave目前没有图形界面,我们只能在行命令的方式进行交互。
但是octave还是有自己的特点:
(1) 它是一个gpl软件。关于gpl的意义,这里不介绍,我们要指出的一点是,它允许用户在遵循gpl协议的前提下,自己发行这个软件,可以单独,也可以包含在用户的产品里面发行。而scilab是不允许的,用户只能免费使用scilab。
(2) 它可编程的性能更好, octave语言功能更为强大,几乎提供所有系统函数的支持,octave在语法上也更接近c的语法,比如提供 和这--样的运算符。这样,我们可以在octave环境里面增加一些更为强大和易用的扩展。不象在matlab和scilab环境中限制比较多,有时无法充分的利用系统资源。
(3) 它的计算库都是用c写,而scilab则基本是fortran的编写的。这也是一份有用的资源。

uesoft 发表于 2013-10-30 10:38:38

19.   maxima是一种用lisp编写的计算机代数系统 (computer algebra system),用于公式推导、符号计算、数值计算等,它是一套自由软件,在gnu通用公共许可证下发行。
maxima 的前身是doe-macsyma 。doe-macsyma 是由麻省理工学院(mit)在美国能源部的支持下于60年代末创造的一个 cas ,它是用 lisp 实现的。macsyma在当时是非常创新的软件。现在流行的商业计算机代数系统软件maple及mathematica,都是受到macsyma的启发而设计出来的。mit 1982年的时候决定把 macsyma 变成一个关闭源码的程序,macsyma 走上商业化的道路,于是产生了很多 macsyma 的分支。
自1982年开始,bill schelter教授默默地开始开发一个开放源码版的macsyma,他把这个软件叫做maxima。因为凯发推荐的版权的问题,maxima一直不能公开发行,只有少数人知道有这个软件的存在。1998年,maxima终于得到公开发行的许可,这已是schelter教授努力了16年之后的事。schelter教授在2001年去世,不过maxima已经正式成为合法开放源码软件,因此陆续有支持开放源码的程序设计师,学者投入maxima的开发工作。
在 maxima 的官方网站上有不同版本的 maxima 供各平台实用。
maxima原本是纯字符界面,这在数学式子的显示上就没有maple或mathematica等软件来得美观。不过maxima也有几种图形界面。第一个选择是使用gnu的texmacs。texmacs是一套所见即所得的文书处理程序,可以很方便的编辑数学式子。它同时也提供许多数学软件一个美观的界面,maxima就是其中之一。其他可能的选择还有wxmaxima, imaxima等等。
不过,不同平台可能有一些不同的选择。不论windows, mac, 或是linux,都可以使用texmacs 这个文字处理软件当界面以显示最漂亮的数学符号。

19.1安装

19.1.1.windows
你只需要下载 maxima-x.y.z.exe ,这是一个win32下标准的安装程序,安装后即可使用命令行的maxima,或图形界面的wxmaxima,xmaxima 。
如果你需要更美观的符号显示,可以考虑安装wintexmacs,具体可以参考百度。

19.1. 2.linux
如果采用rpm方式安装,你至少需要两个文件
a) maxima-x.y.z-n.i386.rpm (包含脚本和文档)
b) maxima-exec--x.y.z-n.i386.rpm (包含可执行的lisp程序)
你可以选择安装图形界面
c) maxima-xmaxima-x.y.z-n.i386.rpm
如果使用debain/ubuntu,只需要
sudo apt-get install maxima
sudo apt-get install texmacs
似乎简单得有些过分了 ^_^
你还可以选择安装
texmacs 提供漂亮的maxima界面
geomview 配合maxima可画出高级3d图形

19.1. 3.mac os
mac os x 是一个unix 系统,所以需要的程序和linux 一样。首先你先要安装apple 的x11软件。这是因为unix 上用的x-windows 系统当然和mac os x 的aqua 视窗系统不同,unix 软件大多只能用x-windows 显示。
在安装texmacs 之前,你必需要有完整的latex 系统。推荐用i-installer 安装:
可参考蔡炎龙的文章:
然后使用fink 去安装maxima, texmacs, geomview:

19.1. 4.所有平台
你都可以选择从源码来安装,这时你需要下载maxima-x.y.z.tar.gz

19.1. 5.android
maximaonandroid是maxima运行在android的版本,在我的华为mate 6.5寸手机上安装了,很好用。

uesoft 发表于 2013-10-30 11:21:32

开源计算仿真软件广泛应用于仿真与控制领域、嵌入式领域

国外著名的自动化仪表与控制系统生产公司有:emerson (艾默生)、西门子公司、abb公司、罗斯蒙特公司、honeywell公司、e h(恩德斯 豪斯)公司、欧姆龙公司、松下公司等等。每个公司除了有自己的plc、dcs外,还有现场的仪表,温度变送器,压力变送器,差压变送器,雷达液位,质量流量计等各种类型的仪表。
国外的公司相对国内的来说,技术更先进、成熟,但价格也更贵。

国内的自动化仪表厂家就很多了,老一点的四大仪表基地,重庆川仪、上海仪表、西安仪表、天津仪表等,新兴的自动化仪表与过程控制系统生产家更不甚枚举,
西尼尔(南京)过程控制有限公司,珠海思特自动化工程公司,上海桂伦自动化设备有限公司、连云港德赛自动化设备销售有限公司、青岛海格自动化仪表有限公司等等。

国内dcs主要厂家有:上海新华,鲁能控制,国电智深,浙大中控,和利时,上海华文,上海乐华,浙江中自等。国外的有 西屋(艾默生)、foxboro、abb、西门子、霍尼韦尔、横河、山武-霍尼韦尔公司、fisher-rosemount公司等

现在国内外主流dcs控制系统厂家有哪些,其最新产品是什么?
abb ac800 fac800m
industrial it system 800xa
emerson delta
vovation
honeywell pks
invensys i / a series
a2
eurothem network-6000
siemens
pcs7
apacs
t-xp
yokogawa cs1000
cs3000
rockwell processlogix
和利时
holliasmacs
浙大中控
webfield ecs
webfield jx
webfield gcs

现在比较成熟的家庭智能控制系统厂家有哪些?

uesoft 发表于 2013-11-16 13:15:59

code::blocks(完全取代vc6的开源跨平台编程利器) http://www.opengpu.org/bbs/forum.php?mod=viewthread&tid=7601
avr
arm
stl
sgi stl   stlport
boost
ace
blitz

uesoft 发表于 2014-7-4 10:22:10

20. 开源cfd软件或开源分子动力学软件 (讨论qq群号是 305845141)
      计算流体力学也称计算流体动力学(英语:computational fluid dynamics,簡稱cfd)使用数值方法和计算机软件求解流体力学方程组,预测流动状态。目前有多种商业cfd软件被使用,如fluent、cfd-ace (cfdrc)、phoenics、cfx、star-cd等。也有一些开源cfd软件被使用,如openfoam、palabos、openlb、calculix、openfvm、gmsh、opencfd、cfd-su2等。
      uesoft设想利用现有开源cfd软件为基础,开发可以运行在手机或pc上的开源cfd软件。这开源cfd软件需要求解可压缩粘性流体力学方程组,具有流固耦合、多相流、非牛顿流体 、湍流、超声速、化学反应、超流体、电磁场、多物理场等复杂状态的计算能力,需要和分子动力学软件、量子力学软件、相对论软件融合,以计算复杂的物质形态。这开源cfd软件需要足够普及,又要足够快速。这软件可以用于工程计算,也可以用于天文学、宇宙学、分子动力学、粒子物理学、真空超流体、凝聚态物理、电磁场、固体力学、多物理场计算。
      该开源cfd软件以openfoam为基础,增加用户界面gui和应用编程接口api。gui、api与fluent高度兼容以降低学习成本。由于api兼容fluent,可直接运行udf代码。欢迎对cfd和理论物理学感兴趣的数学家物理学家力学家计算机软件科学家参与讨论。欢迎熟练开发openfoam的cfd专业开发人员或计算机专业开发人员加入群讨论。开源cfd软件 (讨论qq群号是 305845141)

uesoft 发表于 2014-9-1 17:57:05

21. 开源机器视觉软件(或开源数字摄影测量软件)
机器视觉,或计算机视觉,与数字摄影测量系统,利用传感器获得的光谱、电磁波谱、或其他波动信息,测量物体几何或特性,重建三维图形,识别物体。
uesoft设想利用现有开源视觉软件库,开发可以运行在手机或嵌入式系统的开源机器视觉软件,用于物联网或各种测量。
有一些开源的计算机视觉库或应用如opencv,openmvg,openrtm,openvgr,bigsfm,bundler,cmvs,pmvs,openvss
开源摄影测量:ossim
开源机器人:ros、gazebo、poppy humanoid、icub、jasmine、rop、openrov、open hand、yarp、orocos、dfrobot、linuxcnc。
开源无人车:ardurover
开源无人机:ardupilotmega(apm)、arducopter、pixhawk、paparazzi(ppz) 、openpilot、taulabs、cc3d、mwc

21.1 开源sfm

21.1.1 openmvg
openmvg 是一款c/c 写成的开源的sfm(struct-from-motion)软件、它在某些方面要优于bundler、可以利用n幅任意拍摄的照片、重建场景的三维模型。sfm 指的是在计算机视觉中的从运动到结构,以及在摄影测量中的空中三角测量与光束法平差。

21.1.2 bundlerhttp://www.cs.cornell.edu/~snavely/bundler/
在sift匹配处理之后根据匹配关系生成track匹配链,有矛盾的链(同一张图片中有两个特征点)则其中所有包含的特征去除;
bundler需要求解的参数太多,而两相机模型相对容易计算,然后在这个初始的模型上增加相机,(种子重构、生长策略)
主要步骤为:
1.选择稳健的初始匹配点对
   存在很多启发式算法,这里采用的是图片对之间至少需要100个匹配特征,并且num(homography)/ num(fmarix)的值要尽量小;
   当匹配间的视差太大并且场景不是平面的话(平面遮挡方面没有什么影响)不太适合
2.初始化两相机sfm模型
   内参未知(多义性)假设只存在焦距一个未知变量
   求解本质矩阵(脱离内参信息)5点算法求解
3.存在与模型连通的图片(track信息),执行下面操作
选出其中对当前重构出来点可见最多的图片计算这个相机的参数(直接线性变换dlt)
三角化求解出新的三维点(这张图片引入的还未重构的track)
使用集束调整(bundler ajustment)优化模型(相机参数与三维点坐标)
调整相机参数和点坐标,最小化g(重投影误差累积值)
最小化的理想目标自然是完全契合,这是一个overconstrained最优化问题,自然归结于最小二乘法求解超定线性系统
    猜测初始 然后不停优化迭代直至收敛 (高斯-牛顿算法 改进版 lm算法 林德伯格-马奎特算法)
sfm增长速度是图片的四次方(实际使用中似乎没有这么夸张呀?)
城市级建模
划分子集单独重构,然后融合?(使用同一照片作为主平面,如果主平面c取远点 r取坐标平面应该是可行的,迭代求解出的参数差异并不影响世界坐标系的一致性 但bundler标定出来的p似乎没有标准主平面的样子)

21.1.3 bigsfm   http://www.cs.cornell.edu/projects/bigsfm/
bigsfm: reconstructing the world from internet photos
our group is working on building a 3d model of the world from online photo collections, and our research spans several areas, from image features, to large-scale image matching, to structure-from-motion optimization, to applications such as location recognition. this page summarizes our work, has links to code and datasets we have made available, and has a description of each project.

bigsfm:来自互联网的照片改造世界
我们的团队正在建立一个世界的3d模型,从网上照片集,我们的研究跨越几个领域,从图像特征,到大规模的图像匹配,从运动优化的结构,如位置识别应用。此页总结了我们的工作,链接到我们已经提供的代码和数据集,并有每一个项目的描述。

21.1.4 照片重建的主要步骤:http://www.zhihu.com/question/29082659
http://www.zhihu.com/question/29885222?sort=created
1.找出各张图片中的特征点,进行两两匹配;
要求能够精确识别物体的局部特征,并且进行快速准确的匹配。现常用的算法是sift (scale invariant feature transform)方法。sift由david lowe在1999年提出,在2004年加以完善。sift在数字图像的特征描述方面当之无愧可称之为最红最火的一种,许多人对sift进行了改进,诞生了sift的一系列变种。surf算法就是sift改进之一,降低了sift计算复杂度。sift已经申请了专利。
http://www.cnblogs.com/tornadome ... /08/17/2644903.html
sift特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关,对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。使用sift特征描述对于部分物体遮蔽的侦测率也相当高,甚至只需要3个以上的sift物体特征就足以计算出位置与方位。在现今的电脑硬件速度下和小型的特征数据库条件下,辨识速度可接近即时运算。sift特征的信息量大,适合在海量数据库中快速准确匹配。
2.根据匹配结果,利用射影定理计算得到相机位置等场景信息;
此步又称运动恢复结构(structure from motion),或稀疏重建(sparse reconstruction)。结果的衡量标准是准确性,现常用的算法是基于lecenberg-marquardt算法的bundler。
3.运用场景信息与原始照片,得到照片中物体的3d点云;
此步又称密集重建(dense reconstruction)。运用多视立体重建(multi-view stereo reconstruction),得到3d点云。点云质量受到处理图像精度的执行效率、重建精度和完整性影响,目前最好的算法是pmvs。
4.根据3d点云构建3d模型;
将点连成面,才可在一般三维建模软件中使用。现常用的是泊松表面重建算法(possion surface reconstruction)。

21.1.5 多视角重建 multi-view reconstruction
多视角重建是一整套成像技术:它指的是从可能结合局部运动信号的二维图像序列中估计出相应三维结构的过程。它是计算机视觉和视觉感知的研究领域。从生物视觉角度看,多视角重建指的是人类(其他生物)可以对一个移动的物体或场景所投影的二维(视网膜)图像重建出相对应的三维结构。
在现实世界中我们周围的物体都是三维的,但我们通过眼睛观察到的是物体的二维图像,需要再经过人的视觉系统来恢复所观测物体的三维信息。多视角重建就是要使计算机具有人类视觉系统的功能,能够通过拍摄到的二维图像信息,重建出物体的三维结构,从而使机器具备认知世界的能力。
从二维图像获取三维信息:人类通过在所处环境中活动来感知大量的三维结构信息。当观察者移动或物体围绕观察者移动时,信息的获取是随着图像处理来进行的。从运动中发现结构和从立体视觉发现结构均呈现出一个相同的问题,需要发现图像和3d对象重建之间的联系。为了寻找图像之间的联系,需要从一张接一张的图像中跟踪例如对应角点(多个方向的梯度边缘)等一些图像特征。
凯发推荐的解决方案
1.fit3d(从2d到3d)--matlab toolbox by isaac esteban
2.多视角重建工具箱 for matlab
3.matlab的多视图几何功能
4.结构与运动的工具包
5.bundler - 无序的照片集的多视角重建
6.libmv-关于运动库的c 结构
7.openmvg-开放的多视图几何库 多视角重建演示
8.micmac-一个多视角重建的开放源代码发布
9.python photogrammetry gui工具箱-一个开源的多视角重建gui(简单多视角和密集的点云估计发射器)
10.运动的非刚性结构的matlab代码
11.sba
12.ceres求解一般非线性最小二乘法
相关软件
1.smart3dcapture--一个使用acute3d技术的完整的照相测量解决方法
2.visualsfm:可视的多视角重建系统 visualsfm程序有方便的gui工具,可以帮助您使用运动恢复结构(sfm),利用多核并行特征检测,特征匹配的束调整,实现高效视觉三维场景重建。注:visualsfm是免费供个人使用,非营利或学术。visualsfm系统的开发者 changchang wu 原来是北卡大学的博士,华盛顿大学计算机系的博士后,后来去了google工作。主要研究3d方面的项目。这个重建系统集合了很多高效的并行处理程序例如: sift on gpu(siftgpu), multicore bundle adjustment, and towards linear­time incremental structure from motion. 这些程序都是作者changchang wu之前的小项目。其中gui sfm 系统和 siftgpu 已经成为了北卡大学的课程作业(国内课程有没有这么高端的作业?)。这个visualsfm系统运行效率非常高。
3.sfm工具包:一个基于开源软件的完整的照相测量解决方法。
4.mountainsmap sem软件用来扫描电子显微镜。3d是通过倾斜样品 照相测量得到的。
5.metaio toolbox:多视角重建是为了在移动设备上增强现实感。
voodoo摄像机跟踪器:一个虚拟与真实场景的集成工具。

21.1.5 slam and monoslam   http://blog.csdn.net/wliked/article/details/6227454
monoslam的概念来自于slam(simultaneous localization and mapping),是robotics中的一种定位算法。 orbslam,orbslam2

让机器人知道自己在那里(localization),可以用gps,但是误差有点大(5米左右?),而且还必须在室外。怎么才能让机器人在室内,或者更精确地知道自己的位置呢?slam就是一种方法。

基本的想法是,如果我是一个机器人,我知道两个定点1:(x1,y1)和定点2:(x2,y2),我现在可以看见定点1,测量一下,离它5米,把头向右转过30度角后,可以看见离定点2,测量一下,离它10米。然后解一个三角形,我就知道自己在那里了(localization),位置准确度和测量精度有关(转角,距离),通常可以控制在很小。

但是问题又来了,每次我走几步,就得回头看看定点1和定点2,才知道自己在哪里。这一步三回头的走法,真是一件非常二的事情。于是聪明勤劳勇敢的博士生们想出来一个方法,在第一步的时候,一旦我知道自己在哪里,我就添加几个定点:定点3,定点4,定点5……。因为知道自己的坐标,我可以测量出这些新定点离我多远,加上自己的坐标,就知道这些定点在哪里(mapping)。以后的定位(localization)就可以用这些新定点。多了这些定点后,以后再走路,哇身边都是定点,腰不酸腿不疼,知道自己在哪里了。

所以slam就是指,同时(simultaneous)知道自己的位置(localization)和(and…) 新的定点的位置((feature) mapping)。因为不管是测量距离,还是计算自己的转角,或记录行走的距离(利用odometer)都会有noise,而直接计算slam,noise会叠加。所以一般slam要有一个kalman filter的过程。icra 10的一篇文章就讨论了为什么需要filter. (icra 10: why filter?) .如果对slam还有兴趣,可以看看这个oxford的summer school。

而monoslam,是andrew davison提出来的利用一个摄像头来做slam的方法,也叫real-time structure from motion。在这里,定点变成了visual feature,测量定点的位置转变为match feature, then triangulate. 一个2004年的demo 。当摄像头在空间里忘乎所以地移动时,monoslam都可以利用feature matching,知道摄像头的位置,和那些feature的位置。demo中的右图的黄线,是camera的trajectory。而椭圆表示对于新加的feature的不确定性。paper

可以看到在demo中,虽然知道摄像头的位置,但是mapping的feature很少很稀疏,这样不好不强大。经过了6年,随着cpu、gpu越来越可怕,人民生活越来越幸福,andrew davison这个组终于在cvpr 10搞出了dense live monoslam:利用gpu计算ptam,然后mesh成surfeace。请看demo。有点长,请耐心,最后的小车的激情一跃很精彩。project page

slam和monoslam在网上都有很多现成的code。像mrpt (跨平台),andrew davison的scenelib (linux)

21.1.6 几个slam应用
三维感知部分并不是什么新东西,计算机视觉或机器人学中的slam(simultaneous localization and mapping,即时定位与地图构建)就是做这个的,已经有30年的历史了。设备通过各种传感器(激光雷达,光学摄像头,深度摄像头,惯性传感器)的融合将得出设备自己在三位空间中的精确位置,同时又能将周围的三位空间实时重建。

最近slam技术尤其火爆,去年(2014)到今年(2015)两年时间内巨头们和风投收购和布局了超级多做空间定位技术的公司。因为目前最牛逼的3大科技技术趋势:无人车,虚拟现实,无人机,他们都离不开空间定位。slam是完成这些伟大项目基础中的基础。我也研究slam技术,所以接触的比较多,为了方便大家了解这个领域,这里简单提几个slam界最近的大事件和人物:
1、(无人车)stanford的机器人教授sebastian thrun是现代slam技术的开创者,自从赢了darpa grand challenge的无人车大赛后,去了google造无人车了。slam学术圈的大部分研究派系都是sebastian徒子徒孙。
2、(无人车)uber在今年拿下了卡耐基梅隆cmu的nrec(国家机器人工程研发中心),合作成立高等技术研发中心atc。这些原来做火星车的定位技术的研究人员都去uber atc做无人车了。
3、(虚拟现实)最近surreal vision被oculus rift收购,其中创始人richard newcombe是大名鼎鼎的dtam,kinectfusion(hololens的核心技术)的发明人。oculus rift还在去年收购了13th labs(在手机上做slam的公司)。
4、(虚拟现实)google project tango 今年发布世界上第一台到手就用的商业化slam功能的平板。apple五月收购metaio ar,metaio ar 的 slam 很早就用在了ar的app上了。intel 发布real sense,一个可以做slam的深度摄像头,在ces上demo了无人机自动避障和自动巡线功能。
5、(无人机)由原来做google x project wing 无人机的创始人mit机器人大牛nicholas roy 的学生adam bry创办的skydio,得到a16z的两千万估值的投资,挖来了georgia tech的slam大牛教授frank dellaert 做他们的首席科学家。(相关内容:http://www.cc.gatech.edu/~dellae ... frank_dellaert.html)
slam作为一种基础技术,其实全世界做slam或传感器融合做得好的大牛可能不会多于100人,并且大都互相认识。这么多大公司抢这么点人,竞争激烈程度可想而知,所以magic leap作为一个创业公司一定要融个大资,才能和大公司抢人才资源。
q5. magic leap的感知部分的技术是怎么样的?
这张照片是gary教授在magic leap stanford 招聘会中展示了magic leap在感知部分的技术架构和技术路线。可以看到以calibration为中心,展开成了4支不同的计算机视觉技术栈。

1、从图上看,整个magic leap感知部分的核心步骤是calibration(图像或传感器校准),因为像magic leap或hololens这类主动定位的设备,在设备上有各种用于定位的摄像头和传感器, 摄像头的参数和摄像头之间关系参数的校准是开始一切工作的第一步。这步如果摄像头和传感器参数都不准,后面的定位都是无稽之谈。从事过计算机视觉技术的都知道,传统的校验部分相当花时间,需要用摄像头拍摄chess board,一遍一遍的收集校验用的数据。但magic leap的gary,他们发明了一种新的calibration方法,直接用一个形状奇特的结构体做校正器,摄像头看一遍就完成了校正,极为迅速。这个部分现场不让拍照。
2、有了calibration部分后,开始最重要的三维感知与定位部分(左下角的技术栈),分为4步。
2.1 首先是planar surface tracking(平面表面跟踪)。大家可以在虚拟太阳系的demo中看到虚拟太阳在桌子上有反光,且这个反光会随着设备佩戴者的移动而改变位置,就像是太阳真的悬在空中发出光源,在桌子表面反射产生的。这就要求设备实时地知道桌子的表面在哪里,并且算出虚拟太阳与平面的关系,才能将太阳的反光的位置算出来,叠在设备佩戴者眼镜相应的位子上,并且深度信息也是正确的。难点在平面检测的实时性和给出平面位置的平滑性(否则反光会有跳变)从demo中可以看出magic leap在这步上完成得很好。

2.2 然后是sparse slam(稀疏slam);gary在info session上展示了他们实时的三维重构与定位算法。为了算法的实时性,他们先实现了高速的稀疏或半稀疏的三维定位算法。从效果上看,和目前开源的lsd算法差不了太多。

2.3 接着是sensors; vision and imu(视觉和惯性传感器融合)。
导弹一般是用纯惯性传感器做主动定位,但同样的方法不能用于民用级的低精度惯性传感器,二次积分后一定会漂移。而仅靠视觉做主动定位,视觉部分的处理速度不高,且容易被遮档,定位鲁棒性不高。将视觉和惯性传感器融合是最近几年非常流行的做法。
举例:
google tango在这方面就是做imu和深度摄像头的融合,做的很好;大疆的无人机phantom 3或inspire 1将光流单目相机和无人机内的惯性传感器融合,在无gps的情况下,就能达到非常惊人的稳定悬停;hololens可以说在slam方面是做得相当好,专门定制了一个芯片做slam,算法据说一脉相承了kinectfusion的核心,亲自测试感觉定位效果很赞(我可以面对白色无特征的墙壁站和跳,但回到场中心后定位还是很准确的,一点都不飘。)
2.4 最后是3d mapping and dense slam(3d地图重建)。下图展示了magic leap山景城办公室的3d地图重建:仅仅是带着设备走了一圈,就还原了整个办公室的3d地图,并且有很精致的贴图。书架上的书都能重建的不变形。

因为ar的交互是全新的领域,为了让人能够顺利地和虚拟世界交互,基于机器视觉的识别和跟踪算法成了重中之重。全新人机交互体验部分需要大量的技术储备做支持。
接下来的三个分支,gary没有细讲,但是可以看出他们的布局。我就随便加点注解,帮助大家理解。
3.1 crowdsourcing众包。用于收集数据,用于之后的机器学习工作,要构建一个合理的反馈学习机制,动态的增量式的收集数据。
3.2 machine learning & deep learning机器学习与深度学习。需要搭建机器学习算法架构,用于之后的识别算法的生产。
3.3 scenic object recognition场景物体识别。识别场景中的物体,分辨物体的种类和特征,用于做出更好的交互。比如你看到一个小狗的时候,会识别出来,然后系统可以把狗狗p成个狗型怪兽,你就可以直接打怪了。
3.4 behavior recognition行为识别 。识别场景中的人或物的行为,比如跑还是跳,走还是坐,可能用于更加动态的游戏交互。顺便提一下,国内有家stanford校友办的叫格林深瞳的公司也在做这个方面的研究。

跟踪方面
4.1 gesture recognition手势识别。用于交互,其实每个ar/vr公司都在做这方面的技术储备。
4.2 object tracking物体追踪。这个技术非常重要,比如magic leap的手捧大象的demo,至少你要知道你的手的三维位置信息,实时tracking,才能把大象放到正确的位子。
4.3 3d scanning三维扫描。能够将现实物体,虚拟化。比如你拿起一个艺术品,通过三维扫描,远处的用户就能够在虚拟世界分享把玩同样的物体。
4.4 human tracking人体追踪。比如:可以将现实中的每个人物,头上可以加个血条,能力点之类。
5.1 eye tracking眼动跟踪。gary解释说,虽然magic leap的呈像不需要眼动跟踪,但因为要计算4维光场,magic leap的渲染计算量巨大。如果做了眼动跟踪后,就可以减少3d引擎的物体渲染和场景渲染的压力,是一个优化的绝佳策略。
5.2 emotion recognition情感识别。如果magic leap要做一个her电影中描绘的人工智能操作系统,识别主人情感,可以做出贴心的情感陪护效果。
5.3 biometrics生物识别。比如要识别现实场景中的人,在每个人头上显示个名字啥的。人脸识别是其中一种,国内有家清华姚班师兄弟们开公司face 就是干这个干的最好的。
总结:简单来讲感知这个部分magic leap其实和很多其他的公司大同小异,虽然有了gary的加盟,野心非常的宽广,但这部分竞争非常激烈。
q6: 就算magic leap已经搞定了感知和显示,那么接下来的困难是什么?
1、计算设备与计算量
magic leap要计算4维光场,计算量惊人。不知道magic leap现在是怎么解决的。如果nvidia不给造牛逼的移动显卡怎么办?难道自己造专用电路?背着4块泰坦x上路可不是闹着玩的。
下图是,今年我参加siggraph 2015里,其中一个vr演示,每个人背着个大电脑包玩vr。10年后的人类看今天的人类追求vr会不会觉得很好笑,哈哈。

2、电池!电池!电池!所有电子设备的痛
3、一个操作系统
说实话,如果说“世界就是你的新桌面”是他们的愿景,现在的确没有什么操作系统可以支持magic leap愿景下的交互。他们必须自己发明轮子。
4、为虚拟物体交互体验增加物理感受
为了能有触感,现在交互手套,交互手柄都是 vr 界大热的话题。从目前的专利上看,并没有看出magic leap会有更高的见地。说不定某个kickstarter最后能够独领风骚,magic leap再把他收了。

21.2 开源机器人http://robot.ofweek.com/2016-06/art-8321205-8440-29105638.html
ofweek机器人网讯:本文介绍了一些最受用户欢迎的开源机器人技术,包括ros,gazebo,poppy humanoid,icub及jasmine等。

mrpt(mobile robot programming toolkit)移动机器人编程工具箱是移动机器人c 库(mobile robotics c libraries),为开发者提供可移植的并经充分测试的程序和开发库,这些库覆盖了机器人研究领域常见的数据结构和算法。该库以bsd协议开源发布。

gmop3d
gmop3d 是一款机械手臂(轴旋转运动)或工业机器人的运动仿真软件,它仅仅提供算法,不依赖任何第三方软件包,不依赖g代码、qt、boost, 是一个纯粹的c语言代码程序。
六轴机械手臂,第一版的算法仅仅支持三轴的机械手臂仿真算法。
模型,第一版仅支持立方体,支持立方体的位置移动, xyz任意方向旋转,和任意尺寸,仿真的精度也可以任意调整, 支持5个面的逐点坐标位置和机械手协同运动仿真。算法仅仅使用了三角函数和逼近理论提高精度,精度可以计算到1e-9m,最多可以计算到小数点后10位。仿真环境依赖openscad.因为这个软件生成的是一个openscad程序,然后利用openscad的自动加载和编译, automatic reload and compile功能实现运动仿真。
仿真的速度极其慢,因为openscad的 automatic reload and compile功能是一秒钟一次,所以仿真的画面是1秒钟一个,后期肯定可以调整的。   
openscad is a software for creating solid 3d cad objects.
it is free software and available for linux/unix, ms windows and mac os x.   
http://www.openscad.org/

openservo http://www.robotsky.com/e/doprint/?classid=31&id=475
从名字就可以看到,这是一个开源的伺服马达(rc servos )控制器。电路板可以直接替代伺服马达,例如futaba s3003,hitec hs-311等内置的模拟电路,现在通过i2c来控制伺服马达。
主要的特征包括:
    高性能的avr 8位处理器。
    廉价的 mosfet驱动实现紧凑的h-bridge。
    基于 i2c/twi接口的控制和反馈。
    控制伺服马达的速度和位置。
    反馈信息包括伺服马达的位置、速度、电压和功率。
    支持先进的基于曲线的运动控制。(需要其它软件和硬件,请看文章后面部分)
    伺服马达的配置信息保存在eeprom。
    免费的c开发工具。
    基于 i2c/twi接口的启动程序
    windows图形界面编程器。
    低价格。   
硬件
目前openservo的硬件版本为 2.1。这个版本是基于avr atmega8或avr atmega168 mcus,这两个mcus分别内置了8k和16k flash内存。mosfet是 international rectifier irf7309或其它类似的产品(电流类似或更大)。
电路图(点击放大)
作者提供两种pcb电路设计,请到这里下载:http://www.headfuzz.co.uk/?q=openservopcb21
带金手指的pcb是作者提供的其中一种接口
软件:
软件部分包括如下几部分:
    开发工具:用于开发 openservo的软件。
    伺服马达启动程序:初始化openservo。
    伺服马达控制程序:用于控制openservo的程序。   

http://wiki.ros.org/robots/jaguar
aguar - all terrain unmanned ground vehicle
ros software maintainer: dr robot inc
dr robot is a manufacturer of mobile robots and robot systems. we provide robots and manipulators for a wide range of applications.   

sparkihttp://www.robot-china.com/news/201604/19/32559.html
sparki 是一家在任何意义上都完全开源的机器人学平台。它上面的电路图、3d 建模文件和其底层的源代码都是开源的。sparki 被设计用来帮助从小学生到成年人的学习者们制造出价格合理的初级机器人。它提供距离传感器、加速度计、红外通讯、罗盘、光传感器、循线器(line-follower)等。sparki 机器人靠轮子行走,不过它还有一个用脚行走的近亲 hexy the hexapod,该项目也是一个开源平台项目。

turtlebot 是基于ros的另一家机器人平台,它既提供来自几家制造商的元件套装,也提供完全开源的说明书。这可以帮助你用上网笔记本电脑、kinect 体感外设和 kobuki 移动平台来建造自己的机器人,或者在 irobot create 开发平台上建造机器人。

plen是早在2007年就已经推出的,当时号称是“高性能先进可编程仿人机器人。”如今8年过去了,刚刚问世的plen2体积更小,而价格不到其上一版3000美元售价的一半。
plen2可以步行向前和向后,拿起小物件、轮滑、舞蹈、踢或驾着自己的“车”到处跑。厂家在宣传中标榜其为“镜子机器人”,plen2可模仿人类的动作,可用于每个人,从儿童到研究者;或用于任何目的:娱乐、教育甚至医疗。完全组装的plen2大约有20厘米高,体重600克,并有18个关节,具备高度的可操作性高度。
不过plen2真正的改进,还在于其先进的开源软件和可定制的3d打印硬件。该机器人套件本身包含arduino和ros兼容控制电路板、伺服电机及各种配件,任何年龄的创客无论其技术或知识背景如何,可以开箱就组装plen2。
厂商还将免费提供主要零部件的3d数据,这意味着如果您有一台3d打印机就可以轻松地为其定制自己喜欢的外形。而开源的arduino兼容软件则意味着,即使您是一位编程新手也可以很容易修改其程序和技术规格以满足自己的特殊需求。而技术专家和研究人员也可以用ros中间件编程,开发专业的机器人技术。

  ros
  ros(robot operating system)是一组开源软件库和工具,能够帮助软件开发人员创建机器人应用程序。ros的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人stair而建立的交换庭(switchyard)项目。到2008年,主要由willow garage继续该项目的研发。ros发布在开源bsd许可,带有强大的开发工具、最新算法、硬件抽象、设备驱动程序、库、观察仪、消息传递、软件包管理甚至更多功能。发布于 2014-10-14 作者:morphinum 本来wg(willow garage)就没几个人... 一部分人去了google, 一部分建了个公司做open source (http://open source robotics foundation)管理ros的一部分, 一部分人留下来做了clearpath并管理pr2, 没体现出什么趋势, 还是一贯的硬件创业风险大不赚钱. pr2这种一个300多k的大家伙只能卖给不差钱的学校和不差钱的公司. 不差钱的学校和公司就那么几个. 而且机器人又不是消耗品, 所以卖几年就卖不动了, 倒闭是迟早的事.
链接:http://www.zhihu.com/question/25956239/answer/31842820

  gazebo
  gazebo是一个机器人模拟器,用来创建机器人的嵌入式应用程序,使快速测试算法、设计机器人并在现实场景中执行回归测试变成可能。gazebo也可以准确有效地模拟在复杂的室内外环境中的多机器人。gazebo不但可以对标准的机器人传感器(例如惯性度量单元imu、gps接收器和单筒相机monocamera)进行建模,而且还可以对机器人环境中使用的真实固形体物理部件进行建模。同时,gazebo还具有一个强大的物理引擎,为用户提供高质量的图形以及多种编程和图形界面。

  poppy humanoid
  poppy humanoid是一个基于3d打印技术的开源仿生平台,由开源硬件模型、一个使用python语言和restapi的开源软件库、模拟器以及可视化编程语言组成。

  icub
  icub是一个开源的认知仿生机器人平台,由意大利科学家们制作发布。它配有53个发动机用来支持头部、胳膊和手、腰和腿部的运动。另外,它能够看和听,通过使用加速器和陀螺仪还具备人类外形和行为意识。这是意大利理工学院的成果:一种能够在不断的失败尝试中汲取经验并最终学会履行复杂任务的机器人技术。

jasmine
  jasmine是一个用于群研究的微型机器人平台。在gpl许可下,jasmine所有的硬件和软件都是开放的,包括部分列表、电路板和底盘设计以及软件。而且它不依赖于浏览器、dom或任何java script框架,因此它适用于网站、node.js项目,或任何javascript可以运行的地方。

  rop
  rop(robotic open platform)希望能在open hardware许可下,为机器人社区提供可用的机器人硬件设计,利用cad图纸、电计划及所需的文档来建造机器人。

  openrov
  openrov(open-source remotely operated vehicle)是由eric stackpole和david lang发起的一种低成本远程机器人潜艇项目,用于水下勘探和教育。而且它还是遥控的微型潜艇,约2.5公斤重、15cmx20cmx30cm大。openrov也是一个开源硬件项目,为用户提供水下部分和如何组装的说明列表。

  open hand
  yale open hand project是一个主动促进机械臂设计使用的项目,通过快速成型技术来设计和建造,以鼓励更多的变化和创新机械硬件。该项目的目的是提供一系列开源设计,并通过社区的贡献来完善设计,并提供大量基于该平台的修改和变种。

  yarp
  yarp(yet another robot platform)是一个使用c 编写的开源软件包,用于连接机器人的传感器、处理器和制动器。

  the orocos project
  orocos project(open robot control software)网站是一个便携式c 语言库,用于机器和机器人的控制改进。

  硬件开源项目
有几家开源无人飞行器利用了像 openpilot 或 ardupilot 系统这样的项目。例如,ardupilot copter 无人机可以被组装成直升机、四旋翼飞行器或者其他配置,既可以自己动手 diy,也可以从若干制造商那里购买元件套装和部件组装它。

  软件开源项目
  机器人不只是一套金属骨架。它需要某种智能才能听从直接命令或自己做出某些初步决定,以便提供服务。这里是几个有趣的机器人软件方面的开源项目。
  对初学者入门而言,lejos 或许是一个好的机器人软件项目。它实质上是乐高 mindstorms 机器人固件的一种替代物。你可以依靠它来用 java 编程语言为乐高机器人编程。
  rock,即「机器人建造工具包」,是一种基于 orocos rtt (real time toolkit, 实时工具包)的软件框架。它被设计成可扩展的,并包括一些已有应用程序的驱动程序。
  ros,即「机器人操作系统」,是一个用来为机器人写软件的框架,它包括多种用来简化编程过程的工具和库。它被设计用来为协作研发服务,拥有模块化组件和全球性社区。在中国,已经有 ros 中文社区的存在。http://blog.csdn.net/hcx25909/article/details/8811313

ros有很多强大功能,如rviz、tf、gazebo。
rviz是ros中一款强大的3d可视化工具,它被频繁使用。必须要弄明白它,详细的教程可以参考wiki: http://www.ros.org/wiki/rviz
   我们可以在rviz里面创建自己的机器人,并且让机器人动起来。还可以创建地图,显示3d点云等等。这些显示是通过消息的订阅来完成的,机器人通过ros发布数据,rviz订阅消息接收数据,然后显示,这些数据有一定的格式,可以参考下面的链接: http://www.ros.org/wiki/rviz/displaytypes
rviz使用了urdf,urdf统一机器人描述格式是表示机器人模型的一种xml格式,也包括一个用于urdf的c 解析器,参考wiki:         http://www.ros.org/wiki/urdf
tf是ros中的坐标变换系统,在机器人的建模仿真中经常用到。ros中主要有两种坐标系:(1)固定坐标系:用于表示世界的参考坐标系;(2)目标坐标系:相对于摄像机视角的参考坐标系。教程见:http://www.ros.org/wiki/tf
gazebo是ros中的物理仿真环境,gazebo本身就是一款机器人的仿真软件,基于ode的物理引擎,可以模拟机器人以及环境中的很多物理特性,可以稍了解这个软件,并不必定用它开发。教程见:http://www.ros.org/wiki/simulator_gazebo/tutorials

pr2 机器人是ros的主要维护者(willow garage)针对ros量身定做的机器人,有两个运行ubuntu和ros的电脑,和两个机器臂以及很多传感器,功能强大,售价昂贵,国内很少见到,基本都是在国外的研究所里。这款机器人的ros包比较多,从仿真到导航,所以代码具有比较高的参考价值,当然新手还是先看看其他机器人的代码再来挑战pr2吧,代码比较庞杂。      wiki:http://www.ros.org/wiki/robots/pr2
turtlebot 是另一家机器人平台,它既提供来自几家制造商的元件套装,也提供完全开源的说明书。这可以帮助你用上网笔记本电脑、kinect 体感外设和 kobuki 移动平台来建造自己的机器人,或者在 irobot create 开发平台上建造机器人。turtlebot机器人应该算是应用ros小型移动机器人的典型代表了,资料、文档和代码比较多,主要在建立模型和导航定位方面,代码比较容易理解,可以作为新手参考的最佳机器人了,上面rviz中显示的那个机器人就是它了。       wiki:http://www.ros.org/wiki/robots/turtlebot
husky、erratic 这两款机器人和turtlebot机器人类似也采用了ros,都是小型的轮式移动机器人,同样可以作为新手学习的参考:
          http://www.ros.org/wiki/robots/husky
          http://www.ros.org/wiki/robots/erratic
  在你开始随意装配硬件之前,你需要定一个计划。在现实世界中,机器人的运行受到重力、地形、天气等限制。在纸上设计了看起来不错的机器人,并不意味着在现实中可行。所以,为什么不先对你的机器人进行功能性模拟呢?
  机器人模拟器
  gazebo 是著名的非盈利开源组织 apache 许可采用的完整模拟凯发推荐的解决方案,有着先进的 3d 图形、虚拟感应器功能,还有一个应用广泛的命令行工具集合。此外,gazebo 还能在云中运行模拟,支持多种插件和数种建立模型常用的机器人平台。
   
  morse(模块化开源机器人模拟引擎 the modular open robots simulation engine)是 bsd 协议开源项目,是一款通用的多机器人仿真平台,主要特点是能控制实际仿真的自由度,可以自由设计符合自己需求的组件模型。它提供了大量可配置的传感器和执行器模块,高度的可扩展性,提供人与机器人的交互仿真。morse 使用 python 编程,也可使用 blender 游戏引擎进行渲染。morse 专注于学术型机器人模拟,目前有5所学校和科研机构使用。
  
  v-rep 是 gpl 协议许可的虚拟机器人实验平台,在 windows 系统、mac 、linux 系统上都能运行。v-rep 支持多种编程方式(嵌入式脚本、插件、附加组件、ros节点、远程客户端应用编程接口、或自定义的凯发推荐的解决方案)和语言(c/c 、python、java、lua、matlab、octave和urbi),既能模拟先进的物理情境,也能模拟从近距离传感器和视觉传感器上获得的数据。

rtss http://rtss.sourceforge.net/
scilab/scicos机器人工具箱(rtss)已在跨系研究中心“e. piaggio”由学生matteo morelli开发完成,它是意大利比萨大学工程学院本科机器人课程的一个项目。
rtss灵感来自peter i. corke教授编写的matlab机器人工具箱。
rtss是自由软件,发布它希望它有用,但没有任何担保。
介绍和主要特点
rtss提供了许多功能,用于机器人领域探索运动学、动力学和轨迹生成等方面。它是用于建模和仿真机器人,以及用于分析从真正的机器人实验中获得的结果。
scilab的宏库
rtss是基于串联操纵运动学和动力学的一个非常通用的表示方法。这些参数被封装在scilab对象和模型,这些模型由众所周知的机器人如puma560和stanford arm提供。
机器人调色板
rtss还包括用于构建机器人的运动学和动力学模型的scicos块库。
演示
rtss是几个示范脚本,显示工具箱可以有效地用于研究的机器人。演示给用户洞察rtss用于
表示坐标系的刚体运动
计算笛卡尔和关节空间轨迹
求解正、逆运动学问题
创建机器人运动的图形动画
学习微分运动和机械手雅可比矩阵
求解正、逆动力学问题
构建scicos机器人的运动学、动力学模型

21.3 开源无人机
21.3.1 paparazzi(ppz)   http://www.leiphone.com/news/201406/paparazzi-open.html
paparazzi(ppz) 是一个软硬件全开源的无人机飞控系统项目,它始于2003年,旨在通过来自社区的意见和鼓励建立一个非常强大和灵活的自动驾驶系统。
它是一整套完整成熟的凯发推荐的解决方案,内容不仅覆盖了飞行器上的软硬件,包括传感器、电压调节器、gps 接收机、自动驾驶软件及算法;同时也包括地面站相关软硬件,包括各种调制解调器、天线等设备;同时,它还有一个不断进化的用户友好的地面控制站软件。
ppz 装备的无人机的体系结构如上图所示,可以理解为在普通飞行器(普通航模)和航模标配的遥控单元上,加装自动飞控板、相关传感器、无线modem,同时配置地面控制站(pc、调制解调器、天线),让飞行器最后实现自动驾驶飞行或者接受地面站的指令自主调整姿态飞行。
ppz 系统的关键特性是使用红外线感应器和飞行姿态惯性测量传感器,通过计算来提供强大而准确的姿态估计,让飞行器不需要地面手动控制校准,即能自动调整飞行状态。控制者只需要在地面站上给飞行器设定任务,剩下的则交给飞行器则自己去完成。所有的飞控、导航、姿态调整、任务执行等工作,都是由飞控板全自动完成。地面人员也可以随时在自动控制和手动控制两种状态间自由切换。
灵活的 ppz
通过不同的设置,ppz 既可以用于驱动固定翼飞机,也可以用于旋翼机。下图以一台固定翼飞机为例,说明装配 ppz 飞控仪的飞机的机舱布局图,当然不同的情况可以有调整,配置也丰简由人。
 autopilot control board 自动控制板
 battery 电池
 datalink radio-modem & antenna 数据传输调制解调器和天线
 gps receiver gps 接收机
 ir sensor board (if no imu) 红外传感板(如果没有 imu)
 motor & controller 马达和控制器
 rc receiver & antenna 遥控接收器和天线
 servos 伺服系统
 payload (example: camera & video transmitter) 负载(诸如摄像机、视频传输)
ppz 的灵活性体现在它可以根据用途特点和侧重点(飞行速度、飞行距离、滞空时间、负载能力、价格),选择不同的飞行器,配置不同的飞控板、传感器、通讯模块和外设。
通过多年的发展和进化,ppz 的飞控板共衍生出了十几款型号。这些飞控板在不同的年代被设计出来,不断完善进化,并出于不同的目的增减板载接口和模块从而派生出不同的型号。比如2013年夏季为发布的 lisa/s 型飞控板,只有2.8克的重量, 成为全球最轻的通用飞控板。与之相关的,ppz 有一个很大的硬件兼容列表,涵盖不同厂家的各种模块,诸如传感器(红外、陀螺仪、gps、惯性测量、空速)、调制解调器、遥控器、模拟/数字视频系统、天线等。
类似装配台式电脑,用户可以完全根据自己的需求选择相关配置,建成一套地空无人机系统,而配置则可以异常灵活。以通讯模块为例:如果你只是在视距范围内玩玩,可以省略 gps,配置短距离的2.4g 调制解调器,纯手动控制;如果想实现远距离的完全自主驾驶,则可以配置 gps加上远距离无线调制解调器实现飞行数据回传和控制;又如果在电信运营商信号覆盖的区域内玩,则可以用3g 通讯模块传输数据给地面站。
除了使用硬件列表上的设备外,ppz 的大部分型号飞控板还有 gpio 接口,因此可以通过编程来控制外接设备。最常见的例子,就是控制外挂相机进行航拍。
所有的配置数据,都在设计和装配调试无人机的时候,通过一个管理中心系统(paparazzi center)进行配置,并以 xml 文件的形式保存。
强大的 ppz
图为 ppz 地面控制站(gcs)软件界面,可以看到卫星地图、飞机的飞行计划以及实际飞行轨迹、飞机的实时姿态数据以及各种控制按钮。
ppz 是一个开源的项目,它的强大来自于全球各地的无人机爱好者和一些大学研究机构的贡献。 在我刚开始搜索 ppz 资料时候,偶尔看到被提及“卡尔曼滤波”以及“四元数算法”等。呃,那些名字真的看不懂是啥玩意儿,但是我知道它们肯定都很厉害而且已经在 ppz 上被实现。不过我还是做了相关搜索,这些都是用于自动驾驶以及飞行姿态调整的算法。ppz 为了适用于飞行器的各种姿态调整,做了很高标准的实现。而其中有些功能,在某些商业公司卖的飞控上都没有实现(可能觉得飞机不会在倒着飞的时候突然切换控制权)。
ppz 不同于普通的纯粹以代码为中心的开源软件项目,它利用 github 托管代码和硬件原理图、cad设计稿等设计资料。成功将 ppz 跑起来需要主板与各种外围传感器、舵机马达的适配、矫正、调试,以及为航空载机做恰当的参数设定,这需要一定的经验。ppz 把它的主网站构建成为一个 wiki,使得任何人都可以注册帐号后上去编辑和完善条目,补充和分享自己的经验。这样一来,ppz 就汇集了全球各地精英爱好者的智慧,以及各种一手实验数据和经验。此外开源的优点,让 ppz 可以利用开源社区的各种高质量软件(例如 gpsd),避免重复的劳动从而专注于自动导航相关的研究与实现。开放性,促使 ppz 发展的非常强大。
ppz 的业内地位和影响
ppz 在业界有较高的知名度并曾多次摘取多项荣誉。目前 ppz 凯发推荐官网最新的新闻消息显示,在不久前于9月结束的国际微型飞行器会议和飞行比赛(imav 2013)中,ppz 驱动的飞机,获得户外组第一名,室内组操作第一名,室内自主控制第三名的成绩。其中,用到了最新的只有2.8克重量的 lisa/s 飞控板。可见 ppz 在业内应用的广泛程度及其实力。
毫无疑问,现在在做无人机项目的公司,几乎都会学习和了解过 ppz 项目。之前雷锋网报道过的《全球最小的无人机是把双刃剑》 http://www.leiphone.com/d-promise-n-peril-of-drone.html 中的最小无人机使用的就是 lisa/s 飞控板。
ppz 将它的设计理念和算法,不仅以代码形式保存在 github 的代码库中,而且也以可阅读的知识文章的形式分享在 wiki 中。所以,如果一个企业要做一个无人机相关的研究开发,ppz 应该会给予巨大的帮助和启发。估计一般的公司几乎不可能完全独立于 ppz 之外做出一套能够与 ppz 比肩的系统。初创公司如果按照 ppz 的全开源软硬件设计和兼容硬件列表,找一个载机(或者自己设计一款)并作恰当的适配,则可以快速推出自己的产品——往往是初创企业推出产品的捷径。但是需要注意的是——由于 ppz 是开源的,竞争对手也能推出类似的同质化的产品, 所以如何在 ppz 光环之外,作出自己的特色,往往是这些企业最需要考虑的。类似以前 mtk 方案从业者在手机行业的情况,大家拿到手的方案是相同的,最后看谁做出来的产品有特色能卖的更好,就需要自己的神通了。
个人如何开始使用 ppz
ppz 非常适合模型爱好者和 geek 来玩。对于个人 diy 爱好者,ppz 官方网站的 wiki 知识库, 已经涵盖了基本所有需要的知识,所以凯发推荐官网应该是一个不错的开始点。国内的一些模型论坛,已经有不少玩家在交流和分享经验,可以上去找找。搜索优酷 ppz,也能出来不少视频,这些都是前辈玩家贡献的知识。
对于初级个人玩家来说,ubuntu linux 做为官方推荐的地面站操作系统以及编译环境,可能需要一段过程适应。另外,各种传感器、电路板是一个比较麻烦的问题。开源硬件不像开源软件那样成本仅为一台电脑和一些带宽,毕竟硬件需要掏钱真材实料去购买焊接制作电路板,门槛稍高。 如果玩家只想体验组装、调试和飞行的乐趣,凯发推荐官网上有列出销售控制板和配套硬件的厂商(国外厂商多);另外,淘宝上也有 lisa/m 的飞控板,也许可以一试。
ppz 项目是无人机方面一个开放的大知识库,无论个人、公司、研究机构都能从中获益良多。 相信 ppz 未来在无人机领域还会发挥更大的影响力,引领无人机领域更进一步。
  paparazzi(ppz)
  paparazzi(ppz)是一个软硬件全开源的项目,它始于2003年,开发目标是建立一个配置灵活且性能强大的开源飞控项目。ppz的一大特点是,该开源飞控方案中除了常见的飞控硬件、飞控软件和地面站软件之外,还包含地面站硬件,包括各种调制解调器、天线等设备。从功能上讲,ppz已经接近一个小型的无人机系统了。
  该开源项目的另一个特点是采用ubuntu操作系统,它将全部地面站软件和开发环境集成于该系统下,官方称之为live cd。一张cd加飞控硬件就可完成从开发到使用的全部工作。
  ppz目前最流行的硬件版本是paparazzi(ppz)lisa/m v2.0。该硬件拥有大量的扩展接口,并且使用可扩展的单独的imu传感器板。这也是早期开源飞控比较流行的做法,这样可以像diy台式计算机那样,随着传感器升级而不断升级imu硬件。

21.3.2 linux推出无人机开源软件平台项目dronecode
时间:2014-10-15 08:59 来源:网易科技 作者:佚名 http://www.china-cloud.com/yunzi ... 20141015_42992.html
据国外媒体报道,随着美国联邦航空管理局(faa)开始在电影布景、农场、石油钻塔等地释放无人机,这一新生行业终于开始蓬勃发展。一个新的linux基金会合作项目无人机代码计划(dronecode)将为无人机提供常见的开源软件基础。这一最新提案将使用克里斯·安德森( chris anderson)创立的无人机公司3d robotics提供的apm/ardupilot uav软件平台,这一概念最初就是由安德森提出的。dronecode的创始成员包括因特尔、高通、3d robotics和百度。
到目前为止,dronecode已经吸引了1200名开发商并被商用无人机制造商例如加拿大无人机初创企业精准鹰(precisionhawk)、walkera 和dronedeploy所采用。dronecode将为私有和商用无人机发展开辟新的道路。除了代码和其它资源,这一提案还保证将提供中性领导并为被批准的项目提供资金支持。这或将刺激无人机市场,预计它在10年内将价值1000亿美元。但正如安德森所认为的,dronecode将为业务爱好者带来更舒适简单的生活。“在无人机发展早期,即使是专家也一起放飞无人机。”
dronecode:开源无人机航空操作系统
英文网址:https://www.dronecode.org/英文网址
dronecode:开源无人机航空操作系统是由 linux foundation 联合 12 家技术公司宣布推出的免费开源项目,旨在为无人机航空操作系统、导航工具等系统及工具的开发者提供一个庞大的开源代码库,从而促进整个应用生态的健康发展。
随着飞控、传感、大数据等技术的成熟,无人机成为最近几年热门的技术领域,这种颠覆性的技术在农业、能源、建筑、快速响应、新闻、物流运输等行业都有着广阔的应用前途,不仅amazon、google等巨头热衷参与,成千上万的独立开发者也希望涉足。
但是开发者们没有必要从头开发无人机的一切,因为很多人已经在无人机系统方面做了不少工作,其中有很多无人机项目都是用 linux 代码编写的,但此前都属于零散分布的情况。这个新项目的推出,就是为了将许多分散的资源合并到一起,为无人机系统和工具开发者提供一个免费开源的公共平台,以及共同的沟通和治理工具。3d robotics、skycatch、dronedeploy、hobbyking、horizon ag、precisionhawk、agribotix、walkera 等已经在使用这个平台。
该项目将由 linux foundation 负责监管,此外 3d robotics ceo chris anderson 以及 box ceo aaron levy 也将提供协助。项目的其他创办会员包括 robotics、百度、box、dronedeploy、英特尔、高通、jdrones、laser navigation、skyward、squadrone system、walkera 以及 yuneec。
根据 linux foundation 执行董事 jim zemlin 的介绍,目前已经有 1200 多位开发者在为 dronecode 项目工作,其中有些项目每天收到的贡参与献代码多达 150 份。

21.3.3
arduino飞控 无人机为何迅速爆红?开源才是幕后“英雄” http://www.pcpop.com/doc/1/1128/1128060.shtml
  arduino 是较早的开源飞控,由massimo banzi、david cuartielles、tom igoe、gianluca martino、david mellis 和 nicholas zambetti于2005年在意大利交互设计学院合作开发而成。arduino公司首先为电子开发爱好者搭建了一个灵活的开源硬件平台和开发环境,用户可以从arduino官方网站取得硬件的设计文档,调整电路板及元件,以符合自己实际设计的需要。
  arduino可以通过与其配套的arduino ide软件查看源代码并上传自己编写的代码,arduino ide使用基于c语言和c 的arduino语言,十分容易掌握,并且arduino ide可以在windows、macintosh osx和linux三大主流操作系统上运行。
  随着该平台逐渐被爱好者所接受,各种功能的电子扩展模块层出不穷,其中最为复杂的便是集成了mems传感器的飞行控制器。为了得到更好的飞控设计源代码,arduino公司决定开放其飞控源代码,他们开启了开源飞控的发展道路。著名的开源飞控wmc和apm都是arduino飞控的直接衍生产品,至今仍然使用arduino开发环境进行开发。

  apm飞控
  apm(ardupilotmega)是在2007年由diy无人机社区(diy drones)推出的飞控产品,是当今成熟的开源硬件项目。apm基于arduino的开源平台,对多处硬件做出了改进,包括加速度计、陀螺仪和磁力计组合惯性测量单元(imu)。由于apm良好的可定制性,apm在全球航模爱好者范围内迅速传播开来。通过开源软件mission planner,开发者可以配置apm的设置,接受并显示传感器的数据,使用google map 完成自动驾驶等功能,但是mission planner仅支持windows操作系统。
  目前apm飞控已经成为开源飞控成熟的标杆,可支持多旋翼、固定翼、直升机和无人驾驶车等无人设备。针对多旋翼,apm飞控支持各种四、六、八轴产品,并且连接外置gps传感器以后能够增稳,并完成自主起降、自主航线飞行、回家、定高、定点等丰富的飞行模式。apm能够连接外置的超声波传感器和光流传感器,在室内实现定高和定点飞行。

  px4和pixhawk
px4是一个软硬件开源项目(遵守bsd协议),目的在于为学术、爱好和工业团体提供一款低成本、高性能的高端自驾仪。
  这个项目源于苏黎世联邦理工大学的计算机视觉与几何实验室、自主系统实验室和自动控制实验室的pixhawk项目。px4fmu自驾仪模块运行高效的实时操作系统(rtos),nuttx提供可移植操作系统接口(posix)类型的环境,例如:printf()、pthreads、/dev/ttys1、open()、write、poll()、ioctl()等。软件可以使用usb bootloader更新。
  px4通过mavlink同地面站通讯,兼容的地面站有qgroundcontrol和mission planner,软件全部开源且遵守bsd协议。
  由3dr联合apm小组与px4小组于2014年推出的pixhawk飞控是px4飞控的升级版本,拥有px4和apm两套固件和相应的地面站软件。该飞控是目前全世界飞控产品中硬件规格最高的产品,也是当前爱好者手中最炙手可热的产品。
  pixhawk拥有168mhz的运算频率,并突破性地采用了整合硬件浮点运算核心的cortex-m4的单片机作为主控芯片,内置两套陀螺和加速度计mems传感器,互为补充矫正,内置三轴磁场传感器并可以外接一个三轴磁场传感器,同时可外接一主一备两个gps传感器,在故障时自动切换。
  基于其高速运算的核心和浮点算法,pixhawk使用最先进的定高算法,可以仅凭气压高度计便将飞行器高度固定在1米以内。它支持目前几乎所有的多旋翼类型,甚至包括三旋翼和h4这样结构不规则的产品。它使飞行器拥有多种飞行模式,支持全自主航线、关键点围绕、鼠标引导、“followme”、对尾飞行等高级的飞行模式,并能够完成自主调参。
  pixhawk飞控的开放性非常好,几百项参数全部开放给玩家调整,靠基础模式简单调试后亦可飞行。pixhawk集成多种电子地图,爱好者们可以根据当地情况进行选择。

  openpilot与taulabs
  openpilot是由openpilot社区于2009年推出的自动驾驶仪项目,旨在为社会提供低成本但功能强大的稳定型自动驾驶仪。这个项目由两部分组成,包括openpilot自驾仪与其相配套的软件。其中,自驾仪的固件部分由c语言编写,而地面站则用c 编写,并可在windows、macintosh osx和linux三大主流操作系统上运行。

  openpilot的最大特点是硬件架构非常简单,从它目前拥有的众多硬件设计就可以看出其与众不同之处。官方发布的飞控硬件包括cc、cc3d、atom、revolution、revolution nano等,衍生硬件包括sparky、quanton、revomini等,甚至包含直接使用stm32开发板扩展而成的flyingf3、flyingf4、discoveryf4等,其中cc3d已经是300mm以下轴距穿越机和超小室内航模的首选飞控,而discoveryf4被大量用于爱好者研究飞控,quanton更是成为了taulabs的首选硬件。

  下面我们来说说openpilot旗下最流行的硬件cc3d。
  此飞控板只采用一颗72mhz的32位stm32单片机和一颗mpu6000(集成3轴陀螺仪、3轴加速器)就能够完成四旋翼、固定翼、直升机的姿态控制飞行(注意,该硬件可进行的是三自由度姿态控制,而不是增稳),电路板大小只有35mm×35mm。
  与所有开源飞控不同,它不需要gps融合或者磁场传感器参与修正,就能保持长时间的姿态控制。以上所有功能全部使用一个固件,通过设置便可更改飞机种类、飞行模式、支持云台增稳等功能。
  其编译完的固件所需容量只有大约100kb,代码效率令人惊叹,是所有飞控程序员学习的楷模。其地面站软件集成了完整的电子地图,可以通过电台实时监测飞机状态。

  taulabs飞控是openpilot飞控的衍生产品。当前taulabs最流行的硬件叫做quanton,由原openpilot飞控小组成员独立完成。
  它继承了openpilot简单高效的特点,并扩展了气压高度计和三轴磁场传感器,将主控单片机升级为带有硬件浮点运算的cortex-m4核心。该飞控是最早支持自动调参的开源飞控产品,带有模型辨识算法,能够在飞行中进行自整定姿态pid控制参数。taulabs能够完成许多高级飞行模式,连接外置gps后可使多旋翼具备定高、定点、回家等功能。飞控集成了电子地图,且界面非常友好,使用向导模式进行初始化,初学者可以简单上手。

  multi wii copter (mwc)
  multi wii copter(mwc)飞控是一款典型的arduino衍生产品,是专为多旋翼开发的低成本飞控,它完整地保留了arduino ide开发和arduino设备升级和使用的方法。由于成本低、架构简单、固件比较成熟,因此该飞控在国内外拥有大量爱好者。除了支持常见的四、六、八旋翼以外,该飞控的最大特点是支持很多奇特的飞行器类型,比如三旋翼、阿凡达飞行器(bicopter avatar style)、y4型多旋翼(其中两轴为上下对置)等,使得该飞控的开发趣味性较强,容易博得大家的喜爱。

  kkmulti copter
  kk飞控是源于韩国的一款开源飞控项目,也是第一种广为大众接受的多旋翼飞控,在开源飞控发展的初期,该飞控的横空出世对整个四旋翼行业是一种震撼。
  该飞控只使用三个成本低廉的单轴陀螺,配合一台最简单的四通道遥控设备,就能控制常见的三、四、六旋翼飞行器,并且支持“十字”型,x型、h型和上下对置等多种布局。该飞控使用三个可调电阻调整感度作为调参方法,保留了早期航模陀螺仪的特征。作为多旋翼飞控起始的重要见证,这款“古董”级经典飞控,依然拥有众多玩家。

  autoquad飞控和esc32电调
  autoquad飞控来自德国,作为早期开源飞控,autoquad功能非常强大,但是受限于当时的传感器产品,它不得不采用大量模拟mems传感器。
  所谓模拟传感器指的是传感器芯片内部不集成数模转换器(adc)和运算核心,而直接将微机械传感器的变化通过放大和硬件滤波后以电压的形式输出,需要主控单片机进行ad采集。
  因为传感器在不同温度环境下,输出值会受到影响,模拟mems传感器给参数校准带来了不少麻烦。很多玩家在第一次使用该飞控时,不得不借助电冰箱来进行传感器校准,而一些厂家为了保证批量产品的稳定性,只能在飞行器上对电路板进行加温,使其保持温度恒定。
  但是,这种校准方法却为一些骨灰级玩家带来了额外的乐趣,很多人反而乐此不疲。对于大多数普通爱好者而言,这实在是一项难度不小的工作。随着带有出厂校准的数字传感器的普及,autoquad作为历史的积淀,也完成了它的使命。
  但是,该开源项目的另一个分支esc32电调却逐渐在玩家中被接受了。该电调是第一个采用数字接口进行控制的电调产品,玩家可以通过串口、i2c接口和can接口来控制电机的转速,这比传统的pwm接口信息速度要快很多倍。常见的pwm电调波形更新速度为每秒钟四百次,而数字接口的更新速度可达到百万次。尤其是对于动力变化非常敏感的多旋翼飞行器来说,这种高速通信是非常必要的。该电调还支持转速闭环,并且能够针对电机进行详细调参,这些功能都是传统航模电调不能比拟的。
  当然,autoquad也在进步,它发布了全新的飞控产品autoquad m4,对主控单片机和传感器进行了全面升级,采用常见的stm32f4单片机和数字传感器。但是面对pixhawk、apm等已经成熟多年的先进飞控产品,它已经从前辈沦落为后起之秀。
  所以说,开源飞控很大程度上促进了四旋翼飞行器这类产品飞入寻常百姓家,无人机技术的发展,甚至还能帮你完成飞行的梦想。

21.3.4 开源无人机视觉平台percepto
一家名为 percepto 的创业团队在 indiegogo 上发起了一个同名开源项目,是一个可以安装在现有无人机上的计算机视觉组件,目标是搭建一个集硬件、驱动、算法、安全、机身控制于一体的平台,让更多的开发者在这上面为无人机开发应用。
在决心向着这么一个宏大的目标奋斗之前,percepto 开发过对特定物体进行跟踪拍摄的无人机应用,现在则是希望让更多的无人机爱好者和开发者参与到这一领域中,发掘无人机更大的价值和乐趣,此外 percepto 还计划将自身积累的机器视觉技术平台一并开放出来,这样后续的开发者就可以在其现有视觉技术和视觉软件基础上开发自己的应用。
机器视觉恰恰是无人机实现自主操作的核心技术,包括了障碍物识别、自主导航、飞行姿态矫正等多个方面,和高通 cargo 无人机平台,以及应用在 asctec 的 firefly 无人机上的英特尔 realsense 3d 相机系统类似。
percepto:为无人机赋予视觉 自动跟踪拍摄
2015-08-12 18:11:5536氪 http://tech.china.com/news/company/892/20150812/20182988.html
  percepto是以色列一家为无人机做计算机视觉的初创公司,它提供一套完整的硬件、软件凯发推荐的解决方案,将计算机视觉技术和开源的开发平台提供给无人机制造公司,从而让无人机在实际商用中功能更强大。
  具体来说,percepto 在硬件端提供一个小型装置和一个微型摄像头,将这两个设备连接到无人机上可以让无人机拥有 “视觉” 能力,能够智能识别周围环境,避障,对物体进行追踪拍摄和 360 度环绕拍摄,以及与移动目标保持固定距离等。
  虽然目前市面上已经有一些无人机拥有计算机视觉能力,但 percepto 的愿景是希望专门针对这个领域提供服务,并与其他无人机进行合作从而提高无人机在计算机视觉功能方面的整体平均水平。
  当然,仅做计算机视觉并不能满足 percepto 的野心,它的更大价值在于开放开源的开发平台。percepto 不仅让开发者在此平台上开发有关无人机的应用程序(软件免费),还向开发者开放了硬件设备的源代码,包括避障、避免撞击、导航、操控等诸多功能程序,从而聚集广大开发者的智慧,拓展更多无人机应用的新技能。
  percepto 的联合创始人兼 ceo dor abuhasira 说,percepto 提供的软件开发工具包(sdk)可以帮助企业节省 70%的时间去开发操控无人机的应用程序。团队希望通过这样的开放平台打造商用无人机领域计算机视觉的标准化平台。
  percepto 创立于 2014年,目前团队只有 7 个人。近日,它刚刚获得了 100 万美元种子轮融资,早期投资方可谓非常有名,包括时代华纳的前 ceo richard parsons,著名创投家、达拉斯小牛队老板 mark cuban,以及中国著名天使投资人徐小平等。
  今年3月,percepto 曾在indiegogo上进行众筹,获得了 10 万美金的众筹成绩。早期众筹支持者将于今年10月获得第一批产品。

21.3.5 ardupilotmega (apm)
ardupilotmega (apm) 是市面上最强大的基于惯性导航的开源自驾仪
特性包括:
    免费开源固件,支持飞机(arduplane),多旋翼 (四旋翼、 六旋翼、八旋翼等), 直升机(arducopter)和地面车辆(ardurover)。
    通过点击式的工具简单设置和上传固件,无须编程。(但是你想搞搞代码的话,可以使用简单的嵌入式编程工具: arduino)
    通过点击式的桌面程序完全的规划任务脚本
    可以支持上百个三维航点
    使用强大的 mavlink 协议,支持双向遥测和飞行中控制命令
    多种免费地面站,包括 hk gcs, 支持任务规划、空中参数调整、视频显示、语音合成和完整的带回放的数据记录
    跨平台。支持windows、mac 和 linux。在 windows 下使用图形任务规划设置工具 (mac 下可用模拟器) 或在任何操作系统下使用命令行界面。三种操作系统上都有可用的地面站程序。基于 arduino 编程环境,也是完全跨系统的。
    自动起飞,降落和特殊的动作命令,例如视频和照相控制
    完整支持 xplane 和 flight gear 半硬件仿真
    包括继电器,可以触发任何设备,可以根据任务脚本控制
    硬件包括:
      三轴陀螺仪
      三轴加速度计
      测量高度的空气压力传感器
      10hz gps 模块
      监视电池状态的电压传感器
      4mb板上数据记录存储器。任务数据自动记录,并可以导出为 kml 格式
      内建硬件失效处理器,在失控时可以返回出发点
      (可选) 三轴磁力计
      (可选) 空速传感器
      (可选) 电流传感器
ardupilot历史
2007年5月 – 克里斯·安德森用乐高 mindstorm搭建无人机时,建立了 diydrones.com .
2008年9月– jordi 制作了一个可以自动飞行的传统直升机无人机并赢得了第一届sparkfun avc大赛.
2009年 – 克里斯·安德森和jordi munoz 成立了3d robotics(3dr)
2009年5月 – jordi/3drobotics 发布了第一款ardupilot板子 (使用红外温度传感器)
2009年11月 – jordi创建了ardupilot代码仓库
2009年11月 – jordi, doug weibel, jose julio编写了第一版使用william premerlani的dcm算法的arduimu
2009年11月 至 2010年2月 – jason从头开始重写了 (v2.5),包括了使用中断驱动的遥控信号输入, 遥控油门保护, 返航, 悬停, 绕圈, 垂直航路修正, 更佳的稳定性, 全数字电传操纵, 系统事件, 四通道rc输出, 2线通信的数传. (post)
2009年12月 – doug 推出改进的 ardupilot v2.4,第一次支持基于imu的飞行器任务飞行
2010年 – 3d robotics 推出了apm1
2010年初 – doug and jason 发布了ardupilot 2.6 ,改善了油门控制, 支持arduimu
2010年夏天 – apm code development:
    jason – 任务脚本, 飞行模式, 导航
    jose – 代码库, dcm, 硬件传感器支持
    doug – 高级飞行控制, 飞行日志记录, dcm
    mikes – 参数, cli, 高速串口, 高级硬件优化
2010年5月 – ardupilot合并了aeroquad (包括jani hirvinen),开始在arducopterng(海盗)进行工作。
2010年6月 – apm 1 在sw上实现了自主任务脚本飞行
2010年6月 – apm1首次让固定翼飞机实现了自主飞行
2010年6月 – jason 开发了可以在xplane上运行的基于perl的半实物仿真,来测试新的apm任务脚本命令 (后来整合进了mavlink)
2010年8月 – jani/jdrones 收到了一款作为原始标准的四轴飞行器机架diy套件
2010年十月 – arducopterng (aeroquad/arducopter 合并后的代码) 工程被ardupilot团队放弃了,移交给了 ardupirates 团队以得到更长远的发展. jason在arduplane的基础上使用另一种控制逻辑重写了arducopter,使其更加自主化。增加了悬停模式, 绕圈模式, 返航, 任务脚本, 失控保护, 起飞, 降落, 等等.
2010年8月 – michael oborne发布了mission planner
2010年8月 – randy增加了对tradheli 的支持
2010年12月– 从初始的arducopterng的代码上进行了扩展的megapirates成为了ardupilot第一个成功的分支
2011年4月 – jason在sparkfun avc上实现了 arducopter的第一次完全自主任务飞行
2011年 – 3d robotics发布了apm2
2011年11月 – tridge创建了autotester
2012年 – 3d robotics发布了apm2.5/2.6
2012年2月 – jason让randy来接管并成为了arducopter的首席开发者, doug离开了团队去获取他的博士学位而tridge接管了arduplane
2012年2月 – marco robustini加入并领导arducopter的测试者
2012年7月 – 苏黎世联邦理工学院(lorenz meier,mikes) / 3d robotics发布了px4
2012年8月 – pat hickey 简化了硬件抽象层 (ap_hal) 并增加了对其它板子的支持
2012年10月 – rob lefebvre实现了tradheli的第一次自主任务飞行
2012年10月– tridge and canberrauav 使用apm2 & pandaboard赢得了outback无人机挑战
2012年11月 – 第一款apm2.5的山寨版出现了
2012年12月 – randy and leonard 在arducopter(ac2.9)中加入了基于惯导的高度自动控制,得益于jonathan challinger成功设计出了3阶互补滤波器的原型
2013年1月 – ardupilot的代码从googel code搬到了github
2013年1月/2月 – 安卓版的地面站出现了 (arthur的droidplanner , kevin hester的andropilot)
2013年4月 – paul riseborough, brandon jones, tridge编写了arduplane的基于l1控制器的航点飞行
2013年5月 – leonard and randy 为arducopter的航线飞行加入了惯性导航的支持(ac3.0)
2013年7月 – paul riseborough, tridge给arduplane整合进了速度和高度控制
2013年9月 – mike mccauley, tridge增加了对flymaple板子的支持
2013年11月 – eth (lorenz meier,mikes) / 3d robotics发布了pixhawk
2014年1月 – paul riseborough, tridge增加了扩展卡尔曼滤波器(ekf),使飞控能得到更加可靠的姿态和位置信息
2014年5月 – emile castelnuovo and tridge增加了对vrbrain板的支持
2014年8月 – 首次实现了arduplane基于linux控制板的飞行 (pixhawkfire)
2014年9月 – tridge & canberra无人机使用了基于arduplane的固定翼无人机赢得了outback挑战 (tridge’s debrief).
2014年10月 – 开源无人机项目dronecode启动
2014年10月 – 第一个有关arduplane的报道:在佛罗里达州被成功使用于搜救,包括搜寻一架失踪的轻型飞机

21.4 开源无人车
21.4.1 恩智浦开源自动驾驶计算平台bluebox 打造现实无人汽车
3snews地理信息产业网 2016-05-17 11:06:40 阅读(102) 评论(0)
  3snews讯 由恩智浦(nxp)研发的bluebox平台将为汽车制造商提供现成的一体化自动驾驶计算凯发推荐的解决方案。bluebox是专为自动驾驶设计的中央计算引擎。不仅能够为无人驾驶提供人工智能,还为车间通讯和多重传感器提供接口支持,充当车辆的 “神经系统”,传统汽车制造商使用该方案能够轻松开发四级无人驾驶汽车,即能够真正实现自主式无人自动驾驶。
  bluebox引擎是一个基于linux语言的开源平台,汽车制造商可以自行根据需要定制。公司称,bluebox已经出货,全球五大汽车制造商的中的四家都已经收到了bluebox。从2015年9月起,公司就已经为这些优选的客户发货。
  bluebox引擎结合了雷达、lidar(激光探测与测量)、视觉传感以及加载的车联网(vehicle to everything, v2x)系统,来将车辆周围的情景建模,进行安全决策,来保护车辆及乘客。所有的计算元素使用了量产或样本的nxp芯片,让系统做好了上路准备。
  在无人驾驶车辆系统中,多个传感器数据流都汇入bluebox引擎,数据流结合起来,将车辆周围的物理环境创造一个360°实时模型。平台具有nxp芯片支持的lidar系统、雷达和视觉节点,nxp s32v处理器从中获取传感数据输入,通过传感融合能力创造一个地图。s32v包括了图形引擎,专门带有高质量图形处理加速器,还带有汽车级别的功能性安全引擎。
  恩智浦是一家新近独立的半导体公司,由飞利浦公司创立,已拥有五十年的悠久历史,主要提供工程师与设计人员各种半导体产品与软件,为移动通信、消费类电子、安全应用、非接触式付费与连线,以及车内娱乐与网络等产品带来更优质的感知体验。(整理|3snews 陈浩丽)

21.4.2 谷歌开源tensorflow

uesoft 发表于 2015-5-11 11:40:20

22.开源分子动力学计算软件
分子动力学计算软件是强大的分子动力学仿真工具,开源的有lammps,namd,tinker,gromacs,nwchem,beemd(国人开发),等等,商业软件有materials explorer,amber,charmm,dl-poly,gaussian,vasp,等等。

uesoft 发表于 2016-9-10 08:09:28

实时slam的未来及深度学习与slam对比

the future of real-time slam and deep learning vs slam学习笔记

作者:家辉, 日期:2016-07-10 csdn博客: http://blog.csdn.net/gobitan/article/details/51872675

本文是作者(tombone)对2015年12月18日计算机视觉国际会议实时slam小组讨论要点的总结。原文发表在作者的博客上,地址参见本文最后。这篇文章主要介绍了会议上的7个话题,在最后聊了一些关于深度学习讨论组的一些信息。

第一部分:为什么slam重要
vsalm(visual slam)能够在跟踪摄像机(用于ar的手持或者头盔,或者装备在机器人上)位置和方位的同时构建三维地图. slam算法与convnets和深度学习是互补的。slam关注几何问题,而深度学习主要关注识别问题。如果你想让机器人走到冰箱面前而不撞到墙,就用slam。如果你想让机器人识别冰箱里的物品,就用convnets。http://openmvg.readthedocs.io/en/latest/

slam相当于实时版本的sfm(structure from motion)。vslam使用摄像机,放弃了昂贵的激光传感器和惯性传感器(imu)。单目slam使用单个相机,而非单目slam通常使用预先标定好的固定基线的立体摄像机。slam是基于几何方法的计算机视觉的一个主要的例子。事实上,cmu(卡内基梅陇大学)的机器人研究机构划分了两个课程:基于学习方法的视觉和基于几何方法的视觉。

sfm vs vslam
sfm和slam解决的是相似的问题,但sfm是以传统的离线的方式来实现的。slam慢慢地朝着低功耗,实时和单个rgb相机模式发展。下面是一些流行的开源sfm软件库。

    bundler: 一个开源sfm工具箱,http://www.cs.cornell.edu/~snavely/bundler/
    libceres: 一个非线性最小二乘法库(对bundle adjustment问题非常有用),http://ceres-solver.org/
    andrew zisserman's多视图几何matlab函数库,http://www.robots.ox.ac.uk/~vgg/hzbook/code/


vslam vs 自动驾驶
自动驾驶汽车是slam最重要的一个应用领域。未来很多年里,在自动驾驶领域将持续地研究slam。

第二部分:实时slam的未来
andres davison做了一个非常精彩的关于15年来基于视觉的slam的总结。过去10-15年来最典型的几个slam系统如下:

    monoslam
    ptam
    fab-map
    dtam
    kinectfusion


davison vs horn: 机器人视觉的下一篇
davision正在写一本新的机器人视觉的书,该书第一版由b.k. horn1986年出版。另外有两本很优秀的图书值得学习。他们分别是hartlet等著的和thrun等著的。这两本书可堪称slam的经典基础,必读。

参考:davison的15年来的基于视觉的slam的ppt链接地址:http://wp.doc.ic.ac.uk/thefutureofslam/wp-content/uploads/sites/93/2015/12/slides_ajd.pdf

talk 1: christian kerl on continuous trajectories in slam
talk 2: semi-dense direct slam by jakob engel
lsd-slam在2014年的eccv上诞生,是我比较喜欢的一个slam系统。lsd_slam是large-scale direct monocular slam的缩写。lsd-slam对slam研究者来说是一个重要的系统,因为它没有使用角点(corners)或者其他任何本地特征(local features)。
原文:lsd-slam is an important system for slam researchers because it does not use corners or any other local features. direct tracking is performed by image-to-image alignment using a coarse-to-fine algorithm with a robust huber loss. this is quite different than the feature-based systems out there. depth estimation uses an inverse depth parametrization (like many other slam systems) and uses a large number or relatively small baseline image pairs. rather than relying on image features, the algorithms is effectively performing “texture tracking”. global mapping is performed by creating and solving a pose graph "bundle adjustment" optimization problem, and all of this works in real-time. the method is semi-dense because it only estimates depth at pixels solely near image boundaries. lsd-slam output is denser than traditional features, but not fully dense like kinect-style rgbd slam.
lsd-slam的扩展包括omni(全景) lsd-slam和stereo(立体) slam。
talk 3: sattler on the challenges of large-scale localization and mapping

talk 4: mur-artal on feature-based vs direct-methods
orb-slam的创建者raúl mur-artal的演讲集中在feature-based和direct-methond的争论上。他坚定地站在feature-based这边。orb-slam是一个优秀的开源slma系统。

talk 5: project tango and visual loop-closure for image-2-image constraints
谷歌的project tango是世界上首个试图将slam商业化的产品。谷歌想将slam能力纳入到下一代android设备上。

talk 6: elasticfusion is denseslam without a pose-graph
elasticfusion是一个稠密slam技术,它需要类似kinect的rgbd传感器。

talk 7: richard newcombe’s dynamicfusion
richard newcombe是最后一个演讲者,他创办的公司最近被oculus收购了。看到dtam,kinectfusion和dynamicfusion背后的人如今投入到vr领域,这真是一件很酷的事。

第三部分:深度学习 vs slam
slam讨论组非常有意思。在我们进入深度学习与slam的重要性讨论之前,我应该提到每个讨论组的演讲者都认为:语义(semantics)对于构建一个更大,更好的slam系统是非常必要的。

集成语义信息进入slam

结束语
今天的slam系统帮助机器从几何的角度来理解现实世界,而深度学习则帮助机器进行合理地分类。最后与大家分享一下newcombe和davision在视觉slam中的令人兴奋的事:基于视觉的算法即将把ar/vr变成数十亿美金的市场。然而,我们不应该忘记密切关注一个万亿美金的市场,那就是机器人。slam机器人的时代即将到来。

以上笔记仅供学习参考,由于本人的slam基础尚不扎实,理解难免有偏差。要想全面理解作者的文章,请阅读原文:http://www.computervisionblog.com/2016/01/why-slam-matters-future-of-real-time.html

uesoft 发表于 2016-9-10 08:56:17

2015深度学习回顾:convnet、caffe、torch及其他
[日期:2015-08-06]         来源:computervisionbloghttp://www.chinacloud.cn/show.aspx?id=21212&cid=17

  cvpr可谓计算机视觉领域的奥运会,这是vision.ai的co-founder,前mit研究人员t. malisiewicz针对cvpr'15尤其是deep learning的综述文章,谈到了convnet的baseline,caffe和torch之间的分歧,arxiv论文热,以及百度的imagenet违规事件等。原文标题为:deep down the rabbit hole: cvpr 2015 and beyond。

  cvpr是主要的计算机视觉会议,可以把它看作是计算机视觉研究的奥林匹克。今年,cvpr将在我的后院举行,离可爱的剑桥不到一英里。我很多麻麻省理工的同事都参加了,如果google在这次cvpr 2015上有着有最好的表现,我也不会感到惊讶。从2004年开始,我几乎参加了每年的cvpr,那么,让我们来一场计算机视觉研究世界新而短暂的精彩旅行吧。

  灰白阴影下的兔子洞艺术

  多年来,发生了很多变化,但本质上还是没变。学者曾经是最顶端的,捍卫他们自己的大学以及发生在他们非商业研究实验室的令人惊叹的事情。如今,学者仍然处于顶端,但是现在维护的是他们的google、facebook、amazon以及 x 公司的某个附属子公司。随着招聘的最佳预算和以出版为导向的沉重凯发推荐的文化,如果接下来连续几年的大量学术外流,我也不会感到惊讶。由于cvpr只有两周,因此google一直在忙于制作convnet(卷积神经网络)艺术,同时向世界展示了如果你想做最好的深度学习研究,他们就是(合适的)王国。

  仅仅是博士生和博士后的部队并不能打败软件工程师和科学研究者部队。在以前,学生在获得计算机视觉的博士后之后通常会选择离开学校(通常会受到一些视觉研究工作和华尔街的工作的诱惑)。现在,之前的博士生在大公司运作研究实验室已经紧锣密鼓的进入我们的视野。似乎还没有足够的深度专家来填补这个大需求。

  数据集通常是一件大事——请下载我们的数据!数据集依旧是件大事——但是我们抱歉告诉你,你所在大学的计算资源达不到要求(但幸运的是,我们 x 公司总在招聘,所以来加入凯发推荐吧,让我们一起推动研究的向前发展)。

  如果你想要查看个人文献,我建议andrej karpathy的 cvpr 2015文献在线导航工具或者看看在计算机视觉基础网站上的cvpr 2015文献 。还有就是一个麻省理工学院的博士候选人zoya bylinskii,也列出了一些有趣的cvpr 2015 的文献。

  convnet革命:一个网络预训练

  机器学习过去是女王,现在是国王。机器学习过去是浅显的,但如今的学习方法如此之深,以致于图表在单个滑动下很难拟合。研究生过去常常避开了关于yann lecun的笑话,yann lecun坚持认为机器学习在将来的某一天会做特征设计阶段的工作。现在似乎是这种情况,当你坚持认为“手工特征设计”将省掉一天时间的时候,整个视觉社区都会忽略你。yann lecun做了一个主题报告,并给了它一个有趣的标题:“深度学习怎么了?”,这表明了卷积神经网络(也叫cnns或convnets)存在于cvpr的任何角落。

  图来自karpathy的卷积神经网络教程

  过去在cvpr很难发表convnet(卷积神经网络)研究论文,而现在如果你没有对convnet做一个基本的比较的话,很难得到一篇cvpr文献。得到一个很酷的新问题了么?哦,你没有试一下基于convnet的基本方法么?很好,这说明为什么没人关心了。

  尽管如此,但这并不是机器接管了视觉科学家的工作。如今的视觉科学家更是一个应用型机器学习黑客,而且由于强大的cnn主题,理解和重新实现如今的视觉系统变得更加容易。我们在cvpr上看到的在本质上是一个类似分割和运动的经典问题的回访,只是使用的是这种新的机器方法。正如samson timoner在本地boston vision meetup网站上概括的那样,当互信息变得流行,社区也随之变得时尚——这次围绕的是convnets。但这不仅是一种趋势,非cnn(卷积神经网络)的竞争正在被摧毁。

  来自bharath hariharancvpr 2015的文章-在切割上使用卷积神经网络

  还有很多事情等着视觉科学家去做,一个扎实的数学上的正式教育比其他任何都要重要。我们过去是使用梯度下降来训练,现在也是如此。就好比我们过去喝咖啡,现在也喝咖啡一样。其本质上,其实还是数学。

  内心深处的兔子洞

  cvpr2015让人想起了物理学上牛顿之前的日子。许多聪明的科学家能够使用数学来预测物体的运动,曾经聪明的笛卡尔教会我们如何将我们的物理思维考虑到坐标系统中。非常清楚的是:通过卷积神经网络语言来铸造你的计算机视觉问题,你将打败所有用手做计算机视觉的人。我认为yann lecun(深度学习之父其中之一)就是一个现代的笛卡尔,只是因为我认为开创性的工作是指日可待。他的convnets思想框架就像是一个必备的坐标系统——我们可能不知道目的地像什么,但我们现在知道如何来绘制一张地图。

  深度网络每个月都表现的很出色,但我仍然等待着艾萨克(牛顿)的到来,让我们的生活更轻松。我想要一个简化,但我并不悲观——一个很好的原因就是会有一系列的convnet空间活动(以防你没能参加cvpr 2015),所以我直言不讳:convnets这该死的工作!其实我只想要深度学习的f=ma公式。

  计算机视觉的开源深度学习:torch vs caffe

  cvpr2015开始的第一天是一些优秀的软件教程。外面有许多优秀的非-α深度学习软件,并且让每个人的生活变得容易。在cvpr上,我们既有torch教程也有caffe教程。我参加了diy深度学习的教程,这是一个充满caffe的屋子——在会议开始的5分钟前,站在房子里的参会人员只有像我这样的懒虫。相比之下,caffe是更受欢迎的,但对于torch,当谈及到一些深度学习的权威人员时(如 andrej karpathy和其他深度思维科学家),一些特定的专家小组似乎从caffe转移到了torch。

  caffe是在berkeley发展起来的,有一些充满活力的社区,与python结合并且在大学生中似乎相当流行。trevor darrell教授甚至找了一些博士后来帮助caffe发展。如果我再年轻几岁并且刚获得博士学位,那么我一定会申请的。

  torch并没有跟随python的潮流,它是基于lua的。对于解释器没有必要像matlab或者python那样,lua会给你神奇的控制台。torch被facebook人工智能研究实验室和位于伦敦的谷歌deepmind大量使用。对于那些害怕类似于lua这样新语言的人,在此不用担心——如果你已经涉足python,javascript或者matlab的话,那么你会感到lua语言学起来特别“轻松”。

  现在,越来越清晰的是:深度学习的未来主要是来自像caffe或torch那样有自给自足的软件包,而不是像opencv或matlab那样的处在生死边缘上的全能工具。当你在opencv上分享创作,你最终会分享源代码,但有了深度学习工具包,你最终提供的是你的网络预训练。对于你的计算机视觉管道,你不必再考虑20个“小”算法的组合——你只要考虑你想要的流行网络架构,然后就是数据集。如果你有gpu和庞大的数据,你可以做完整的端到端的训练。如果你的小数据集或者中等数据集,你可以微调最后几层。你甚至可以在最后一层训的顶部训练一个线性分类器,如果你怕麻烦——那么你要做的只是超越sift(尺度不变特征变换算法),hog(方向梯度直方图 ),gist(通用搜索树)以及所有在计算机视觉过去二十年里庆祝的算法。

  在cvpr 2015上使用convnets的方式,使我感觉到我们正在接近某个大的东西。但是在我们捡到黄金之前,convnets仍然像是一个微积分的影子,只是“希望”会得到更大,更深层次的东西和更有意义的事。我认为,对于convnets的调查可视化算法的研究表明,即使网络建筑师也不能完全确定幕后发生的事情。

  嵌入大脑的视频游戏引擎:面向机器智能的不同路径

  在cvpr 2015会议的最后一天的现场分析研讨会上,josh tenenbaum 给嵌入大脑的视频游戏引擎赋予了一个诱人的讨论标题。你可以在一篇短篇《科学美国人》文章中读到他观点的概括。尽管他的说话风格看起来似乎不符合cvpr的标准,但它却是典型的tenenbaum。在他的世界里,没有基准可以超越,没有曲线可以拟合阴影,如果你让我把lecun和笛卡尔作比较,那么lecun在某种意义上算是教授吧。tenenbaum可能是现代的亚里士多德。正如jianxiong xiao教授全面的介绍josh那样,他或许是对的——这是你能找到的最聪明的扬声器之一。它在一秒内能说100个单词,你会觉得你的大脑在放大你听到的。

  josh的一个主要研究主题是基于图像识别阴影的超越。josh的所有的工作都是关于在这个世界上建立思维模型,而他的工作确实可以被看作是综合分析。在他模型的内部主要是一些类似于视频游戏引擎的东西,而他展示了许多令人信服的相关实例,这些实例对于人类来说很是方便,但对于今天数据驱动的convnets而言,几乎是不可能的。在这个夏天,如果他的学生在谷歌deepmind工作,那么也不必感到惊讶。

  几年前,概率图模型(图论和概率方法的合并)那是风靡一时。josh给了我们概率编程的味道,虽然我们还没有看到新的方法来主导计算机视觉研究世界,但请睁大你的眼睛。他提到了一篇最近发表在nature上的文章(下面引用的),来自另一个受人尊敬的机器智能研究,这应该会引领潮流兴奋相当长一段时日。请看看下面julia代码中尾部的一部分:

  probabilistic machine learning and artificial intelligence.zoubin ghahramani. nature 521, 452–459 (28 may 2015) doi:10.1038/nature14541



  下面来看一看一些教授。tenenbaum的想法正在行动中,看看下面的这篇cvpr 2015的文章,标题为:一种面向场景感知的概率编程语言。恭喜tejas d. kulkarni,第一作者,一个mit的学生,因为这个令人兴奋的新作而获得最佳论文荣誉奖。有了谷歌deepmind,你会有一个有趣的夏天。

  



  picture: a probabilistic programming language for scene perception

  深度场景cnns物体检测器

  在现场分析研讨会上有着大量的好的演讲报告,在另一次演讲中,真正突出的是一个新的大型数据集(麻省理工学院的地方)和当你使用场景与物体来训练发生什么时的一个彻底调查。

  



  来自于麻省理工学院的antonio torralba做了一个关于地点数据库的讨论,以及当你做以物体为中心的数据库(如imagenet)与以场景为重的数据库(如麻省理工学院的地点)训练时能学到什么的一个深层分析。你可以查看“目标探测器浮现”幻灯片或arxiv论文来学习更多的指示。这些都来自即将到来的研究员bolei zhou的出色工作!

  cvpr无意之事:arxiv出版狂热 & 百度惨败

  从长远来看,最近快速推到arxiv.org的预印本热潮对学者和商业研究者老说贡献都很大。当你有大量的专家以最快的速度探索思想,然后等待6个月直到下一次回忆的最后截止日期,这样是没有意义的。唯一的缺点就是,它使新发布的cvpr论文过时了。这就像在arxiv发布文章的那一天每个人都已经详细精读了这个好东西。但你得到了你的“想法主张”而不用担心一个不适当的评审影响你。双盲评审,将准备进行一个深度改造。我们现在知道谁在做什么,特别是在发表时间之前。对于学生,发布或退稿仅仅得到的是一个结果。arxiv狂热是一件好事还是坏事取决于你,可能更多的是你的资历比其它什么都重要。在接下来的日子里,cv的各种声音,肯定会越来越响,并会持续如此。

  外行人仅仅是阅读人工智能标题的话,百度作弊丑闻似乎是个大新闻,但在计算机视觉上,在测试集上的过拟合并不是一件新颖的事情。这篇论文最后被驳回了,研究生通常多次在测试集上评估他们的算法,而真相就是人无完人。当它对#1很重要的时候,不要对你的比较变得不合适而感到惊讶。重要的是意识到地面破碎研究和小百分比追逐的不同。我们都会犯错,在重大的压力下,我们都会表现出自己的弱点。所以,让我们一笑置之,坦然面对吧。让我们招聘最好的,鼓励真正伟大的研究并且停止追逐百分比。事实上,很多的顶级性能方法都是相似的。

  总结

  cvpr的参会者在持续的增加。我们现在有博士生,创业者,教授。招聘人员,大公司,甚至是来学生,来展示自己的成果。cvpr会成为新的siggraph(美国计算机协会)么?

  



  来自changbo hu绘制的cvpr参会者图片

  convnets留在了这里,但是如果我们想要让convnets能超越阴影的计算,那么还有大量的工作需要完成。geoff hinton的capsules在深夜的讨论中不断出现。“我想使用神经元组来取代非结构化层,我称之为‘capsules’,它更像一个皮层柱”——geoff hinton的新闻网站ama。很多人(像来自cmu的abhinav gupta教授)也在讨论非监督学习cnn(卷积神经网络)的训练,我预测,在明年的cvpr中,从没有注释的视频学习大型卷积神经网络应该是一个大的方向。

  最重要的是,当深度学习的巨头去提他们最喜欢的方法有错误时,我只期待有最好的研究也会随之而来。快乐的计算吧,并记住,永远不要停止学习。

qnnpack 比tensorflow lite快一倍。

uesoft 发表于 2016-10-16 16:22:04

开源游戏引擎
osg,osgearth,osgocean
ogre
irrlicht,jme3,panda
rigs of rods ("ror")

开源3d引擎
coin3d,openinventor

开源cad
opencascade
freecad

开源实时光线跟踪
openrtrt

开源渲染引擎
proland

开源物理引擎
ode,bullet,havok,physx,pixelux,newton
引擎   类型   许可
box2d   2d   zlib
bullet   3d   zlib
chipmunk   2d   massachusetts institute of technology (mit)
chrono::engine   3d   gplv3
dynamo   3d   gpl
moby (physsim)   3d   gplv2
newton game dynamics   3d   zlib
open dynamics engine   3d   bsd
open physics abstraction layer   n/a   bsd/lgpl
opentissue   3d   zlib
physics abstraction layer (pal)   n/a   bsd
tokamak   3d   bsd/zlib

chipmunk 是由 scott lembcke 在 box2d 的基础上开发的,它包括了 2d 物理学的几个特性,比如对 c 的直接支持,它还包括了一个 objective-chipmunk 来支持 iphone 绑定。其他的绑定包括 ruby、python 和 haskell。

tokamak 是一个 3d 物理引擎 sdk,由 david lam 用 c 编写。它包含了很多的优化,可最小化内存带宽,因而更适合于小型的便携设备。tokamak 的一个有趣特性是它支持模型破坏,即复合物体可在撞击时破裂,然后再在仿真内创建多个物体。

虽然被列于物理引擎之下,但抽象层提供了一个不容忽视的有趣功能。pal 提供了一个应用中的多个物理引擎的统一接口,这就使得开发人员无需移植就可以为特定的应用使用正确的物理引擎。pal 的插件架构支持几个先进的开源物理引擎,比如 box2d、bullet、newton game dynamics、opentissue、tokamak 等等。它还支持一些商业的物理引擎,比如在游戏开发领域很流行的 havok。pal 的缺点是由于它偏重于通用抽象,因此会限制某个物理引擎所提供的功能。

使用ode产品
http://ode-wiki.org/wiki/index.php?title=products_that_use_ode#opensimulator

    1 games
      1.1 call of juarez
      1.2 call of juarez: bound in blood
      1.3 call of juarez: the cartel
      1.4 dead island
      1.5 jumper buggy
      1.6 mario strikers charged
      1.7 nail'd
      1.8 resident evil: the umbrella chronicles
      1.9 stunt marble racers
      1.10 world of goo
      1.11 x-moto
      1.12 overgrowth
    2 virtual world platforms
      2.1 opensimulator
    3 robotics simulators
      3.1 gazebo
      3.2 marilou (anykode)
      3.3 webots (cyberbotics)
      3.4 v-rep (virtual robot experimentation platform)
      3.5 ars
    4 software packages
      4.1 physics abstraction layer
      4.2 irrode
      4.3 csode-dixion


汽车模拟引擎rigs of rods ("ror") http://www.rigsofrods.org/
是一款开源模拟游戏,引擎代码以gplv3授权发放,3d渲染使用ogre渲染引擎,拥有软体物理引擎(基于的物理引擎beam)。截至2009年2月16日有1664个mod在官方网站发布,2009年9月1日增长到2222个。 beam模拟动态转接nodes(组成底盘和轮子)能够模拟,重建控件。卡车自由移动在可以影响的仿真地形上。撞入墙中也会模拟出近似真实的效果。

rigs of rods本来只是一个卡车实验模拟器可是又进行了沙盒游戏改进。飞机和船只模拟引擎自0.28版本开始添加。引擎有极高的可定制性,交通工具由连接的顶点构成。rigs of rods没有既定目标,后来增加的lua支持,提供了融入任务的可能,如计时检查点。联机支持允许16个用户同时在一个区域互动。活动范围不限于陆地,还可以是海洋和天空。

目前世界上比较成熟的open inventor(以下简称oiv)开发包有三个,它们分别由sgi(http://www.sgi.com),tgs(http://www.tgs.com)和sim(http://www.coin3d.org)公司开发的。sgi是最早提出并开发oiv的公司。但sgi的oiv主要用在unix操作系统下,没有提供对microsoft windows操作系统的支持。tgs公司是最早将oiv由unix系统移植到microsoft windows下的公司。tgs的oiv是目前世界上使用最多的oiv版本。但tgs的oiv是一个商业软件开发包,其购买开发凯发推荐的版权的费用非常昂贵,不适合普通用户学习和使用。sim公司开发的coin3d oiv可以同时在unix和microsoft windows下使用。这是一个开放源码的oiv开发包,使用协议采用的是gpl协议。非常适合希望学习使用oiv的普通用户。本文将主要介绍coin3d oiv开发包在microsoft windows操作系统下,visual c 2003开发环境中的安装与使用。

uesoft 发表于 2016-11-4 08:57:58

http://blog.e-works.net.cn/597196/articles/131734.html
利用开源代码集成开发cae系统

gui: mingw(或vs) wxwidgets
几何内核:opencascade
数据可视化:vtk
网格划分:netgen,tetgen
求解:calculix及基于libmesh自主开发的求解器
体系结构:doc/view,单文档

http://blog.csdn.net/u014470513/article/details/38036255
求解器是cae软件的核心,求解器的性能直接决定了cae软件的水平。

笔者多年从事cad/cae/cfd软件的开发,接触到了较多的开源求解器,根据笔者的经验,将开源求解器分为三类:

第一类是在精度,性能方面或者实用性上靠近商业求解器,可用于实用开发的

1. code aster

http://www.code-aster.org/

2. calculix

http://www.calculix.de/

3. elmer

http://www.csc.fi/english/pages/elmer/sources

4. openfoam

http://www.openfoam.com/

第二类是逊于第一类,能解决某个领域的问题,有实用价值的

1. maxfem

2. z88

3. impact

第三类是适合于科研教学的(数不胜数)

1. openfem

2. oofem

3. dune

4. matlab fem toolbox

5. polyde-fem

6. 飞箭

...



个人认为开源求解器主要存在两个弊端:

1. 缺乏通用性,单元类型,边界,材料等支持的类型上,一旦出现特殊的case,就无法支持。最典型的是calculix的居然不支持几何边上加荷载,虽然从实现角度来讲并不困难。

2. 缺乏实用的前后处理器,这对很多求解器的实用和推广是个很大的限制。后处理还好说一点,前处理器涉及到建几何,导入几何,网格划分,材料,属性设置等,每一项都需要比较专业的处理工具。很多开源求解器在cad/mesh等前处理做了很多工作,但仍然有很多局限性。

palabos is an open-source cfd solver based on the lattice boltzmann method. on this page you can download the code, access examples and resources, and interact with the user base.
a software tool for classical cfd, particle-based models and complex physical interaction, palabos offers a powerful environment for your fluid flow simulations.
http://www.palabos.org/32-palabo ... -at-your-fingertips
through the innovative matrix-based interface, setting up a massively parallel simulation or developing a new physical model has become simpler than ever.

for further information

    read about the numerical method implemented in palabos, the lattice boltzmann method.
    watch the video tutorial on lattice boltzmann (30 minutes).
    check out the user's guide of palabos.
    visit the forum.
    read about the vision of the palabos developers.
    download palabos.
september 27, 2009   version 0.6, release 0
(tgz|zip)   this is the first palabos release, after branching off the openlb hierarchy.
http://www.palabos.org/software/download

calculix is a package designed to solve field problems. the method used is the finite element method.

with calculix finite element models can be build, calculated and post-processed. the pre- and post-processor is an interactive 3d-tool using the opengl api. the solver is able to do linear and non-linear calculations. static, dynamic and thermal solutions are available. both programs can be used independently. because the solver makes use of the abaqus input format it is possible to use commercial pre-processors as well. in turn the pre-processor is able to write mesh related data for nastran, abaqus, ansys, code-aster and for the free-cfd codes dolfyn, duns, isaac and openfoam. a simple step reader is included. in addition external cad interfaces like vda_to_fbd are available. the program is designed to run on unix platforms like linux and irix computers but also on ms-windows.
http://www.calculix.de/

许爱国:从物理学角度评述lbm方法
http://wenku.baidu.com/link?url=qpzv4t-nsgt1t3lxcmz-qtbj9yf8lphenhnnd_m99kmbyihurh41g0hyhquhbneopa7p0tkciuail-2-rvuvmxkdai033bc9ctm3qmwwha_

uesoft 发表于 2017-7-8 22:17:33

meep (or meep) is a free finite-difference time-domain (fdtd) simulation software package developed at mit to model electromagnetic systems, along with our mpb eigenmode package. its features include:
    free software under the gnu gpl.
    simulation in 1d, 2d, 3d, and cylindrical coordinates.
    distributed memory parallelism on any system supporting the mpi standard. portable to any unix-like system (gnu/linux is fine).
    arbitrary anisotropic electric permittivity ε and magnetic permeability μ, along with dispersive ε(ω) and μ(ω) (including loss/gain) and nonlinear (kerr & pockels) dielectric and magnetic materials, and electric/magnetic conductivities σ.
    pml absorbing boundaries and/or perfect conductor and/or bloch-periodic boundary conditions.
    exploitation of symmetries to reduce the computation size — even/odd mirror symmetries and 90°/180° rotations.
    complete scriptability — either via a scheme scripting front-end (as in libctl and mpb), or callable as a c library; a python interface is also available.
    field output in the hdf5 standard scientific data format, supported by many visualization tools.
    arbitrary material and source distributions.
    field analyses including flux spectra, maxwell stress tensor, frequency extraction, local density of states and energy integrals, near to far field transformations; completely programmable.
    multi-parameter optimization, root-finding, integration, etcetera (via libctl).

meep officially stands for mit electromagnetic equation propagation, but we also have several unofficial meanings of the acronym.

uesoft 发表于 2017-7-8 22:18:47

fdtd
finite-difference time-domain (fdtd) software in c

    fully featured fdtd software, free with open c source code
    developed by active researchers and authors of a number of fdtd methodologies
    numerical solutions to maxwell’s equations in 3d, 2d, or 1d
    solutions in the time and/or frequency domain
    multiple types of boundary conditions supported
    advanced features, for greater applicability, accuracy, and computational efficiency, relative to most other fdtd software
    powerful and flexible geometric modeling capabilities, with support for computer-aided designs, meshes, and algorithmic specifications
    sophisticated material models, with the most accurate and physically meaningful fits to experimental optical data
    advanced data processing/post-processing tools
    powerful, yet simple user interface, with full control over all simulation parameters
    scalable, from desktop to massively parallel simulations
    detailed instruction manual, with illustrative examples and tutorials on both fdtd and the fdtd methodology
    large user base and discussion forums, as well as email support

uesoft 发表于 2017-8-6 12:03:04


rainbrurpg 是个open source三维的多人在线角色扮演游戏,基于 ogre3d 和 cegui 开发,通过 c 和 ruby 模块实现的面向对象设计模型。
rainbrurpg is a free, open source 3d mmorpgproject written in c .
our goal is to provide a complete toolchain, including - but not limited to - client and server to create a complete game.

cube 2 ( 也称 sauerbraten ) 是一个免费开源(zlib license)的跨平台 fps ( 第一人称射击) 游戏,与 quake 雷神之锤相类似,使用opengl和sdl技术。最强大的地方在于即时修改地图的能力。它支持 linux ,mac osx 及 windows ,甚至于 freebsd 等系统平台,在 ubuntu 上可以完美运行。
cube 2 包括lan本地和internet游戏方式,从一个控制服务端获取其他服务端的信息。有死亡竞赛、生存模式、占领模式、雷神之锤风格的夺旗模式,以及在一击必杀前提的这些模式,还有独创的在线地图协作编辑模式,这是 cube 最有趣也最受欢迎的模式。单人游戏则是对抗ai,可以是过关模式也可以是类似联机游戏的模式。特殊的是dmsp,会在玩家生命值减少的时候减慢游戏速度。 就像慢镜头。

caesaria是城市建设游戏《凯撒大帝iii》游戏引擎的开源实现。

九款城市建设游戏推荐 建造属于你独一无二的城市http://www.paopaoche.net/news/43471_all.html

uesoft 发表于 2017-8-28 20:06:27

http://opensees.berkeley.edu/
buildx opensees

gid openseeshttp://gidopensees.rclab.civil.auth.gr/

uesoft 发表于 2017-10-1 20:58:31

http://blog.chinaunix.net/uid-10386087-id-2959032.html
机器人软件开发平台 2009-02-25 19:29:15


http://www.robot-china.com/news/201604/19/32559.html
软件、硬件、模拟器,盘点九大机器人开源项目    时间:2016-04-19

sparki
openpilot
ardupilot   
turtlebot
lejos   
rock
ros   
gazebo
  morse
v-rep




http://www.iteye.com/news/31625
盘点开源机器人技术界的人气明星 2016-06-07 15:20
http://www.datasciencecentral.com/profiles/blogs/opensource-robotics-projects
本文介绍了一些最受用户欢迎的开源机器人技术,包括ros,gazebo,poppy humanoid,icub及jasmine等。

ros
ros(robot operating system)是一组开源软件库和工具,能够帮助软件开发人员创建机器人应用程序。ros的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人stair而建立的交换庭(switchyard)项目。到2008年,主要由威楼加拉吉继续该项目的研发。ros是在开源bsd的许可下发布的,带有强大的开发人员工具、最新算法、硬件抽象、设备驱动程序、库、观察仪、消息传递、软件包管理甚至更多功能。

gazebo

gazebo是一个机器人模拟器,用来创建机器人的嵌入式应用程序,使快速测试算法、设计机器人并在现实场景中执行回归测试变成可能。gazebo也可以在复杂的室内外环境中准确有效地模拟多机器人能力。gazebo 不但可以对标准的机器人传感器(例如惯性度量单元、gps接收器和单筒相机)进行建模,而且还可以对机器人环境中使用的真实固形体物理部件进行建模。同时,gazebo还具有一个强大的物理引擎,为用户提供高质量的图形以及多种编程和图形界面。

poppy humanoid
poppy humanoid是一个基于3d打印技术的开源仿生平台,由开源硬件模型、一个使用python语言和rest api的开源软件库、模拟器以及可视化编程语言组成。

icub
icub是一个开源的认知仿生机器人平台,由意大利科学家们制作而出。它配有53个发动机用来支持头部、胳膊和手、腰和腿部的运动。另外,它能够看到和听到,通过使用加速器和陀螺仪还具备人类外形和行为意识。这是意大利理工学院的成果:一种能够在不断的失败尝试中汲取经验并最终学会履行复杂任务的机器人技术。

jasmine
jasmine是一个用于群研究的微型机器人平台。在gpl许可下,jasmine所有的硬件和软件都是开放的,包括部分列表、电路板和底盘设计以及软件。而且它不依赖于浏览器、dom或任何javascript框架,因此它适用于网站、node.js项目,或任何javascript可以运行的地方。

rop
rop(robotic open platform)希望能在open hardware许可下,为机器人社区提供可用的机器人硬件设计,利用cad图纸、电计划及所需的文档来建造机器人。

openrov
openrov(open-source remotely operated vehicle)是一种由eric stackpole和david lang发起的低成本远程机器人潜艇项目,用于水下勘探和教育。而且它还是遥控的微型潜艇,约2.5公斤重、15 cmx 20cmx 30cm大。openrov也是一个开源硬件项目,为用户提供水下部分和如何组装的说明列表。

openhand
yale openhand project是一个主动促进机械臂设计使用的项目,通过快速成型技术来设计和建造,以鼓励更多的变化和创新机械硬件。该项目的目的是提供一系列开源设计,并通过社区的贡献来完善设计,并提供大量基于该平台的修改和变种。

yarp
yarp(yet another robot platform)是一个使用c 编写的开源软件包,用于连接机器人的传感器、处理器和制动器。

the orocos project
orocos project(open robot control software)网站是一个便携式c 语言库,用于机器和机器人的控制改进。

这里提到的信息只是pansop社区编辑列表的一部分。

uesoft 发表于 2017-10-1 22:53:38

http://www.docin.com/p-1606385134.html
开源分子动力学软件
lammps c
imd c语言
ls1 mardyn c
comd c语言
gromacs

uesoft 发表于 2017-10-4 18:02:46

开源eda   http://opencircuitdesign.com/

    magic, the vlsi layout editor, extraction, and drc tool.
    xcircuit, the circuit drawing and schematic capture tool.
    irsim, the switch-level digital circuit simulator.
    netgen, the circuit netlist comparison (lvs) and netlist conversion tool.
    qrouter, the over-the-cell (sea-of-gates) detail router.
    qflow, a complete digital synthesis design flow using open-source software and open-source standard cell libraries.
    pcb, the printed circuit board layout editor.

qflow
icarus
cver
odin-ii
vtr
yosys

mosis

graywolf

qrouter


kicad
geda
页: [1]
查看完整版本: