自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 console和nsh的区别

PX4在调试过程中 console口和NSH口原来功能不一样,Console只是负责往外吐数据,比如打印飞控启动的过程,或者输出源码中warnx或者printf这样的打印信息而NSH飞控上电的启动过程并不打印,打印的是飞控启动完成后的输出信息,并且可以通过“help”与飞控交互最重要的是 NSH可以通过help指令交互,而console不行

2017-10-13 10:08:17 1387

原创 飞控打信息打印

mavlink_log_critical(mavlink_log_pub_local, "HIL platform: Connect to simulator before arming");借助此,可以把飞控打信息印到地面站

2017-09-25 16:56:35 910

原创 Nuttx启动过程

__start-- #处理器执行的第一条指令 | v stm32_clockconfig()------ #初始化时钟 | v

2017-09-05 17:09:05 959

原创 rcS启动

研究PX4一段时间,发现绕了很大的圈子,分析NUTTX系统是费时费力的,其实大可不必,Nuttx只是一个操作系统,作为飞控程序的载体,实际上我们只需要分析启动脚本就可以了。如何找到启动脚本及前面系统的启动本分的分析,参看一篇博文,写的非常好,在这里谢谢了。http://blog.chinaunix.net/uid-29786319-id-4393303.html 对于os_start

2017-09-05 17:05:45 1562

转载 Nuttx启动

