自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

渡之的博客

一名IT中毒者

  • 博客(52)
  • 资源 (7)
  • 收藏
  • 关注

原创 Protobuf 调试踩坑记录

这是一次记录在使用protobuf中踩坑的记录,也对nanopb工具更熟悉了一些,做一次记录整理,也希望能给其他遇到坑的同学一些帮助

2023-08-04 15:18:21 330

原创 px4传感器数据sensor模块整理

px4的senso模块架构整理

2022-12-26 16:33:33 417 1

原创 px4 编译生成msg消息机制及将其移植方法

移植px4生成msg消息的工具

2022-10-10 15:00:46 676

原创 MCUXpresso调试FreeRTOS时显示多线程

调试freertos时后常见问题

2022-09-19 16:16:14 310

原创 nanomsg应用中的问题整理

整理最近调试nannomsg遇到很多坑,写个博客整理一下1.消息接收这里我在项目中遇到一个坑的地方:在一个Nanomsg类中实现消息接收,class Nanomsg{ bool Nanomsg_slave:: recv(uint8_t *data , int &len) { len = nn_recv(_sock, &data, NN_MSG, 0); print

2022-04-20 16:21:29 905

原创 px4固定翼位置控制流程

自己把流程过了一遍,直接贴图了

2021-10-27 17:59:26 710 4

原创 px4添加遥控器开关快捷校准磁罗盘

功能描述:仿照大疆飞机,遥控器开关快速拨动三次触发校准磁罗盘任务原理: 遥控器配置第六通道,在commander模块添加订阅遥控器通道值根据通道值变化判断进入磁罗盘校准的逻辑编程逻辑:修改commander文件,添加遥控器通道订阅,在主函数循环中定义计数位根据开关拨动计数,三秒内计数六次发送校准磁罗盘的指令在主程序的循环里添加以下代码//PX4_INFO("_rc_channels.channels[5]:%3.6f\r\n",(double)_rc_channels.channels

2021-07-26 14:34:26 592

原创 ros添加配置文件yaml读取参数

在windos下做桌面应用开发,常用.ini文件在做ros开发中遇到了同样的问题,一些参数需要根据需求修改,但是修改频率又不是很高,这时候可以配置一个yaml文件读取参数首先需要在电脑上配置好yaml的库GitHub上下载yaml-cpp的源码https://github.com/jbeder/yaml-cppgit clone https://github.com/jbeder/yaml-cpp.git然后进入目录创建build文件编译安装mkdir buildcd buil

2021-07-20 14:53:13 7197

原创 px4室内飞行通过SLAM发送位置消息

先按照官方的教程设置好飞控参数http://docs.px4.io/master/zh/computer_vision/visual_inertial_odometry.html下载源码学习:https://github.com/Auterion/VIO主要逻辑就是机载电脑将视觉信息转换为飞机可接受的位置消息通过mavros发送给飞控,从而实现室内定点导航,路径规划等功能我们需要使用、mavros中的odomtry消息给飞控发送位置信息,在仿真调试时候使用rostopic发送消息,关

2021-06-25 15:03:47 555

原创 mavros操作飞机时方向位置改为机体坐标系下指令

前面试了很多,看官网里的说明用 /mavros/setpoint_raw/local"里的frame_id改为"base_link" 不行又直接发mavros_msgs/PositionTarget 修改里面的type_mask把忽略的都加上,但还是没用,飞机依然按照全局位置飞行最后搞了好几天,才弄懂,只需要一行代码就搞定了。节点声明ros::NodeHandle node;node.setParam("mav_frame", 8);//Frame_body_ned=8这个参数从很多消息

2021-05-17 17:06:54 1202

原创 px4任务模式执行流程

贴图,整个流程还是需要熟悉代码顺下来的,这是我初学px4时整理的,有点太细了,不过就这么顺一遍,就全清晰了,自己写航迹规划的模块时也有了参考

2021-04-07 10:45:14 607 2

原创 目标跟踪算法研究整理

最近项目有用到目标跟踪的算法,用的还是传统opencv,整理一下1.基础框架目标跟踪基础认识视频图像跟踪算法综述opencv实现目标跟踪的八种算法2.CSRT追踪器CSRT追踪器官方描述在具有通道和空间可靠性的判别相关滤波器(DCF-CSR)中,我们使用空间可靠性图将滤波器支持调整为从帧中选择区域的一部分以进行跟踪。 这确保了所选区域的放大和定位,并改善了对非矩形区域或对象的跟踪。 它仅使用2个标准功能(HoG和颜色名称)。 它还以相对较低的fps(25 fps)运行,但为对

2021-03-11 17:06:41 3392

原创 px4直升机混控逻辑整理

目录一、直升机混控矩阵的介绍:二、源代码解读一、直升机混控矩阵的介绍:直升机混控:直升机混控将三个控制输入(roll,pitch,thrust)组合为四个输出(斜盘伺服系统和主电机ESC设置)。直升机混控的第一个输出是主电机的油门设置。 随后的输出是斜盘伺服器。 可以通过添加简单的混合器来控制尾桨。推力控制输入既用于主电动机设置,也用于斜盘的总螺距。 它使用油门曲线和俯仰曲线,均由五个点组成。混合器定义以以下内容开头:H: <number of swash-.

2021-03-01 14:45:36 1594

原创 整理px4飞控校准机制和qgc校准机制

用qgc执行 px4飞控传感器校准时 的步骤确实很麻烦,磁罗盘需要转6个面,加速度计也需要6个面。大疆无人机的校准很简单,加速度计需要静置一会,磁罗盘校准也就转一个面就行了,就算学不来大疆,也适当在可行范围简化一下px4的校准步骤,抱着这个目的,整理一下px4和qgc的交互的校准机制。一、飞控解锁前的自检机制 这个也比较恶心,飞机用的过程中突然就解不了锁了,重新上下电又好了自检程序调用在commander模块,run函数里while循环的前面PreFlightCheck::pre...

2021-01-29 11:37:06 3434 3

原创 px4飞控和qgc通信机制整理

连接多架飞机时老是不反应,整理一下飞控和qgc的通信机制吧全部消息整理出来太庞大了,以心跳包做个示例,打字太累,直接贴图,qgc的后面再补上

2021-01-03 18:44:27 2077 1

原创 px4log日志文件名和qgc下载的日志文件名称的修改

在飞多架无人机的时候,会给飞机修改设备编号id,地面站默认的sys_id设置范围1~255在读取多个飞机的log日志时候,如果能够直接生成带着飞机编号的log文件是最好的,调研了一下,发现修改log的名称需要两个地方,一个是飞控端,生成的log存放在内存卡中。另一个是地面站QGC读取飞控的内存生成文件,这样是方便不用拆开机架方便读取。1.px4 log日志文件的名称修改生成log名称的代码路径//src/modules/logger/logger.cpp 1151行可以看到代码段..

2020-12-11 17:52:27 1735

原创 QGC程序框架简单解析

QGC地面站功能很强大,界面也做的很好看,不过代码量也是很庞大,二次开发难度挺大的,自己看了好几天还是一头雾水,晚上资料也大都不齐,最后还是买了阿木社区的课程参考一下,说实话,课程讲的真不咋地,虽然是个声音很好听的妹子在讲课不过也不是专业讲课的就有时很难懂有时很啰嗦,而且版本不一样很多文件对应不上,不过买课程就有文档资料,里面有了大致的框架介绍自己就能看懂代码了,做个整理分享一下自己的理解。同样的话,二次开发前提是有基础,懂c++语言,熟悉qt,以及px4飞控至少要了解一些飞控任务机制和mavlink协

2020-12-02 11:53:50 2464 3

原创 QGC编译报错error C2220: 警告被视为错误 最佳解决方法

前面搜了一下,试过各种方法依然报错,先整理别人的解决方法目录一、重新保存文件二,更改编码方式三、最终解决方案:修改配置文件一、重新保存文件注意这里的配置“Wx/WX-”二,更改编码方式这是编码问题,可通过换成GB2312来解决,如图:一定要选择,“按编码保存”,笔者选择“按编码重新载入”,还有会报错同样其他问题,也用相同的方法解决:三、最终解决方案:修改配置文件原理就是修改make的设置,如第一种方法说的那样,将警告视为错误的选项改为 “否”,这里.

2020-10-19 16:52:13 2698 2

原创 匿名飞控解析GPS协议

匿名飞控写了一部分的gps解析的代码,但在实际应用时候发现了问题,使用之前给pixhawk配的gps,debug中断调试发现也是收到数据了,但是消息数全是错的很杂乱,再去翻文档,发现匿名飞控支持的gps协议为u-blox的,再去网上搜u-blox协议,发现之前用的就是u-blox协议,然后顺便又发现了个软件u-center,是专门调试u-blox协议的导航模块,然后使用串口接上gps模块,发现了波特率的设置为9600,而且可以更改,u-center使用说明网上可以搜到再去看匿名飞控的波特率接收设置,

2020-08-31 19:21:47 1741 1

原创 匿名飞控修改pwm输出脉宽和频率

项目中要用到飞控板去控制一个单独的pwm电子开关,但是这个电子开关只有在输入特定脉冲频率和脉宽的作用下会执行开关作用。因为也是一直做上层算法,缺少底层开发经验,网上也没有现成的技术文档告诉我怎么改,只能硬着头皮查资料看代码,终于解决了问题,这里记录一下。匿名飞控的pwm输出配置文件在目录SRS/driver/Drv_pwm_out.c文件下这个函数PWM_Out_Init()//21分频到 84000000/21 = 4M 0.25us/*初始化高电平时间1000us(4000份)*/

2020-08-31 18:45:30 1802

原创 匿名飞控线程初始化和调度是怎么实现的

目录一、线程初始化先看下Scheduler_Setup()函数,二、任务调度器函数在文件Ano_Scheduler.c中,Scheduler_Setup()初始化后,在while循环中执行Scheduler_Run()一、线程初始化先看下Scheduler_Setup()函数,void Scheduler_Setup(void){ uint8_t index = 0; //初始化任务表 for(index=0;index < TASK_NUM;index++)

2020-06-04 10:23:45 614

原创 匿名飞控设备初始化All_Init()函数代码整理

初始化All_Init();函数在BSP_Init.c中看下源程序u8 All_Init(){ NVIC_PriorityGroupConfig(NVIC_GROUP); //中断优先级组别设置 SysTick_Configuration(); //滴答时钟 Delay_ms(100); .

2020-06-03 16:05:50 1080

原创 匿名飞控程序整理

主程序框图如下,接下来我会将各个模块全部单独整理出来,一是分享,也是给自己留个便于查阅主函数main.cint main(void){ flag.start_ok = All_Init(); //进行所有设备的初始化,并将初始化结果保存 Scheduler_Setup(); //调度器初始化,系统为裸奔,这里人工做了一个时分调度器 while(1)...

2020-06-03 14:16:51 1983 2

原创 基于opencv做图像处理的经验总结

其实很久之前就有做过图像处理的项目,是做关于无人机的目标跟踪的项目,不过那会也是刚接触图像处理,写起代码就是网上翻几篇目标识别的论文,照着别人网上发的论文给出的目标识别的步骤框架,去找opencv对应的封装好的函数,一般就这些步骤1.转灰度2.直方图均衡3.滤波4.特征提取(边缘检测,颜色检测就不转灰度了) 项目做下来代码倒是跑通了,但是遇到问题自己还是一头雾水的,直到后面静下心来找了图像处理的课程认真学习了一下,总算是茅塞顿开。做图像处理的时候其实也是逐帧的处理,而每一帧就...

2020-05-09 19:09:28 990

转载 关于无人机四元数解算姿态角解析你知道吗?

原文链接http://www.elecfans.com/d/705815.html一、概述无人机求解姿态角有多种算法,但由于各种算法的自身限制及计算机计算速度的限制,所以我们需要选择一个较佳的求解算法,下面我们先来看看几种求解姿态角的算法:1.欧拉角法:欧拉角法(又称三参数法)是欧拉在1776 年提出来的,其原理是动坐标系相对参考坐标系之间的位置关系可以用一组欧拉角来描述。...

2020-04-23 10:07:22 5069 5

原创 匿名飞控混控器解读并修改机型配置十字型或其他机型配置

匿名飞控的代码还是很简洁的,捋完整个代码框架不难发现各个模块是非常清晰的,每个任务环交换的变量基本都是全局变量,拓展的话也是非常便捷,如果我们需要更改机型配置的话更改文件就可以了Ano_MotorCtrl.c来看一下原先X字形混控的配置模块 motor_step[m1] = mc.ct_val_thr -mc.ct_val_rol +mc.ct_val_pit ...

2020-04-21 10:32:06 963 1

原创 正则表达式整理

推荐新手一定要阅读正则表达式必知必会这本书,一下午看完了这本书,终于是入了门,正则表达式强大便捷,做字符串处理一定要学习一下完全记住这么多元字符也不太可能,简单整理一下,便于以后查阅. 可以匹配除换行符以外任何单字符 \ 转义字符,如\. \\ [ ] 定义一个字符集合,字符集匹配结果是能够与该集合里任意一个成员相匹配的文本 - 连字符,例如a-z...

2020-03-09 17:07:59 112

原创 Qt鼠标点击不响应QMouseEvent事件的解决办法

最近在写程序在和同事合完代码后发现一个问题,项目是使用qt开发一个程序,有一个功能是要实现地图的标记功能,我需要在一个label控件上显示地图,然后再选中标记按钮后点击地图,会在鼠标点击的位置放置一个标记的图标并储存备注信息,那么实现这个功能必须要用到在控件上绘图,但是label并没有点击事件所以使用了QMouseEvent事件响应绘图事件,在eventFilter写实现方法ui-&gt...

2020-01-08 15:46:59 8427 2

原创 c++编程中变量传值多次变成乱码的问题?

最近使用MFC 写一个对话框程序,发现一个非常烦人的问题,就是我在一个类中的CString类型的变量是从ini文件读出的,在另类中调用这个全局变量时候,将这个变量使用多次后,变量的内容发生了变化,变成了乱码举个例子class A{CString strA = _T"hello";}classB{CString strB = A.strA ;//这时候中断strB查看的值...

2019-11-08 18:01:02 627

原创 http调试必备工具

一个是Postman,可以模拟表单填写参数,请求头等发送给服务器另一个是HttpAnalyzies,可以抓包,所有进程接受或发送出去的消息

2019-10-09 09:36:45 424

原创 c++ http通信使用CInternetSession整理

最近因为项目原因接触到http协议通信,边学边做,首先感谢sunriver2000大神封装好的类,可以直接调用接口进行通信,和源码对比着整理一下自己的收获https://blog.csdn.net/sunriver2000/article/details/84670639首先简单说明一下,当需要从服务器获取信息时候使用的是 “GET”,上传使用的是"POST"。然后可以源码...

2019-10-08 16:24:54 1316

原创 C++读写文件的二进制流转为字符串被截断的问题

在写完程序时候运行中断发现读取出来的文件流放进char[]后长度只有几个字节,但是可以将这个cha[]重新写成文件CFile file; char* imgbuf1= NULL; //存放图片的char[]file.Open(_T("1.jpg"),CFile::modeReadWrite);const int lengthf1 = file.GetLength(); imgb...

2019-10-08 15:15:35 1000

原创 C++编程字符串数据类型转换遇到问题总结 ,持续更新

C++ 字符集unicode和多字节的数据类型差别很大,搞这个费了好长的功夫。就把过程中遇到的问题记录下,大都是网上找的,链接太多七七八八也不好贴是哪位博主了,主要方便自己查阅,投个原创请见谅1. const char* 字符串 以 “\0”结尾。2. char[] 字符串 以 “\0”结尾。3.string 字符串 不以 “\0”结尾。4. char[n] = "string",...

2019-10-06 15:28:36 580

原创 pixhawk配置垂直起降无人机

我使用的版本里面没有找到+型尾座式垂直起降无人机,就先用x型无人机了查看代码.发现在init.d目录下id号为13003待续

2019-08-12 16:30:08 1322

原创 px4修改混控器自定义混控结构

混控器的理解可以查看说明文档,我就不重复赘述了,要看懂混控器配置的原理再看我这篇文章https://px4.osdrone.net/2_Concepts/mixingand_actuators.html在px4文件中,ROMFS/px4fmu_common/init.d这个文件夹是关于机型的选择文件名是每个机型独有的id,(ps:其实我是想自定义一个机型的,但是添加在这里连接在地...

2019-08-07 14:23:50 1686

原创 px4 实现发送自定义mavlink协议消息解锁飞控板以及切换飞行模式

先站个位子查阅commander文件下,发现所有模式切换都在commder_main函数int commander_main(int argc, char *argv[]){... if (!strcmp(argv[1], "start")) { ... } if (!strcmp(argv[1], "stop")) { ... }...

2019-07-04 15:49:20 2055 2

原创 px4添加自定义mavlink消息通信校验通不过解决办法

参照网上的很多的博客,例https://www.cnblogs.com/spyplus/p/7429751.html照着往下改,遇到了两个问题添加新的mavlink协议时,mavlink文件没有问题,但是找不到bulid目录下uorb/topics下找不到头文件#include <uORB/topics/ca_trajectory.h>#include <v2....

2019-06-26 18:28:04 1217

原创 pixhawk飞控板添加额外pwm输出通道控制开伞或舵机转动实现功能

如果在飞控需要控制单独的舵机,可以自定义一个pwm通道输出,添加引用头文件#include <drivers/drv_pwm_output.h>到使用的代码文件里使用下面的调用下面的函数即可up_pwm_servo_set( channel, value)其中channel是AUX通道编号,从0到6,value是pwm输出值。这个函数是从混控器那块的调用,理论上上...

2019-06-10 16:12:29 7948 12

原创 opencv-python库程序运行cv2.creatbutton指令时程序停住

在用python编写程序时,发现了opecv库里面有绘button按钮的接口,cv2.creatbutton发现这个函数参数与cv2.creattrack类似,上网找了,翻遍全网没人用过这个方法,自己就按着格式要求写了内参,结果程序运行到这一步就卡住了,结果在网上发现使用Qt写的opencv-c++程序可以使用,但在python环境下却没法直接用发现是在在Qt下有官方库可以使用,直接定义b...

2019-04-26 09:23:53 1304 3

原创 安装win10和Ubuntu双系统开机启动项问题总结

最近给新机子安装双系统时发现一些问题在安装好win10后再安装Ubuntu系统,逐步点下去出现了这情况,点击了自己再分配空间,结果Ubuntu安装完成后将win10的启动项给覆盖了,重启后只能进入Ubuntu系统,再用PE系统修复win10的启动项,结果win10 能进去了Ubuntu进不去查询资料后,又经过自己反复的尝试,发现问题在于磁盘的分区格式,Ubuntu的启动项时UEFI引导...

2019-04-13 10:08:21 2213 2

px4_GPS制导 .xmind

使用Xmind整理出来的px4飞控程序中navigate模块以及到旋翼的位置模块,如果有什么问题欢迎随时交流

2019-08-06

C#仿真飞行仪表盘

使用C#编写winform的仿真飞行仪表盘,可实现俯仰角,滚动角,航向角的可视化监测

2018-12-26

C#动态添加数据到折线图

C#窗口程序chart控件实现动态将数据添加到折线图的功能,勾选框可指示数据是否显示

2018-10-24

启动后两个窗口同时显示在不同屏幕上

本案例实现在拥有两块显示屏时候,分别将两个不同的窗口显示在两个单独的屏幕。适用于初学者,可以去我的博客看看方法说明。

2018-10-17

C#初学者简单计算器

程序非常简单,适用于新学者,试验一个简单加法计算器,新入门的可以到我博客看看,会经常更新哦

2018-10-17

数字时钟设计

多功能数字时钟设计,适用于数字电路初学者,其功能是实现时钟分时化显示

2018-07-23

基于单片机的温湿度监测

适用于单片机初学者,使用51单片机做一个温湿度监测的小系统,使用C语言编程

2018-07-23

空空如也

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

TA关注的人

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