自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 C++【泛型编程】

谭书:谭浩强版《C++程序设计(第3版)》Cpp:《C++ Primer Plus(第6版)》EC:《Effective C++(第3版)》一、模板函数模板【CppP231】声明:template<typename Type> void fun(Type a,float b);定义:template<typename Type>void fun(Type a,float b){……}(1)函数模板本身不会创建任何函数,只有在调用函数模板时才会根据实际情况创建相

2021-01-31 10:37:21 194

原创 C++【面向对象】

谭书:谭浩强版《C++程序设计(第3版)》Cpp:《C++ Primer Plus(第6版)》EC:《Effective C++(第3版)》一、类类的声明【谭书P245 P289】(1)类是一种抽象的数据类型,并不占用存储空间,因此不能在类的声明中对成员变量进行初始化。(2)对一个类进行“提前引用声明”后,可以用该类的名字来定义指向该类的对象的指针变量、对象的引用。虽然这时系统还没见到这个类的声明的具体内容,但指针变量和引用与其所指向的类的对象的大小无关,因此是合法的。二、对象对象的初始化

2021-01-31 10:25:59 197

原创 C++【基础】

今天调试的时候,一开始定义了一个宏定义:#define status 0用这个宏定义去作if语句的判断,虽然是0,但结果直接就进入if里面了。。if(status){……}然后把宏定义改成了bool型变量,就不会进if了。。bool status = false;有大佬看到了知道原因的话麻烦不吝赐教。。谢谢...

2020-11-21 21:12:46 427

原创 std::bind实现在类外访问类私有成员函数

#include <iostream>#include <functional>using namespace std;class test;typedef std::function<void (test*)> Func;class test{ public: Func get(void){ return std::bind(&test::privat

2022-04-10 16:00:41 685

原创 【muduo库】server端流程图

1. 首先是根据陈硕老师的muduo库手册p11的类图,结合自己的学习所得画的一个更详细的流程。可能会有错误,如果发现了再改正。2. 利用muduo库架设server端的例子暂时没看,自己对Task处理完成后发送数据步骤的设想,可以和上图结合着看:// 真正的应该需要用户自己定义在main.cc中: void Task(const TcpConnectionPtr& conn,Buffer* buf,Timestamp time){ // // 对收到

2022-04-09 14:40:50 670

原创 pthread线程私有数据TSD 几点测试结果

更加详细的内容查看man手册或百度,这里只是几个实际测试的结果。仅代表实验现象,并不考虑实现原理。pthread_key_tkey可以定义为全局变量,全局变量属于所有线程共有的。在不同的线程中可以用pthread_setspecific为key绑定不同的实际数据,在每个线程中key指向的实际数据是线程私有的。int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));create不是创建key,而是为key注册一

2022-04-05 13:12:43 179

原创 【C语言 Linux系统开发 视频课程学习笔记】

学习的课程在b站:史上最强最细腻的linux嵌入式C语言学习教程【李慧芹老师】感谢李老师!感谢up主!本篇博客只是收集一下学习过程中遇到的函数和其他知识点,并不会详细展开。某个函数的具体情况还需通过man手册来进一步了解。一、I/O1.1 标准I/OFILE结构体文件的打开/关闭:fopen();fclose();文件内容的读取/写入:fgetc();fputc();fgets();fputs();fread();fwrite();函数族:printf();scanf().

2022-03-23 18:26:03 3362 1

原创 自由链表(free list)——SGI STL的空间配置器(allocator)第二级配置器维护方法