一、Nuttx的启动系统启动后的第一条代码即入口1.1 入口       PX4使用的是STM32,入口自然就在stm32_start.c中:void __start(void){ const uint32_t *src; uint32_t *dest; #ifdef CONFIG_ARMV7M_STACKCHECK /* Set the st

2017-09-05 17:03:48 1310

原创 PX4位置控制offboard模式说明

offboard模式的开发及应用一、px4固件的模式px4固件支持10几种飞行模式,从代码结构上分析,分为基本模式、自定义模式和自定义子模式。1.基本模式基本模式又分为,位置控制模式、自稳模式、手动模式,通常情况下,自驾仪处于自定义模式,目前还没有见过处于基本模式工作的代码,所以暂时不讨论基本模式。                             地面站

2017-03-13 17:03:43 24128 7

原创 android中Timer

[java] view plain copy"white-space: pre; ">   "font-size:24px;">在开发过程中我们有时候需要定时的去重复执行某项任务或者某个方法,我记得我上一次遇到这事是,我的android客户端需要编写一个通用定时向服务器发送我当前GPS定位的经纬度、速度、经度、海拔,轴承等信息,虽然我最后采用的定时方法不是我现在贴出

2016-12-27 16:59:46 1492

原创 Mavlink-3-消息解析

分析过消息包的结构后,继续向消息包的内部探索,开始分析负载信息PAYLOAD。在消息库中,每条消息都作为一个类存在(Java版本),类中的注释文本详细地注明了每个成员变量代表的含义。这些成员变量不仅包括STX、SEQ这些包的描述信息,还包括封装入PAYLOAD的各个参数。在消息类中,还包含了pack() 打包方法和 unpack() 解包方法,为地面站和飞行控制软件的开发、应用提供了接

2016-12-26 22:05:36 2775

原创 Mavlink-2-消息结构

消息结构(一)  消息包结构消息包结构定义了消息包在发送、接收、初次解析中所需信息的存储规则。在MavLink 1.0版本中,消息包结构如下图表所示。首部由STX段引导,具体含义可在表中查询,其中校验位标记为自动,表示应由软件根据包数据自动计算生成。(长度单位为byte)区域名称

2016-12-26 22:02:39 3652

原创 Mavlink-1-概述介绍

1. MAVLink简介MAVLink(Micro Air Vehicle Link,微型空中飞行器链路通讯协议)是无人飞行器与地面站(Ground Control Station ,GCS)之间通讯,以及无人飞行器之间通讯最常用的协议。它已经在PX4、APM、PIXHAWK和Parrot AR.Drone飞控平台上进行了大量测试。2.发明者Lorenz Meier简介MA

2016-12-26 22:00:09 4026

原创 commander模式切换

根深方能叶茂 在等待的日子里,刻苦读书,谦卑做人,养得深根,日后才能枝叶茂盛。 --Better/阿木社区Commder是Px4源码中的飞行控制命令切换模块,比如由自稳模式切换到,定高,定点,自动模式。所有模式能不能成功切换,都在这个模块中做了相应的飞行条件检查。自稳模式的切换,不需要太多的飞行条件。如果是定高,定点,自动模式,需要很多的传感器数据有效的条件,这就需要很多的检查,只

2016-12-26 20:33:57 2139

原创 pixhawk中查看cpu使用情况--top

以往的版本中想查看当前系统运行的进程的情况,或CPU运行性能,只要nsh中输入top指令就行,但是不知道从哪个版本开始top已经不能运行了,这时候应该怎么修改呢?在firmware/src/systemcmds/top/top.c下注释掉这一部分         把新的代码里面的top.c的这一部分删了就可以了。

2016-12-26 19:29:31 1292

转载 Mavlink地面站编写之七—发送控制指令

转载请注明出处:http://www.amovauto.com/?cat=19/;  阿木UAV社区好久没更新MAVLINK系列文章了,最近事情比较多,中间去了趟深圳(见了老朋友顺便去了趟华强北溜了圈)。所以中间耽误更新的文章,不过从航点写入到MAVLINK指令发送,关于mavlink协议部分的文章也要写完了。后面只要能够用mavlink协议发送指令,基本就可以用指令,控制无人机做任何

2016-12-26 15:39:36 5099

转载 Mavlink地面站编写之八–MAVLINK消息自定义

PIXHAWk MAVLINK消息自定义对于PIXHAWK这个系统来讲,MAVLINK是个小型的数据通信协议,负责地面站和飞控本身的数据交互和地面站向飞控发送数据指令。前面的文章已经讲过MAVLINK这个数据格式解析的分析,这里不做讲解。因为我们在使用基于这套飞控开发的过程中,会有很多自定义的数据要求,比如我们添加一个新的传感器(在飞控中添加一个自定义传感器,具体请看相关章节),我们会把新

2016-12-26 15:33:56 7983

转载 Mavlink地面站编写之五—MP源码多线程读写框架分析

转载请注明出处!阿木开源社区 玩也要玩的专业 http://www.amovauto.com/?p=743#more-743对于MissionPlanner这种多任务的程序,我们知道要采用多线程的方式来实现,读数据,显示数据,写数据。这是就需要一些数据同步的问题。尤其是串口数据的读写的数据同步。数据读写模型,比如常见的生产者,消费者模型。这里不再多述。我们来分析下MP代码的读线程,写线程,

2016-12-26 15:29:53 1437

转载 Mavlink地面站编写之四-Mission Planner中ProgressReporterDialogue和读串口线程serialreaderthread的分析

转载请注明出处:http://www.amovauto.com/?p=660  阿木社区,玩也要玩的专业。QQ群: 526221258ProgressReporterDialogue这个对话框很有意思,在MP中连接阶段打开端口和读取参数表和读入参数航点,都用的这个对话框这个对话框开启了后台委托线程,想用到社区地面站中,这种模块还是比较值得借鉴和使用的。我们来

2016-12-26 15:28:44 1817

转载 Mavlink地面站编写之三–Mission PLanner地面站构架分析之MAVLINK航点写入

转载注意出处:http://www.amovauto.com/?p=601#more-601 阿木社区 玩也要玩的专业!我们知道了怎么利用mavlink读取航点,那么如果我们要写入航点,也是一样的道理。这里有两个重要的类分别是lightPlanner.cs和mavlinkinterface.cs。双击写入航点按钮进入实现函数,在FlightPlanner.cs中  p

2016-12-26 15:27:35 2109

转载 Mavlink地面站编写之二–Mission PLanner地面站构架分析之MAVLINK航点读写

转载请注明出处:http://www.amovauto.com 阿木社区 玩也要玩的专业!3DR这个地面站还是非常专业的,最近研究MAVLINK通信协议,就来分析下Mission planner的构架。至于Msission planner的编译在前面几篇文章已经做了详细描述。Msission planner有几十个工程项目组成 AviFileBaseClas

2016-12-26 15:25:55 3387

转载 Mavlink地面站编写之一–协议分析

阿木社区:转载注意出处 http://www.amovauto.comPixhawk/APM都是采用MAVLINK协议实现的飞控的数据链路传输。先简单介绍下mavlink协议。Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组 的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微

2016-12-26 15:24:20 2651 1

转载 Mavlink协议分析

阿木社区:转载注意出处 http://www.amovauto.comPixhawk/APM都是采用MAVLINK协议实现的飞控的数据链路传输。先简单介绍下mavlink协议。Mavlink协议最早由 苏黎世联邦理工学院 计算机视觉与几何实验组 的 Lorenz Meier于2009年发布,并遵循LGPL开源协议。Mavlink协议是在串口通讯基础上的一种更高层的开源通讯协议,主要应用在微

2016-12-26 15:09:35 6080

原创 Android下低功耗蓝牙使用的部分说明

低功耗蓝牙包括的术语及概念:如上图所示,使用低功耗蓝牙可以包括多个Profile,一个Profile中有多个Service,一个Service中有多个Characteristic,一个Characteristic中包括一个value和多个Descriptor。Android中进行蓝牙开发需要使用到的类的执行过程是:1、使用BluetoothAdapter.startLe

2016-12-14 21:23:30 969

原创 Android文件操作小结

在Android中的文件放在不同位置,它们的读取方式也有一些不同。本文对android中对资源文件的读取、数据区文件的读取、SD卡文件的读取及RandomAccessFile的方式和方法进行了整理。供参考。一、资源文件的读取:      1) 从resource的raw中读取文件数据:[java] view plain copy

