自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++虚函数简析

  C++的虚函数是其实现多态的基础,今天在这里分享一下我对C++虚函数相关知识的系统总结,技术有限,如有不当,欢迎指正。   在将内容前,将大致涉及到的内容图解如下:     1. 有无虚函数在继承中的区别//-- Zuo add on 2018-04-07class A{public: virtual void fun(){ std::cout <<...

2018-04-07 11:10:48 713

原创 浅谈自动驾驶ODC

自动驾驶系统设计中ODC和ODD的一些设计、使用探讨。

2022-10-17 20:11:46 1600 1

原创 Plus_Safety_Report_2021阅读笔记

Plus_Safety_Report_2021》是智加科技2020.10发布的他们对自动驾驶中“安全”两字的理解,全文主要围绕方法论、安全的范围、如何实现安全、如何证明安全、结论五个方面来阐述,在阅读了一遍后,笔者有一定的启发,总结如下。然后讲了智加的目标是高速中间部分,也就是所谓的“收费站-收费站”部分,这也是现在的干线物流厂商的主阵地,没啥好说的。可以看到Plus的车辆都会和云端的指挥中心连接,车辆事故后会主动上传信息,其次指挥中心也会根据车辆的心跳信息来判断车辆是否故障、失联等。

2022-10-13 19:37:31 168

原创 Apollo如何添加一个新的CAN设备

how_to_add_a_new_can_device在自动机调试的领域,使用CAN接口的应用非常广泛,这一块,在Apollo中也有所体现,今天我们就来结合代码分析一下Apollo中的CAN数据交互流程,以及分享如何在Apollo中添加一个新的CAN设备。首先,普及一下相关的知识点,普通的IPC或者PC是不具有CAN口,也就是不能直接和CAN设备通信,所以他们之间需要用到转换设备,将CAN...

2018-11-01 08:15:25 3137 8

转载 Linux 下c获取当前时间(精确到秒和毫秒或者微秒)

