- 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四轴飞行器硬件主要组成包括四轴主控
- 怎么样才能成为专业的程序员?
cocos2d-x小菜
编程PHP
如何要想成为一名专业的程序员?仅仅会写代码是不够的。从团队合作去解决问题到版本控制,你还得具备其他关键技能的工具包。当我们询问相关的专业开发人员,那些必备的关键技能都是什么的时候,下面是我们了解到的情况。
关于如何学习代码,各种声音很多,然后很多人就被误导为成为专业开发人员懂得一门编程语言就够了?!呵呵,就像其他工作一样,光会一个技能那是远远不够的。如果你想要成为
- java web开发 高并发处理
BreakingBad
javaWeb并发开发处理高
java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据) 一:高并发高负载类网站关注点之数据库 没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是首先要解决的。 一般来说MySQL是最常用的,可能最初是一个mysql主机,当数据增加到100万以上,那么,MySQL的效能急剧下降。常用的优化措施是M-S(
- mysql批量更新
ekian
mysql
mysql更新优化:
一版的更新的话都是采用update set的方式,但是如果需要批量更新的话,只能for循环的执行更新。或者采用executeBatch的方式,执行更新。无论哪种方式,性能都不见得多好。
三千多条的更新,需要3分多钟。
查询了批量更新的优化,有说replace into的方式,即:
replace into tableName(id,status) values
- 微软BI(3)
18289753290
微软BI SSIS
1)
Q:该列违反了完整性约束错误;已获得 OLE DB 记录。源:“Microsoft SQL Server Native Client 11.0” Hresult: 0x80004005 说明:“不能将值 NULL 插入列 'FZCHID',表 'JRB_EnterpriseCredit.dbo.QYFZCH';列不允许有 Null 值。INSERT 失败。”。
A:一般这类问题的存在是
- Java中的List
g21121
java
List是一个有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
与 set 不同,列表通常允许重复
- 读书笔记
永夜-极光
读书笔记
1. K是一家加工厂,需要采购原材料,有A,B,C,D 4家供应商,其中A给出的价格最低,性价比最高,那么假如你是这家企业的采购经理,你会如何决策?
传统决策: A:100%订单 B,C,D:0%
&nbs
- centos 安装 Codeblocks
随便小屋
codeblocks
1.安装gcc,需要c和c++两部分,默认安装下,CentOS不安装编译器的,在终端输入以下命令即可yum install gccyum install gcc-c++
2.安装gtk2-devel,因为默认已经安装了正式产品需要的支持库,但是没有安装开发所需要的文档.yum install gtk2*
3. 安装wxGTK
yum search w
- 23种设计模式的形象比喻
aijuans
设计模式
1、ABSTRACT FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:
- 开发管理 CheckLists
aoyouzi
开发管理 CheckLists
开发管理 CheckLists(23) -使项目组度过完整的生命周期
开发管理 CheckLists(22) -组织项目资源
开发管理 CheckLists(21) -控制项目的范围开发管理 CheckLists(20) -项目利益相关者责任开发管理 CheckLists(19) -选择合适的团队成员开发管理 CheckLists(18) -敏捷开发 Scrum Master 工作开发管理 C
- js实现切换
百合不是茶
JavaScript栏目切换
js主要功能之一就是实现页面的特效,窗体的切换可以减少页面的大小,被门户网站大量应用思路:
1,先将要显示的设置为display:bisible 否则设为none
2,设置栏目的id ,js获取栏目的id,如果id为Null就设置为显示
3,判断js获取的id名字;再设置是否显示
代码实现:
html代码:
<di
- 周鸿祎在360新员工入职培训上的讲话
bijian1013
感悟项目管理人生职场
这篇文章也是最近偶尔看到的,考虑到原博客发布者可能将其删除等原因,也更方便个人查找,特将原文拷贝再发布的。“学东西是为自己的,不要整天以混的姿态来跟公司博弈,就算是混,我觉得你要是能在混的时间里,收获一些别的有利于人生发展的东西,也是不错的,看你怎么把握了”,看了之后,对这句话记忆犹新。 &
- 前端Web开发的页面效果
Bill_chen
htmlWebMicrosoft
1.IE6下png图片的透明显示:
<img src="图片地址" border="0" style="Filter.Alpha(Opacity)=数值(100),style=数值(3)"/>
或在<head></head>间加一段JS代码让透明png图片正常显示。
2.<li>标
- 【JVM五】老年代垃圾回收:并发标记清理GC(CMS GC)
bit1129
垃圾回收
CMS概述
并发标记清理垃圾回收(Concurrent Mark and Sweep GC)算法的主要目标是在GC过程中,减少暂停用户线程的次数以及在不得不暂停用户线程的请夸功能,尽可能短的暂停用户线程的时间。这对于交互式应用,比如web应用来说,是非常重要的。
CMS垃圾回收针对新生代和老年代采用不同的策略。相比同吞吐量垃圾回收,它要复杂的多。吞吐量垃圾回收在执
- Struts2技术总结
白糖_
struts2
必备jar文件
早在struts2.0.*的时候,struts2的必备jar包需要如下几个:
commons-logging-*.jar Apache旗下commons项目的log日志包
freemarker-*.jar  
- Jquery easyui layout应用注意事项
bozch
jquery浏览器easyuilayout
在jquery easyui中提供了easyui-layout布局,他的布局比较局限,类似java中GUI的border布局。下面对其使用注意事项作简要介绍:
如果在现有的工程中前台界面均应用了jquery easyui,那么在布局的时候最好应用jquery eaysui的layout布局,否则在表单页面(编辑、查看、添加等等)在不同的浏览器会出
- java-拷贝特殊链表:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
bylijinnan
java
public class CopySpecialLinkedList {
/**
* 题目:有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
拷贝pNext指针非常容易,所以题目的难点是如何拷贝pRand指针。
假设原来链表为A1 -> A2 ->... -> An,新拷贝
- color
Chen.H
JavaScripthtmlcss
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <HTML> <HEAD>&nbs
- [信息与战争]移动通讯与网络
comsci
网络
两个坚持:手机的电池必须可以取下来
光纤不能够入户,只能够到楼宇
建议大家找这本书看看:<&
- oracle flashback query(闪回查询)
daizj
oracleflashback queryflashback table
在Oracle 10g中,Flash back家族分为以下成员:
Flashback Database
Flashback Drop
Flashback Table
Flashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)
下面介绍一下Flashback Drop 和Flas
- zeus持久层DAO单元测试
deng520159
单元测试
zeus代码测试正紧张进行中,但由于工作比较忙,但速度比较慢.现在已经完成读写分离单元测试了,现在把几种情况单元测试的例子发出来,希望有人能进出意见,让它走下去.
本文是zeus的dao单元测试:
1.单元测试直接上代码
package com.dengliang.zeus.webdemo.test;
import org.junit.Test;
import o
- C语言学习三printf函数和scanf函数学习
dcj3sjt126com
cprintfscanflanguage
printf函数
/*
2013年3月10日20:42:32
地点:北京潘家园
功能:
目的:
测试%x %X %#x %#X的用法
*/
# include <stdio.h>
int main(void)
{
printf("哈哈!\n"); // \n表示换行
int i = 10;
printf
- 那你为什么小时候不好好读书?
dcj3sjt126com
life
dady, 我今天捡到了十块钱, 不过我还给那个人了
good girl! 那个人有没有和你讲thank you啊
没有啦....他拉我的耳朵我才把钱还给他的, 他哪里会和我讲thank you
爸爸, 如果地上有一张5块一张10块你拿哪一张呢....
当然是拿十块的咯...
爸爸你很笨的, 你不会两张都拿
爸爸为什么上个月那个人来跟你讨钱, 你告诉他没
- iptables开放端口
Fanyucai
linuxiptables端口
1,找到配置文件
vi /etc/sysconfig/iptables
2,添加端口开放,增加一行,开放18081端口
-A INPUT -m state --state NEW -m tcp -p tcp --dport 18081 -j ACCEPT
3,保存
ESC
:wq!
4,重启服务
service iptables
- Ehcache(05)——缓存的查询
234390216
排序ehcache统计query
缓存的查询
目录
1. 使Cache可查询
1.1 基于Xml配置
1.2 基于代码的配置
2 指定可搜索的属性
2.1 可查询属性类型
2.2 &
- 通过hashset找到数组中重复的元素
jackyrong
hashset
如何在hashset中快速找到重复的元素呢?方法很多,下面是其中一个办法:
int[] array = {1,1,2,3,4,5,6,7,8,8};
Set<Integer> set = new HashSet<Integer>();
for(int i = 0
- 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
lanrikey
history
后退时关闭当前页面
<script type="text/javascript">
jQuery(document).ready(function ($) {
if (window.history && window.history.pushState) {
- 应用程序的通信成本
netkiller.github.com
虚拟机应用服务器陈景峰netkillerneo
应用程序的通信成本
什么是通信
一个程序中两个以上功能相互传递信号或数据叫做通信。
什么是成本
这是是指时间成本与空间成本。 时间就是传递数据所花费的时间。空间是指传递过程耗费容量大小。
都有哪些通信方式
全局变量
线程间通信
共享内存
共享文件
管道
Socket
硬件(串口,USB) 等等
全局变量
全局变量是成本最低通信方法,通过设置
- 一维数组与二维数组的声明与定义
恋洁e生
二维数组一维数组定义声明初始化
/** * */ package test20111005; /** * @author FlyingFire * @date:2011-11-18 上午04:33:36 * @author :代码整理 * @introduce :一维数组与二维数组的初始化 *summary: */ public c
- Spring Mybatis独立事务配置
toknowme
mybatis
在项目中有很多地方会使用到独立事务,下面以获取主键为例
(1)修改配置文件spring-mybatis.xml <!-- 开启事务支持 --> <tx:annotation-driven transaction-manager="transactionManager" /> &n
- 更新Anadroid SDK Tooks之后,Eclipse提示No update were found
xp9802
eclipse
使用Android SDK Manager 更新了Anadroid SDK Tooks 之后,
打开eclipse提示 This Android SDK requires Android Developer Toolkit version 23.0.0 or above, 点击Check for Updates
检测一会后提示 No update were found