自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 无人机测量风速的思路

传感器必须安装在远离无人机自身螺旋桨下洗气流干扰的位置,通常在机头、机尾或通过伸出的支臂安装在上方/前方。无人机测量风速通常在近地面至低空范围内(几米到几百米),填补了气象塔和气象气球/探空仪之间的观测空白,但覆盖范围和持续时间有限。推算依赖于飞控模型、传感器精度(尤其是IMU、GPS)、标定准确度和算法的复杂度。结合GPS(地速、位置)、IMU(加速度、角速度)、气压计(高度变化)、磁力计(航向)等传感器数据。结合无人机的姿态和高度信息,可以将图像中的像素移动转换为实际的水平移动速度(地速)。

2025-06-20 15:15:06 471

原创 在 Qt 中实现应用单例运行

QMessageBox::warning(nullptr, "警告", "程序已在运行中!QMessageBox::critical(nullptr, "错误", "无法创建单例锁!QMessageBox::warning(nullptr, "警告", "程序已在运行中!QMessageBox::warning(nullptr, "警告", "程序已在运行中!QMessageBox::critical(nullptr, "错误", "无法创建进程锁");// 尝试唤醒已有实例。// 程序退出时自动释放锁。

2025-06-19 10:27:35 916

原创 无人机上,利用 ucos2 实现 stm32 采集陀螺仪数据

/ 读GYRO_X寄存器。// 100Hz采样。// 陀螺仪三轴数据。// 读取陀螺仪数据 (伪代码)// 创建消息队列 (最多10条数据)// SPI初始化 (陀螺仪MPU6050)// CAN初始化 (使用PB8/PB9)// 在stm32f10x_it.c中添加。

2025-06-18 15:48:47 844

原创 无人机上,利用 ucos2 实现 stm32 采集磁力计数据,并通过CAN 总线发送功能

要实现基于的 STM32 磁力计数据采集与 CAN 总线发送功能,需综合实时操作系统调度、传感器驱动、CAN 通信协议及多任务协同设计。

2025-06-18 11:48:27 917

原创 无人机 上利用 linux + opencv 实现障碍识别和避障

摄像头:RGB摄像头(USB或CSI接口)或RGB-D摄像头(如Intel RealSense)if obstacle_depth < SAFE_DISTANCE: # 例如1.5米。if cv2.contourArea(cnt) > 1000: # 过滤小物体。cap = cv2.VideoCapture(0) # USB摄像头。process_frame(frame) # 后续处理。# 或使用RealSense SDK for RGB-D。# 可选:直方图均衡化。# 使用已知物体尺寸估算距离。

2025-06-17 16:44:38 521

原创 无人机Linux+OpenCV人脸识别

推荐轻量级发行版如Ubuntu Core或Raspberry Pi OS(树莓派平台),需预装Python3及编译工具链79。:采用YOLOv4-Tiny-Face(11ms/帧)或UWS-YOLO(59.29%精度)68。建筑工地无人机巡查:人脸识别工人身份,实时监测安全装备佩戴情况(如未戴头盔触发语音告警)10。结合NCC(归一化互相关算法)匹配连续帧人脸位置,减少全帧检测频率2。分辨率压缩:将图像从1080P降至480P(带宽减少至原1/4)5。:捕获图像→压缩→通过Socket发送5。

2025-06-17 11:05:40 520

原创 无人机利用 CAN总线实现双主控设计方法

无人机CAN总线双主控设计是一个系统工程,核心在于可靠的故障检测无冲突的仲裁切换和高效的状态同步。主备模式是最常用且相对成熟的方案,但需特别注意脑裂风险的防范。分区控制模式能提高资源利用率但设计更复杂。明确需要多高的可靠性、可接受的切换时间、需要冗余的功能范围。尤其是消息ID、心跳、状态同步和切换消息。状态机管理、错误处理、时序控制。覆盖所有可能的故障场景和边界条件。选择哪种架构模式需要根据无人机的具体应用场景、成本预算、性能要求和开发复杂度进行综合权衡。

2025-06-17 10:49:02 874

原创 无人机 利用 CAN 总线 实现飞控系统参数采集方法

其核心在于精心设计通信协议(ID、报文格式、频率),合理规划总线负载,并在硬件(布线、终端电阻、收发器)和软件(过滤器配置、数据处理、错误恢复)层面进行正确实现。将飞控主控制器作为CAN总线上的一个节点,其他传感器(IMU、GPS、气压计、空速计、电池监测模块等)和执行器(电调、舵机控制器等)也作为独立的CAN节点连接到总线上。配置MCU的CAN控制器(或外置CAN控制器),设置波特率(常用500kbps或1Mbps,需所有节点一致)、工作模式(Normal)、过滤器(可选,减少不必要中断)。

2025-06-17 10:23:11 789

原创 电力除冰巡检业务对无人机 功能需求

$ \begin{cases} 红外热像仪(测温范围$-40^\circ C \sim 150^\circ C$)\ 高清可见光相机(分辨率\geq 4K)\ 紫外电晕检测仪(灵敏度\leq 0.1\ pC) \end{cases} $$该功能体系已在国内±800kV特高压线路巡检中验证,相比传统人工巡检效率提升$400%$,缺陷检出率提高至$99.3%$。该功能体系需满足电力线路除冰作业效率$\geq 2\ km/h$,缺陷识别准确率$\geq 98%$的技术指标要求。

2025-06-16 19:04:48 232

原创 无人机飞控系统参数采集与程序设计

无人机飞控系统的参数采集与程序设计是实现自主飞行的核心技术,涉及硬件架构、传感器融合、实时算法及软件优化。

2025-06-16 14:32:47 425

原创 c++ 语言在无人机应用开发中的应用

随着无人机应用日益复杂(自主性、AI),对 C++ 在高性能计算(视觉、规划)方面的需求也在持续增长。虽然 GCS 用户界面常用 Qt (C++) 或 Web 技术开发,但其核心通信模块(处理 MAVLink 消息)、任务规划引擎、数据处理(日志分析、遥测可视化后端)、以及一些对性能要求高的功能(如实时视频流的低延迟解码处理)也经常使用 C++ 开发。高效地融合来自 IMU(加速度计、陀螺仪)、磁力计、气压计、GPS/GNSS 等的数据,计算精确的姿态(俯仰、横滚、偏航)、位置和速度。

2025-06-16 14:21:43 980

原创 Qt高级编程

以上技术需结合具体场景调整,Qt文档和社区论坛(如Qt Forum)提供进一步案例支持。区块,槽函数可以是成员函数、lambda表达式或全局函数,通过。)可控制单元格渲染与编辑行为,支持复杂UI交互。派生类构造函数传递parent),自动处理析构。Qt信号与槽是实现对象间通信的核心机制。可以灵活绑定信号与槽,支持同步或异步调用。确保槽函数在接收者线程执行,避免资源竞争。)或Invokable方法实现数据同步。)允许QML直接访问C++对象实例。,并编写JSON描述文件。实现自定义模型时,需重写。

