自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小牟加油

嵌入式软件 ROS

  • 博客(25)
  • 资源 (10)
  • 收藏
  • 关注

原创 MPU6050 6轴陀螺仪的使用与校准

1 MPU6050初始化①初始化IIC接口。②初始化MPU6050。由电源管理寄存器1(0X6B)控制。③设置角速度传感器和加速度传感器的满量程范围。由陀螺仪配置寄存器(0X1B)和加速度传感器配置寄存器(0X1C)设置 。④设置其他参数。配置中断,由中断使能寄存器(0X38)控制;设置AUX IIC接口,由户控制寄存器(0X6A)控制;设置FIFO,由FIFO使能寄存器(0X23)控制...

2019-08-03 10:56:42 35102 3

原创 拓展卡尔曼滤波学习(python源码)

拓展卡尔曼滤波的逐步理解与实现这个文章讲的非常不错。配套代码实现文章。【机器人位置估计】卡尔曼滤波的原理与实现本文主要是针对两篇文章的基础上做笔记和记录学习过程。一、基本模型1.1 机器人小M现在小M只具有一个物理量-位移x,也就是一维卡尔曼/1.2 位移状态预测值估计值自身会由于运动模型预测不准确而导致预测误差,由误差值得到的状态值也是存在误差的,如果以存在误差的状态值继续预测下一个状态值,误差会存在累计的问题。需要引入测量量进行修正。1.3 传感器测量值.

2020-09-10 11:42:11 4258 3

原创 DWA算法学习(带matlab源码)

机器人状态位置 (x,y) 航向yaw 速度v 角速度w机器人运动模型最高速度m/s]最高旋转速度[rad/s]加速度[m/ss]旋转加速度[rad/ss]%速度分辨率[m/s]转速分辨率[rad/s]]评价函数参数航向得分的比重距离得分的比重速度得分的比重向前模拟轨迹的时间速度采样,产生可用轨迹通过机器人模型,以机器人的速度限制和角速度限制为界限,以速度分辨率和角速度分辨率遍历所有采样速度。通过仿真时间确定机器人的轨迹,机器人轨迹是由点位进行

2020-09-10 11:40:25 5785 7

原创 Apollo Planner

参考文章https://blog.csdn.net/AdamShan/article/details/80779615https://blog.csdn.net/weixin_43619346/article/details/104973670笛卡尔坐标系的替代解决方案为 Frenet 坐标系,Frenet 坐标系描述了汽车相对于道路的位置,在 Frenet 框架中,s 代表沿道路的距离称为纵坐标,d表示与纵向线的位移称为横坐标。世界坐标系下的一个位置可能在Frenet 坐标系中表示的位

2020-09-10 11:39:01 635

原创 Apollo Control学习

反馈控制是无人车最底层的软件算法模块,包括横向控制和纵向控制两个部分。横向控制主要用于车辆方向盘的控制纵向控制则主要负责车辆油门、刹车的控制横向控制根据上层运动规划输出的路径、曲率等信息进行跟踪控制,以减少跟踪误差,同时保证车辆行驶的稳定性和舒适性。控制模块的作用是根据规划(planning模块)生成的轨迹,计算出汽车的油门,刹车和方向盘信号,控制汽车按照规定的轨迹行驶。根据汽车动力学和运动学对车辆进行建模,采用串级PID或模型预测控制(MPC)方法实现控制过程。...

2020-09-10 11:37:53 891 1

原创 滤波算法与传感器融合

卡尔曼滤波卡尔曼滤波主要是采用预测和更新两个过程。预测过程主要是根据机器人运动模型,对机器人的下一个位置进行预测,其中P代表系统误差。系统误差是在更新的。例如传感器测量误差Q非常大,这样导致卡尔曼增益K值变小,这样测量值对于预测值的修正作用就会降低,因为测量值没有对预测值起到足够的修正作用,这也就导致系统误差在累计增加。同样,如果传感器足够精确,对预测量起到有效的修正,这是的系统误差就会降低。拓展卡尔曼滤波主要是为了解决预测方程和测量方程可能不是线性方程,如果是非线性方程,只能使用泰勒公式.

2020-09-10 11:36:34 1530

原创 基于已知位姿的建图方法

目前较为简单的SLAM建图过程都是将定位和建图进行分离,在确定机器人位姿后,通过激光传感器的测量量对周围环境进行建图。如何利用激光传感器的测量信息进行建图,主要是三种方法:1. 覆盖栅格建图算法slam11-gridmaps-4.pdf3.3MB2. 计数建图算法3. TSDF建图算法1.覆盖栅格建图2. 计数建图3. TSDF建图整体算法的思想是最小二乘法。可以对不同测量信息进行拟合...

2020-09-10 11:35:18 611

原创 MPC(模型预测控制,差分底盘距离)

