- 博客(38)
- 资源 (3)
- 收藏
- 关注
原创 从内外参推导IPM变换方程及代码实现(生成AVM环视拼接图)
最近想实现AVM拼接,看了不少博客和论文,不过比较愚钝,一直没能很好理解原理,尤其是怎么在实现时把下文中Z1和Z2消除的,所以严谨的推导了一下对应的公式,如有不对,水平有限,烦请指出~IPM变换(逆透视变换),顾名思义,即将正常透视效应消除的变换,变换结果为鸟瞰图BEV(俯视图);AVM环视拼接一般是将车身前后左右的四个鱼眼相机拼接成环视图(也是俯视),其使用的单应矩阵将四个相机转到同一个俯视坐标系。
2024-07-04 10:25:21 1763 1
原创 C++用boost实现带返回值、输入参数的异步线程池
1、线程在任务队列中获取任务以及向任务队列中提交任务都需要抢占队列的互斥锁,会造成时间损耗,尤其在任务数多,每个任务需要的时间不是很长的情况下,抢占任务队列互斥锁的时间损耗就显得更加明显。因此,线程池的方式更适合每个task消耗的时间比较长,任务数不是特别多的场景。在真实情况下,每个任务的耗时是不可提前预知的,这样用多线程可能会出现其他个线程跑完了对应批次的任务,而全都在等待最慢那个批次任务的情况,线程池则可以让先跑完的参与到剩下的任务中。写了个简单的测试用例,最终输出为。
2023-11-02 11:13:39 1002
转载 多种软件时间同步方法的原理记录(PTP、NTP、CanTsyn)
之前搞相机与IMU的时间同步基本都是硬件时间同步,然后看视频学习到一些软件时间同步的方法,很好奇就搜了一下 又没时间(懒)写全自己的理解 感觉也比较简单 蛮把一些关键的记录一下省得之后不记得专有名词就不知道怎么搜了....其实核心就是多考虑了发射t1的时间并不能存在t1的数据里,所以记录t1时间在t2的数据中发送。
2023-05-17 10:57:33 879
原创 cartographer中分支定界法理解——为什么能保证上界
储存的不同分辨率栅格图,为保证上边界正确性,即高层中的评分一定高于其底层节点的评分,压缩的地图并非直接从原图固定间隔采样,而是将固定间隔中所有坐标概率值最大值作为低分辨率地图。
2023-02-27 20:21:37 865 2
转载 卷帘相机原理和卷帘门补偿(其中循环的理解)
主要目的在于:一开始我们并不知道3D点对应的2D坐标(其实是RS compensate的图像行号),所以需要投影一次后才能知道在未补偿时的行号,然后由于补偿的缘故会导致行号改变,所以需要不断的循环补偿。其实卷帘补偿(RS compensate)本质上和激光雷达的运动补偿是一个道理,都是每个点/行的采样时间不一致导致的,需要对这期间的运动进行补偿,都是运动补偿的一种。写个伪代码进行简单的分析。写这个主要是记录在看卷帘相机补偿代码时候遇到的个小疑问,即里面用了迭代循环来补偿,一开始有点疑惑,作为随笔记录一下~
2022-11-13 11:05:22 1120 1
原创 docker容器学习
容器是什么?容器是轻量级应用代码包,它还包含依赖项,例如编程语言运行时的特定版本和运行软件服务所需的库。镜像是什么我们都知道,操作系统分为 内核 和 用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。因为镜像包含操作系统完整的 root 文件系统,其体积往
2022-11-13 10:33:02 126
原创 python多进程(类成员函数、log在多进程中使用、自己维护进程池)
主要是为了记录自己实现的1、python进程池维护2、logging在多进程中的使用3、调用类的成员函数实现多进程
2022-06-22 20:09:29 1908
转载 docker删除dead状态的容器
删除Dead状态的container:Error response from daemon: Driver devicemapper failed to remove root filesystem ebbd42547ae4f4059e70740d363edc766f0b79a102d18724787ee44f2d34f161: Device is Busy>> sudo docker ps -a得到Dead状态的container的ID XXXX>> sudo fin
2022-05-09 15:15:40 596
原创 Python\C++在linux和mac读写.csv正常和Windows乱码的解决方法
参考:「Python数据分析」CSV读取与写入的常见问题(空行、BOM、r/w/a模式、指针)_Parzival_的博客-CSDN博客
2022-03-10 20:46:35 2148
转载 python将控制台输出保存到文件
import sysclass Logger(object): def __init__(self, filename='default.log', stream=sys.stdout): self.terminal = stream self.log = open(filename, 'a') def write(self, message): self.terminal.write(message) self.log..
2022-01-20 14:13:40 1506
原创 内存监控——C++和python在linux下的实现
有时候程序会出现内存OOM的情况,这时并不会有相应的log输出,不容易定位到问题所在。最好能够在程序中监控内存,但目前没有很好的方法,Linux下可以使用top命令来查看,如:top -n 2 -d 1 —p [PID] -b > top.log-n 刷新次数-d 刷新时间-p 指定进程-b 批处理,不是原地刷新但是这样得在跑程序的时候盯着看,很麻烦很累。。。所以整理了几个C++和python的内存监测程序的实现pythoninfo = psutil.virtual
2021-10-29 19:48:45 646
转载 git有用操作记录
忽略文件一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以创建一个名为.gitignore的文件,列出要忽略的文件的模式。 来看一个实际的.gitignore例子:$ cat .gitignore*.[oa]*~第一行告诉 Git 忽略所有以.o或.a结尾的文件。一般这类对象文件和存档文件都是编译过程中出现的。 第二行告诉 Git 忽略所有名字以...
2021-08-17 19:45:49 163
原创 Python 多进程池中子进程挂了导致进程不能结束的问题小结
问题:Python multiprocessing pool not shutting down while child processes is oom开篇点题:在使用python的multiprocessing中的pool时,会出现子进程因为各种原因挂了之后主进程任务停不下来的情况。这是因为主进程没能发现子进程挂了而判定结束,从而卡在了这个地方,是python的一个bug。解决办法有两个,且看下文分解~
2021-08-16 11:06:07 8267
原创 Ubuntu下VSCode配置Clang-format,并在保存时自动格式化代码的方法(带配置文件)
花了一上午解决,google和百度查的还都有点奇怪...不能解决问题,故Mark一下Ubuntu环境中,使用VSCode编译器,在保存时自动格式代码还是很方便的,有助于养成良好的编程习惯,也方便阅读一、在VSCode中下载内置的Clang-Format插件二、本来以为这么简单就可以了,其实还要再安装一下clang-format在命令行输入sudo apt-get install clang-format安装好该文件三、设置自定义的.clang-format文件,并设置..
2020-09-12 18:58:32 9616 4
原创 C++特性分析
总体概览https://github.com/huihut/interviewextern和static关系https://medium.com/@alan81920/c-c-%E4%B8%AD%E7%9A%84-static-extern-%E7%9A%84%E8%AE%8A%E6%95%B8-9b42d000688fconsthttps://www.runoob.com/w3cnote/cpp-const-keyword.htmlthis指针单例h...
2020-09-03 20:21:41 398 1
原创 Mark一下~激光雷达点云投影到图像的方法(基于autoware的lidar_camera_calibration,外参不匹配的一些坑)
按上篇博客的思路,先使用autoware完成了对lidar和cam的外参标定工作,得到的外参包括3*3R(旋转矩阵)和3*1T(平移向量),统一在4*4的外参矩阵里。之后使用autoware标定自带的投影在rviz中显示点云投影在图像上,效果很好,然而想自己投影,使用OpenCVC的函数cv::projectPoints(pts_3d, r_vec, t_vec, camera_matr...
2020-08-24 17:56:16 9177 33
原创 关于多处include头文件出现multiple definition的问题原因分析和解决方法
之前使用C++时也经常出现multiple definition的问题,搜了一圈基本上是在#include的时候加上#ifndef或者#paraonceScanning dependencies of target ieskf[ 33%] Building CXX object CMakeFiles/ieskf.dir/src/main.o[ 66%] Building CXX object CMakeFiles/ieskf.dir/src/ieskf.o[100%] Linking CX.
2020-08-24 17:54:57 2320
转载 C/C++ 中的 static, extern 的變數
写的挺好的https://medium.com/@alan81920/c-c-%E4%B8%AD%E7%9A%84-static-extern-%E7%9A%84%E8%AE%8A%E6%95%B8-9b42d000688f
2020-08-24 17:50:51 939
原创 matlab和Eigen库中的一些旋转矩阵(方向余弦矩阵)、四元数和欧拉角之间的转换和绘图的注意事项
* \returns the Euler-angles of the rotation matrix \c *this using the convention defined by the triplet (\a a0,\a a1,\a a2) * * Each of the three parameters \a a0,\a a1,\a a2 represents the respective rotation axis as an integer in {0,1,2}. * For in.
2020-06-22 20:34:52 4122 1
原创 ros多线程数据处理方法(在主函数中循环处理消息与回调函数循环冲突解决方法)
在ros节点中,主函数中不能设置长时间的循环,否则会影响回调函数的执行主函数如下#include <iostream>#include "senser_bridge.h"#include "nav.h"int main(int argc, char *argv[]){ ros::init(argc,argv,"nav_test"); ROS_INFO...
2019-12-18 22:02:13 3576
原创 Cartographer编译方法及编译出错(glog库链接错误)解决方法
最近在重新调试Carto代码,想把自己的代码加入到Carto中,原本想在IDE中调试,然而Carto编译方式比较奇葩(catkin_make_isolated --install --use-ninja)试了Clion、VScode、Qt(ros版)编译都会出问题。不过Clion讲道理应该是可以编译的,不过要安装插件,由于我的版本太低了,就放弃了。具体参考https://github....
2019-11-20 22:36:06 10361 5
原创 无法查找或打开 PDB 文件和VS新建工程头文件链接不上的问题解决方法
在跑别人的C++工程的时候,遇到了这个问题“ConsoleApplication1.exe”(Win32): 已加载“C:\Users\PC\source\repos\ConsoleApplication1\Debug\ConsoleApplication1.exe”。已加载符号。“ConsoleApplication1.exe”(Win32): 已加载“C:\Windows\SysWOW...
2019-09-06 16:03:03 1876
原创 非线性最小二乘问题理解(包括最速下降法、牛顿法、线搜索法、置信区间法和阻尼法等)
简单介绍一下对非线性最小二乘问题的数学理解,有不足之处还望批评指正~一、最小二乘问题定义No1.最小二乘问题定义:找到一个使得F(x)值最小,即使残差平方和最小。(式中1/2作为常数对问题本质没有影响,有的地方也没有这个1/2)。对于F(x)最小,则又分为局部最小No2和全局最小No3No2.局部最小 for即在一个固定领域内,使得最小。No3.全局最小...
2019-08-25 11:21:26 1325
原创 yolov3神经网络训练(采集图片 制作数据集 分析训练结果)
本文主要是记录yolov3的一个完整的训练分析流程,以后忘了的时候自己看一看就能想起来了,附上所有代码(主要是提醒自己一些细节,不保证代码在别处也直接可以使用),可能适合有一定基础的人一 采集图片使用机器人平台上的工业相机,在ros上保存相机数据为rosbag形式,在将rosbag中相片导出来,方法为写一个roslaunch文件<launch> <node ...
2019-05-26 20:37:06 4057
原创 激光雷达(lidar)和相机(camera)联合标定调研(基于Autoware的详细步骤)
简单记录一下使用Autoware对lidar和cam联合标定的步骤和一些注意事项。首先,开源的lidar和cam标定方案不多,花了一天查资料大概有以下几个:but_velodynehttps://github.com/robofit/but_velodynehttps://github.com/robofit/but_velodyne_libhttps://blog.csdn....
2019-03-09 21:02:12 19592 61
原创 darknet_ros(yolo移植到ros系统)代码分析
darknet_ros就是darknet在ros操作系统下的版本,即在ros下使用yolo进行目标检测。首先对其文件分类:.launch文件是ros格式的roslaunch文件;src文件夹下的就是它的主要代码,把ros和darknet结合起来的部分;cfg文件是放各种yolo网络的配置,weights文件夹是放置网络权重。这些yaml文件是设置ros参数以及决定在ros...
2019-01-24 11:46:43 6930 10
翻译 wiki上卷积神经网络(CNN)的理解
本篇内容主要是把wiki上的CNN(英文版)结合自己理解,翻译了一下,wiki中文版太粗糙了...而且访问还得翻墙In deep learning, a convolutional neural network (CNN, or ConvNet) is a class of deep neural networks, most commonly applied to analyzing vis...
2018-12-21 22:45:33 4487 1
转载 AnchorBox的一些理解
Anchor box相当于对对一个中心点,取不同的窗口,从而用来检测重叠在一起的多个目标量。首先我们需要知道anchor的本质是什么,本质是SPP(spatial pyramid pooling)思想的逆向。而SPP本身是做什么的呢,就是将不同尺寸的输入resize成为相同尺寸的输出。所以SPP的逆向就是,将相同尺寸的输出,倒推得到不同尺寸的输入。接下来是anchor的窗口尺寸,这个...
2018-12-21 09:51:35 7088
转载 CNN中的卷积的理解
1、什么是卷积:图像中不同数据窗口的数据和卷积核(一个滤波矩阵)作内积的操作叫做卷积。其计算过程又称为滤波(filter),本质是提取图像不同频段的特征。其实CNN中的卷积并不是真正的卷积运算,而是一种互相关(cross-correlation)运算卷积(convolution):S=f(t)*g(t-i)互相关(cross-correlation):S=f(t)*g(...
2018-12-20 17:20:05 1734
转载 yoloV3执行命令和主函数分析
在exmaples\darknet.c中找到主函数main其中有不少二级指针,参考https://m.imooc.com/article/30475char **s; char **为二级指针, s保存一级指针 char *的地址,关于二级指针就在这里不详细讨论了 ,简单的说一下二级指针的易错点。 举例: char *a [...
2018-12-12 17:35:09 1396 1
原创 Kalibr标定camera-IMU详细步骤
Kalibr标定相机和IMU——Camera-IMU Calibration基本情况目的我们进行camera-IMU标定的目的是为了得到IMU和相机坐标系的相对位姿矩阵T和相对时间延时t_shift(t_imu=t_cam + t_shift)。需要的文件1、.bag:包含有图片信息和IMU数据的ROS包2、camchain.yaml: 包含相机的内参、畸变参数的文件,如...
2018-10-29 22:17:19 20086 28
原创 HoloLens硬件拆解记录
3 HoloLens硬件拆解3.1 引言本论文采用的是Microsoft官网所购买的第二代开发者版本HoloLens(型号为MIC1823),所有的实验和分析都是建立在该型号的HoloLens上的。拆机所使用的工具为带LED灯3倍手持放大镜、镊子、垫片、47合1螺丝刀、白手套。本论文所采用的HoloLens如图3.1。 (a)...
2018-07-08 15:02:26 5637 3
原创 HoloLens原理分析和硬件拆解
不同于Google Glass等AR产品只能在固定位置显示一个虚拟屏幕,HoloLens能把全息影像和真实环境杂糅在一起,使全息影像像真实物体一样摆放在一个固定位置,并且能像真实物体在视觉上一样近大远小、相互遮挡,让人感觉全息影像就是真实世界的一部分。而要实现这些功能,HoloLens需要判断全息影像相对于自身以及现实空间的相对位置,这就面临着两个问题:我在哪(定位)和我周围有什么(三维环境重建)...
2018-07-08 14:31:42 11838 4
原创 批量解决word中行距设置为固定值图片显示不全的问题
在写论文的时候,很多学校要求正文行距为固定值(比如说23磅),这时候在正文中的图片格式往往是嵌入式的,也就被当做文本的一部分,故其只能在word文档中显示出一小部分。解决这个问题最简单的方法就是把图片格式修改成环绕式(上下环绕),但是对于图片较多的人来说,一张张修改过去很麻烦,所以推荐尝试使用本文的简要方法,即把图片单独创建一个样式,与正文的行距分隔开。具体步骤如下: 然后只要把每个图片转换...
2018-05-03 11:26:44 53044 18
原创 Matlab中Filter Builder的使用(以滤除音乐中的人声为例)
Matlab中Filter Builder的使用(以滤除音乐中的人声为例)以matlab2017a为例先设计一个带通滤波器,修改如下参数为Input sample rate 为信号采样率,可以通过右上角按钮看滤波器通带确定之后就会生成一个Hbs滤波函数这样既可以调用该函数代码如下[y,Fs] = audioread('01_1.wav
2018-02-04 12:26:14 12898 5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人