2025-06-16 11:55:23 478

原创 Qt 实现 CAN 总线设备读写功能

在 Linux 系统中,SocketCAN 是内核支持的 CAN 接口标准库。Qt 可以通过套接字编程直接调用 SocketCAN 接口。对于 Windows 系统,PeakCAN 等硬件厂商提供的库通常附带 API。需根据厂商文档初始化设备并注册回调函数。工业级应用可能需要 CANopen 协议栈或厂商 SDK。无论采用哪种底层方式,数据解析逻辑一致。发送数据时需遵循适配器的协议格式,通常需封装为特定帧结构。部分 CAN 适配器通过串口与主机通信。

2025-06-15 12:20:38 220

原创 Qt 通过多线程方式,实现modbus 设备的读写功能

在Qt中实现Modbus多线程通信,可采用生产者-消费者模式结合事件循环机制。

2025-06-15 12:18:41 259

原创 用 c 语言,在 UCOS 2 上实现 无人机 mavlink v2 通讯功能

确保硬件平台支持串口通信(如UART或USART),并已移植UCOS 2操作系统。需要MAVLink v2协议库和STM32 HAL库(或其他硬件平台对应库)。MAVLink消息的发送频率需根据实际带宽和需求调整。创建两个任务:一个用于发送MAVLink消息,另一个用于接收和解码消息。在UCOS 2任务中初始化硬件串口,配置波特率(通常为57600或115200)、数据位、停止位等参数。实现串口发送和接收函数,调用MAVLink库的编码和解码接口。根据需求实现消息处理逻辑,例如处理心跳包、姿态数据或指令。

2025-06-14 08:04:34 272

原创 用 c 语言,在 UCOS 2 上实现 无人机 mavlink v2 通讯功能

在uC/OS-II上实现无人机MAVLink v2通信需要结合串口驱动、任务管理和MAVLink库集成。以下是完整实现方案:硬件接口:UART串口(或USB转串口)软件组件:MAVLink库(v2.0)uC/OS-II任务管理串口驱动(中断+DMA)任务划分::接收解析消息:周期发送心跳和状态:应用逻辑处理c复制下载#ifndef MAVLINK_COMM_H#define MAVLINK_COMM_H#include "os_cfg.h"#include "ucos

2025-06-14 08:00:46 268

原创 用c++ 实现 无人机 Mavlink v2 的 通讯功能

下面是一个使用C++实现基于Mavlink v2协议与无人机通信的示例代码。这个实现使用UDP套接字进行通信,包含心跳包发送和消息解析功能:cpp复制下载// 包含自动生成的Mavlink头文件#define UDP_PORT 14550 // 本地监听端口#define DEST_PORT 14540 // 目标端口(飞控端口)#define TARGET_IP "127.0.0.1" // 目标IP(本地模拟器)public:stop();

2025-06-14 07:58:05 574

原创 无人机 MAVLINK 消息传输协议

