发布于 2018-10-18   248人围观   0条评论

v c++ 11

右值引用即临时变量,没有名字

移动构造器重载使用右值引用参数,避免进行拷贝构造过程。

[ref] https://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/index.html


[ref] https://codinfox.github.io/dev/2014/06/03/move-

查看更多
red    发布于 2018-10-14   198人围观   0条评论

概述

  • 中心化训练
  • 去中心化执行


  • 训练时,可获取到其他智能体的信息及附加环境信息。
  • 执行时,这些信息不可见,只能获取到局部信息。


  • critic,可以通过observation,从其他智能体中学习策略policy
  • actor,只能获取局部


  • 可在线学习
  • 使用集成策略进行训练,以提高稳定性(合作与竞争环境)


方法

Q , i 第i个agent,

  • 输入:
     所有智能体的actions,
     环境state附加信息x,x一般是所有智能体的 observations,加上一些额外的环境信息
  • 输出:
     Q值

期望回报梯度:

使用DPG方案,使用deterministic策略μ,期望回报梯度更新为:

     

其中D是存储了所有agent的experienced replay buffer,其元素数据结构为:

      

更新centralized action-value function 

              这个式子中包含对其他智能体信息已知的假设。

                  需要在test的过程中去掉相关假设。


去掉training过程中的知道其他agent信息的假设

需要增加对的维护,这个式子是对agent j 的真实action 的估计。

最大化log概率,并使用entropy正则。直接将log probably 输入Q的计算,而不是不是采样得到的

     

这样使用估计的其他agent policy,可以将上面的关于y的公式改成:

    


查看更多
发布于 2018-08-08   132人围观   0条评论

查看更多
发布于 2018-06-22   221人围观   0条评论

 一、特征选择

    ORB

 

二、三个线程,追踪、局部地图构建和闭环控制

Tracking: 负责每帧的相机定位,决定何时插入新的关键帧;
  1. 首先,通过前一帧图像帧初始化特征匹配,使用motion-only BA优化位姿;
  2. 跟踪丢失时,位置识别模块(place recognition moudule)进行一个全局重定
查看更多
SLAM    发布于 2018-02-02   393人围观   0条评论

参考资料

https://segmentfault.com/a/1190000000514987

http://blog.sina.com.cn/s/blog_7445c2940102whjq.html

http://blog.csdn.net/xiahouzuoxin/article/details/39582483

 

前言

 

下面按照如下顺序介绍卡尔曼滤波器:

1.问题的提出:介绍卡尔曼滤波提出的原因以及针对的问题。

2.核心思想:一句话表述卡尔曼滤波本质。

3.应用场景:卡尔曼滤波器应用方向、基础和前提。

4.实现方法:经典的五个公式。

5.定性分析:从单变量入手分析卡尔曼滤波器,定性的了解核心思想。


1.解决问题

       在对一个问题的线性估计(预测)中,估计(预测)出的结果会存在一定噪声(是个值得思考的问题),那么如何消除这个噪声呢?(可以看出,卡尔曼是为了消除噪声,这就是叫滤波器的原因吧。)那么很自然的我们可以想到用观测(直接测量估计量)来消除误差。但是,很不幸的是,观测的数据也会存在噪声(任何的测量都有误差)。下面问题归结表述为,已知估计值和测量值,以及估计和测量的误差,那么如何得到较为真实的数值?​借用xiahouzuoxin的图,可以更加直观的看到估计和测量噪声存在的原因。​

:线性估计,就是根据当前状态和已有知识,推算出未来状态。举个例来说,已知当前小车速度和加速度,求取下一时刻速度。

2.核心思想

       假设测量和估计的噪声都是符合高斯分布的白噪声。那么一个可行的办法是,将两个噪声的概率密度相乘,得到一个新的概率密度来近似表达真值。

:两个高斯分布概率密度相乘后还是高斯分布。

3.应用场景

3.1.观测系统以及估计系统均为线性离散系统

    观测系统以及估计系统均为线性离散系统,公式表述如下:

    (1)为估计方程,(2)为测量方程

:(1)式中x(n)为系统状态向量,u(n)是驱动输入向量,w(n)为估计噪声,A,B为常系数矩阵,其实就是状态空间中的状态方程。​(2)式中z(n)为观测(测量)结果,H(n)为观测矢量,v(n)为观测噪声。

 

3.2估计噪声和观测噪声均为符合高斯分布的白噪声

    所谓的白噪声就是时域上分布为钟形线,频域上分布为一条直线的噪声信号。

 

3.3两个符合高斯分布的概率密度相乘后可以融合为一个新的高斯分布

    这一点也就是卡尔曼滤

查看更多
发布于 2017-11-12   234人围观   0条评论

2016 年是虚拟现实(Virtual Reality)的元年。许多虚拟现实的消费产品将要诞生,众多的顶级软件企业同样争先恐后地支持虚拟现实设备。这项新的设备媒介同时驱动了浏览器开发商对Web进行虚拟现实的支持。WebVR的发展正集中于不可思议的视觉体验以及创建在线虚拟现实环境的工具 之上。

VR_images

Mozilla VR团队正致力于在浏览器中支持在线创作及显示VR内容,并于本周获得重大突破。通过与Google Chrome团队Brandon Jones的密切合作,Mozilla团队发布了WebVR API 1.0版本。

近期的VR技术发展以及来自社区的反馈,促使我们改进API以适应开发者的需求。

包括以下一些改进:

  • 对于特定VR设备的渲染与显示。
  • 在WebVR页面链接之间遍历的能力。

  • 一个可以枚举VR输入的输入处理设备,包括 六自由度动作控制器(6DoF)

  • 既适用于坐姿体验,也适用于站姿体验。

  • 适配桌面及移动应用。

