自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (9)
  • 收藏
  • 关注

原创 cmake的find_package指令是如何运行的

find_package是cpp工程中.cmake文件里面重要的指令,顾名思义,它的作用是就是找到工程需要引用的头文件(拓展名为.h的header file)和库文件(拓展名为.o或者.so的library)。然后得到他们的绝对路径XXX_INCLUDE_DIR和XXX_LIBRARIES。注意对XXX_INCLUDE_DIR和XXX_LIBRARIES赋值的过程定义在FindXXX.cmake专业文件里面,赋值是通过find_path来完成的,其实就是把绝对路径拆成了两部分,第一部分是文件名字NAME,

2020-08-31 13:34:25 2637

原创 旋转矩阵的项恰好等于其余子式

今天在推导公式的时候发现了一个有趣的结论,就是旋转矩阵中的项恰好等于其代数余子式(minor),这样我们可以快速地验证一个矩阵是否为旋转矩阵了。举个例子,在如下旋转矩阵R\textbf{R}R中:我们可以通过旋转矩阵的正交性和SO(3)群的性质来证明,假设矩阵R\textbf{R}R对应的新坐标系的三组基为e1\textbf{e}_1e1​,e2\textbf{e}_2e2​,e3\textbf{e}_3e3​,并且假设Base坐标系(世界坐标系)的三组基为i\textbf{i}i,j\textbf

2020-08-30 19:41:29 787

原创 借助李群李代数完成对位姿的求导计算

一、对位姿求导数的意义我们在对机器人进行位姿估计时的目标函数如下:为了能取到损失函数J的最小值,我们需要对目标函数关于变换矩阵T求导数,我们可以不严谨非正式地记为如下表达式:然而,变换矩阵T,包括其中的重要组成部分旋转矩阵R,都不满足对加减法的封闭,因此我们需要采用新的方法,那就是引入李群和李代数。二、SO(3)李群和so(3)李代数满足CAI2性质(Closure, Associativity, Identity-element, Inversible)的集合与运算的代数结构称为群。我们知道

2020-08-29 01:10:35 2320

原创 通俗易通解释SLAM问题的数学描述:运动方程和观测方程

高翔博士在他的《视觉SLAM十四讲》中把SLAM问题的数学描述抽象成了两个数学方程,以下对此做个总结,并且对此做一些通俗易懂的解释:一、方程的总体形式作为理性层次的描述,我们引入数学方程来描述SLAM过程,其中第一个方程叫做运动方程、第二个方程叫做观测方程,想象一下我们在研究SLAM的时候肯定需要观测机器人(无人汽车、无人机等都可以统称为机器人)的运动(画面感很强哈哈),这样很容易理解并且记忆这两个方程的名称和意义:二、变量的含义我们看到,这两个方程中有大量的英文字母作为变量存在其中,下面介绍一下

2020-08-28 14:29:03 6196 5

原创 python可视化线性拟合的机器学习(Machine Learning)过程

一、导入需要的库import numpy as npimport pandas as pdimport matplotlib.pyplot as plt二、初始化参数x_points = [1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]y_points = [1, 2, 3, 1, 4, 5, 6, 5, 7, 10, 15, 9]m = 0b = 0y = lambda x: m * x + blearn = 0.01三、编写权重更新函数def su

2020-08-28 00:13:06 888

原创 两张图理解python中的可迭代对象/容器/迭代器/生成器的概念

话不多说,直接上图,简单明了,一看就懂上图是我的理解上图引子:完全理解Python迭代对象、迭代器、生成器

2020-08-27 20:00:30 179

原创 自定义一个python迭代器

迭代器(iterator)是python语言中一个重要的概念,我们可以在for循环中使用迭代器来完成遍历工作。百度词条对迭代器的定义如下:迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式,可在容器(container,例如链表或阵列)上遍访的接口,设计人员无需关心容器的内容。在python中,我们可以编写class来自定义迭代器,关键在于这个class需要包含两个关键的魔法函数和一个遍历到尽头的异常如下:__iter__魔法方法__next__魔法方法__Sto

2020-08-27 17:59:25 850

原创 Ubuntu18.04推荐截图工具flameshot的安装和使用

flameshot 可以实现在Ubuntu下面的截图功能,并且具有标注功能,推荐。安装flameshot:https://github.com/lupoDharkael/flameshot安装命令:sudo apt-get install flameshot设置>设备>键盘,设置一个自定义快捷键(拉到最下面)命令填写:flameshot gui快捷键推荐设为f12Enjoy!...

2020-08-27 16:11:47 385

原创 Ubuntu18.04下Kdevelop报错“Failed to specify program to start:”解决方法

