- 博客(165)
- 资源 (1)
- 收藏
- 关注
原创 利用Valgrind进行内存泄露检查
Note: Valgrind is Linux only. If you aren’t running Linux, or want a tool designed from the start to make debugging segfaults and memory issues easier, check out Cee Studio, a fully online C and C++ development environment from our sponsor. Cee Studio pro.
2021-03-31 16:25:54 630
原创 动态链接库之dllexport和__attribute__(visibility)
在实际的应用中,我们需要动态库导出特定的符号(有些接口不对外暴露,只内部使用),下面的例子展示了具体的实现方式。1. code//log.h#pragma once#define BUILDING_DLL#if defined _WIN32 || defined __CYGWIN__#ifdef BUILDING_DLL#ifdef __GNUC__#define DLL_PUBLIC __attribute__ ((dllexport))#else#define DLL_PUBLI
2021-03-31 16:22:46 2309 1
原创 Cygwin vs MinGW vs MSYS2
1. CygwinCygwin is:a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.a DLL (cygwin1.dll) which provides substantial POSIX API functionality.Cygwin is not:a way to run native Linux
2021-03-31 16:18:23 449
原创 不同操作系统相关的宏
1. win32或者win64_WIN32 Defined as 1 when the compilation target is 32-bit ARM, 64-bit ARM, x86, or x64. Otherwise, undefined._WIN64 Defined as 1 when the compilation target is 64-bit ARM or x64. Otherwise, undefined.#if defined(_WIN32)#define OS_WINDO
2021-03-31 15:59:08 751
原创 wsl2+kali-rolling+win kex+Connection refused 10061
wsl2+kali,可以在win10下运行一个效率高于virtualbox等虚拟机的linux,kali-win-kex基于VNC(In computing, Virtual Network Computing (VNC) is a graphical desktop-sharing system that uses the Remote Frame Buffer protocol (RFB) to remotely control another computer. It transmits the ke
2021-03-31 15:44:22 2540
原创 std vector如何避免频繁内存创建
1. std vector中添加元素In C++ vectors are dynamic arrays. Unlike arrays, they don’t have a fixed size. They can grow or shrink as required. Vectors are assigned memory in blocks of contiguous locations. When the memory allocated for the vector falls short of
2021-03-13 16:55:55 631
原创 cruise-automation Webviz 简介
Our initial focus was to build a suite of these panels that corresponded to existing open source tools like rviz, rqt console, rqt_runtime_monitor, rostopic echo, and rqt_plot. With further developm...
2020-04-05 17:11:13 3038 9
原创 ros下使用google gflags
不同ubuntu版本对应不同的gflags版本利用sudo apt install libgflags-dev命令在不同ubuntu版本上安装的gflags的版本不同,ubuntu 16.04默认的版本为2.1,而ubuntu 18.04的版本为2.2。2.1和2.2版本在ros下的使用区别:2.1 cmake中通过find_package找不到gflags,而2.2可以找到。find_pa...
2020-04-01 17:08:57 986
原创 坐标变换(8)—复特征值与旋转
1. 共轭复特征值设AAA是n×nn\times nn×n的实矩阵,Ax‾=Aˉxˉ=Axˉ\overline{Ax}=\bar{A}\bar{x}=A\bar{x}Ax=Aˉxˉ=Axˉ假设λ\lambdaλ是AAA的特征值,xxx为λ\lambdaλ对应的特征向量,则λˉ\bar{\lambda}λˉ同样是AAA的特征值,而xˉ\bar{x}xˉ是对应的特征向量,Axˉ=Ax‾=λ...
2020-04-01 12:13:10 2236
原创 禾赛+速腾 vs Velodyne+Ouster
本文只是对论文内容的简要总结,不对不同厂商激光雷达的好坏进行评价。1. LIBRE最近名古屋大学(Nagoya University)和autoware一起发表了一篇关于激光雷达数据集相关的论文《LIBRE: The Multiple 3D LiDAR Dataset》,数据集地址https://sites.google.com/g.sp.m.is.nagoya-u.ac.jp/libre...
2020-03-31 12:10:40 2490 2
原创 坐标变换(7)—旋转矩阵和特征向量
I am still waiting for the day I’ll use mathematics integration in real life.— Derrick Obedgiu1. 特征向量在给定一个线性变换TTT,作用于一个非零的向量vvv,没有对vvv进行旋转,仅仅是对vvv进行了λ\lambdaλ倍的拉伸,如下式所示,T(v)=λv(1)T(v)=\lambda v...
2020-03-26 09:28:04 8497 1
原创 坐标变换(6)—齐次变换矩阵
前面的文章主要介绍了旋转矩阵,对于刚体的运动,除了旋转外还有平移。在机器人及自动驾驶中,经常用其次变换矩阵将旋转和平移进行统一。 前面的文章也介绍过其次变换矩阵,本文算是一个总结。1. SE(3)将旋转矩阵和平移向量写在同一个矩阵中,形成的4×44\times44×4矩阵,称为special Euclidean group,即SE(3)SE(3)SE(3),T=[Rp01]=[r11r12r...
2020-03-26 09:27:14 7273
原创 坐标变换(5)—用旋转轴和旋转角表示旋转
任何旋转,都可以用一个旋转轴ω^\hat \omegaω^和一个旋转角θ\thetaθ来描述。1. 坐标系的线速度和角速度如上图,在旋转的刚体上,附加一个body frame{b}\{b\}{b},记为{x^,y^,z^}\{\hat{x},\hat{y},\hat{z}\}{x^,y^,z^}。对于三个轴而言,绕着ω^\hat \omegaω^旋转的轨迹为圆。当然,上述坐标轴{x^,y^...
2020-03-26 09:26:20 6123
原创 坐标变换(4)—旋转矩阵
1. 群群(Group)是一种集合加上一种运算的代数结构。我们把集合记作AAA,运算记作⋅\cdot⋅, 那么群可以记作G=(A,⋅)G = (A, ·)G=(A,⋅)。群要求这个运算满足以下几个条件:封闭性: ∀a1,a2∈A,a1⋅a2∈A\forall a_1, a_2 \in A, a_1\cdot a_2 \in A∀a1,a2∈A,a1⋅a2∈A.结合律: ∀a1,a2...
2020-03-26 09:25:09 3192
原创 坐标变换(3)—同一坐标系下的变换
除了不同坐标系之间点的坐标变换,在同一坐标系内也存在对点的变换操作,例如平移,旋转等。1. 平移在同一坐标系下,平移操作将空间中一个点沿着一个已知的矢量方向移动一定的距离,如下图所示,将AP1^{A}P_{1}AP1沿着AQ^{A}QAQ进行平移得到AP2^{A}P_{2}AP2易得,AP2=AP1+AQ^{A}P_{2}=^{A}P_{1}+^{A}QAP2=AP1+AQ...
2020-03-26 09:23:45 2019
原创 坐标变换(2)—不同坐标系下的变换
如下图所示,在自动驾驶车辆上会存在大量冗余的传感器,例如轮速传感器、激光雷达,毫米波雷达,摄像头,超声波雷达,GPS,IMU等。不同传感器对同一物体的测量原始结果都是在自身坐标下,所以首先我们需要对多传感器就行标定(即获得不同坐标系之间的变换关系,多传感器的标定是个非常复杂且困难的问题,这里先不介绍),将所有传感器的输出统一到一个坐标系下。本文主要介绍不同坐标系之间变换的原理,在这里我们采用一...
2020-03-26 09:19:51 6243
原创 坐标变换(1)—向量和坐标系
1. 标量在介绍向量之前,有必要介绍一下标量(scalar),标量是一个数字,只有大小,没有方向(不过有正负)。例如温度,重量等。2. 向量向量(vector)是多个数字组成的列表。nnn个有次序的数x1,x2,⋯ ,xnx_1,x_2,\cdots,x_nx1,x2,⋯,xn所组成的数组列表称为nnn维向量。向量可以有两种方式去描述:空间中的一个点,而有次序的数字可以确定点在空...
2020-03-26 09:17:18 13584 1
原创 解决rosdep init 和 rosdep update出错
在安装ros时,执行rosdep命令时会出现超时或者连接被拒绝的错误。例如下面的连接超时,就是因为国内网络的原因,ERROR: unable to process source [https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml]: <urlopen error timed o...
2020-01-07 15:06:50 3741
原创 deepin 15.11 安装ROS Melodic
deepin默认对ros的支持应该是一般,所以如果要使用ROS,最好还是从源码去编译,下载完melodic-desktop-full的源码后,直接编译, 其实和apt 安装制作好的deb包是一样的。下面的安装步骤主要参考了官方的从源码安装教程,不过由于lsb_release -sc 等因为发行版的不同,有些命令需要修改。ROS_OS_OVERRIDE环境变量export ROS_OS_OVER...
2019-09-22 12:00:18 3186 5
原创 deepin 15.11 安装nvidia driver和cuda 10
最近看新闻华为的笔记本在适配deepin系统,所以特地安装试玩,确实比ubuntu漂亮些,且适配了大量常用应用,感觉可以不用切windows了。由于要用显卡开发deep learning相关应用,所以首先得安装闭源驱动和cuda,下面是具体过程(dell G7,intel nvidia双显卡,如果是单nvidia显卡可能步骤略有不同,自己斟酌)。install nvidia driver禁...
2019-09-22 11:17:43 16384 13
原创 基于yolov3的红绿灯识别
知乎原文。You only look once (YOLO) is a state-of-the-art, real-time objectdetection system. On a Pascal Titan X it processes images at 30 FPSand has a mAP of 57.9% on COCO test-dev.Yolo使用c和cuda实现...
2019-05-29 15:34:08 12224 31
原创 PCA原理补充
PCA(Principal Component Analysis)是一种常用的数据分析方法。前面转了一篇关于PCA原理的文章,其中有些部分写的不是很清晰,因此做一个补充。方差和协方差下图是一个正态分布,均值和方差提供了对数据在特征空间的分布进行衡量的手段。如图所示,大部分的数据都分布在μ±3σ\mu\pm3\sigmaμ±3σ区间中。而方差的计算公式如下,σ(x,x)=E[(x−E(x)...
2019-05-19 18:27:39 420
转载 主成分分析
PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。数据的向量表示及降维问题一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下:(日期...
2019-05-19 18:22:18 553
原创 linux下重编译aria2c
aria2c详细配置可参考Aria2打造属于自己的下载神器,本文主要介绍,linux下的aria2c编译,破除线程限制aria2c开机自启动破解线程限制测试环境:ubuntu 16.04 x86_64,下载代码git clone https://github.com/aria2/aria2.git代码修改OptionHandlerFactory.cc,左边是修改过的代...
2019-04-12 18:52:17 1213
原创 函数矩阵对矩阵求导
dFdX=[∂F∂ξ11∂F∂ξ12…∂F∂ξ1n⋮⋮⋮∂F∂ξn1∂F∂ξn2…∂F∂ξnn]\dfrac {d\mathbf{F}}{d\mathbf{X}}=\begin{bmatrix}\dfrac {\partial F}{\partial \xi_{11}} &amp;amp;amp;amp; \dfrac {\partial F}{\partial \xi_{12}} &amp;amp;amp;amp; \ld...
2019-03-12 14:40:33 13878
原创 反向传播(Back Propagation)
在利用梯度下降法对神经网络权重等参数进行训练时,需要利用反向传播去计算损失函数对权重参数的偏导数。反向传播下面分析是如何反向传播的(分析时不考虑偏置项),参考上图,① 对于一个神经元jjj,它的输出被定义为,(1.1)Oj=φ(netj)=φ(∑k=1NwkjOk) O_j = \varphi(net_j)=\varphi(\sum_{k=1}^N w_{kj}O_k)...
2019-03-01 12:49:18 1054 1
转载 How do I learn machine learning?
To master Machine Learning (ML) one has to be good at maths, programming and domain knowledge. Domain knowledge (Eg: how to deal with images, audio, financial time series etc) changes from one class o...
2018-07-20 15:24:37 469
原创 baidu apollo(2)—适配器模式
protobuf的原生支持apollo官方的介绍, 在apollo platform源码中,其实也就是ros-indigo,可以看到protobuf相关的修改, 通过百度的修改,在ros中不需要使用原有的msg机制来进行数据的序列化和反序列化,而是可以支持直接使用google的protobuf。适配器模式如何使用熟悉ros的应该都清楚原生ros中topic、node相关订阅...
2018-07-13 14:11:48 2048
转载 What is the difference among CPU, GPU, APU, FPGA, DSP, and Intel MIC?
CPUCPU is a general purpose processor. General Purpose in the sense that it is designed to perform a number of operations but the way these operations are performed may not be best for all applicati...
2018-06-02 09:06:31 695
原创 ros入门(5)—ros中的一些编译汇总
主要介绍ros中库的编译以及调用,第三方so库的编译调用,依赖其他package中messages/services/actions文件先生成的问题。编译库库名称为autodrive_common,对应头文件在include目录下,需要在catkin_package中添加INCLUDE_DIRS和LIBRARIES,表示当前package(autodrive_common)对外提供的库以及...
2018-05-28 22:12:51 2185
转载 深入理解CPU和异构计算芯片GPU/FPGA/ASIC
转自,http://www.cnblogs.com/qcloud1001/p/6617764.html随着互联网用户的快速增长,数据体量的急剧膨胀,数据中心对计算的需求也在迅猛上涨。诸如深度学习在线预测、直播中的视频转码、图片压缩解压缩以及HTTPS加密等各类应用对计算的需求已远远超出了传统CPU处理器的能力所及。摩尔定律失效的今天,关注“新“成员(GPU\FPGA\ASIC)为数据中心带...
2018-05-25 15:14:08 8200
原创 提高git下载速度
众所周知的原因,国内有些网络下github的速度相当感人,最近试了下改host,速度提升效果很明显。ipaddress.com解析ip在ipaddress.com网站中将下面两个网址解析为ip地址,github.comgithub.global.ssl.fastly.net为什么改了host后下载速度提升明显了?和我们pc的dns解析有关系,在未设置hosts前本地dns解析...
2018-05-18 10:33:00 1662
转载 ros入门(4)—ros多传感器数据同步
转自 https://blog.csdn.net/zyh821351004/article/details/47758433由于传感器频率的不同,需要将传感器数据进行同步后才能进行融合,下面是ros中同步的方法,方式一: 全局变量形式 : TimeSynchronizer步骤: 1. message_filter ::subscriber 分别订阅不同的输入topic ...
2018-04-28 16:15:12 11205 2
原创 自动驾驶资源汇总
持续更新测试相关https://oas.voyage.auto/ 主要涉及自动驾驶车辆的安全测试,已开源。主要功能如下图所示,开发1.多传感器数据融合 robot_localization http://docs.ros.org/kinetic/api/robot_localization/html/index.html robot_localiz...
2018-04-27 10:43:03 1781
原创 自动驾驶传感器——激光雷达
本文主要介绍了自动驾驶中激光雷达主流厂商的产品,参数,由于价格信息不全,待陆续补全。激光雷达激光雷达在自动驾驶中的两个核心功能:3D的环境感知SLAM加强定位单线的激光雷达已经被广泛应用,例如扫地机器人,单线可以获取事物的2D信息,但是无法获得高度信息。而多线激光雷达,则可以获取事物3D数据。激光雷达目前给大家的第一印象就是贵,想在无人车上普及首先应该...
2018-04-21 11:05:17 10497
原创 Constructors in Cpp
What is constructor?A constructor is a member function of a class which initializes objects of a class. In C++,Constructor is automatically called when object(instance of class) create.It is special...
2018-04-17 11:25:22 710
原创 ros入门(3)—如何添加一个srv
添加srv文件srv和msg有很多是想通的,特别是在package.xml和CmakeLists.txt的修改中,不同的就是目录和后缀的写法(srv,msg)。 首先在srv目录下创建一个SrvTutorial.srv,int64 aint64 b---int64 result后续在编译时,roscpp会将该srv文件转换为头文件SrvTutorial.h SrvTutor...
2018-04-11 16:55:23 1164
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人