我们很高兴能够分享对于API在以上一些方面的改进。值得注意的是,上面仅仅列举出了一小部分的改进。对于全部的改进详情,可参考API全稿或参考Brandon的博客

本文主要讨论的是本版本API的基本使用方式,这需要读者能够理解一些复杂的概念,例如数学中的矩阵。此外,您也可以通过阅读A-Frame或者WebVR boilerplate*以快速入门WebVR。

在我们着手WebVR之前,我们应该特别鸣谢* Chris Van Wiemeersch (Mozilla), Kearwood “Kip” Gilbert (Mozilla), Brandon Jones (Google), 以及 Justin Rogers (Microsoft) *等人对此作出的突出贡献。

如何开始实施WebVR

我们计划在上半年于* Firefox Nightly上做基于1.0 APIs的稳定版实现。您可以通过Bugzilla查看全部详情,或者通过iswebvrready.org*查询更新状态。

想要从现在开始吗?目前,开发者可以通过使用Brandon Jone的实验版Chromium来做一些验证性的实验。

* three.js

查看更多
我的翻译    发布于 2017-11-12   221人围观   0条评论

关于译文,本文英文题目为Microservices - Please Don't,在此我联想到多年前的一本书叫做《千万别学英语》,其本意是千万别这样学英语,本文的目的亦是如此,因而这里我将题目翻译为千万别用微服务,实则是想建议读者,千万别这样使用微服务。在此声明,避免误解~。

本文改编自2015年12月份我在波士顿Golang大会上的一个简短演讲。

一时间,仿佛全世界都在痴迷于讨论微服务(microservice)。无数的新闻扑面而来,都在吹捧着诉说微服务模式如何拯救了他们的工程架构。你甚至可能曾在这样的公司工作过,他们大肆宣传这种轻量神奇的微小服务,并极力宣传他们是如何使用微服务解决旧系统的冗余,难以维护等诟病的。

当然,就理想目标而言,没有什么比现在的技术更先进,更靠谱的了。理想的美便在于这几个月以来,我们始终在为接近完美而不断地努力着。

我将阐述一些关于微服务的主要误区和坑点,并借助于一些像上述那样,将庞大的遗留系统按照微服务的理念进行拆分的企业作为我的论据。当然,我并不是想用此文来说明微服务是不好的,而是想通过我的叙述,能够让大家在决定使用这种模式之前提出一些问题,多一些思考,再决定是否向这种模式迁移,是否能够真正的适合你们自己的项目。

到底什么是“微服务”?

目前真的没有对于微服务到底由什么组成或者不包含什么的一个完美的定义,但是已经有少数微服务的支持者,编撰处理一套比较合理的说明。

再强调一下,微服务不是一个复杂的整体。在实践过程中,微服务真正被赋予的意义在于,其仅仅能够处理尽可能有限的域空间,以便其能够尽可能做最少的事情,在整个应用栈中达到预期的服务目标。举一个具体的例子,如果你有一个需要“登录服务”的银行,在这里不想要做的是"获得用户的交易记录"这项需求。你需要将这一需求移交给“交易服务”一类的进行处理(记住,命名是一件值得商榷的事情,并不是轻而易举的)。

此外,当人们讨论微服务的时候总是在潜意识里认为服务之间是通过远程交互的。因为它们是独立的进程,而且经常运行在远离其他服务的地方,所以使用REST,或者RPC协议一类的远程协议进行通信变得十分自然。

一开始,这看起来着实很简单,我们好像只需要把像RES

查看更多
众成翻译 我的翻译    发布于 2017-11-12   235人围观   0条评论

关于译文,本译文的原文由于取材于网络,出现了代码缺失,及不正确文字的现象,导致翻译过程一度陷入困境。特在此更正原文地址,以便参考。查看原文


我们非常荣幸地宣布, 首款WebVR补丁 ,已经登陆到Servo引擎。

如果你已经迫不及待地想要开始尝试,你可以下载兼容HTC Vive试验版Servo binary 。打开你的VR设备,运行 servo.exe --resources-path resources webvr\room-scale.html

目前版本支持WebVR 1.2 规范,使得API可以像WebWorkers一样,不必运行在主线程,而是运行在一个上下文当中。

我们一直致力于优化VR的渲染方式,以获得更高的FPS以及少于20ms的延迟,以避免产生眩晕。如图所示是整体架构的介绍:WebVR Architecture in Servo


Rust-WebVR 库

Rust WebVR是一个弱耦合库,提供了WebVR标准实现,以及与供应商特定的SDK集成(OpenVR, Oculus …)。使其与自身组件解耦带来了以下好处:

  • 快速的开发-编译-测试周期。 在完整的浏览器中,编译时间快于开发及测试时间。

  • 贡献代码变得更加容易 。因为开发者无需纠结于复杂的浏览器代码。

  • 适用于各种第三方项目: 使用原生RustRoom scale demo

这套库的API既希望能够简单使用WebVR API,同时还要能够满足Rust的设计模式。VR服务特征提供了使用像OpenVR以及Oculus SDK等这样的原生SDK的方法。API提供了诸如初始化,关闭,事件轮询以及VR设备发现等操作:

  1. pub trait VRService: Send {
  2. fn initialize(&mut self) -> Result<(), String>;
  3. fn fetch_devices(&mut self) -> Result<Vec<VRDevicePtr>, String>;
  4. fn is_available(&self) -> bool;
  5. fn poll_events(&self) -> Vec<VRDisplayEvent>;
  6. }

VR设备特征提供

查看更多