2016-12-09 15:51:01 450

原创 Android下如何读取文件的内容

唉,尝试了好半天了,才弄懂,1、首先权限的问题我们需要在根文件中添加权限:2、上面两篇博客可以参考,一个告诉你如何查看文件的绝对路径,一个说明如何借助文件管理器选中文件3、这里我的绝对路径是final String FILE_NAME = "/storage/emulated/0/updatebin/update.txt";  我把文件在手机里呢

2016-12-09 13:40:24 20101 3

原创 读取android根目录下的文件或文件夹

这个例子非常小,就是一个读取android根目录下的文件夹或文件,当做热一下身@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); EditText keywordT

2016-12-09 13:11:10 4764

原创 Android调用系统自带的文件管理器进行文件选择

这几天在做的项目网盘。上传时需要用到调用系统自带的文件管理器来选择文件,后来就在考虑怎么调用,网上也搜了很久,没有很好的解决方法,后来在一瞬间发现了一篇不错的文章,借鉴了一下代码。[java] view plain copy/** 调用文件选择软件来选择文件 **/  private void showFileChooser() 

2016-12-09 11:48:35 12607

原创 pixhawk串口读取传感器数据

1、 Pixhawk板上串口说明:      测试使用Pixhawk板上TELEM2接口的USART2,对应的Nuttx UART设备文件尾/dev/ttyS2:   2 读取数据测试步骤:在Firmware/src/modules中添加一个新的文件夹,命名为rw_uart在rw_uart文件夹中创建CMakeLists.txt文件,并输

2016-12-01 17:21:32 5740

原创 Pixhawk编译内存溢出

Pixhawk在编译的时候有时候会出现内存溢出的情况,遇到这种情况有以下三个方面可以考虑:1、首先在src/ROMFS/init.d/ 在这里ls一下 有事这里会产生隐藏文件rcS~把这个文件删除掉 就不会内存溢出了2、gcc版本太低 优化不够3、编译脚本中 编译的文件太多,可以适当裁剪

2016-12-01 15:50:27 1873

转载 矩阵的理解

这篇博客转载自孟岩大神的博客博客原地址:http://blog.csdn.net/myan/article/details/647511本篇转载博客整合孟大神的三篇《理解矩阵》理解矩阵一前不久chensh出于不可告人的目的,要充当老师,教别人线性代数。于是我被揪住就线性代数中一些务虚性的问题与他讨论了几次。很明显,chensh觉得,要让自己在讲线性代数的时候不被那位强势的学生认为是

2016-11-30 23:36:43 2168

原创 commander一点理解

Commmander应用主要负责控制飞行器的模式控制。 下图解释了commander应用的整体架构: Command和subsystem_info是一个缓存值。 这个commander应用有几个循序组成,并且每个循环作为一个独立的线程执行。 1. command_handling_loop:在这个循环里,主要完成将mavlink应用中的mavlink命令转发给command

2016-11-30 23:33:53 1350 1

原创 offboard-control-using-mavros

原文:https://404warehouse.net/2015/12/20/autopilot-offboard-control-using-mavros-package-on-ros/OverviewRecently opensource autopilots have become reliable by various failsafe functions integr

2016-11-22 22:46:48 1757

原创 pixhawk之NSH调试

