- 0_项目git地址——正点原子minifly与crazyflie
翁庆年的六便士
git无人机
1、说明:在每个专栏的第一篇文章,笔者都会贴出项目的git地址,方便后来者学习和复现;下面介绍两个项目的官网资料和git地址,最后给出两者的对比;2、正点原子minifly(1)minifly官网资料下载中心:http://www.openedv.com/docs/fouraxis-fly/minifly.html(2)git地址:https://github.com/2-droneflygg/1
- MiniFly四轴学习系列2---四轴部分main函数
CodeAllen
clinuxgit
**说明:本文原创作者『Allen5G』首发于微信公众号『Allen5G』,关注获取更多干货!标签:编程,软件,算法,思维**先看看整个工程的任务关系手机APP是需要自己开发APP的,暂时没空搞,坐等官方。。然后主要就是上位机和遥控器的使用了上位机通过USB连接四轴,需要烧录固件BootLoader遥控器使用NFR无线通信,这个也是可玩性最高的地方,当然也是最核心的部分---姿态解算和姿态控制,之
- MiniFly四轴学习系列1---四轴部分系统及电源分析
CodeAllen
clinuxgit
最近硬件四轴很火,了解了很久,还是选择了正点原子的MiniFly,主要还是原子的论坛资料多,后边可以有人讨论,不像很多就是建了个群,研究问题还是在论坛方便很多。四轴终于拿到手,功能很强大,主要是还支持二次开发,可以研究下玩玩小四轴了还是先从硬件入手分析下1.系统框架主体可以分成两个小系统,后续可以按照这个顺序分析代码1.通信部分---基于M0和NFR51822,包括电源管理2.控制部分---基于M
- PID算法原理及模板讲解
奔驰的战猪
算法
很早都想写一栏关于PID算法的专栏,整个大学期间把谈恋爱的时间都拿来搞PID算法了(这样你们还不信我是真的搞PID的嘛。。)。为了学习PID算法买过平衡小车之家的平衡车(最后拆成玩具了),买过正点原子的minifly(卖掉了)。做过2015年电赛风力摆,研究过2017年电赛板球系统(机械结构太难搭了就写了写代码),准备了这么久就是为了在电赛上拿个国奖,结果2019年电赛把控制类和电源类结合到了一起
- MiniFly四轴飞行器程序框架 衔接项目 学习笔记
南叔先生
无人机
一、程序框架radiolinkTask:无线通信任务。该任务主要负责接收从NRF51822发送(串口方式)过来的数据,然后对数据进行打包和校验,打包成ATKP格式并校验无误后发送到atkpRxAnlTask的接收队列里,同时回传一帧数据给NRF51822。usblinkRxTask:USB通信接收任务。该任务主要负责接收上位机发下来(USB虚拟串口方式)的数据,然后对数据进行打包和校验,打包成AT
- 正点原子MiniFly V1.2学习笔记二---radiolinkTask
D.luffy
FreeRTOS
第1个任务radiolinkTask处理串口接收到的数据包,把命令提取出来。一、数据包格式 一条指令,包含功能ID和数据。功能ID–就是接收方用来区别需要做什么事,数据--指令中需要的数据。另外,为了区别指令的开始位置,要在开始加上帧头,为了保证接收正确,还要在最后加上一个校验,如果接收方发现校验错了,就把该指令丢弃。 在atkp.h中:1、宏定义,定义帧头,功能ID等2、结构体数据定义3
- 正点原子MiniFly V1.2学习笔记五---sensorsTask
D.luffy
FreeRTOSSTM32
这里先学习第8个任务sensorsTask,2,3,6,7任务后面再学,先学重要的。xTaskCreate(sensorsTask,"SENSORS",450,NULL,4,NULL);//传感器处理任务一、任务函数看一下上面用到的sensors变量的定义:任务的流程: 先初始化I2C,初始化传感器----->进入循环,等待传感器中断发送二值信号量------>得到信号量后读取传感器数据到b
- 正点原子MiniFly V1.2学习笔记四---txQueue队列数据哪来
D.luffy
FreeRTOS
笔记二的第四点中,把解包出来的指令发送到rxQueue队列里,然后从txQueue队列取数据发送到串口。那么txQueue队列的数据从哪里来的一、txQueue数据从哪里来?二、什么地方会调用radiolinkSendPacket(constatkp_t*p)往队列txQueue填数据呢? 从上面调用关系可以看出,atkpTxTask()任务不断往txQueue队列填数据。笔记二中我们知道,
- 正点原子MiniFly V1.2学习笔记三---atkpRxAnlTask
D.luffy
FreeRTOS
第5个任务,解析处理接收到的指令xTaskCreate(atkpRxAnlTask,"ATKP_RX_ANL",300,NULL,6,NULL);上面第1个任务,把串口接收到的数据解包后得到指令,然后把指令发送到队列rxQueue里了,该任务就是从队列里取指令,然后分析处理。一、执行串口指令任务voidatkpRxAnlTask(void*param){atkp_tp;while(1){xQu
- minifly_v1.3学习笔记(一)main.c
李日音
minifly
main.c文件主要包括了初始化各外设的main函数,以及freertos的任务创建函数。1.main函数intmain(){systemInit();/*底层硬件初始化*/xTaskCreate(startTask,"START_TASK",300,NULL,2,&startTaskHandle);/*创建起始任务*/vTaskStartScheduler();/*开启任务调度*/while(1
- minifly_v1.3学习笔记(四) atkp.c
李日音
minifly
对于atkp.c通过前面的“minifly_v1.3学习笔记(二)radiolinkTask”已经简单介绍过了。因此,这篇就不再介绍atkp的格式、原理了,仅对任务相关的介绍。在atkp.c中包含两个任务:atkpRxAnlTask:ATKP数据包接收处理任务。该任务主要是处理遥控器和上位机发下来的数据包,解析到的控制指令则发送到stabilizerTask中去。atkpTxTask:ATKP数据
- minifly_v1.3学习笔记(三)usblink.c
李日音
minifly
usblink.c文件中,包含两个任务usblinkRxTask和usblinkTxTask。这两个任务是与上位机通信而设置的。usblinkTxTaskUSB通信发送任务。该任务主要负责发送atkpTxTask发送过来的数据包,这些数据包主要是传感器数据、姿态数据等。代码很短就直接贴上了//USB发送ATKPPacket任务voidusblinkTxTask(void*param){atkp_t
- minifly_v1.3学习笔记(二)radiolinkTask
李日音
minifly
radiolinkTask:无线通信任务。该任务主要负责接收从NRF51822发送(串口方式)过来的数据,然后对数据进行打包和校验,打包成ATKP格式并校验无误后发送到atkpRxAnlTask的接收队列里,同时回传一帧数据给NRF51822。ATKP格式:详细见atkp.c(基于于匿名科创地面站V4.34通信协议下位机,示例代码修改)。ATKP格式即为发送给匿名上位机的数据格式。//atkp.h
- 自制正点原子四轴遥控器无法连接minifly
junlianzi
一些小问题
最近在群里有群友问自制遥控器无法对频的问题,我过去也踩过这个坑,已经解决了。我已经在群里回答四五次了,但可能群友没注意或者进群较晚没看到,正好今晚有空,把这个坑填上。18年国庆后自己做了一个和正点原子minifly配套的遥控器,完全按照原子开源的资料做的,如下图所示。但是使用的时候发现,这个遥控器不能和minifly通信,反而会和原装的遥控器对频。查了原子minifly配套的资料并且去一些论坛看了
- 使用Minifly打造基于视觉感知的跟踪无人机
aoxiyi0951
前言:本文介绍一种可行的解决方案来实现基于视觉感知的跟踪无人机。由于本人能力和资源有限,所以在无人机系统的选择上,选用正点原子开发的开源算法无人机Minifly四轴和摄像头。视觉感知模块(目标检测与跟踪)采用OpenCV+MobileNetSSD+KCF。本文已分享经验和记录开发过程为主,推荐使用其他更好的无人机模块和图像识别算法。知识基础:Linux、Python3、STM32(嵌入式相关)解释
- minifly_v1.3学习笔记(五) minifly的信息流向
李日音
minifly
通过前面radiolinkTask、usblink.c、atkp.c三个文件的学习,minifly的信息流向关于上位机(usb)和遥控器的部分基本也就介绍完成了。因为是freertos的操作系统,加上内部采用匿名的通信协议,所以通过usb以及串口中断的方式接受的信息,都经历了存入队列,atkp解码这样的步骤,才能获取接收信息的意义下面来对minifly内部接收以及发送信息的过程进行分析:接收数据接
- 正点原子minifly学习
李日音
minifly
对正点原子的开发板学习已经好几个月了,暂且了解了一点freertos和stm32的一些知识。本着从项目入手的原则,从今天开始,对正点原子小四轴无人机minifly进行学习。**目录**minifly_v1.3学习笔记(一)main.cminifly_v1.3学习笔记(二)radiolinkTaskminifly_v1.3学习笔记(三)usblink.cminifly_v1.3学习笔记(四)atkp
- 使用Minifly打造基于视觉感知的跟踪无人机
Kryo
前言:本文介绍一种可行的解决方案来实现基于视觉感知的跟踪无人机。由于本人能力和资源有限,所以在无人机系统的选择上,选用正点原子开发的开源算法无人机Minifly四轴和摄像头。视觉感知模块(目标检测与跟踪)采用OpenCV+MobileNetSSD+KCF。本文已分享经验和记录开发过程为主,推荐使用其他更好的无人机模块和图像识别算法。知识基础:Linux、Python3、STM32(嵌入式相关)解释
- MiniFly四轴学习系列1---四轴部分系统及电源分析
Allen5G
无人机stm32嵌入式玩转STM32
最近硬件四轴很火,了解了很久,还是选择了正点原子的MiniFly,主要还是原子的论坛资料多,后边可以有人讨论,不像很多就是建了个群,研究问题还是在论坛方便很多。四轴终于拿到手,功能很强大,主要是还支持二次开发,可以研究下玩玩小四轴了还是先从硬件入手分析下1.系统框架主体可以分成两个小系统,后续可以按照这个顺序分析代码1.通信部分---基于M0和NFR51822,包括电源管理2.控制部分---基于M
- 四旋翼飞行器控制原理与设计【学习总结】
GWH_98
无人机学习
从动力学建模和几个四旋翼核心算法角度分析半自主飞控系统的建立,即实现传统四旋翼的姿态控制和高度控制的过程,文章主要借鉴了北航多旋翼设计课程、正点原子minifly微型四旋翼的资料、《四旋翼无人飞行器设计》清华出版社,代码示例来自正点原子。但是吧,后两个资料在理论部分都有点东拼西凑的感觉,有些错误,看起来很伤…总之,本文多处为个人理解,如有错误,感谢指出。目录一、相关理论知识1.坐标系与欧拉角2.旋
- 各色无人机经典项目设计,全部开源!
monkey2018
精彩聚合
几乎所有的电子发烧友都有一个“飞天梦”,都想拥有一个自己的无人机,四轴也好,六轴也罢,给大家分享12个无人机方面的经典设计,赶快设计起来吧!1、资料开源-MiniFly四轴飞行器-支持4D空翻,抛飞,定高本设计分享的是正点原子独家设计的MiniFly四轴飞行器-支持4D空翻,抛飞,定高一键起降等酷炫操作,资料开源力度还不错,故特意分享给需要的朋友。该MiniFly四轴飞行器硬件主要组成包括四轴主控
- 桌面上有多个球在同时运动,怎么实现球之间不交叉,即碰撞?
换个号韩国红果果
html小球碰撞
稍微想了一下,然后解决了很多bug,最后终于把它实现了。其实原理很简单。在每改变一个小球的x y坐标后,遍历整个在dom树中的其他小球,看一下它们与当前小球的距离是否小于球半径的两倍?若小于说明下一次绘制该小球(设为a)前要把他的方向变为原来相反方向(与a要碰撞的小球设为b),即假如当前小球的距离小于球半径的两倍的话,马上改变当前小球方向。那么下一次绘制也是先绘制b,再绘制a,由于a的方向已经改变
- 《高性能HTML5》读后整理的Web性能优化内容
白糖_
html5
读后感
先说说《高性能HTML5》这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影。个人觉得作者应该首先把HTML5的大菜拿出来讲一讲,再去分析性能优化的内容,这样才会有吸引力。因为只是在线试读,没有机会看后面的内容,所以不胡乱评价了。
- [JShop]Spring MVC的RequestContextHolder使用误区
dinguangx
jeeshop商城系统jshop电商系统
在spring mvc中,为了随时都能取到当前请求的request对象,可以通过RequestContextHolder的静态方法getRequestAttributes()获取Request相关的变量,如request, response等。 在jshop中,对RequestContextHolder的
- 算法之时间复杂度
周凡杨
java算法时间复杂度效率
在
计算机科学 中,
算法 的时间复杂度是一个
函数 ,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的
字符串 的长度的函数。时间复杂度常用
大O符号 表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是
渐近 的,它考察当输入值大小趋近无穷时的情况。
这样用大写O()来体现算法时间复杂度的记法,
- Java事务处理
g21121
java
一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败时,所有被该事务影响的数据都应该恢复到事务执行前的状
- Linux awk命令详解
510888780
linux
一. AWK 说明
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。
awk的处理文本和数据的方式:它逐行扫描文件,从第一行到
- android permission
布衣凌宇
Permission
<uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" ></uses-permission>允许读写访问"properties"表在checkin数据库中,改值可以修改上传
<uses-permission android:na
- Oracle和谷歌Java Android官司将推迟
aijuans
javaoracle
北京时间 10 月 7 日,据国外媒体报道,Oracle 和谷歌之间一场等待已久的官司可能会推迟至 10 月 17 日以后进行,这场官司的内容是 Android 操作系统所谓的 Java 专利权之争。本案法官 William Alsup 称根据专利权专家 Florian Mueller 的预测,谷歌 Oracle 案很可能会被推迟。 该案中的第二波辩护被安排在 10 月 17 日出庭,从目前看来
- linux shell 常用命令
antlove
linuxshellcommand
grep [options] [regex] [files]
/var/root # grep -n "o" *
hello.c:1:/* This C source can be compiled with:
- Java解析XML配置数据库连接(DOM技术连接 SAX技术连接)
百合不是茶
sax技术Java解析xml文档dom技术XML配置数据库连接
XML配置数据库文件的连接其实是个很简单的问题,为什么到现在才写出来主要是昨天在网上看了别人写的,然后一直陷入其中,最后发现不能自拔 所以今天决定自己完成 ,,,,现将代码与思路贴出来供大家一起学习
XML配置数据库的连接主要技术点的博客;
JDBC编程 : JDBC连接数据库
DOM解析XML: DOM解析XML文件
SA
- underscore.js 学习(二)
bijian1013
JavaScriptunderscore
Array Functions 所有数组函数对参数对象一样适用。1.first _.first(array, [n]) 别名: head, take 返回array的第一个元素,设置了参数n,就
- plSql介绍
bijian1013
oracle数据库plsql
/*
* PL/SQL 程序设计学习笔记
* 学习plSql介绍.pdf
* 时间:2010-10-05
*/
--创建DEPT表
create table DEPT
(
DEPTNO NUMBER(10),
DNAME NVARCHAR2(255),
LOC NVARCHAR2(255)
)
delete dept;
select
- 【Nginx一】Nginx安装与总体介绍
bit1129
nginx
启动、停止、重新加载Nginx
nginx 启动Nginx服务器,不需要任何参数u
nginx -s stop 快速(强制)关系Nginx服务器
nginx -s quit 优雅的关闭Nginx服务器
nginx -s reload 重新加载Nginx服务器的配置文件
nginx -s reopen 重新打开Nginx日志文件
- spring mvc开发中浏览器兼容的奇怪问题
bitray
jqueryAjaxspringMVC浏览器上传文件
最近个人开发一个小的OA项目,属于复习阶段.使用的技术主要是spring mvc作为前端框架,mybatis作为数据库持久化技术.前台使用jquery和一些jquery的插件.
在开发到中间阶段时候发现自己好像忽略了一个小问题,整个项目一直在firefox下测试,没有在IE下测试,不确定是否会出现兼容问题.由于jquer
- Lua的io库函数列表
ronin47
lua io
1、io表调用方式:使用io表,io.open将返回指定文件的描述,并且所有的操作将围绕这个文件描述
io表同样提供三种预定义的文件描述io.stdin,io.stdout,io.stderr
2、文件句柄直接调用方式,即使用file:XXX()函数方式进行操作,其中file为io.open()返回的文件句柄
多数I/O函数调用失败时返回nil加错误信息,有些函数成功时返回nil
- java-26-左旋转字符串
bylijinnan
java
public class LeftRotateString {
/**
* Q 26 左旋转字符串
* 题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
* 如把字符串abcdef左旋转2位得到字符串cdefab。
* 请实现字符串左旋转的函数。要求时间对长度为n的字符串操作的复杂度为O(n),辅助内存为O(1)。
*/
pu
- 《vi中的替换艺术》-linux命令五分钟系列之十一
cfyme
linux命令
vi方面的内容不知道分类到哪里好,就放到《Linux命令五分钟系列》里吧!
今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号)。
其实这个不难,不过我觉得应该总结一下vi里的替换技术了,以备以后查阅。
1
所有替换方案都要在冒号“:”状态下书写。
2
如果想将abc替换为xyz,那么就这样
:s/abc/xyz/
不过要特别
- [轨道与计算]新的并行计算架构
comsci
并行计算
我在进行流程引擎循环反馈试验的过程中,发现一个有趣的事情。。。如果我们在流程图的每个节点中嵌入一个双向循环代码段,而整个流程中又充满着很多并行路由,每个并行路由中又包含着一些并行节点,那么当整个流程图开始循环反馈过程的时候,这个流程图的运行过程是否变成一个并行计算的架构呢?
- 重复执行某段代码
dai_lm
android
用handler就可以了
private Handler handler = new Handler();
private Runnable runnable = new Runnable() {
public void run() {
update();
handler.postDelayed(this, 5000);
}
};
开始计时
h
- Java实现堆栈(list实现)
datageek
数据结构——堆栈
public interface IStack<T> {
//元素出栈,并返回出栈元素
public T pop();
//元素入栈
public void push(T element);
//获取栈顶元素
public T peek();
//判断栈是否为空
public boolean isEmpty
- 四大备份MySql数据库方法及可能遇到的问题
dcj3sjt126com
DBbackup
一:通过备份王等软件进行备份前台进不去?
用备份王等软件进行备份是大多老站长的选择,这种方法方便快捷,只要上传备份软件到空间一步步操作就可以,但是许多刚接触备份王软件的客用户来说还原后会出现一个问题:因为新老空间数据库用户名和密码不统一,网站文件打包过来后因没有修改连接文件,还原数据库是好了,可是前台会提示数据库连接错误,网站从而出现打不开的情况。
解决方法:学会修改网站配置文件,大多是由co
- github做webhooks:[1]钩子触发是否成功测试
dcj3sjt126com
githubgitwebhook
转自: http://jingyan.baidu.com/article/5d6edee228c88899ebdeec47.html
github和svn一样有钩子的功能,而且更加强大。例如我做的是最常见的push操作触发的钩子操作,则每次更新之后的钩子操作记录都会在github的控制板可以看到!
工具/原料
github
方法/步骤
- ">的作用" target="_blank">JSP中的作用
蕃薯耀
JSP中<base href="<%=basePath%>">的作用
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
- linux下SAMBA服务安装与配置
hanqunfeng
linux
局域网使用的文件共享服务。
一.安装包:
rpm -qa | grep samba
samba-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-winbind-clients
- guava cache
IXHONG
cache
缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。
缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的
- Query的开始--全局变量,noconflict和兼容各种js的初始化方法
kvhur
JavaScriptjquerycss
这个是整个jQuery代码的开始,里面包含了对不同环境的js进行的处理,例如普通环境,Nodejs,和requiredJs的处理方法。 还有jQuery生成$, jQuery全局变量的代码和noConflict代码详解 完整资源:
http://www.gbtags.com/gb/share/5640.htm jQuery 源码:
(
- 美国人的福利和中国人的储蓄
nannan408
今天看了篇文章,震动很大,说的是美国的福利。
美国医院的无偿入院真的是个好措施。小小的改善,对于社会是大大的信心。小孩,税费等,政府不收反补,真的体现了人文主义。
美国这么高的社会保障会不会使人变懒?答案是否定的。正因为政府解决了后顾之忧,人们才得以倾尽精力去做一些有创造力,更造福社会的事情,这竟成了美国社会思想、人
- N阶行列式计算(JAVA)
qiuwanchi
N阶行列式计算
package gaodai;
import java.util.List;
/**
* N阶行列式计算
* @author 邱万迟
*
*/
public class DeterminantCalculation {
public DeterminantCalculation(List<List<Double>> determina
- C语言算法之打渔晒网问题
qiufeihu
c算法
如果一个渔夫从2011年1月1日开始每三天打一次渔,两天晒一次网,编程实现当输入2011年1月1日以后任意一天,输出该渔夫是在打渔还是在晒网。
代码如下:
#include <stdio.h>
int leap(int a) /*自定义函数leap()用来指定输入的年份是否为闰年*/
{
if((a%4 == 0 && a%100 != 0
- XML中DOCTYPE字段的解析
wyzuomumu
xml
DTD声明始终以!DOCTYPE开头,空一格后跟着文档根元素的名称,如果是内部DTD,则再空一格出现[],在中括号中是文档类型定义的内容. 而对于外部DTD,则又分为私有DTD与公共DTD,私有DTD使用SYSTEM表示,接着是外部DTD的URL. 而公共DTD则使用PUBLIC,接着是DTD公共名称,接着是DTD的URL.
私有DTD
<!DOCTYPErootSYST