自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 四轴飞行器入门——基础知识

引言 从2016年起,细细数来入门无人机已经有两年时间。两年期间,自己边学边摸索,组装过机架四轴无人机,也修改过开源飞控的代码,但是因为种种原因,始终没有写过相关博客记录下自己的学习历程。最近,一个学弟问我要一些无人机入门的资料,我才恍然发现,自己唯一能拿的出手的就只是一些保存在收藏夹里的书签。于是乎,开始梳理,记录自己学习过的无人机方向的知识,方便他人学习,自己查阅。本篇文章主要介绍...

2018-07-19 10:04:17 48138 2

原创 2.2 变换(模型、视图、投影)

变换(模型、视图、投影)三维变换观测变换(Viewing transformation)视图 (View)投影 (Projection)正交(Orthography)透视(Perspective)三维变换仿射变换三维旋转变换逆时针角度为正右手系原因,y轴逆时针看去是 zox 平面,所以转角应该是 −α-\alpha−α也可理解为z×x=y ,x×z=−yz \times x = y\ , \quad x \times z = -yz×x=y ,x×z=−y

2020-05-29 16:23:23 562

原创 2.1 变换

矩阵变换二维变换齐次坐标齐次坐标下的二维变换矩阵逆变换(逆矩阵)复合变换三维空间仿射变换modeling and viewing模型变换和视角变换二维变换尺度变换/Scale镜像变换切变变换旋转变换 是绕原点旋转分析特殊点可得旋转矩阵(1, 0)、(0,1)等!线性变换 / 矩阵变换平移变换用矩阵相乘无法描述,所以提出了齐次坐标!!!齐次坐标用统一的方法表述所有变换!二维点pointa=(x,y,1)Tpoint \quad a = {

2020-05-28 16:57:35 437

原创 1.2 向量与线性代数

向量与线性代数图形学基础向量向量点乘向量叉乘矩阵图形学基础基础数学:线性代数、统计学、微积分基础物理:其他课程:信号处理、数学分析一点点:美学课程向量方向长度单位向量向量加法向量点乘向量点乘a⋅b=∣a∣⋅∣b∣⋅cos(θ) a \cdot b = |a| \cdot |b| \cdot cos(\theta) a⋅b=∣a∣⋅∣b∣⋅cos(θ)向量的投影b⊥=b⋅cos(θab)b\bot = b \cdot cos(\theta_{ab})b⊥=b⋅

2020-05-28 14:55:51 470

原创 1.1 现代图形学新入门

现代图形学入门画面好坏的标准图形学应用场景为什么要研究图形学课程学习内容课程不讲什么(不教大家使用什么)图形学与计算机视觉画面好坏的标准画面是否足够亮!全局光照做得好,画面就会亮,好看。图形学应用场景卡通如何实现卡通风格的游戏?特效特效是最“”简单“”的图形学应用。因为很难见到,出错了也不会有太大的反响。 困难的是做日常生活中的特效,而不会有违和感。动画、模拟动画,毛茸茸的头发,每根头发都要显示,过程复杂,几何描述,渲染等过程。特效,几何图形特效。设计CAD,设计

2020-05-28 11:28:02 427

原创 windows下python开发环境搭建

个人习惯原因,本文开发环境未采用传统的 pycharm + anaconda 的开发环境,本文采用vscode + anaconda搭配:Python 3.7(直接Anaconda安装)IDE采用vscode包管理器采用Anaconda原因有以下几点:使用语言太多,选取一个通用的IDE会更方便刚开始学习python时,可以不用IDE,直接用jupyter notebook会更方便...

2019-08-20 21:03:19 192

原创 Linux上VScode + cmake + gcc开发环境搭建

VScode + cmake + gcc下载、安装vscode安装插件cmake文件结构vscode修改json文件编译、调试的过程下载、安装# cmake gcc 安装都很简单# 只需要注意安装的版本就可以了# 因为要做px4开发,我gcc的安装版本是 5.4.0sudo apt-get install cmakesudo apt-get install gcc# vscode ...

2019-05-22 21:51:02 11139 3

原创 unp学习笔记之时间获取客户端(001)

unp学习笔记unp源码获取与编译时间获取客户端启动流程时间获取客户端测试结果unp源码获取与编译源码获取、解压流程如下:wget http://www.unpbook.com/unpv13e.tar.gztar -zxvf unpv13e.tar.gz源码编译,建议先查看源码中的 README# README 部分内容如下:QUICK AND DIRTY========...

2019-05-22 21:08:54 390

原创 CMake简单指令:CMake学习笔记(一)

CMake简单指令1 只有main.c2 多个C文件在同一文件夹下3 多个不同目录下多个C文件4 正式的组织结构(build文件夹正确使用)4.1 文件结构4.2 CMakeLists.txt写法1 只有main.c2 多个C文件在同一文件夹下3 多个不同目录下多个C文件4 正式的组织结构(build文件夹正确使用)4.1 文件结构假设我有一个工程文件夹test,其组织结构如下:(b...

2019-05-21 10:06:36 2742

原创 Ubuntu 16.04 LTS环境下安装Webbench应用(转自Linux公社)

Ubuntu 16.04 LTS环境下安装Webbench应用是什么如何安装怎么用是什么Webbench是知名的网站压力测试工具;Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同一个服务的运行状况;webbench的标准测试可以向我们展示服务器的两项内容:每秒钟相应请求数;每秒钟传输数据量;webbench不但能具有便准静态页面的测试能力,还能对动态页面(...

2019-05-19 14:57:47 1141

原创 数据库学习笔记:mySQL查询操作(一)

mySQL基本操作基础知识基本操作基础知识基本操作

2019-05-18 20:26:37 395

原创 5.1 运输层协议

运输层协议运输层的复用与常见端口常用端口UDP协议特点UDP帧格式TCP协议特点socket套接字可靠传输工作原理TCP帧首部重要字段TCP可靠传输以字节为单位的滑动窗口选择超时重传时间选择确认SACK(未经常使用P227)TCP流量控制TCP拥塞控制TCP拥塞控制办法:慢开始、拥塞避免、快重传、快恢复慢开始与拥塞避免快重传与快恢复TCP连接建立与断开:TCP连接建立2次握手为什么不行TCP连接释...

2019-05-16 15:32:23 867 1

原创 4.4 互联网常用路由选择协议

互联网常用路由选择协议理想路由算法自治系统AS内部网关协议IGPRIP(UDP端口520)距离向量算法流程RIP报文格式RIP缺点OSPF外部网关协议EGPBGP理想路由算法理想路由算法的特点:算法必须是正确的完整的;算法在计算上应简单;算法能适应通信量和网络拓扑的变换;算法应具有稳定性;算法应是公平的;算法应是最佳的(最佳路径 + 负载均衡);自治系统AS互联网规模太大,...

2019-05-14 09:45:13 1944

原创 4.3 ICMP、IGMP、ICMPv6(主要讲ICMP,剩下两个稍作了解)

ICMP、IGMP、ICMPv6ICMP——网际控制报文协议报文分类差错报文询问报文何时不回复差错报文ICMP报文数字段内容:IGMP——网际组管理协议IGMP两个工作阶段IGMP采取的具体措施多播路由选择协议洪泛与剪枝隧道技术基于核心的路由发现技术ICMPv6报文分类ICMP——网际控制报文协议网络层协议,IP协议字段值1报文分类差错报文终点不可达类型 3接口不对应时间超...

2019-05-13 22:00:17 2383

原创 TCP/IP知识结构图(未完成)

TCP/IP体系模型知识大纲TCP/IP总体结构网络接口层网络层运输层应用层TCP/IP总体结构网络接口层网络层运输层应用层 暂时还没弄

2019-05-13 21:25:50 668

原创 git学习笔记之基本指令的使用(一)

git学习笔记背景介绍基本指令init背景介绍git分布式的版本控制系统;是用C语言开发的;CVS基本指令init

2019-05-13 14:30:42 213

原创 Linux系统中GDB + gcc 使用方法

GDB用法简单使用被调试程序简单使用被调试程序#include <stdio.h>int func(int n);int main() { int i; long result = 0; for (i = 1; i < 100; ++i) result += i; printf("result[1-99] = %d \n", result); pr...

2019-05-12 15:41:13 279

原创 函数实例化应用

mark一段函数模板实例化应用的例子:#include <iostream>#include <string>#include <vector>#include <algorithm>template<typename T>void output(T str);int main(){ using std::string...

2019-05-09 11:45:21 517

原创 istream_iterator与ostream_iterator

注意点:istream_iterator // 执行此句时会等待一个输入 istream_iterator<int> iptr(cin), eof; // 执行此句后,相当于再等待一个新的输入 iptr++;ostream_iterator // 执行此句时不会产生输出 // 需要一个输出的类型转换 // int → char 等 ostream_ite...

2019-05-08 17:05:45 262

原创 4.2 划分子网/构造超网 + ARP

4.2 划分子网/构造超网 + ARP(计算机网络,P135)主要包含以下内容:划分子网: 两级IP到三级IP构造超网: 无分类编制CIDRARP: 地址解析协议划分子网 : 对外仍表现为一个网络IP地址 = 网络号 + 子网号 + 主机号子网掩码: 最好选用一连串连续的 1 (可以不是)子网IP = 子网掩码 & 收到的IP地址划分子网...

2019-05-08 13:31:20 565

原创 4.1 网络层 + IP地址 + IP数据报格式

4.1 网络层 + IP地址 + IP数据报格式(计算机网络,P113)网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务主要包含以下内容:虚拟互联网络分类的IP地址IP数据报格式虚拟互联网络互联网可以由多种异构网络互联而成,没有一种单一的网络能够适应所有用户的需求;网络互联需要的中间设备:物理层: 转发器、集线器数链层: 网桥(桥接器)网络层: 路由器...

2019-05-07 23:06:44 336

原创 C++ STL之算法(C++ primer,P713)

主要包含一下内容:算法分类函数与容器方法函数简介案例:统计单词个数

2019-05-06 18:24:31 331

原创 C++ STL之函数对象/函数符(C++ primer,P707)

主要内容:函数符的概念预定义的函数符函数符的概念函数符是可以以函数的方式与 () 结合使用的任意对象(此处对象不仅指类对象);函数名、指针、重载了 () 运算符的类对象都是函数符;函数符概念:生成器:不用参数即可调用的函数符;一元函数:用一个参数就能调用的函数符;二元函数:用两个参数可以调用的函数符;谓词:返回 bool 值的一元函数;二元谓词:返回 bool 值的二元...

2019-05-06 12:50:34 237

原创 C++ STL之关联容器(C++ primer,P702)

关联容器将 value(值)与 key(键)关联在一起,并使用 key 来查找 value;关联容器的优势是,提供元素的快速访问,也允许插入元素(但是不能固定位置插入)STL提供了四种有序关联容器:(底层都是树)set: 集合,key 唯一且 key 就是 valuemultiset: key 不唯一map: key 与 value 不同,key 唯一multimap: key 不唯...

2019-05-06 12:32:37 176

原创 3.3 使用广播信道的数据链路层 + CSMA/CD协议

3.3 使用广播信道的数据链路层 + CSMA/CD协议(计算机网络,P82)零散知识点:局域网拓扑连接形式有:星型网、环型网、总线网;通常信道采用随机接入的形式(可能会发生碰撞);集线器工作在物理层;计算机通过适配器(adapter)或网络接口卡与局域网连接;适配器收到正确帧后,使用中断通知计算机,并将其交付给网络层;主要内容如下:CSMA/CD协议使用集线器的星形拓扑以...

2019-05-06 09:04:57 972

原创 四轴飞行器入门——飞行器的硬件结构

引言 本篇文章主要介绍四轴飞行器的硬件结构。前半篇文章介绍每种硬件的作用,后半部分会讲一些硬件选型的相关知识。本文大部分内容为原创,少部分内容搬运自其它博客或文章。对于搬运过来的内容,文末附上原文链接。 飞行器的硬件结构 以四旋翼飞行器为例,本节主要介绍四轴飞行器的硬件结构,首先附上一张飞行器的硬件结构图。图中红色​​的箭头代表信号的传输方向,黑色的先代表电路连接(供电),数...

2019-05-05 19:35:51 3747

原创 C++头文件包含的内容(C++primer:9.1,P301)

通常头文件包含以下内容:函数原型 #define定义的符号常量(最好检测#ifndef) const常量(const修饰变量为内部链接性) 结构/类声明 模板声明 内联函定义(重要,内联函数定义可以放在头文件)!!...

2019-05-05 19:35:36 140

原创 C++ STL序列容器简介(C++ primer,P697)

STL序列容器简介包含以下内容:容器的概念序列容器的基本要求与可选要求几种序列容器特点与基本操作容器的概念STL具有容器概念和容器类型;容器概念是指具有名称(序列/关联容器)的通用类别;容器类型是指可用于创建具体容器对象的模板;所以,序列容器是一类容器类型的统称;容器是存储其它对象的对象,不能将任何数据类型存储到容器中。序列容器的基本要求与可选要求序列容器有七种:vec...

2019-05-05 19:30:24 274

原创 C++ STL之迭代器(C++ primer,P685)

泛型编程之迭代器头文件 < iterator >主要内容如下:泛型编程与面向对象编程什么是迭代器迭代器类型使用迭代器输入输出小技巧泛型编程与面向对象编程面向对象编程关注的是编程的数据方面,注重数据结构的重用与继承;泛型编程关注的是算法,注重在不同类型容器上算法的重用;两者共同特点是:抽象、创建可重用的代码。```模板使算法独立于存储的数据类型;迭代器使算...

2019-05-05 16:21:50 182

原创 C++ 输入多个字符串,移位后再排序输出(正反排序都要输出)

输入多个字符串(EOF结束),移位后排序.eg:1 zxcvb //zxcvb循环右移1位2 asdfg3 qwert4 poiuyyt输出为://从小到大排序bzxcv //zxcvb循环右移1位的结果ertqwfgasd //asdfg循环右移两位的结果uyytpoi//从大到小排序uyytpoifgasdertqwbzxcv实现的程序如下:#in...

2019-05-05 15:26:31 1250

原创 C++智能指针(C++ primer,P667)

智能指针智能指针是什么auto_ptr智能指针使用注意事项unique_ptrshared_ptr如何选择智能指针智能指针是什么智能指针是指:行为类似于指针的类对象;核心思想:它是一个类对象,对象过期时,对象的析构函数会自动被调用删除指针指向的内存;auto_ptr以auto_ptr为例使用智能指针,其余两个(实际是三个)智能指针使用方法与auto_ptr类似。#inc...

2019-05-05 10:54:15 223

原创 3.2 点对点协议PPP

3.2 点对点协议PPP(计算机网络,P76)注意:PPP只支持全双工链路,只支持点对点通信主要内容:PPP协议应满足的需求PPP协议组成PPP协议工作流程PPP协议应满足的十点需简单封装成帧(framing)透明传输差错检测支持多种网络协议(IP、IPX等)支持多种类型链路(物理链路)检测链接状态(在几分钟内自动检测出链路工作是否正常)设置最大传输单元(MTU...

2019-05-04 18:21:43 795 1

原创 3.1 数据链路层 + 点对点传输

3.1 数据链路层 + 点对点主要内容:数据链路层点对点通信过程封装成帧透明传输差错检测数据链路层点对点通信过程数据链路 = 物理链路 + 通讯协议网络适配器包含了数据链层、物理层的协议作用: 把网络层交下来的数据构成帧发送到链路上;把接收到的帧中数据取出上交给网络层主要步骤:A将网络层的IP数据报添加首部、尾部封装成帧;A将封装好的帧发送给B节点;B节点收到帧后校...

2019-05-04 16:23:04 846

原创 C++ RTTI(C++ primer,P642)

RTTI用途RTTI是运行阶段类型识别的简称。dynamic_cast与bad_cast异常若pt指向的类为Type类或者Type的直接/间接派生类,则返回type*型指针;否则返回nullptr指针。dynamic_cast<Type*>(pt);若试图引用返回的nullptr指针,则会出现bad_cast异常(异常定义在头文件 < typeinfo > 中...

2019-05-03 22:07:40 134

原创 C++ expection异常类、捕获所有异常(C++ primer,P639)

expection类头文件 < expection >stdexcept类(C++ primer plus,P632)包含以下异常:domain_errorinvalid_argumentlength_errorout_of_boundsrange_erroroverflow_errorunderflow_errorbad_alloc类包含以下异常:b...

2019-05-03 21:27:27 5496

原创 C++异常机制、try、catch、throw(C++ primer,P619)

throw通常用if()语句判断先决条件,如果会出现异常,则利用throw语句抛出异常类型;异常类中的异常可以不自己使用throw语句;//例如我要 计算(a+b)的倒数,需要判断a+b是否为0if(a == -b) throw "this is an exception";try{…}程序块try{//此处执行异常处理的相关语句...}执行程序块中的程序,如果出现异常(...

2019-05-03 21:10:58 148

原创 C++中abort()与exit()(C++ primer,P617)

abort()属于异常退出;直接终止进程,不做任何处理,没有任何返回值;不是返回到main();exit(…)属于正常退出;可以返回参数,exit( 0 );终止进程前会释放变量、缓存、关闭I/O等操作;...

2019-05-03 20:36:48 466

原创 C++继承、动态内存分配(C++ primer)

c++ primer plus P516,继承与动态内存分配继承与动态内存分配继承时派生类不使用new,则无需重新定义构造函数、析构函数、复制构造函数、重载赋值运算符;继承时派生类使用new进行动态内存分配:需要显式的定义析构函数复制构造函数赋值运算符重载(需要先判断是不是this指针,再delete原动态内存分配,最后分配内存)何时调用复制构造函数将新对象初始化为一个同类...

2019-05-02 15:37:28 173

原创 C++抽象基类与虚基类(C++ primer)

c++ primer plus P508,抽象基类c++ primer plus P556,虚基类抽象基类(abstract base class,ABC)抽象基类是解决如下问题:加入现在需要开发一个图形类,表示圆与椭圆(注意,圆是一种特殊的椭圆)。所以初步考虑从椭圆类中派生出圆类。但是现在遇到一个问题,圆与椭圆的面积计算公式不同,所以需要建立一个ABC,抽象出圆与椭圆的共性,圆类、椭圆类...

2019-05-02 15:18:35 2547 3

原创 C++ valarray模板使用方法

暂时还未整理完,可以先参考:cplusplus.com

2019-05-01 21:33:05 308

空空如也

空空如也

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

TA关注的人

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