自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 收藏
  • 关注

原创 b站云游戏开发

内容描述:

2020-09-16 12:54:44 1577

原创 基于深度学习的众包地下停车场地图构建

从用户车辆采集的数据一般以轨迹为主,部分带有车位,车道线,路面箭头等元素。所以不太能依赖于严格的对齐策略。但对人来说,每次采集的数据之间有很强的形状的相关性。使用这种整体的形状相关性正好是深度学习擅长的地方。 把三维的轨迹转化为2d的图像,高度信息用颜色表示。 网络的输入是一张画有两条轨迹的图片。可以设定一个像素代表一定的距离值。比如一个像素代表50cm,那么一个1000*1000像素的图片可以代表500*500米的区域。两条轨迹分别用不同的颜色代表,比如目标轨迹用红色,待对齐轨迹用蓝色。然后背景用灰色

2020-09-16 12:30:57 1119

原创 浏览器CORS跨域笔记

CORS的意义:在不同domain之间共享数据 通过在请求中附带登陆token实现登陆过一次后,就可以免登陆的功能 如果有恶意网站使用一些特殊手段骗取浏览器把本来只会发给其他网站的token也发给恶意网站了。这下恶意网站就可以使用token以用户的身份登陆了。(Cross-site request forgery) 为了防止这种行为,浏览器一般只允许相同demain内的web相互请求数据 但实际情况这是不现实的,一个页面的所有数据不可能都存在一个domain下。比如第三方的api 所有有了

2020-08-15 18:56:38 2405

原创 web存储技术笔记

系统缓存下载 从内存加载 从硬盘加载 应用缓存

2020-08-15 17:06:01 201

原创 insta360数据逆向

描述

2020-08-13 14:03:06 347 1

原创 基于强化学习的放置类游戏

描述

2020-08-13 13:47:34 761

原创 训练模型识别萌的图片

数据源:pixiv先收藏170+我比较喜欢的风格的画师 python写程序爬取这些画师的所有图片:https://github.com/upbit/pixivpy 数据爬下来的图片直接上传阿里oss,然后每个图像的属性存阿里mongodb 建了一个阿里ECS服务器来运行爬取程序,发现下载速度很慢,而且经常连接错误,python退出。 于是在阿里日本的ECS服务器上运行爬取程序,下载是很快。但是把下载的数据上传国内的OSS却慢得不得了,比在国内服务器直接下载慢。好奇这个现象的原因。 最后还是在国

2020-08-13 13:32:54 262

原创 ORB-SLAM3笔记

相对orbslam2的改进点有: IMU的官方支持 引入相机通用类,方便替换不同模型的相机。并且官方实现了通用相机模型,就是pinhole-equi或者fisheye模型。 假如地图管理功能,支持多个子地图的存在,以及可能的时候合并子地图 recall更高的回环检测,因为要合并地图。如果recall太低,会照成大量的重复地图。 之前的做法是要求DBOW能够找到连续的3 frame。现在改为只要找到1 frame,然后就做集合一致性检查。 使用通用相机模型带来的改变 因为非小孔

2020-08-12 15:40:14 729

原创 坐标系变换和对齐

本篇文章先定义坐标系变换,然后讲解什么是坐标系的对齐,最后说明怎么对一个物体做非刚体的对齐。三维空间的点要像用数学来表示的话,就必须要要先建立坐标系。只有确定了坐标系,才能给每个3d的点一个坐标值。 最开始用来计算3d点坐标值的坐标系我们叫做局部坐标系。 对3d点做任何旋转平移操作后,每个3d点的坐标值发生了变化。这个过程可以看作把这些3d点在另外一个坐标系表示出来了。这里的另外一个坐标系就叫做全局坐标系。而这里的旋转和平移的操作,也就是把点在局部坐标系中的坐标值转换成全局坐标系中的坐标值的变换。

2020-08-12 13:59:07 3555

原创 相机通用模型

有很多讲相机模型的文章,一般会从小孔模型开始讲,后面再讲到鱼眼模型的时候,就都是数学的东西了。而且小孔模型以外的模型的命名也很乱,所以加大的理解的难度。其实可以用很通俗的模型来解释所有类型的相机,这个就是这里要讲的东西。不管什么样的相机,其实本质都是做了一件事情:把不同角度来的光的强度记录在一个二维的点阵上。换个说法是,相机就是一个函数,输入是不同的角度,输出是二维的坐标。 r=f()。r是离图像中心的距离,是光线在透镜上的入射角 之前说得五花八门的相机模型其实就对应不同的f函数。 只要知道一

2020-08-12 11:45:43 562

原创 全景slam

