- 博客(23)
- 资源 (1)
- 收藏
- 关注

原创 Gazebo环境下VIO SLAM系统实现
Gazebo环境下VIO SLAM系统实现Gazebo环境下VIO SLAM系统实现简介0. 准备工作1. 搭建gazebo环境1.1 相机1.2 IMU2.VINS-MONO2.1 安装及make2.2 参数修改2.3 外参标定2.3.1 相机旋转关节控制器2.3.1 外参标定过程2.4 实验效果Gazebo环境下VIO SLAM系统实现简介迫于实体机器人不在手边的情形,gazebo不失为一种好的方案。但搜了下baidu和google,都没有很全的关于自己搭建gazebo环境下相机及IMU完成SLA
2020-05-23 12:35:27
4372
9

原创 simpleBGC32-软件代码开源
simpleBGC32官方只提供了硬件开源,导致市场上有大量的v1.3版的硬件电路板用于飞机云台,通过烧录官方给的hex文件实现基本功能。但是由于针对simpleBGC32的软件代码没有开源,所以很多需要进行二次开发的时候就比较麻烦。本人在项目中需要知道两个IMU的数据,用于计算基座相对相机的位姿,但是通过购买的simpleBGC32板子无法直接获取IMU数据,于是硬着头皮重新进行代码开发。代码工...
2019-10-24 22:48:07
6449
7
原创 select IO复用测试
服务器端测试代码如下:int main(){ int maxfd,s_ret,i; int client_fd; int sockfd;//socket返回值 struct sockaddr_in server_sockaddr,client_sockaddr; int sin_size, recvbytes; char ipstr[16]...
2018-08-26 11:14:21
447
原创 malloc内存管理总结
内存管理内存管理主要包含两个层面的内容: 1、操作系统内核相关的内存管理:物理内存层 2、库函数层:主要是堆内存,即malloc实现层 如果用户还有需要会在用户层再做一次内存管理机制,例如SGI STL中的内存管理机制(二级配置器)。由于篇幅有限,本文主要介绍库函数层的malloc实现机制。同时上述两层中由于操作系统等不同也存在差异,例如malloc层,Wind...
2018-08-14 13:03:49
5536
原创 Tinyhttpd开源项目阅读
Tinyhttpd轻量型服务器相比自己写服务器的思路,相同点:1、socket建立流程相同,首先定义port端口,新建socket返回文件描述符(int型),绑定sockaddr,再listen设定可连接套接字队列大小为5,再通过while(1)进行accept,查询已连接队列中是否存在socket已准备好,返回文件描述符; 2、新建一个线程来处理accept请求消息;不...
2018-08-03 01:17:38
7676
1
原创 ucos学习笔记
前一段时间笔者学习uCOS-III,第一次接触OS这个概念吧。下面把个人的学习笔记分享出来,仅供参考。1、前后台系统:后台程序是一个死循环,也称为“ 任务级 ”,前台程序则是中断服务程序,也称为“ 中断级 ”;一般的低成本应用多采用这种程序结构。2、实时内核:仅为一段软件代码,它把系统功能划分为多个任务,每个任务只完成特定的一个功能,通常都为死循环;CPU在任意时刻只能执行一个任务,但每个...
2018-07-23 20:27:20
476
转载 Linux和windows访问设备的方式比较
LInux一直秉承着一切皆文件的理念,但是如何把设备当做文件来处理呢?Windows又是如何处理设备的呢?参照前辈的译文 毕业后一直在学操作系统, 有时候觉得什么都懂了,有时候又觉得好像什么都不懂,但总体来说自认为对操作系统实现机制的了...
2018-07-12 16:12:35
3818
原创 Jlink与MCU连接
下载器:JLINKV8 主控芯片:FREESCALE K60DN512VLL10 开发环境:IAR两年没用过的板子和下载器 第一步先刷了个固件,win10 64位系统完美刷固件(https://blog.youkuaiyun.com/hzt12345hf/article/details/50846447) 然后打开IAR进行download,提示:“Could not measu...
2018-07-03 18:24:57
4224
转载 vector初始化
vector的几种初始化及赋值方式:(1)不带参数的构造函数初始化//初始化一个size为0的vectorvector<int> abc;12(2)带参数的构造函数初始化//初始化size,但每个元素值为默认值vector<int> abc(10); ...
2018-07-01 14:57:39
196
转载 Linux头文件整理
linux常用头文件详解POSIX标准定义的头文件<dirent.h> 目录项<fcntl.h> &a
2018-06-30 22:47:52
1403
1
转载 linux下C/C++头文件梳理,看完这篇再也不会搞糊涂头文件了!
一:前言进行linux下C/C++服务端后台开发的都知道,需要跟各种头文件打交道。比如使用printf函数则需要引用#include <stdio.h>,使用STL的map容器则要#include <map>,使用socket网络编程则要#include &...
2018-06-30 22:43:45
1607
1
原创 剑指offer-数组中最小的K个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。这是一个经典的topK问题。 根据一般的想法,对数组进行排序,再去前K个数作为结果。排序算法若采用快排,平均时间复杂度为O(n*logn)。 因此常用解法为构建最大(小)堆的策略来解topK问题,这种解法的平均时间复杂度为O(n*logk),所以很适合于海量数据...
2018-06-30 20:18:30
309
原创 fork()介绍
fork()函数: 用于创建一个进程,所创建的进程复制父进程的代码段/数据段/BSS段/堆/栈等所有用户空间信息;在内核中操作系统重新为其申请了一个PCB,并使用父进程的PCB进行初始化; 子进程执行的位置是fork()函数执行后的代码处,猜想是复制了父进程的PC指针给子进程。例题:#include "stdio.h"#include "sys/types.h"#include "...
2018-06-27 20:54:32
27562
3
原创 Robot Arm from solidworks to ros
Robot-Arm-from-solidworks-to-rosThere are some steps to compete import solidworks 3D file to ROS(RVIZ/Gazebo) and simulink the robot arm.windows下的操作: 安装SW2URDF插件 对机械臂solidw...
2018-06-27 20:47:02
652
原创 剑指offer:求1+2+3+...+n,不能使用乘除法、for、while、if-else、switch-case以及条件判断语句
剑指offer:求1+2+3+…+n,不能使用乘除法、for、while、if-else、switch-case以及条件判断语句常规解法:直接通过递归进行计算,结束条件为n==1class Solution {public: int Sum_Solution(int n) { if(n==1) return 1; else return n+S...
2018-06-27 20:23:38
271
原创 Lintcode-编辑距离
/* 描述 给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。你总共三种操作方法:插入一个字符 删除一个字符 替换一个字符样例 给出 work1=”sailn” 和 work2=”failing”返回 3 */ 同样利用区间型动态规划建立二维数组,并将word1作为列,Word2作为行, 初始化表如图所示。 建立状态转移方...
2018-06-08 16:54:46
310
原创 Lincode 670. 预测能否胜利
题目描述: 给一由非负整数构成的分数数组. 玩家1 从数组的任意一端选择一个数字, 然后是玩家2, 然后又是玩家1 等等. 每一次一个玩家都只取一个数, 每个数只能取一次. 等到数组内分数都被取完后, 分数大的那个玩家获胜. 给一分数数组, 预测玩家1 是否是赢家.你可以假设每个玩家都想要使他的分数尽可能的大. 样例 给出 nums = [1, 5, 2] 返回 false (最初, 玩...
2018-06-08 12:16:59
540
转载 STL面试
1.说说std::vector的底层(存储)机制。 vector就是一个动态数组,里面有一个指针指向一片连续的内存空间,当空间不够装下数据时,会自动申请另一片更大的空间(一般是增加当前容量的50%或100%),然后把原来的数据拷贝过去,接着释放原来的那片空间;当释放或者删除里面的数据时,其存储空间不释放,仅仅是清空...
2018-06-05 14:45:20
313
转载 GRUB启动过程分析 & GRUB 引导程序配置
计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占416字节),并把控制权交给Boot Loader,由Boot Loader进一步完成操作系统内核的加载。当Boot Loader找到内核之后,...
2018-06-02 12:05:23
2050
转载 剑指offer_链表中环的入口结点
假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程) 当快慢指针相遇的时候:此时慢指针走的路程为:Sslow = x + m * c + a 快指针走的路程为:Sfast = x + n * c + a 则有:2*Sslow = Sfast → 2 * ( x + m*c + a ) = (x + n *c + a)...
2018-05-31 10:40:20
127
转载 操作系统-内存地址空间
存储器(仅指内存)分为rom和ram,在物理上是独立的器件,cpu操作他们时,都做为内存来处理,把他们总的看作一个若干存储单元构成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间 8086的内存地址空间分布如下: 0x00000-0x9ffff 为主存(ram) 0xa0000-0xbffff为显存地址空间 0xc0000-0xfffff为各类rom地址空间 bios(各个部件的,...
2018-05-12 10:10:21
2615
原创 K-means和PAM聚类算法Python实现及对比
K-means(K均值划分)聚类:简单的说,一般流程如下:先随机选取k个点,将每个点分配给它们,得到最初的k个分类;在每个分类中计算均值,将点重新分配,划归到最近的中心点;重复上述步骤直到点的划归不再改变。下图是K-means方法的示意。 PAM(Partition Around Medoids)是K-medoid(K中心点划分)的基础算法,基本流程如下:首先随机选择k个对象作为中心
2017-10-21 15:13:04
19273
14
原创 敏捷开发平台AgileEAS.NET中的本地数据库连接过程(以DrugShop为例)
本文适用于刚接触AgileEAS.NET的开发,且需要进行数据库访问的开发人员及学生。开发环境:VS2013 数据库:Microsoft SQL Server 2008R21 数据库登录,记住登录用户及密码,本例以本机的数据库作为服务器,登录及登录后如下图。 2 数据库登录完成后再来分析DrugShop工程里如何连接到数据库。 1> 从工程的执行入口开始,首先是DrugShop.Mai
2017-08-16 19:29:49
702
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人