一 ardupilot固件windows环境前期准备1:pix烧录程序,Arducopter或者library中的example都可以实现。2:拔掉SD卡(脚本中提到的没有SD卡进入nsh,有SD时进入MAVLINK,因此会出现一段乱码)。step1:连接usb,待音乐想玩后,打开Ter

2016-11-20 19:50:25 2714

原创 sdlog2应用分析

该应用的用途是记录飞控飞行日志到SD卡中,日志文件格式与APM二进制文件兼容,但是sdlog2使用强制性的消息时间写时间戳。使用方式每次sdlog2应用开始记录日志的时候,它会在SD卡日志文件夹log中创建一个新的文件夹。如果-t参数选项被设置了,而且GPS时间戳是可获得的,文件夹的名称就是基于当前日期,如log/2015-07-24,否则的话就是被命名为sessXXX(XXX代表一个

2016-11-20 19:27:05 1270

原创 bsearch代码实现

二分查找完整代码:#includeusing namespace std; void * bsearch(const void *key, const void *base, size_t nel, size_t width, int (*cmp)(const void *, const void *)){     void *mid = NULL;     int s

2016-10-21 10:26:04 1078

原创 qsort源代码分析

qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) ) 其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。#include#define

2016-10-21 10:19:34 6445 1

原创 任意字节对齐的内存分配和释放

任意自己内存对齐,intel笔试

2016-09-28 23:00:54 3991

原创 Pixhawk-串级pid介绍

在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,在我所接触的控制算法当中,PID控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的,简单的不是原始的,简单的也不是落后的,简单到了美的程度。现在虽然已经演变出很多智能的算法,如蚁群,神经网络等,感兴趣可以看一下刘金琨老师的《先进pid控制》,但是在

2016-09-14 08:25:03 25304 9

原创 Pixhawk-姿态解算源码注释

通过比例积分控制器把它反馈到陀螺仪,定位估计逐渐被迫跟踪参考向量,这样陀螺的漂移就被消除了。测量从方向余弦矩阵计算出相应的参考矢量的叉积是一个错误的指示。它大约等于这个旋转,将不得不用这个参考矢量和这个计算矢量校准。我们感兴趣的是旋转校正量,这个量我们需要用在方向余弦矩阵中,它等于旋转误差的负值。通过交换叉积的秩序可以很方便的计算修正。

2016-09-13 11:10:06 9386 2

原创 Pixhawk-姿态解算-互补滤波

终于说到了正题,姿态解算这一部分很重要,主要的基础就是惯性导航和多传感器数据融合,很多公司都在招这方面的人才,如百度的无人驾驶在找传感器数据融合,网易的人机交互工程师也在找这方面的人,因为它是信息流的源泉,准确的姿态信息需要靠他们解算出来才能进行后续的步骤。鉴于加速度计低频特性比较好,因为加速度的角度可以直接算出来,没有累积误差,所以长时间后也比较准。而陀螺仪长时间后由于积分误差的累加

2016-09-13 08:49:03 22704 20

原创 Pixhawk-信息流浅解析

uORB(Micro Object Request Broker,微对象请求代理器)是PX4/Pixhawk系统中非常重要且关键的一个模块,它肩负了整个系统的数据传输任务,所有的传感器数据、GPS、PPM信号等都要从芯片获取后通过uORB进行传输到各个模块进行计算处理。实际上uORB是一套跨「进程」 的IPC通讯模块。在Pixhawk中, 所有的功能被独立以进程模块为单位进行实现并工作。而进程间的数据交互就由为重要,必须要能够符合实时、有序的特点。   Pixhawk使用的是NuttX实时ARM系统,uO

2016-09-13 00:17:52 2354

原创 Pixhawk-系统框架梳理

今天先说一下系统框架,之后的整理先说主要的四个文件:姿态的解算和控制,位置解算的控制,这四个文件之所以重点分析是因为他们可以看作飞机协议栈的中间层,向下是一些硬件的驱动drive/和一些命令commander/以及导航navigator/。commander和navigator给出了一些底层的命令和规划,产生一个position setpoint交给位置控制,位置控制根据现在的位置(位置解算)和期往的位置经过串级pid最终产生att_sp期往的姿态,之后姿态控制根据现在的姿态(姿态解算)和期望的姿态经过串级

2016-09-12 09:52:01 3119 2

空空如也

空空如也

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

TA关注的人

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