参考博客地址:https://blog.csdn.net/weixin_43879302/article/details/105880972?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLea...

2020-09-10 11:34:04 1088

原创 导航:坐标系

导航的基本原则就是保证两个基本坐标系的正确转化,没有误差。只有实现了这个原则,载体才可以在自己的坐标系中完成一系列动作而被转换到地理坐标系中看起来是正确的。一、常用坐标系1.1 经纬高与地心坐标系两者关系  在我们导航过程中,经常会用到GPS定位,GPS返回的数据是基于经纬高坐标系的。  经纬高坐标系与地球直角坐标系两者又能通过一定的公式进行坐标系转换。  地球直角坐标系又称地球中心坐标系、地心坐标系等。1.1.1 转换公式经纬高转地心地心转经纬高1.2 地理坐标系地理坐标系可.

2020-07-17 21:28:45 1602

原创 数据结构总结

2020-07-08 20:02:41 147

原创 数据结构学习-数据结构的基本概念

1. 概述2. 基本概念需要根据实际的业务需求来确定什么是数据元素,什么事数据项。数据结构其实就是存在相互关系的数据元素的集合数据对象是具有相同性质的数据元素的集合在下图中,A门店的顾客按照排队顺序是存在先后关系的,属于数据结构A门店的顾客信息和B门店的顾客信息是具有相同性质的,但是因为没有特定关系,所以是数据元素3 数据结构== 数据结构由逻辑结构。物理结构(存储结构)和数据运算三要素组成==3.1 逻辑结构3.2 存储结构3.3 数据运算数据的运算–实现在数据上的

2020-07-08 00:37:01 215

原创 ROS Topic学习笔记

1.Dijkstra算法与最佳优先搜索算法.  Dijkstra算法是一种典型的单源最短路径算法,属于广度优先算法。  Dijkstra算法从物体所在的初始点开始,访问图中的结点。它迭代检查待检查结点集中的结点,并把和该结点最靠近的尚未检查的结点加入待检查结点集。  该结点集从初始结点向外扩展,直到到达目标结点。  Dijkstra算法保证能找到一条从初始点到目标点的最短路径,只要所有的边都有一个非负的代价值。(我说“最短路径”是因为经常会出现许多差不多短的路径。)   下图是 Dijkstr

2020-07-05 12:15:28 386

原创 ADRC学习与参数整定心得

ADRC,中文名是自抗扰控制技术。继承了经典PID控制器的精华,对被控对象的数学模型几乎没有任何要求,又在其基础上引入了基于现代控制理论的状态观测器技术,将抗干扰技术融入到了传统PID控制当中去,最终设计出了适合在工程实践中广泛应用的全新控制器。1. ADRC介绍ADRC主要跟踪微分器,非线性状态反馈(非线性组合),扩张观测器(ESO)三部分组成。2. 跟踪微分器TD2.1 作用2.2 表达式2.3 参数含义及作用2.4 代码实现2. 跟踪微分器TD2.1 作用最速跟踪微分器的作用是

2020-05-21 12:41:09 9026 4

原创 ARM Linux驱动开发学习

一、Linux三大驱动类型:字符设备驱动:字符设备驱动最多,从最简单的点灯到 I2C、 SPI、音频等都属于字符设备驱动的类型。块设备驱动:块设备驱动就是存储器设备的驱动,比如 EMMC、 NAND、 SD 卡和 U 盘等存储设备,因为这些存储设备的特点是以存储块为基础,因此叫做块设备。网络设备驱动:不管是有线还是无线,都属于网络设备驱动。一个设备可以属于多种设备驱动类型,比如 USB...

2020-03-16 17:49:23 293

原创 STM32中的宏定义及库函数分析

我们在使用KEIL5开发STM32时可以使用"GPIOB-ODR"这种方式来给GPIOB的寄存器ODR赋值,=将某个外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基地址,这样我们就可以通过这个结构体指针来访问这个外设的所有寄存器。

2020-03-06 16:54:15 3257

原创 嵌入式Linux之Linux C编程及工具使用

对VIM、Makefile工具的指令、用法做了详细的解读和标注,能够快速入门和上手

2020-03-05 17:20:17 329

原创 嵌入式Linux学习之I.MX6U启动方式详解

MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC、 NAND Flash、 QSPI Flash等启动。本文详解了I.MX6ULL启动配置方式及相关寄存器讲解。

2020-03-04 20:50:44 907

原创 嵌入式Linux之MX6ULL裸机例程

将 STM32与LMX6ULL逻辑开发进行了比较,详细解释了I.MX6ULL IO的配置过程,以及GPIO如何配置输入和电气属性,并给出了一些参考资料。以LED点亮为例子,用C语言和汇编两种方式描述了整个例程。