今天在使用Kdevelop的时候遇到了以下报错:*** Failed to specify program to start: ***查了一个小时才发现问题在于Current Launch Configuration配置出错了。解决方案是依次点击Run-Current Launch Configuration,然后选择cpp程序的文件名而不是New compiled Binary Laucher...

2020-08-27 15:56:10 1314 1

原创 SLAMBOOK2踩坑记之:plotTrajectory.cpp中的undefined reference to symbol ‘glTexImage2D‘错误

./cmake/FindPangolin.cmakefind_path(PANGOLIN_INCLUDE_DIR NAMES pangolin.h PATHS "/usr/local/include/pangolin/" )find_library(PANGOLIN_LIBRARY NAMES pangolin PATHS "/usr/local/lib/" )MESSAGE("THIS IS A DEBUG INFO.")MESSAGE("${PANGOLIN_INCLUDE_DI

2020-08-26 02:27:08 2400

原创 旋转矩阵的两种用法

我们在研究机器人或者计算机视觉的时候经常需要用到旋转矩阵,常用R\textbf{R}R来表示一个旋转操作,它的组成可以简单的认为是原来坐标系的两组正交基ex\textbf{e}_xex​和ey\textbf{e}_yey​,在旋转后在世界坐标系中的新坐标wex′^w\textbf{e}_x'wex′​和wey′^w\textbf{e}_y'wey′​,如下图所示。看似简单,但是其实这个矩阵有着丰富的含义,至少有以下两种意义,如果不仔细的话,很容易就搞混淆了,下面就总结一下旋转举证的这两个作用。一、动态点

2020-08-25 22:28:49 8627 1

原创 旋转矩阵罗德里格斯公式(Rodriguez formula)的理解证明

罗德里格斯公式(Rodriguez formula)是计算机视觉中的一大经典公式,在描述相机位姿的过程中很常用,其形式如下:我们假设v⃗\vec{v}v向量绕n⃗\vec{n}n轴转了θ\thetaθ角度,得到了v⃗′\vec{v}'v′向量,R\bf{R}R为旋转矩阵,我们由旋转矩阵的概念可以知道,他们的关系如下:v⃗′=Rv⃗\vec{v}'=\textbf{R} \vec{v}v′=Rv也就是说旋转前的向量坐标乘以旋转矩阵,等于旋转后的向量坐标,以下是这个公式的推导过程(该推导及下图来自于you

2020-08-24 21:21:10 5046

原创 python通关BST:一文掌握二叉搜索树

今天油管上找到了一个非常好的专栏BinarySearchTrees,花了一天的时间复习了一下并且做了笔记,现在通过python代码把内容总结一下:一、数据结构的类设计我们需要设计两个类(节点类Node和树类Tree),并且设计其中的属性和方法,定义好用户接口如下,简单英文注释附在下面。#Tree is a collection of TreeNodes#Concept: Parent/Child/Sibling/Subtree/Ancesctoer/Descendence...This is ea

2020-08-21 00:20:45 455

原创 Ubuntu18.04下运行ORB-SLAM2踩坑记

今天做了一下高翔SLAM十四讲的作业如下,文档讲的已经比较详细了,但是还是会遇到一些坑,在此记录。比较完整的参考链接(不过有些坑他也没有提到),特别是版本问题,这个日新月异,很难保证今天能用的版本或者版本名,明天就失效了,随缘随缘。坑一:usleep问题(error: ‘usleep’ was not declared in this scope)重点参考这篇博客(写的还不错),在以下文件中加入一行代码即可:#include <unistd.h>Examples/Monocu

2020-08-15 00:31:20 2746 1

原创 用python画类王者荣耀英雄能力多边形雷达图

现有以下表格,我需要画成第二张图中的雷达图(类似fifa足球、王者荣耀里面的那种球员能力图)代码如下,mark,方便以后使用:#雷达图函数构建import numpy as npimport matplotlib.pyplot as pltimport mathimport matplotlib.colors as mcolors# 导入中文import matplotlib.font_manager as font_managerfont_dirs = ['./font']fo

2020-08-14 20:24:02 1168

原创 图解C++工程的编译原理

高翔SLAM理论与实践公开课中介绍了一个族简单C++工程(HelloSLAM)的编译过程,我把这个过程整理成为了一张图片如下,并且在后面附上注释。总的来说一个C++工程的编译和执行分成以下几个步骤预处理:也就是对#include等带#符号的头文件等进行处理,这里需要编写.h文件来把模块中定义的函数名及其使用方法(也就是接口)定义清楚,以便于在主程序中进行调用。编译,这个过程就是把.cpp编译成.o文件(机器码文件)的过程,当然只有主程序mail.cpp才会编译成可执行文件,其他的模块文件只会根据配

2020-08-11 15:24:49 740

原创 制作ubuntu18.04镜像并且在Vmware虚拟机中运行

需求:已经在工控板T4001A中安装了Ubuntu18.04系统,并且安装了RealSense、ROS等驱动,现在需要制作一个镜像,使得下一次在新的主机上安装系统的时候免去驱动安装的烦恼,因为镜像比较大,因此普通的方法可能会遇到4GB容量上限的问题,因此需要额外的步骤来解决,具体的参考步骤如下:第一步:制作sblive镜像参考如何制作ubuntu系统镜像一文操作即可:#1.如果你已经添加过PPA,请先删除(否则忽略此步):sudo add-apt-repository --remove ppa:ne

2020-08-10 18:02:45 2866 5

原创 DJI-F450无人机硬件部分装配

根据以下框图,今天进行了大疆F450无人机硬件部分的组装,全过程参考了:图文并茂详细教程之–用pixhawk飞控组装一台F450四轴无人机一、焊接电调与电源接口注意事项:电调与底板之间的焊点不能虚焊。飞行器启动后电流比较大,虚焊会导致发热严重并脱落,造成飞行中的严重事故!前后四个焊点(上图)不能太大,否则会阻挡以后电池的安装。焊点要光滑饱满,焊锡覆盖整个焊点和接线。焊接好以后用手拖拽测试是否牢固。焊接效果:二、电机香蕉头焊接和套上热缩管很多电机出厂都没有焊接香蕉头,需要自己焊接。香蕉

2020-08-07 23:36:24 16831 1

原创 使用pandas查找数据表中第一个非零元素对应的角度

有以下数据表,第一列表示角度值,第二列表示是否满足条件,现在的任务是找到第一个满足条件的角度,也就是第一个1出现的行号。我们可以编写以下代码来完成以上需求import pandas as pddata = pd.read_csv("oneOrZeros.csv",encoding="utf-8",header=None)#target表示你要查询的数值target = 1#sel_data存储了所有val等于target的记录sel_data = data[data[1]==target]

2020-08-05 18:38:01 1823

原创 使用python连接sql数据库

这两天实现了使用python来链接mysql数据库并且从中读取数据,参考视频:#72 MySQL Workbench Setup | Python Database Connection#73 Python Database Connection | MySQL相关代码如下:1.创建数据库并且在workbench中测试:show databases;create database telusko;use telusko;create table student(name varchar(20

2020-08-05 12:20:15 2014

surnames.csv

中文名字取名中常用的姓氏用字,从中随机抽取可以完成网络游戏中的取名问题,其实中国的汉字也就几千个,取名的数量在2-4范围之内,所以中文名字其实是从一个有限集合中选取文字组合而成的,完全可以通过程序设计的方式从有限集中随机选择。

2020-07-03

girlsnames.csv

中文名字取名中常用的女名用字,从中随机抽取可以完成网络游戏中的取名问题,其实中国的汉字也就几千个,取名的数量在2-4范围之内,所以中文名字其实是从一个有限集合中选取文字组合而成的,完全可以通过程序设计的方式从有限集中随机选择。

2020-07-03

boysnames.csv

中文名字取名中常用的男名用字,从中随机抽取可以完成网络游戏中的取名问题,其实中国的汉字也就几千个,取名的数量在2-4范围之内,所以中文名字其实是从一个有限集合中选取文字组合而成的,完全可以通过程序设计的方式从有限集中随机选择。

2020-07-03

Calculus and Applications.zip

计算机通信、人工智能、机器学习等技术中的数学基础,包括极限、微分、积分、微分方程等基本概念、运算及其应用。

2020-05-15

worldcities.csv

里面包含了世界上1万多个主要城市的基本信息,包括城市名、所在国家、所在区域、是否为首府、人口数、经纬度等等。

2020-03-16

vivid_alphabet.csv

存储了a-z26个字母代表的形象意义,为了后续背单词做准备,比如cata,在我这里就可以拆成c+a+t+a,意思是:the Cyan Ant of the Tired Anthony,这样一下子就记住了字母的组合。

2020-02-14

rating.txt

douban上10000本书的得分,包括“评分人id”、“书本id”、“评分”三个数字,数据量高达597万,所以说是比较难的用来练习海量数据的数据库。

2020-02-09

ChineseColorTable.csv

用python从jason格式中提取了中国颜色名称及其数据信息,用于网页制作前端设计的配色和颜色调和。

2020-01-10

colors.json

用于此代码的json源文件,内含中文颜色名称、CMYK、RGB、hex、name、hex等值,一共包含500多种颜色

2019-12-23

空空如也

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

TA关注的人

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