MAVLINK 报文解析本质上是按照严格的二进制格式,依次提取帧头、长度、标志位(v2)、序列号、地址(SysID/CompID)、消息类型(MsgID)、实际数据(Payload)、校验和(CRC)以及可选的签名(v2)。MAVLINK 是一种轻量级的消息传输协议,专为无人机、机器人及其他资源受限的嵌入式系统设计,用于组件间(如飞控、地面站、传感器、执行器)的通信。查阅对应的 MAVLINK 消息定义文件,将 Payload 的二进制数据转换为有意义的字段值。这是 v2 支持更多消息类型的关键。

2025-06-14 07:56:01 504

原创 用c++ 实现 无人机 Mavlink v2 的 通讯功能

初始化 Mavlink 消息结构体,填充字段值,调用 mavlink_finalize_message_chan 完成编码,通过串口发送二进制数据。通过以上模块的组合,可构建完整的 Mavlink v2 通信功能,需根据具体无人机型号调整消息类型和参数。建议使用独立线程处理串口读写,避免阻塞主程序。创建接收缓冲区,读取串口数据,使用 mavlink_parse_char 逐字节解析,完整消息到达时触发回调。定期发送心跳包维持连接,监控心跳超时判断链路状态,实现基础的心跳超时重连逻辑。

2025-06-14 07:54:09 178

原创 C++在无人机通讯控制中的核心应用

无人机通讯系统通常采用MAVLink协议(Micro Air Vehicle Link),该协议专为无人机设计,提供轻量级消息传输机制。这些实践表明C++在无人机通讯控制中既能满足实时性要求,又能保持代码的可维护性,是无人机系统开发的核心语言选择。无线模块控制方面,C++结合SPI/I2C驱动实现射频芯片配置。C++直接操作硬件寄存器或通过Linux内核接口(如ioctl)控制通讯模块。C++的模板元编程用于通讯协议编译时优化。

2025-06-13 17:28:13 272

原创 如何从 Qt 的 QObject,QWidget 类的设计中,学习 C++ 继承

单一职责原则QObject专注对象生命周期和通信,QWidget专注可视化表现,职责划分清晰。开放封闭原则通过虚函数(如)允许派生类扩展行为,而不修改基类代码。Liskov替换原则任何QWidget实例可以安全替换QObject指针使用,保持接口一致性。组合优于继承Qt大量使用组合(如模式)而非多继承,避免菱形继承问题。

2025-06-12 16:49:35 256

原创 c++ 开发通讯功能,类方法在报文解析中的应用

在C++通讯功能开发中,类方法可有效组织报文解析逻辑。

2025-06-12 16:44:37 327

原创 Qt编程中struct包含QString的安全性分析

$ \text{复制操作} \Rightarrow \begin{cases} \text{引用计数增加} & \text{未修改时} \ \text{深拷贝} & \text{修改时} \end{cases} $$$$ \text{同一QString实例} \nRightarrow \text{跨线程并发访问} $$$$ \text{结构体安全性} \geq \text{Qt内置类型安全级别} $$同时保持Qt内存管理机制的优势。

2025-06-12 16:39:12 113

原创 QByteArray,QString 与 标准字符串的区别

$ \text{修改前} \rightarrow \text{检查引用计数} \rightarrow \begin{cases} \text{计数=1} & \text{直接修改} \ \text{计数>1} & \text{创建副本} \end{cases} $$),不涉及编码转换。适合处理二进制数据(如图像、网络数据包),或明确知道编码格式的文本(如UTF-8)。),编码依赖系统环境(如ASCII、Latin-1或本地代码页)。采用隐式共享(Copy-on-Write),减少内存拷贝开销。

2025-06-12 16:31:37 892

原创 QVector 内存模型 和使用方法

QVector 是 Qt 提供的动态数组容器类,其内存模型基于连续存储的数组结构。它会在内存中预分配一块连续空间(capacity),当元素数量(size)超过预分配空间时,会自动进行扩容。扩容策略通常为加倍当前容量或固定步长增长,具体实现可能因 Qt 版本而异。

2025-06-12 16:28:08 202

原创 Java 开发中的跨线程通信

Future 表示异步计算的结果,CompletableFuture 提供更丰富的异步编程功能,如链式调用和组合多个异步操作。选择合适的方法需根据具体场景:低延迟场景可能选择 wait/notify,复杂协调适合高级同步工具,高吞吐量系统可能用消息队列。BlockingQueue 是线程安全的队列,提供阻塞的 put 和 take 方法,适用于生产者-消费者模式。Akka 等框架提供 actor 模型,线程通过发送不可变消息通信,避免共享状态和锁竞争。的线程会释放锁并进入等待状态,直到其他线程调用。

2025-06-12 15:36:33 185

原创 异步编程的核心挑战

以下是一个基于Python的示例代码,用于实现一个简单的功能:计算两个数字的和并打印结果。此版本允许用户通过键盘输入数字,增强了交互性。

2025-06-12 15:28:53 119

空空如也

空空如也

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

TA关注的人

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