参考:STL空间配置器之第二级配置器的free-list详解/*free list的节点*/union obj{ union obj * free_list_link; // 第一字段 char client_data[1]; // 第二字段};/*16个free list的头指针存放于数组free_list[]*/static obj * volatile free_list[16];(1)链表头指针数组free_list[ ]  自由链表free list包含了16个链表,每个链

2021-10-30 21:57:08 1862 3

原创 计算机网络——学习笔记

最近在初学《计算机网络(自顶向下方法)》,涉及到不少协议以及其他知识点,因此在这里将它们整理并联系起来帮助记忆理解。这里以主机A向服务器B发起一个HTTP请求为例:假设服务器主机名:www.someschool.edu请求的文件目录:/somedir/page.html第一步:  主机A希望从服务器B获取一个html文件,因此打算发送一个请求报文给服务器B。但此时主机A只知道服务器的名字,但并不知道服务器的IP地址。  利用DNS目录服务获取IP地址【DNS执行步骤P84】:主机A上的DNS应用

2021-10-29 16:48:02 234

原创 背包问题总结

1.背包容量j的遍历顺序此问题出现在物品数量是否有限的问题中。更新dp[j]时往往需要用到同一行上的数据dp[j-nums[i]],如果先遍历dp[j-nums[i]]则物品i有可能已经被装入了,然后遍历dp[j]时可能在dp[j-nums[i]]的装填方法上再装一个物品i,导致同一个物品i被使用两次。反之先遍历dp[j]后遍历dp[j-nums[i]]则可避免这种重复使用。(1)01背包问题【Leecode题416、1049】因为物品有限,需要考虑j的遍历顺序:更新dp依赖同一行的数据时,从后往前

2021-10-19 19:34:18 157

原创 C++ Lambda表达式

参考:C++ 11 Lambda表达式C++之Lambda表达式1、Lambda表达式写法格式[捕获变量列表] (输入参数列表) mutable 或 exception 声明 -> 返回值类型 {函数体}几种省略写法:[] (输入参数列表)-> 返回值类型 {函数体} // 捕获变量列表为空[] (输入参数列表){函数体} // 自动推导返回值类型,没有return语句时返回类型为void[]{函数体} // 捕获列表、输入参数均为空2、Lambda的名称与执行2.1为L

2021-10-18 19:38:13 217

原创 C++ 模板的特化(specialization)

参考:C++模板的偏特化与全特化#include <iostream>/***************************函数全特化***************************/template<typename T1,typename T2>void fun(T1 t1, T2 t2) { std::cout << t1 << " " << t2 << std::endl;}/** 全特化模板函

2021-10-16 19:01:12 671

原创 C++ 哑元参数

参考:C++ static 函数的定义、使用,参数只有类型,没有形参是什么情况?C++编译器会对函数名进行名字修饰(name mangling),名字修饰是函数名和参数类型的组合,编译器以此来区分重载函数。而如果重载函数的参数列表一样时,编译器将会报告重复定义。因此加入一个没有形参名、只有形参类型的哑元参数用于区分不同的重载函数,这个哑元参数在函数内部不能也不需要使用#include <iostream>void fun(int) { std::cout << "u

2021-10-16 16:58:51 357

原创 C++ 可变参数列表 与 列表初始化

可变参数列表参考:文章1 文章2列表初始化参考:c++initializer_list详解#include <iostream>#include <stdarg.h> // 使用可变参数列表需要这个头文件/** 可变参数列表* num:将要输出的数字个数* buf:需要输出的数字*/void outprint(int num, ...) { va_list buf; // 定义一个可变参数列表buf va_start(buf,num); //开始取用,num为

2021-10-16 16:31:19 328

原创 C++ 可变模板参数初探

参考:泛化之美–C++11可变模版参数的妙用根据参考资料,简单验证了一下模板函数、模板类中总共4种情况。4种情况的详细讲解直接看参考资料吧,大佬写的非常好,在这里本人就不瞎说了。#include <iostream>//用哪个就取消相应注释#define func_recursion // 可变模板参数函数——递归法//#define func_comma // 可变模板参数函数——逗号表达式法//#define class_recursion // 可变模板参数类——

2021-10-16 14:44:06 137

原创 C++ traits萃取技术初探

阅读了大佬的博客C++ traits技术浅谈。为了方便自己的理解,对给出的代码稍加注释和修改。#include <iostream>using namespace std;/*先定义一些tag*/struct A {};struct B : A {}; // 继承的好处就是,当函数需要参数为A,而你传入的参数为B的时候,可以往上一直找到适合的对象// unknown_class类用来掩盖实际类型,测试萃取器的作用template <class realtype>

2021-10-15 17:59:42 162

原创 C++ Copy Constructor什么时候才会被编译器生成出来呢?

文章内容基于《深度探索C++对象模型》P48~60整理得到,掺杂个人理解,如有错误,敬请斧正!还可结合我另一篇博客一起看:Default Constructor什么时候才会被编译器生成出来呢?原文:“和default constructor一样,copy constructor也是在‘必要的时候’才由编译器产生出来。……就像default constructor一样,C++ Standard上说,如果class没有声明一个copy constructor,就会有隐式的声明或隐式的定义出现。和以前一样,C

2021-05-16 19:30:26 192

原创 C++ Default Constructor什么时候才会被编译器生成出来呢?

文章内容基于《深度探索C++对象模型》P39~59整理得到,掺杂个人理解,如有错误,敬请斧正!注:文中“合成”一词一般指的是“编译器implicit声明nontrivial的default constructor”这个动作一、Default Constructor首先default constructor指的是在声明class object时可以不用给定参数的constructor。分为两大类:1、explicit声明的default constructor(1)无参数的constructor

2021-05-16 11:12:00 1001 4

原创 ubuntu18.04安装ROS(暂时没装好)

主要参考了两篇博客,同时加入了我遇到的一些问题和解决方法:添加链接描述添加链接描述一、设置ubuntu软件和更新二、设置密钥sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116三、更新资源库sudo apt update此时提示我:由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654,再

2021-04-13 13:49:41 145

原创 MATLAB笔记

文本输出:(1) fprintf('NodeNum:%d\n',NodeNum);地图相关(1)binaryOccupancyMap(矩阵); %利用矩阵生成一个地图对象(2)inflate(map,0.2); %地图膨胀(3)show(map); %显示地图(4)index = sub2ind(map.GridSize,x,y); %得到(x,y)点的线性序列矩阵处理(1)数组B = unique(数组A); %将数组A中重复的元素去掉,得到数组B(2)length(数组); %返回

2021-04-04 14:33:36 329 2

原创 A*算法大致思路

两个表:1.有序表OPEN:存放遍历到的点n的周围的点x。取出点n后将其删除2.表CLOSED:存放遍历过的点n。只进不出while(OPEN表不为空){ //OPEN表为空再退出while,说明没有从起点s到达终点e的有效路径 从OPEN表中取出f最小的点n; //n从OPEN中删除 将n存入CLOSED表; for(遍历n周围的4个点x){ 计算x的g h f,记录x的父节点为n; if(x == e) { 将x加入CLOSED; 退出for和while;

2021-03-31 09:45:49 314

原创 C++ vector二维方阵初始化

vector<vector<int> > result(n,vector<int>(n)); //result有n个元素,每个元素都是vector<int>(n)的数组

2021-03-29 20:39:46 227

原创 未知的原地归并算法?求大佬帮忙分析一下

在学归并算法时,思考原地归并的解法,结果写了这么个算法,不知道怎么分析它#include <iostream>int exchange(int data[],int p1,int p2) { int temp = data[p1]; data[p1] = data[p2]; data[p2] = temp;}int main() { int a[20] = {1,11,16,29,34,57,69,77,81,92,3,6,18,25,33,46,47,59,61,99};

2021-01-19 20:47:57 87 1

原创 PX4应用程序开机自启动

修改启动脚本新版本的PX4固件这些rc文件位置为:/PX4-Autopilot/ROMFS/px4fmu_common/init.d文件夹中。1.以rc为开头的都是飞控的启动脚本的文件,通过这些文件决定那些应用程序应该执行,那些不执行。2.pixhawk支持多种类型的飞行器,四轴,固定翼,直升机等等。就是通过这些rc启动脚本指定。比如如果是rc.fw_defaults是固定翼飞机的脚本,如果飞机是多旋翼这个rc.fw_defaults是不会执行的,而是执行rc.mc_defaults这个多旋翼脚本。

2020-11-07 17:16:20 996 3

原创 PX4添加新的应用

研究了四天怎么添加新的应用程序,前几天都尝试着添加.cpp文件的应用程序,跟着网上的方法都失败了,结果今天试着添加一个.c文件的应用程序居然成功了。先把.c的添加方法写一写,以后学会了怎么添加.cpp了再来修改吧。这是官方手册给的添加方法,也是我参考的:https://dev.px4.io/master/zh/apps/hello_sky.html一、新建文件在src下想要的文件夹(如/src/modules 或 /src/examples)中新建一个文件夹,我这里选择在/src/modules

2020-11-06 16:51:36 2176 4

原创 PX4添加新的库(lib)

123

2020-11-04 21:16:18 314

原创 PX4添加新的msg和topic

一、首先在/Firmware/msg文件夹下新建一个test.msg文件:PICTURE:/home/dal/.config/tencent-qq//AppData/file//sendpix0.jpg

2020-11-04 19:03:20 2095 10

原创 slam14讲5.4.2程序修改

原本的程序我的电脑上编译出现了各种各样的问题。一、Sophus库参照我另一篇博客进行修改:https://blog.csdn.net/weixin_44986556/article/details/109154373二、OpenCV库修改完Sophus之后,出现了大量关于OpenCV库的问题,诸如:undefined reference to `cv::imread(cv::String const&, int)'因为同样使用了OpenCV库,所以我找来了7.2.2的CMakeLi

2020-10-25 15:50:58 326 5

原创 slam14讲,李代数库Sophus遇到的问题及解决办法

首先遇到sophus安装问题是在第4章时,高博虽然书上说“我们使用带模板的Sophus库”,但实际的代码使用的是非模板库。高博在git上给的sophus库文件我在make的时候报错,找不到解决办法,因此在别的地方下载了make可以通过的一个sophus库(原网址找不到了,我会上传一份)。make完成之后,编译第4章的代码会发现一些错误,解决办法(感谢):https://blog.csdn.net/zhangwenhou/article/details/108424248一、修改包含的头文件名#in

2020-10-19 09:53:00 4305 2

原创 #error This file requires compiler and library support for the ISO C++ 2011 standard. This support m

用KDevelop调试 slam14讲的 3.7显示运动轨迹的程序时提示:error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.此时在CMakeLists.txt中添加:set(CMAKE_CXX_FLAG

2020-10-08 14:34:09 625 3

原创 cannot find trajectory file at ./examples/trajectory.txt

slam十四讲 3.7显示运动轨迹的程序 trajectory.txt文件路径修改string trajectory_file = "./examples/trajectory.txt";改为string trajectory_file = "/home/dal/slambook2/ch3/examples/trajectory.txt";即使用自己电脑上trajectory.txt的文件路径...

2020-10-08 14:24:44 2418 5

原创 四元数、欧拉角学习笔记&个人理解

文章目录一、背景知识:点乘、叉乘二、二维复数表示旋转三、为什么三维旋转用四维复数表示而不用三维复数四、四元数的书写表示五、四元数表示旋转六、四元数→欧拉角一、背景知识:点乘、叉乘  复数的点乘:(ai+bj+ck)•(xi+yj+zk)=-(ax+by+cz)  复数的叉乘:(ai+bj+ck)×(xi+yj+zk)=(ax)i×i+(ay)i×j+(az)i×k+(bx)j×i+(by)j×j+(bz)j×k+(cx)k×i+(cy)k×j+(cz)k×k  ij

2020-09-30 10:48:46 1858

QGroundControl.zip

QGC安装包

2020-11-02

cmake-3.18.3-Linux-x86_64.tar.gz

cmake-3.18.3-Linux-x86_64.tar.gz

2020-10-30

sophus(带模板)

适合高翔slam14讲使用。高翔的代码使用的是非模板的Sophus,安装本Sophus库后需要对高翔给的例程代码做一些简单的修改,详见我的博客:https://blog.csdn.net/weixin_44986556/article/details/109154373#t1。安装时先解压,然后在解压得到的Sophus文件夹中建立“build”文件夹,进入“build”文件夹后打开终端,用“cmake ..”和“make”完成编译。

2020-10-19

空空如也

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

TA关注的人

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