全景slam是指用全景相机来做视觉slam。全景相机有多种方式实现,目前性价比最高的是用两个背对的鱼眼相机来实现。比较好的供应商有insta360。下面的说明都是基于这种全景相机。 全景相机输出的原始图像是两个正方形的图片,图片里有一个球型图案。图案上的每一个像素均匀代表一个方向的光的强度,后面有文章会详细介绍相机模型。 原始图像一般会转换成一张1:2的图像。图像的横坐标对应一个球的经度,纵坐标代表球的纬度(360:180) 所以跑slam有两种方式 直接在原始图像上跑,看作两个刚体连接的摄像机。目

2020-08-12 11:09:04 1756 2

原创 kalibr标定实践

二维码的标定版(aprilTag)对分辨率的要求比棋盘格高。但aprilTag不需要所有点同时被看到。所以在标定大视角的镜头的时候,棋盘格也有优势。因为大视角的相机,在分辨率比较吃亏,但是视野大,也很容易看到全部各点。所以在对分辨率有要求的情况下,可能棋盘格是唯一的选择。 使用--show-extraction可以看到特征提取的结果。 标定大视角fisheye的时候一定要有足够量的正面图像,不然会初始化失败并且优化发散。([ERROR] [1596945603.223429]: Did not conv

2020-08-09 12:42:00 3503 3

原创 python3和pip3安装

sudo apt-get update下面指令安装的是python3.5sudo apt-get install python3如果想让python自动指向python3的话:update-alternatives --install /usr/bin/python python /usr/bin/python3.5 1安装pip3apt-get -y install py...

2020-01-03 11:05:26 261

原创 神经网络训练经验

网路介绍:层数太深,变得难训练,特别是全连接层不要超过3层 训练容易卡在输出值的均值附近(平坦期) 减少batch size可以有效跨越训练的平坦期 最差的GPU运算一半也有最好的cpu运算的10倍效率 用小batch度过平坦期后,也需要加大batchsize。因为当小batch下降到一定程度之后,就一直会震荡了。...

2020-01-01 13:19:07 540

原创 docker常用指令

把image存为文件,用于传输: docker save -o xxx.tar image_name 把文件导出成image: docker load -ixxx.tar 启动带gpu的image: docker run -it --rm --gpus all image_name /bin/bash mount: docker run -it --rm --gpus ...

2020-01-01 12:41:30 209

原创 docker之pytorch+CUDA

docker之pytorch+CUDA

2019-12-26 15:58:59 991 1

原创 docker之matlab

https://github.com/mathworks-ref-arch/matlab-dockerfile

2019-12-26 15:57:05 2100

原创 opencv stitch 里面几个scale的整理

所有scale都是和原始图片的比例。所有xxx_xxx_aspect都是两个scale的比值,比如seam_work_aspect就是seam和work之间的比例。work_scale:提取特征点的图片大小,所有后面匹配,homography的计算都是基于这个size的。seam_scale:投影前的分辨率。因为程序在提完特征点后,就把图片缩放到这个scale了。后面投影的时候是用这个...

2019-12-26 13:32:15 608 2

原创 RTI DDS的xml说明

RTI DDS使用的xml有几种类型。录制和播放程序使用的xml。 指定topic, domain,存放文件名等。 用于建立DDS各种对象的配置文件。比如datawriter,paticipant等 根目录是<dds> <domain_library> <domain_participant_library> 等 所有DD...

2019-12-11 19:50:29 1493

原创 录制和播放RTI DDS(6.0)数据

录制和播放程序:/home/chamo/rti_connext_dds-6.0.0/bin/rtirecordingservice -verbosity 3 /home/chamo/rti_connext_dds-6.0.0/bin/rtirepalyservice执行文件可以不带任何参数,所有配置都在配置文件里面完成。默认的配置文件在:/home/chamo/rti_connext_...

2019-12-11 16:23:10 1322

原创 地图显示技术

为什么地图显示是一个问题 当地图大了后,需要分块存储,并按照层级去索引。 地图显示技术分为哪些部分? 地图数据:Open Street Map 地图数据提供商一般会以Api的形式把自己的数据共其他人使用。 也可以用文件形式来存储,比如GeoJson,或者ssql数据库 地图渲染:Leaftlet, Mapbox GL 把地图数据变成真的图。这里面可以决定地图的风格...

2019-12-09 17:15:19 485

原创 javascript的image对象,在设置src属性后,会随机加载图像失败

debug了一下午的问题。为了在canvas里面显示选择的一张图片,我先把图片转成base64格式,然后设置到一个image里面。但问题是有的时候canvas能够拿到图片数据,有时候不行。原因是image在加载base64的时候,需要一些时间。但是JavaScript很多函数都是非block的。所以需要在对应的回调函数中去做该做的事情。正确的写法:var img = new Image...

2019-11-11 21:10:10 832

原创 sshpass使用心得

简介:使用ssh或者scp的时候需要手动输入密码。在写脚本的时候,这点是不允许的。但因为ssh也不支持pipe或者<<等方式输入密码。说以有了sshpass这样一个模拟输入密码的程序。安装:sudo apt-get install sshpass用法:sshpass -p {密码} ssh -o StrictHostKeyChecking=no {用户名}@{主机I...

2019-11-05 13:37:51 944

原创 Chamo VPS v4.0 技术概念

概述:v4.0的目的是实现地图从无到有的这个过程的建立。要求不管数据的多少,地图都需要有一定的呈现形式,并且随着数据的增加,地图能够稳定的丰富起来。而且数据的增加不会带来非线性的维护的增加。最后能够接受各种质量的数据。新概念:视觉指纹:Visual Finge Print(VFP)每张图片都能提取一个VFP,换个说法是VFP是一张图片的信息浓缩。只用存储VFP来代替存储完整的图...

2019-10-25 14:35:23 263

原创 鱼眼相机原理

小孔模型和鱼眼模型的比较普通的小孔模型的示意图:鱼眼模型的示意图:对于小孔模型,在焦距一定的情况下感光片的面积直接决定了视场角。因为在小孔模型中,光都是直线传播的。因为鱼眼相机中,光通过镜头后,光路发生转向。在焦距和感光片大小都一定的情况下,也可以得到不同的视场角。鱼眼镜头的去畸变去畸变是指用小孔模型来等效鱼眼模型。如果限定光线穿过镜头后不能转向。那么只有增大感光面...

2019-10-24 13:30:34 4679 2

原创 libjpeg在交叉编译后读取jpg图片失败

libjpeg是一个非常古老的代码,但居然是c/c++世界里面唯一读写jpg格式的代码。古老的jpeg竟然用到一个叫setjmp的非结构动态跳转语句。问题描述:在ubuntu中交叉编译QNX上运行的opencv的imgcodecs库。imgcodecs会调用libjpeg这个库,所以同时交叉编译了libjpeg。在本地编译libjpeg都能正常工作,但交叉编译放到target平台后,相...

2019-10-18 22:00:21 646

原创 交叉编译原理分析

什么是交叉编译:交叉编译是指在一种环境(操作系统+芯片指令)中编译另外一种环境的程序。名词定义:host:执行编译操作的环境 target:最终运行编译结果的环境有些什么特殊的地方:编译器一定是host中的程序,但是编译器输出的程序却是是target中运行的。 host上面不存在target中编译或者运行需要的头文件和库。要做的事情:需要一种能够在host上执行,然后把...

2019-10-17 11:33:21 1722

原创 ROS和DDS的区别总结

背景:ROS是在机器人领域大家常用的通信中间件。DDS是一个很古老的用在很多safe-critical领域的通信中间件(航天,汽车,战舰,金融等)。两者要解决的问题都是一样的:灵活,可靠的通信网络。并且两者都是在实际使用诞生的协议,所以都有很强的实用性。但两者有一些不同的价值观:ROS所在的机器人领域更加开放(基本都是开源软件),用户的参与度更高(大部分问题都是被社区人员回答)。但是在工业...

2019-10-16 13:19:01 5993 1

原创 EGLStream理解

视频流的数据量巨大,如果要在不同的进程间传输视频流就必须考虑一些数据传输的底层问题,比如尽量不要做拷贝。以及互斥问题,不能一个程序还没把一张图片读完,共享的内存就被改变了。EGLStream就提供了这样一种功能,支持多个进程间进行无拷贝的视频流传输。EGLStream主要原理是设置了producer和consumer。producer负责把图片放入到EGLStream流中,consumer...

2019-10-13 12:03:16 2208

原创 不显示gcc的警告消息的方法

有的时候遇到模板编程,warning一大堆,结果error消息完全看不到了。可以在编译选项中加入-w来禁止warnings显示。注意-W和-w是不同的。-w后面不用加任何东西,代表不显示所有的warning。-W需要加入各种选项,比如-Wall,-Werror等。...

2019-10-09 11:44:51 2573

原创 最简单的makefile

makefile现在已经很少直接去编写了,主要是考虑到代码的可移植性,不过偶尔还是需要阅读和修改一下makefile。这里把makefile最基本的用法总结下:chamo: cp sss sss1chamo1: chamo gcc hello.cmakefile其实不用来做编译,而是作为加强版的bash脚本也是可以。主要特点是加入了变化检测和依赖控制。如上面代码。cha...

2019-10-03 21:45:21 386

原创 CAN BUS原理理解

CAN BUS的各种特点这里就不多说了,随便搜搜就有很多介绍,这里着重从底层逻辑上讲清楚CAN BUS是怎么传输数据的。另外本文中电学相关的知识不一定严谨,大家能懂意思就行了。电线传输数据的原理:如上图,B房间的人要知道A房间的信息,只需要A房间的人在电线a和b之间加上一个电压脉冲。B房间的人就能在示波器测出这个电压变化,从而知道A的信息。如果假设电线b是接地的。那么其实只用一更导线就...

2019-10-02 14:36:36 5751 1

原创 gcc 9 安装

sudo apt install software-properties-common sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt install gcc-7 g++-7 gcc-8 g++-8 gcc-9 g++-9 sudo update-alternatives --...

2019-09-28 16:14:17 6785

原创 ROS以及Catkin build安装

①Setup your sources.listsudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'②Set up your keyssudo apt-key adv --keyserv...

2019-09-07 11:46:51 3522

原创 大规模视觉定位地图关键技术:综述

大规模视觉定位地图需求:室外有和GPS对齐的能力,室内有和语义地图对齐的能力。 只得到xyz值的意义不大,一定还要和某些语义关联起来。虽然基于定位地图可以自己建立各种语义信息,这样保证了语义信息和定位信息的对齐,但另外一种途径就是让生成的定位地图直接和其他语义地图对齐。室外的话gps坐标作为通用的位置接口,室内需要手动和地图对齐,或者结合wifi定位等泛定位信息,但这要求室内定位地图的相对精...

2019-08-27 19:47:58 1492

原创 大规模视觉定位地图关键技术:基于ORB-SLAM的纯视觉定位算法

问题:纯视觉,使用特征点描述符,尽可能多的利用各种信息的前提下,什么样的定位算法最好?需求:要有高效的全局匹配能力。 需要用里程计来弥补地图匹配不好的区域。 要有全局地图可以提高里程计的精度。 里程计和全局的结果要能平滑的融合。结论:尝试了很多方案后,觉得使用给予ORB-SLAM修改的版本笔记哦好。 修改内容: 把ORB-SLAM的LoopDetect用Maplab里面...

2019-08-27 18:19:38 1225 1

原创 大规模视觉定位地图关键技术:GPS数据边缘化

问题:为了对大量gps数据的平均,需要保留所有gps以及相关的图像数据,这会让建图中的BA操作非常慢。因为会处理大量的冗余的视觉信息。如果把冗余的视觉信息扔掉,用于gps平均的数据又不够多。原理:本研究提出可以对剔除掉的gps数据进行边缘化。让这些剔除掉的gps信息让然对系统有作用。其本质是把所有数据求和后再平均变成了做滑动平均。实现:假设每个gps数据用一个不确定度和均值表示...

2019-08-25 12:44:37 426

原创 大规模视觉定位地图关键技术:使用视觉匹配提升GPS的绝对定位精度

问题:单目相机的弱点在于很难把同一个地点不同方向的特征对齐。比如道路上两个方向行驶的车,虽然空间位置很近,但是从视觉的共視关系上看却很远。如果只使用视觉的话,唯一能够对不同方向的地图进行对齐的信息就是十字路口。但这种方式不是十分稳定。能够提供绝对位置的gps的精度在10米左右,又不够用。视觉建图中,特征点和相机相互耦合,理论上任意两个特征点的位置都是相关的。这样给大规模的建图带来了困难,因...

2019-08-25 12:35:42 2466 2

原创 生命十问

物竞天择,适者生存。随着科技的发展,环境对人类的选择作用已经非常弱了,那么人类现在是进化了还是退化了呢? 假如一个人生活在一个绝对物质丰富的空间,并且他们的寿命也是绝对永生的。换句话说任何为了生存而做的事情都是无意义的。也不用担心任何时间不够用的事情。可以想象这对男女的生活是这样的:饿了就吃,吃了就不饿了。然后身体慢慢消耗能力,饥饿感又出现。然后又吃。。。然后这样的过程就无限的循环下去,基本想不...

2019-08-25 11:07:48 2320 12

原创 因为stl ABI不一致造成的链接错误

有这样一种现象,本来所有连接都好好的,通过cmake然后多连接一个库后,本来找得到的函数也出现大量的undefined symbol错误。可能的原因是在新的库的findPackdge中设置了GLIBCXX_USE_CXX11_ABI这个选项。先解释ABI是什么。ABI叫做程序二进制接口,就是编译出来的bianry文件之间的调用的规则。比如低版本的gcc编译出来的print函数,想要在高版本...

2019-08-20 12:14:32 527

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除