汽车导航很普遍了,地图数据不仅可以用于导航的路径规划,还可以用于汽车内的其他应用程序,如车灯控制、增强导航及巡航控制等安全程序。
ADASIS 的目标是:
1. 制定一个定义汽车周边的地图数据和模型的开放标准,这样,地图数据可以在导航及其他程序间传输。
2. 制定一个开放标准,各种ADAS程序能获取车辆位置相关信息,如CAN-bus上的数据。
汽车上的各种传感器只能获取周围比较小范围的的状况,而地图数据可以看做汽车上一个更大能力的传感器。地图数据包括几何形状、公路等级、车道数目、限速、交通标志等等。由此,汽车能估计出MLP(most likely path)最有可能的路径。
ADASIS v1 制定了利用车辆位置与地图数据,来估计道路几何形状的标准。但各个公司都采用了自己的的,原因是v1比较复杂,能估计多条道路,并增加了数据传输的开销。v2版本就显得比较简洁,基于单路径估计,CAN-bus作为数据的传输层。
v2中的两个概念:
1. 道路的表示和汽车的位置: 道路由一系列连接起来的点表示,两点之间形成了一个SEGMENT。而车的位置,由车距离SEGMENT起始点的偏移量offset表示。
2. 除了MLP最有可能的路径外,还有多条备选的路径,作为扩展可选功能。
ADASIS v2定义了三种数据类型:
1. 汽车位置
2. 汽车环境信息,包括MLP可能路径的属性。
3. 元数据,定义本协议的一些信息,包括接口版本、地图版本及国家代码等。
以下是v2制定的重要的数据结构,及其应该包含的内容:
位置信息(POSITION)的主要内容包括:路径编号、偏移量offset、速度、与道路的相对方向、当前车道、置信度及时间timestamp(相对于上一个GPS信息的时间)。
道路(SEGMENT)的主要内容包括:路径编号、公路等级、类型(如大路、转盘、停车场等)、道路组成(如高速、单双车道等)、限速、车道数目、方向、(隧道、桥梁、分岔路、紧急车道、计算路径、服务区及复杂交叉路口的标志)。
STUB信息(类似SEGMENT之间交点):路径编号、子路径的编号、转角、是交叉路口的概率、道路类型及组成、正反向的车道数目、转弯点、是否复杂的交叉路口。
道路形状(PROFILE)的主要内容:路径编号、轮廓类型、轮廓序列点(用于本路段内位置的插值计算)、曲率(高阶插值)。
元数据(META-DATA)的主要内容包括:国家代码、区域(州县)代码、驾驶位(左、右)、速度单位、协议大小版本、硬件版本、地图提供商、地图版本、Horizon Provider兼容和模式信息。
应用范例:
ASR(Adaptive Speed Recommendation)是ADAS中地图数据的典型应用。
ASR要考虑以下因素:曲率、法定限速、十字路口、转盘。
ASR在减速的区域,会提前50-300米提醒用户减速,提前提醒的距离会依据目前车速、汽车刹车速度及司机反映时间。 在有转弯(curve)的路段,要考虑路宽、车道数目、整个路况等,ASR会综合以上因素计算合理的汽车速度。不过,目前地图中道路的曲率的精度不是一直都很精确,所以,一般需要估计和矫正模型进行计算,即ASR要有一定的学习能力。
http://blog.csdn.net/lovehong0306
有两种形式设置、取消全屏的方法,之所以称作两种形式而不是两种方法,是因为这两种方式只是写法不同,实质是一样的。
形式一:
//设置全屏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
//取消全屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
形式二:
//设置全屏
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setAttributes(attr);
//取消全屏
WindowManager.LayoutParams attr = getWindow().getAttributes();
attr.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setAttributes(attr);
全屏状态改为非全屏保持内容位置不变:
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR);
这里有一个问题:
当设置了该flag之后取消全屏,部分内容被状态栏挡住(忽略状态栏高度,以屏幕右上角为原点计算布局)
加上代码getWindow().clearFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);可以解决该问题,但再次设置全屏的时候状态栏不消失。
目前该问题尚未想到好的,
如果谁有思路解决了该问题,欢迎提供给我。
http://blog.csdn.net/lovehong0306
关于cookies,虽然可能大家都不陌生,让我们一起来看一下它的定义:Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。
Cookie通常是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服务器端开发自己定义,对于JSP而言也可以直接写入jsessionid,这样服务器可以知道该用户是否合法用户以及是否需要重新登录等。
现假设在iphone客户端,你绑定了腾讯微博或者新浪微博,如果你想更换社区的账号,则需要经历如下步骤,解除之前的绑定,跳社区登陆页,输入账号和密码进行绑定,绑定成功或者失败。如果你操作一下你会发现,这时候会有一个现象,就是,直接越过了登陆页和输入账号密码页,一下就到提示你绑定成功或者失败的最后一步,这就是cookies记录了你先前的账号和密码资料所致。
如何清除cookies呢,请看下面的代码,可以传入一个url,清除指定url的cookies而不影响其他的。
NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; NSArray* facebookCookies = [cookies cookiesForURL: [NSURL URLWithString:@"http://login.facebook.com"]]; for (NSHTTPCookie* cookie in facebookCookies) { [cookies deleteCookie:cookie]; }