获取当前的时间的秒数和微秒数本方法需要用到gettimeofday()函数,该函数需要引入的头文件是 sys/time.h 。函数说明int gettimeofday (struct timeval * tv, struct timezone * tz)1、返回值:该函数成功时返回0,失败时返回-1 2、参数 struct timeval{ long tv_sec; //秒 lon...

2018-07-07 16:43:13 5806

原创 Apollo如何添加新的消息

How to add a new message一. 简要​ 原生的ROS使用的是其自带的Msg格式来定义的通信协议,但是Msg协议有一个明显的缺点,由于使用了MD5校验,使得Msg的后向兼容不好,如果后续的版本稍微改动一点Msg的格式,就会让双方不能通信了,除非双方都修改XXX.msg文件。鉴于此Apollo使用的是Google的Protocol Buffer简称Proto.关于Pr...

2018-05-31 19:40:34 5601

原创 Kalman滤波——初阶入门

概要​ kalman滤波在机器人控制、数字图像等领域应用非常广泛的一种方法,很多人对其名字不能理解,因为kalman滤波在大多数时候表现出来都是将多个数据进行融合,为什么不叫kalman融合呢?如果你有这个疑问,那就说明你对kalman滤波理解不够,任何的数据融合都是为了将多种途径的数据中的噪声滤波,以达到尽可能接近真实值的目的,从这个角度理解,其融合只是表象,滤除了信号中的噪声才是本质。...

2018-05-30 23:39:06 10956 9

原创 Apollo的感知融合模块解析

Apollo的感知融合模块解析下文主要对百度Apollo的感知模块的fusion部分进行细致深入的了解,我将结合代码、流程图等一起分析,尽可能的将我的认知记录下来,分享大家。需要注意的是,Apollo版本迭代很快,我这里的分析是根据2.5_release版本进行分析的,如果后续版本有所变动,以实际代码为准。导读下文我将按照如下流程对模块进行分析: 文字简述流程图用函数表...

2018-05-20 22:22:09 24635 18

原创 Apollo如何通知/订阅主题topic

How to advertise and subscribe a topic导读众所周知,Apollo是基于ROS开发的,所以其底层也是基于消息的机制进行节点通信的。但是它在ROS的基础上做了一些改动,如下: P2P——由于原生ROS的消息机制是通过主节点(Master)分发数据来实现的,这样一个强中心化的结构始终存在一个Master意外导致系统奔溃的隐患,为了解决这个问题,A...

2018-04-20 22:21:46 7413 16

原创 Apollo如何添加一个子节点

How_to_add_a_subnode添加文件在modules/perception/obstacle/onboard新建两个文件,我这里分别是zuo_test_subnode.cc和zuo_test_subnode.h。实现基础代码添加一个子节点类,我们这里假定是放在perception模块下,那要记得加namespace。除此之外,因为整体的子节点框架是用多态的方法来调...

2018-04-09 18:53:46 4930 11

转载 Ubuntu软件包如何降级

  最近在Ubuntu下安装typora时,发现在安装好了后,因为有装了启动东西,把gcc升级了,但是新版本的gcc不能够兼容老版本,故typora出现闪退,又不敢卸载gcc(因为卸载会一起卸载相关的一些依赖包,1.4G,胆子小,不敢惹,不敢惹),所以才想到要降级,最后找到下面这个方法,深感不错,特此分享。   主要是用到aptitude工具来进行降级。安装aptitude,使用aptitu...

2018-03-28 23:15:16 9890 1

原创 面试中被问到:你在工作中碰到的最困难的问题是什么?

  首先,面试官问道这个问题的目的肯定是想从侧面了解你对技术的理解,或者说我解决问题的思路。那么说,我们回答这个问题也要从这点着手。我是这样总结的。  在我的编程生涯中,我总结出了几点: 1. 良好的编程习惯是对有效率编程最大的帮助。 2. 调试能力的高低是最能反映一个程序员水平的素质。  那我就分享一些我对调试的理解。我记得有一次项目中需要将一个Ubuntu下的Qt代码移植到VS里面...

2018-03-05 23:56:00 95439 1

转载 typedef详解

typedef用来声明一个别名,typedef后面的语法,是一个声明。本来笔者以为这里不会产生什么误解的,但结果却出乎意料,产生误解的人不在少数。罪魁祸首又是那些害人的教材。在这些教材中介绍typedef的时候通常会写出如下形式: typedef int PARA; 这种形式跟#define int PARA几乎一样,如前面几章所述,这些教材的宗旨是由浅入深,但实际做出来的行为却是以偏盖全。的确,

2018-02-10 19:41:36 909

原创 ROS/OpenCV/PCL/Ubuntu/VS/OpenNI问题手册

ROS使用ROS相关命令时,不能用TAB键补全。使用TAB会报如下错误: 使用如下命令解决:$ sudo umount /home/$USER/.gvfs$ sudo rm -rf ~/.gvfs/OpenNi使用openni_launch不能够识别Xtion Pro,这是因为openni默认是读取Kinect,需要修改配置文件,如下:sudo ge...

2017-12-30 17:56:02 702

原创 ubuntu 14.40 系统下以太网 “线缆被拔出” 问题开机自动一次性解决!

重装了14.04之后每次都会有这个问题,就是明明网线已经插好了,但是就是显示“线缆被拔出”,且右上角只有无线图标,没有有线的选项。这是因为ubuntu默认WiFi优先。今天分享一个方法解决。sudo gedit /etc/init.d/rc.local  文件后面 加上一段代码  /sbin/ethtool -s eth0 autoneg off speed 100 duplex

2017-12-26 19:58:41 1524

转载 安装ubuntu黑屏问题的解决

ubuntu v14.04安装时黑屏处理问题描述:ubuntu使用光盘/USB安装时,出现"install ubuntu/ try ubuntu without installation"选择,但是Enter安装时,显示器显示没有信息,进行休眠原因分析:由于ubuntu对于显卡支持有问题,需要手动添加显卡驱动选项解决办法:一、安装时,选择"install ubuntu"后,按"e"

2017-12-26 19:43:00 12522 1

原创 如何为自己的双目系统选取相机?

目前来说,一般使用等焦的两个同型号摄像头组成双目,不等焦的双目应用场景以及使用方式暂时未知。   双目系统,我们一般指用左右两个摄像头来模拟人眼的一套系统,一般用来测距,避障,导航等领域。那么在展开双目栏目之前,我们先来说说如何设计自己的双目系统。

2017-12-18 20:59:33 5304

转载 相机标定(Camera calibration)原理、步骤

相机标定(Camera calibration)原理、步骤author@jason_ql(lql0716) http://blog.csdn.net/lql0716在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得

2017-12-11 19:16:06 3919

原创 ubuntu安装搜狗输入法

ubutnu自带的输入法有点蛋疼,特此分享一个ubuntu安装搜狗输入法的简单教程,本人在14.04上测试通过。在搜狗官网下载deb文件官网地址双击deb文件,直接安装。要换fictx输入法,先删除ibus输入法。 sudo apt-get purge ibus sudo apt-get autoremove安装fcitx sudo apt-get install fcitx fcitx...

2017-11-26 21:26:09 1013

原创 编程给我带来了什么

编程给我带来了什么  最近有一些思考,但是都是比较零碎的,想着来总结一下,也有记录之宜。   我一直认为编程的实力分为硬、软实力两种。你所通晓的编程语言语法、三方库框架、开原协议等等,这些是硬实力。而面对同一个需求,你的思维方式以及你思维的代码表达能力,这就是软实力。  复杂的问题简单化,这是一种高屋建瓴的思维方式!

2017-11-15 23:09:15 1606 2

原创 在roslaunch中通过rosbag运行bag文件

在launch文件中可以用以下方法运行bag文件        这样就可以对bag文件内的topic进行remap了。

2017-10-18 21:54:05 9960 3

原创 欧拉角和旋转矩阵相互转换

欧拉角和旋转矩阵可同样表示刚体在三维空间的旋转,下面分享这两者互相转换的方法和核心代码欧拉角转旋转矩阵 欧拉角通过将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步,如下图(蓝色是起始坐标系,而红色的是旋转之后的坐标系) 如果将每一个角度用旋转矩阵表示如下: 所以,容易得到,欧拉角转旋转矩阵如下: 旋转矩阵转欧拉角 将旋转矩阵表示如下: 则可以如下表示欧拉...

2017-10-12 21:02:23 30841 18

原创 在VS中OpenCV用imread读取不到图片

今天在Visual Studio2013中配置好了OpenCV2.4.11,然后用imread读取图片试试效果,发现读取不到图片,症状是,编译运行都没出错,但是读到的图片就是空的。最后查找了半天的原因,发现是工程使用的是Debug模式,但是添加的OpenCV依赖库是用的Release版本的。具体如下:      如上图,我的工程师使用的Debug模式            所以属性 -

2017-09-27 19:01:25 8474 3

原创 错误 16 error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?

使用Visual Studio 2013时发现以上报错,最终解决方案如下 1. 右击工程进入工程属性设置 -> C/C++ -> 预编译头 -> 在预编译头一栏设置成“不适用预编译头”即可。

2017-09-27 11:35:08 1174 2

原创 深度图转点云(Xtion/Kinect/OB等)

  今天分享一个将深度图转点云的方法。   所谓的深度图一般指从深度相机中读取到的带有深度信息的一帧数据,一般为16bit的png/pgm格式。深度图不适合直观的去察看,点云的效果会更强,所以,一般我们都是将深度图转成点云再察看。 其实,像Xtion/Kinect等深度相机可以直接输出点云,当然,深度图的获取也不仅是以上几种设备,例如双目稠密重建算法也可以。我这里用到的是华硕的Xtion...

2017-09-20 08:45:30 16131 15

转载 win10搭建Visual Studio2013+OpenCV2.4.11+CMake3.9.2环境

[-]一工具准备二使用cmake生成opencv源代码工程的解决方案三使用VS编译源代码四相关配置通常情况下,我们需要使用opencv的库函数时,只需将opencv的环境变量配置好就可以了,本人也在前面的文章中进行过介绍,博客链接为http://blog.csdn.net/a2112233445566/article/details/38540389。但是如果我们想要查

2017-09-15 14:54:57 1728

原创 鱼眼镜头的标定及矫正

本文主要目的是为分享来自苏黎世大学Davide Scaramuzza的OCamCalib全视角相机模型标定矫正算法。作者主页 因为是被墙了,所以我分享出来以供参考。先上结果图:可以看出,效果是相当不错的,所以这也是我强烈分享给大家的原因之一。环境 1. MATLAB2015R标定鱼眼镜头 2. Ubuntu14.04 + OpenCV2.4.11根据标定结果对鱼眼镜头矫正资源 1. Matla

2017-09-14 19:52:45 20317 114

原创 OpenCV中读取YAML文件方法

在CV处理中,一般要用到一个甚至多个相机参数,所谓的相机参数,也就是指相机外参、内参、畸变参数等,它们一般以矩阵的形式存在,如果都写在代码里面,一来显得臃肿拖沓,二来也不方便修改参数,OpenCV提供了YAML文件扩展配置的功能,也就是FileStorage类,下面用一段代码展示它的基本用法。下面这个YAML文件中按顺序存储了四个相机的内参和畸变参数:%YAML:1.0calibrateTime:

2017-09-07 20:14:19 7352 3

原创 SLAM基础技术点之基于计算机视觉求解相机姿态变化的方法汇总

求解相机的姿态变化有许多的方法,从视觉的角度出发是很重要的一种,这里我总结了目前主流的基于CV的求解相机姿态变化的方法。基于视觉的方法,一般思路为从两个姿态的图像上选取匹配点,根据数据的不同,对应用不同的方法计算两两匹配点的R|T,也即外参,而这个R|T也就是相机两个姿态的变换关系。这里的的方法大体分为这么三类,2d到2d的匹配点、2d到3d的匹配点、3d到3d的匹配点。二维到二维的匹配 Hom

2017-09-01 15:26:56 6339 6

转载 ubuntu下查看USB摄像头参数

在终端输入命令:v4l2-ctl -d  /dev/video0 --all这个是查看所有参数的命令,video可以用命令:ls  /dev/video* 查看还有输入v4l2-ctl help     查看不同参数的具体意思

2017-09-01 09:48:16 21766

转载 C++中int、string等常见类型转换

初学C++,总结下在实践中对于几种常见内置类型转换的理解吧。 1、int型与string型的互相转换最佳实践:int型转string型 [cpp] view plain copyvoid int2str(const int &int_temp,string &string_temp)  {       

2017-08-31 16:46:49 597

原创 将二进制深度图转换成OpenCV的Mat格式

日常在使用深度相机(Xtion之类)时,有时没有OpenCV的环境,就会把数据保存成16位的二进制dat文件,但是之后我们的处理一般都是在OpenCV里面的,这时就需要将二进制深度图转换成Mat格式,下面这段例子就实现了这个功能。#include <iostream>#include <string>#include <fstream>#include <opencv2/opencv.hpp>

2017-08-29 17:59:41 4547

原创 Kd-Tree算法原理简析

  本文讲解旨在讲解Kd-Tree(K-demension tree)的一些粗浅的原理,以及其在计算机视觉的一些应用,既是总结了自己,也是分享给大家,希望有所帮助。   Kd-Tree是从BST(Binary search tree)发展而来,是一种高维索引树形数据结构,常用于大规模高维数据密集的查找比对的使用场景中,主要是最近邻查找(Nearest Neighbor)以及近似最近邻查找(App...

2017-08-22 23:31:15 27228 10

原创 Ubuntu下OpenCV2和OpenCV3共存的方法

由于OpenCV3在OpenCV2的基础上改动比较大,且向下支持不够好,所以,很多老工程需要用OpenCV2,而新工程又仅支持OpenCV3。如果两者同时安装也不冲突,本质上也就是一些三方库,放在/usr/local/lib下面,但是如果使用FIND_PACKAGE(OpenCV REQUIRED)的时候,其本质是去/usr/local/share下面寻找cmake文件,而两个版本的cmake

2017-08-15 11:56:04 4774

转载 Qt creator创建cmake构建的程序,无法启动调试

原因: cmake默认产生的是release版本。解决办法:打开CMakeLists.txt文件,在文件的最后添加: set( CMAKE_BUILD_TYPE Debug ),再次构建即可。补充:CMAKE_BUILD_TYPESpecifies the build type on single-configuration generators.This st

2017-08-03 16:41:28 1428

转载 基于深度摄像头的障碍物检测(realsense+opencv)

一个基于深度摄像头的障碍物检测代码的核心思路是首先通过二值化,将一米之外的安全距离置零不考虑,然后通过开运算去除掉一些噪点(这个后来发现不一定有必要),在求出所有障碍物的凸包,这个时候要计算面积,当面积小于一定的阈值的时候不予考虑,最终输出障碍物的凸包坐标。//find_obstacle函数是获取深度图障碍物的函数,返回值是每个障碍物凸包的坐标,参数一depth是realsense

2017-06-08 10:04:30 11974 10

转载 C++中直接class 类名和#include的区别

有一些 class QFile 等这类 看似 是声明的东西..例如下面#ifndef WINDOW_H#define WINDOW_HQT_BEGIN_NAMESPACEclass QTcpServer;class QTcpSocket;class QProgressBar;class QLabel;class QDialogButtonBox;clas

2017-05-22 20:17:47 1389

转载 SLAM方法汇总

SLAM概述SLAM一般处理流程包括track和map两部分。所谓的track是用来估计相机的位姿,也叫front-end。而map部分(back-end)则是深度的构建,通过前面的跟踪模块估计得到相机的位姿,采用三角法(triangulation)计算相应特征点的深度,进行当前环境map的重建,重建出的map同时为front-end提供更好的姿态估计,并可以用于例如闭环检测.

2017-05-22 10:03:27 2905

原创 Qt使用非阻塞事件循环的延时方式

QTime dieTime = QTime::currentTime().addMSecs(mSecs); while( QTime::currentTime() < dieTime ) QCoreApplication::processEvents(QEventLoop::AllEvents, 100);

2016-07-11 17:28:08 3487

原创 KMP算法实现代码

KMP算法实现昨天看到一个快速字符串查找的思路---KMP,感觉挺有意思的,就实现来试试,下面是代码:环境: windows7 + Qt Creator3.4.2 + Qt5.5.0 如果想看算法解释过程的请看这里KMP原理main.cpp:#include "mainwindow.h"#include <QApplication>#defin...

2016-06-26 11:43:30 1448

typora MarkDown编辑器 windows 版本下载

typora MarkDown编辑器 windows 版本下载,因为官网被墙了,特此分享给大家

2017-11-03

鱼眼矫正代码

这是和OCamCalib全视角相机模型鱼眼标定程序配合使用的鱼眼矫正程序,是C++代码,要用到OpenCV,我自己在Ubuntu14.04完美运行。

2017-09-14

OCamCalib鱼眼标定程序对应的矫正程序

这是OCamCalib标定鱼眼出来的全视角相机模型对应的矫正程序,分享给大家使用,有问题可以去我的CSDN博客留言。

2017-09-14

Scaramuzza_OCamCalib_v3.0_win.zip

这是Scaramuzza_OCamCalib_v3.0_win.zip的鱼眼标定的Matlab代码,使用说明可以看我的CSDN博客,那里有个说明文档。

2017-09-14

AT指令集详解

AT指令集全解,有所有的AT命令集,方便大家下载观看,

2014-05-30

空空如也

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

TA关注的人

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