2020-03-04 19:37:08 1062 4

原创 嵌入式Linux之ARM汇编基础

对于 Cortex-A 芯片来讲,大部分芯片在上电以后 C 语言环境还没准备好,所以第一行程序肯定是汇编的,至于要写多少汇编程序,那就看你能在哪一步把 C 语言环境准备好。本文对常用的汇编指令及用法做了详述,便于初学者入门

2020-03-04 17:05:15 326

原创 嵌入式Linux之ARM A7处理器架构

本文对ARM-A7内核架构做了详述,具体描述了A7架构下的管理模式、相关寄存器的作用

2020-03-04 16:18:36 1542

原创 ROS初学者常见问题

针对本人在Ubuntu16.04下使用ROS Kinetic学习过程中,出现的使用问题做了总结和汇总。

2020-01-02 10:35:06 609

原创 A*算法及相关拓展算法

总结了ros常用的操作指令及相关的查询结果

2019-10-24 22:16:50 1137

原创 C++中拷贝(复制)构造函数的使用与注意

拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:1.通过使用另一个同类型的对象来初始化新创建的对象。例:box2=box1//box2(box1)2.复制对象把它作为参数传递给函数。例:void fun(Box b) //形参是类的对象{ }int main( ){Box box1(12,15,18);f...

2019-10-17 22:29:51 1349

原创 STM32 DMA通道一览及其配置

DMA通道一览DMA1通道DMA2通道DMA内容详解DMA的定义直接存储器存取(Direct MemoryAccess,DMA)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道CPU。在同等程度的CPU负担下,DMA是一种快速的数据传送方式。它允许不同速度的硬件装置来沟通,而不需要依于 CPU的大量中断请求。...

2019-10-12 17:37:43 14732 1

原创 解决kinect v2在win10频繁掉线重启问题

解决kinect V2在win10环境下出现频繁重启以及无法使用官方标准SDK功能。

2019-10-12 16:52:45 8055 9

基于已知位姿的建图方式.pdf

主要描述了基于覆盖栅格建图、技术法和TSDF三种建图方法,采用了基本的公式和丰富的图表,非常容易理解。

2020-09-10

拓展卡尔曼滤波.pdf

为了校正这种误差,我们通常会引入额外的传感器信息。例如,对上图来说,引入GPS定位信息就是一个不错的选择。这时又出现了问题:速度积分和GPS传感器包含有位置信息,那我们究竟该采信哪边的结果呢?如果两边的信息都不想浪费,该怎么把它们进行融合呢?实际上,无论是速度积分得到的位置信息,还是GPS得到的位置信息,都存在一定的误差(GPS也存在定位精度的问题)。而在机器人的实际应用场景中,可能还存在红外、激光、视觉等更多类型的传感器,都可以以一定精度返回机器人的位置信息。那么我们该如何综合利用这些信息(传感器信息融合)来估计机器人当前的位置信息呢,这里就要用到卡尔曼滤波了。

2020-07-19

ESP8266新手入门调试指导(补全)要点.doc

esp8266是wifi串口模块,功能简单来讲就是:从wifi接收到数据,串口输出;从串口接收数据,wifi输出数据。

2020-03-06

最新Linux 版 网易云音乐

网上大部分Linux版网易云安装包在ubuntu下使用都会存在点击快捷方式无法打开软件的现象,本安装包稍作修改,采用sudo dpkg -i 方式正常安装即可解决问题。

2020-03-06

C++编程练习题大全(带答案).pdf

409页C++练习题,涵盖了入门习题,提高习题,同时也包含了大量基础算法及一些链表、队列等算法习题,方便在入门C++的同时,对一些算法进行了解。

2020-03-06

NXP官方DDR初始化与测试工具.zip

要是针对I.MX6ULL芯片,此芯片是基于ARM-7架构,使用此工具可以对DDR进行初始化和测试。对于嵌入式Linux开发非常方便。

2020-03-06

嵌入式C语言面试题汇总(超经典).pdf

归纳了嵌入式软件开发工程师、C/C++工程师在面试过程中常考问题,整个文档对各大论坛出现的面试题进行了一定的汇总,做到了内容细,答案准

2020-03-06

CAN总线基础学习资料.zip

方便学习CAN总线通信方式,文件包括了CANopen协议入门,CAN基础资料,CAN总线开发视频教程,部分CAN总线应用实例及单片机CAN总线开发资料。

2020-03-06

Roboware_stdio集成开发环境

最新版的Roboware Ros集成环境,可以一键配置工作空间,相关依赖也可以完成一键添加工作

2019-08-03

qtcreator-rosc插件包

在qt环境下添加ROS插件,一键配置ros环境,下载完成后修改文件权限为可执行,双击安装包即可进入安装界面

2019-08-02

空空如也

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

TA关注的人

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