为什么顶尖飞控工程师都在用Python+DroneKit?真相令人震惊

第一章:Python+DroneKit:无人机智能控制

通过结合Python编程语言与DroneKit开源库,开发者能够实现对无人机的高级智能控制。DroneKit基于MAVLink协议,支持与Pixhawk等飞控系统通信,允许用户以简洁的API发送指令、监控飞行状态并开发自主飞行逻辑。

环境搭建与依赖安装

在开始开发前,需配置Python运行环境并安装DroneKit库:
  1. 安装Python 3.7或更高版本
  2. 使用pip安装DroneKit:
    pip install dronekit
  3. 确保无人机飞控已连接至地面站或开发机,通常通过UDP、TCP或串口方式

连接无人机并获取状态信息

以下代码展示如何使用DroneKit连接模拟无人机(如使用SITL)并读取基本飞行数据:
# 导入DroneKit模块
from dronekit import connect

# 连接到SITL模拟器(本地端口14550)
vehicle = connect('127.0.0.1:14550', wait_ready=True)

# 打印无人机基本信息
print("飞行器型号:%s" % vehicle.version)
print("飞行模式:%s" % vehicle.mode.name)
print("GPS状态:%s" % vehicle.gps_0)
print("电池电量:%s" % vehicle.battery)
该脚本建立连接后,可实时访问飞行器对象的属性,适用于监控与决策逻辑构建。

常用飞行参数对照表

参数名称描述示例值
vehicle.location.global_frame当前经纬度与海拔lat=37.123, lon=-122.456, alt=50.2
vehicle.attitude姿态角(俯仰、横滚、偏航)pitch=0.1, yaw=1.57, roll=-0.05
vehicle.velocity三维速度向量(米/秒)[5.2, 0.3, -0.1]

任务执行流程图

graph TD A[启动程序] --> B[连接无人机] B --> C{连接成功?} C -->|是| D[获取飞行状态] C -->|否| E[重试或报错] D --> F[执行控制逻辑] F --> G[断开连接]

第二章:DroneKit核心原理与架构解析

2.1 DroneKit-Python通信机制深入剖析

DroneKit-Python通过MAVLink协议与无人机建立稳定通信,底层依赖于`pymavlink`库实现消息的序列化与解析。其核心是基于UDP/TCP或串口连接的双向通信通道。
连接初始化流程
  • connect() 方法指定连接方式(如串口或网络)
  • 自动协商MAVLink版本并建立心跳包机制
  • 维护车辆对象(Vehicle)的状态同步
from dronekit import connect

# 建立与无人机的连接
vehicle = connect('/dev/ttyUSB0', baud=57600, wait_ready=True)
上述代码通过串口设备文件和波特率参数建立物理连接,wait_ready=True确保在获取完整状态前阻塞执行。
消息监听与回调
DroneKit采用事件驱动模型,支持对特定属性变更注册回调函数,实现低延迟响应。

2.2 MAVLink协议在DroneKit中的角色与应用

MAVLink作为轻量级的无人机通信协议,在DroneKit中承担着核心的数据交换职责。它通过定义标准化的消息格式,实现地面站与飞行器之间的可靠指令传输与状态反馈。
消息结构与通信机制
DroneKit利用MAVLink封装各类无人机操作指令,如起飞、返航和航点设置。所有命令均以二进制格式打包,确保低延迟和高兼容性。
from dronekit import connect, Command
# 建立与飞行器的连接
vehicle = connect('udp:127.0.0.1:14550', wait_ready=True)
# 获取当前任务列表
cmds = vehicle.commands
cmds.download()
cmds.wait_ready()
上述代码建立与模拟无人机的UDP连接,并初始化命令接口。参数wait_ready=True确保属性加载完成后再继续执行,避免访问未初始化数据。
典型应用场景
  • 实时遥测数据获取(如GPS位置、电池电压)
  • 任务航点编程与动态重规划
  • 远程控制指令下发(如模式切换、着陆)

2.3 飞控数据流处理:从地面站到飞行器

在无人机系统中,飞控数据流的稳定传输是实现精确控制的关键。地面站通过通信链路将指令打包发送至飞行器,飞行器接收后解析并执行相应动作。
数据同步机制
为确保指令实时性与一致性,常采用时间戳与序列号双校验机制。每帧数据包含唯一递增的序列ID和UTC时间戳,防止丢包或乱序。
典型通信协议结构
struct CommandPacket {
    uint16_t seq;        // 序列号
    uint64_t timestamp;  // 时间戳(微秒)
    float roll, pitch, yaw;  // 姿态指令
    uint8_t cmd_type;    // 指令类型
};
该结构体定义了基本命令帧格式,seq用于检测丢包,timestamp保障时间同步,姿态指令以浮点数传输,精度满足飞控需求。
数据流向示意
→ 地面站生成指令 → 数据序列化 → 调制编码 → 无线链路 → 飞行器接收 → 解码解析 → 执行控制

2.4 航点任务生成与指令封装实战

在无人机自主飞行系统中,航点任务的生成是路径规划的核心环节。通过定义一系列地理坐标点,系统可自动生成可执行的飞行任务序列。
航点数据结构设计
每个航点包含经纬度、高度、停留时间等关键参数,使用结构化对象描述:
type Waypoint struct {
    Lat     float64 // 纬度
    Lng     float64 // 经度
    Alt     float64 // 高度(米)
    Hold    int     // 停留时间(秒)
}
该结构便于序列化为JSON格式,适用于前后端传输与飞控协议解析。
指令封装流程
将航点列表封装为MAVLink协议支持的任务指令包,需按序编号并添加起始确认标志。典型流程包括:
  • 校验航点有效性(如坐标范围)
  • 插入任务开始标记(CMD_NAV_TAKEOFF)
  • 逐点转换为NAV_WAYPOINT指令
  • 计算总任务校验和
最终生成的指令包可通过串口或UDP发送至飞控单元,实现自动化任务加载与执行。

2.5 实时状态监控与遥测数据分析

在分布式系统中,实时状态监控是保障服务可用性的核心环节。通过采集节点的CPU、内存、网络等指标,并结合事件日志,可实现对系统健康度的动态评估。
数据采集与上报机制
使用轻量级代理定期收集主机指标并推送至中心化平台。以下为基于Go语言的采集示例:
func collectMetrics() map[string]float64 {
    cpu, _ := cpu.Percent(0, false)
    mem, _ := mem.VirtualMemory()
    return map[string]float64{
        "cpu_usage":  cpu[0],
        "mem_usage":  mem.UsedPercent,
        "timestamp":  float64(time.Now().Unix()),
    }
}
该函数每秒执行一次,返回当前CPU与内存使用率,附带时间戳用于趋势分析。
遥测数据处理流程

设备 → 边缘代理 → 消息队列(Kafka) → 流处理引擎(Flink) → 存储(TSDB)

指标类型采样频率存储周期
CPU利用率1s30天
请求延迟100ms7天

第三章:基于Python的无人机控制实践

3.1 搭建开发环境与连接仿真无人机

安装必要工具与依赖
在开始前,需配置Python 3.8+环境,并安装DroneKit与MAVProxy仿真工具。使用以下命令安装核心库:

pip install dronekit matplotlib pymavlink
该命令安装了与无人机通信的核心库:dronekit用于编写控制逻辑,pymavlink实现MAVLink协议通信,matplotlib用于后续飞行数据可视化。
启动仿真无人机
通过SITL(Software In The Loop)模拟器启动本地无人机实例:

sim_vehicle.py -f gazebo-iris --console
此命令在Gazebo环境中加载多旋翼模型,并开放UDP端口14550用于通信。
建立Python连接
使用DroneKit建立与仿真无人机的TCP连接:

from dronekit import connect
vehicle = connect('127.0.0.1:14550', wait_ready=True)
print(f"连接到无人机: {vehicle.version}")
参数说明:wait_ready=True确保所有车辆状态加载完成后再返回实例,保障后续操作的安全性。

3.2 实现起飞、悬停与降落的精确控制

无人机的稳定飞行依赖于对姿态、高度和加速度的闭环反馈控制。通过飞控系统中的PID控制器调节电机转速,可实现精确的垂直运动控制。
起飞阶段的高度爬升控制
在起飞过程中,设定目标爬升速率与当前气压计测得的高度差作为误差输入:
// PID 控制逻辑示例
float error = target_altitude - current_altitude;
float output = Kp * error + Ki * integral + Kd * derivative;
motor_throttle += output; // 调整油门输出
其中 Kp 控制响应速度,Ki 消除静态误差,Kd 抑制超调。
悬停与降落策略
悬停时融合IMU与气压计数据进行卡尔曼滤波,提升高度估计精度。降落阶段采用分段控制:先匀减速下降,接近地面后切换至低速定高模式。
  • 起飞:设定目标高度,逐步增加推力
  • 悬停:保持位置稳定,动态补偿风扰
  • 降落:多传感器融合确保触地平稳

3.3 动态调整飞行参数与姿态响应测试

在无人机控制系统中,动态调整飞行参数是提升飞行稳定性和响应精度的关键环节。通过实时调节PID控制器中的比例、积分和微分系数,系统能够适应不同飞行状态下的姿态变化。
PID参数动态调节代码实现

// 动态PID参数更新函数
void updatePIDCoefficients(float roll_kp, float roll_kd, float roll_ki) {
    pid_roll.kp = roll_kp;
    pid_roll.kd = roll_kd;
    pid_roll.ki = roll_ki;
    applyFilter(&pid_roll); // 应用低通滤波防止突变
}
该函数接收外部调参指令,更新横滚通道的PID增益值,并通过低通滤波平滑参数跳变,避免执行机构剧烈动作。
姿态响应测试数据记录
测试编号Kp值上升时间(ms)超调量(%)
T010.451208.2
T020.609815.6
T030.758522.3
实验表明,随着Kp增大,系统响应速度加快,但超调量显著增加,需权衡稳定性与动态性能。

第四章:高级功能开发与系统集成

4.1 自主避障逻辑设计与传感器融合

在移动机器人系统中,自主避障依赖多传感器数据的高效融合。激光雷达提供高精度距离信息,而深度相机补充环境纹理与三维结构,惯性测量单元(IMU)则增强运动状态预测。
数据同步机制
采用时间戳对齐策略,将不同频率的传感器数据统一至公共时间基准。关键代码如下:

// 时间同步处理逻辑
sensor_msgs::LaserScanPtr lidar_msg;
sensor_msgs::ImagePtr depth_img;
message_filters::TimeSynchronizer<LaserScan, Image> sync(*lidar_sub, *depth_sub, 10);
sync.registerCallback(boost::bind(&callback, _1, _2));
该回调机制确保激光与视觉数据在毫秒级精度内同步,为后续特征层融合奠定基础。
决策逻辑分层设计
  • 感知层:原始数据滤波与障碍物点云聚类
  • 融合层:加权贝叶斯融合模型输出置信地图
  • 决策层:基于动态窗口法(DWA)生成安全路径

4.2 图像识别引导降落的端到端实现

视觉目标检测模型集成
系统采用轻量化YOLOv5s模型进行实时跑道标识检测。模型部署于机载Jetson Xavier平台,通过ONNX格式优化推理性能。

import onnxruntime as ort
import cv2

# 加载ONNX模型
session = ort.InferenceSession("yolov5s.onnx")
input_name = session.get_inputs()[0].name

# 图像预处理
image = cv2.resize(frame, (640, 640))
image = image.transpose(2, 0, 1).reshape(1, 3, 640, 640).astype('float32')

# 推理输出
outputs = session.run(None, {input_name: image})
该代码段实现模型加载与前向推理。输入尺寸为640×640,输出包含边界框、类别置信度和IoU信息,用于后续定位计算。
位姿估计与控制闭环
检测结果经PnP算法解算出无人机相对于跑道的三维位姿,结合PID控制器动态调整飞行轨迹,实现精准降落。

4.3 多机协同编队控制策略探索

在多无人机系统中,编队控制是实现高效协同作业的核心。为确保飞行器间保持稳定几何构型,常采用基于一致性算法的分布式控制策略。
一致性控制协议设计
通过构建邻接图描述通信拓扑,每个无人机仅依赖邻居状态调整自身行为。以下为简化的一致性控制律代码实现:

// 更新速度向量,k_p 为控制增益
for (auto& neighbor : neighbors) {
    velocity += k_p * (neighbor.position - self.position);
}
position += velocity * dt;
上述逻辑中,控制增益 k_p 决定了收敛速度与系统稳定性,需结合通信延迟和拓扑连通性进行调优。
通信拓扑对比
  • 全连接拓扑:信息同步快,但通信开销大
  • 环形拓扑:资源消耗低,收敛较慢
  • 星型拓扑:中心节点压力大,存在单点故障风险

4.4 云端指令下发与远程任务调度

在物联网系统中,云端指令下发是实现设备远程控制的核心环节。通过消息队列遥测传输协议(MQTT),云平台可向边缘设备安全推送指令。
指令结构设计
下发指令通常包含任务类型、执行时间、参数配置等字段:
{
  "cmd_id": "CMD_001",
  "task_type": "firmware_update",
  "target_device": "DEV_1024",
  "params": {
    "version": "v2.1.0",
    "download_url": "https://update.example.com/firmware.bin"
  },
  "timestamp": 1712000000
}
该JSON结构确保指令具备唯一标识、目标设备指向和可扩展参数,便于解析与审计。
任务调度策略
  • 即时任务:高优先级指令(如紧急停机)立即执行
  • 定时任务:基于Cron表达式触发,适用于夜间维护
  • 条件任务:满足特定状态(如温度>80°C)时激活

第五章:总结与展望

技术演进中的架构选择
现代分布式系统对高并发与低延迟的要求推动了服务网格与边缘计算的发展。以 Istio 为例,其通过 Sidecar 模式将通信逻辑从应用中解耦,显著提升了微服务治理能力。实际部署中,可通过以下配置启用 mTLS:
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
  name: default
spec:
  mtls:
    mode: STRICT
可观测性的落地实践
在生产环境中,仅依赖日志已无法满足故障排查需求。某金融平台通过集成 OpenTelemetry 实现全链路追踪,关键指标采集频率提升至每秒一次。以下为典型监控指标的结构化输出:
指标名称数据类型采集频率告警阈值
http_request_duration_ms直方图1s>200ms (P99)
grpc_client_errors计数器5s>5/min
未来趋势的技术准备
  • Serverless 架构将进一步降低运维复杂度,但冷启动问题仍需优化
  • AI 驱动的自动化运维(AIOps)已在日志异常检测中验证有效性
  • 基于 eBPF 的内核级监控方案正被云原生生态广泛采纳
流量治理流程图:
用户请求 → API 网关 → 身份鉴权 → 流量染色 → 熔断限流 → 服务调用 → 分布式追踪注入

相关推荐

stm32飞控c语言程序

淘宝买的可以直接pcb打样 有程序 有pcb 有stm32f103c8t6 mpu6050 ms5611

只会Python,怎么用PC控制无人机自动飞行?

添加图片注释,不超过 140 字(可选)MAVSDK是各种编程语言的库集合,用于与无人机、摄像机或地面系统等MAVLink系统进行交互。这些库提供了一个简单的API,用于管理一个或多个车辆,提供对车辆信息和遥测的编程访问,以及对任务,移动和其他操作的控制。这些库可以在配套计算机上的无人机上使用,也可以在地面站或移动设备上使用。提示:真机与仿真操作一致,但真机需要注意遥控器各个拨杆的功能,确保处于定点模式下且有一键锁桨功能,防止意外。以下是仿真模式使用, 请开发者务必熟悉后再上真机复现。

AMOVLAB(阿木实验室) 4624

Ansys Lumerical FDTD硬件配置避坑指南:从RTX 4090到A100的GPU选择实战

本文针对Ansys Lumerical FDTD仿真计算,深入分析了从消费级RTX 4090到专业级A100的GPU硬件配置选择。文章指出,选择的关键在于显存容量能否容纳仿真模型,并对比了二者在显存、双精度算力及多卡扩展性上的核心差异,为不同预算和仿真规模的用户提供了实战避坑指南与配置建议。

weixin_29196891的博客 273

从入门到精通:Python+DroneKit无人机开发必备的7个核心技术模块

掌握Python+DroneKit:无人机智能控制核心技术,本文系统讲解从连接通信到任务规划的7大模块,涵盖地面站开发、航线控制与实时监控等应用场景。基于MAVLink协议实现高效稳定操控,助力开发者快速构建自主飞行功能,值得收藏。

CodeWhim的博客 568

14.4kW大功率母线变换器设计:LLC+矩阵变压器+GaN实战解析

在数据中心供电架构中,隔离母线变换器将高压直流母线转换为48V低压母线,是大功率供电链路的核心环节。随着功率密度与效率要求不断攀升,传统移相全桥与普通LLC方案已难以满足300A级输出需求。基于LLC/CLLC谐振拓扑,结合矩阵变压器与GaN功率器件,成为新一代高性能母线变换器的主流技术路线。矩阵变压器将大功率磁性元件拆分为多个小单元,配合原边串联副边并联结构,有效降低绕组损耗并提升功率密度;GaN器件则通过高频软开关进一步压减开关损耗。本文以一台14.4kW样机为例,完整梳理从拓扑选型、谐振参数计算、同步

weixin_28273593的博客 345

EtherCAT-7 从站代码移植-SPI

STM32F103 + AX58100,从站代码移植。

tianya_xuan的博客 3571

推荐:wpilot - 一款用于无人机自主控制的Python库

推荐:wpilot - 一款用于无人机自主控制的Python库 项目简介 是一个基于 Python 的开源项目,主要用于无人机自主控制。它提供了一套简单易用的 API,使得开发者能够轻松实现对无人机的各种操作,如起飞、降落、悬停、航向控制等。 功能与应用 wpilot 主要提供了以下功能: 基本飞行控制:包括起飞、降落、悬停、前进、后退、左转、右转、上升、下降等功能。 路径规划:支持设置预定义的...

gitblog_00005的博客 599

【无人机智能任务系统构建】:基于Python+DroneKit的8个关键步骤

掌握无人机智能控制全流程,本文详解基于Python+DroneKit的8个关键步骤,涵盖任务规划、自主飞行与实时监控,适用于农业、巡检等场景。方法实用,代码可复用,值得收藏。

LearnFlow的博客 317

TCGA之GDC-client工具下载安装与使用

文章主要是对GDC-client工具下载TCGA数据库数据整个过程的一个记录 1.下载GDC-client工具 GDC-client工具网址:GDC Data Transfer Tool | NCI Genomic Data Commons (cancer.gov) 我这里下的是上图中红圈中的版本, 2.解压安装 从网上了解的是不能解压到带中文的路径里,解压后是一个.exe文件,为了能直接在cmd命令行下使用,将其加入系统环境: 点击新建之后,输入将文件解压到的路径,然后...

better_strong的博客 1万+

RK3568平台开发系列讲解:UBOOT详细介绍

U-boot是一款广泛使用的开源引导加载程序,支持多种嵌入式操作系统和处理器架构。其主要功能包括系统上电时的硬件初始化、引导操作系统内核等。U-boot的引导流程通常包括Boot Code、idbloader.img、uboot.img、boot.img和rootfs.img等步骤。启动U-boot时,通过Debug串口连接板卡,按下ctrl+c键可进入U-Boot命令行模式。U-boot启动过程中会执行一系列初始化操作,如打印系统信息、初始化内存、加载内核设备树、初始化I2C、PMIC电源芯片、DRM框架

内核笔记 810

开源飞控初探(二):无人机技术栈

自动驾驶能让人不操控的情况下,保持经纬度和高度不变,也就是通过控制自身姿态和电机转速,抵消重力和风力的影响。如果单对抗重力,想人工控制螺旋桨转速来保持高度不变,还是有可能的,但面对不断变换速度和方向的风而言,人的反应速度不足以让经纬度变化幅度保持很小。由于地球是个球体,当两个地球表面的点足够远时,例如广州和纽约,我们难以应用“两点之间直线最短”的方案来直接过去,因为不可能穿过地底。它配有摄像头,通过对比运动过程中的图像变化,得到不同方向的位移速度,再通过一定算法得到粗略的位移量。这些点是三维的,即经纬度+

小蒙面侠的博客 3166

华为OD机试真题 新系统 2026-09-26 Java&Go&C【数据中心最佳维护时间窗】

数据中心使用一个整数数组 scores,记录 N 小时内每小时的服务器得分(可正可负)。0 表示服务器故障(无效小时)。

MISAYAONE的博客 116

浅谈飞控的软件设计

写在前面 开这个专栏的目的主要是深感自己对飞控软件、算法的知识点过于杂乱,很久没有进行系统的总结了,因此决定写几篇文章记录一些飞控开发过程的知识点。主要是针对一些软件、算法部分进行讨论,如内容有错误,欢迎指出。 2019.03.02更新 距离专栏的第一篇文章已经快2年半了,最近在回看文章的时候,发现有些地方写得不尽如人意,或亦是之前的技术水平不足,导致对一些问题的理解不深刻。由此,萌生了将已...

across的博客 8140

Python 爬虫进阶:淘宝热卖商品价格走势抓取、反爬与分析全流程

在大数据时代,数据是商业决策的重要依据。电商平台上的商品价格走势,对于商家调整经营策略、消费者选择购买时机都有着关键的参考价值。本篇文章将深入解析如何利用 Python 爬虫抓取淘宝热卖商品的价格走势数据,并应对其中的反爬机制,最后对数据进行分析,带领大家领略 Python 爬虫在电商领域的强大应用。

yansideyucsdn的博客 1060

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

飞控C语言开源,几大主流开源飞控平台优劣比较.doc

几大主流开源飞控平台优劣比较各大主流开源平台对比首先明确我们的需求:1)平台硬件,固件都比较成熟,开发环境易上手。2)性能上强调平台抗风性,飞行稳定性。3)由于植保机工作环境恶劣,硬件要求有宽广的工作温度范围,恶劣环境下的性能稳定。4)能够实现作业点记忆,自主航迹规划。有硬件备份(双子星)。 5)项目/平台名称APMpx4/pixhawkautopilotPPZMWC主控芯片AvrAtmega12...

weixin_29343657的博客 2754

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

国内外开源飞控简介

国内外开源飞控简介——无名创新  

NamelessCotrunQaud的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

开源飞控种类分享

开源飞控发展 一 开源飞控发展 第一代开源飞控系统使用Arduino或其他类似开源电子平台为基础,扩展连接各种MEMS传感器,能够让无人机能平稳地飞起来。 第二代开源飞控系统大多拥有自己的开源硬件、开发环境和社区,采用全集成的硬件架构。主要特点是高度集成、高可靠,其功能已经接近商业自动驾驶仪。 二开源飞控介绍 Arduino飞控 2) FlyMaple:(来源于Maple Project...

kengjin的博客 8393

开源飞控爱好者_8个开源爱好者的出色播客

开源飞控爱好者 在我住的地方,几乎所有东西都离家20分钟或30分钟车程,而且我一直在寻找有效利用汽车时间的方法。 一种方法是通过收听有关我感兴趣的主题的播客,因此,作为开放源代码爱好者,我订阅了各种与开放源代码相关的播客。 我每周期待着八个Linux和开源播客。 Linux4所有人 Linux4Everyone由Jason Evangelho(其中我最近采访 )是一个最喜欢的。 播客...

cumj63710的博客 289

大神浅谈无人机飞控软件设计 系统性总结

写在前面深感自己对飞控软件、算法的知识点过于杂乱,很久没有进行系统的总结了,因此决定写几篇文章记录一些飞控开发过程的知识点。主要是针对一些软件、算法部分进行讨论,如内容有错误,欢迎指出。1 飞控软件的基本模块无人机能够飞行主要是依靠传感器系统获取位姿信息并反馈到微处理器进行控制系统的运算。所以飞控软件设计主要负责搭建合理软件流程,使各功能模块协调有效的工作。一个飞控系统的基本工作主要有:1、CPU...

csshuke的专栏 3万+

飞控学习从入坑到放弃心路历程 ——————致敬无名小哥

    大一开始接触单片机,一个老乡带我进入的学校实验室,然后开始学习c语言,51单片机,做了一个蓝牙小车,大一暑假电赛老师做的高频题目,一脸懵逼,后面师兄建议我学习下32,我记得当时老师来了一句你明天是不是就要学64了,感觉当时很无语,(老师貌似喜欢做硬件的)还是一边玩一边学了下32,后面电赛测试的时候就没去了,因为什么都没做出来,也是当时才知道原来有无人机的控制题目可以选,但是老师并不同意我们...

NamelessCotrunQaud的博客 1万+

c语言表示出飞控原理,飞控入门之C语言指针回顾

指针何为指针?来个官方定义:指针是一个值为内存地址的变量(或数据对象)。一、指针的声明//示例int *pi; //pi是指向int类型变量的指针char *pc; //pi是指向char类型变量的指针float *pf; //pi是指向float类型变量的指针注意,指针的值虽然是地址,指针本身也是有自己的地址和大小的。在计算机中,指针的大小为8字节,在stm32中,为4字节。二、...

weixin_29159995的博客 369

浅谈飞控的软件设计(across写的)

关注across很久了,最近发现了它得优快云,发现了这篇文章,感觉不错,转载保存。 摘自:https://blog.youkuaiyun.com/hz770495569/article/details/86570978 浅谈飞控的软件设计 across_drone 2019-01-21 11:12:34 1923 收藏 12 分类专栏: 飞控那些事儿 最后发布:2019-01-21 11:12:34首发:2019-01-21 11:12:34 版权声明:本文为博主原创文章,遵循 CC 4.

自主无人机 PX4 ROS SLAM 路径规划 MVS等技术分享 2027

python代码实现无人机控制学习笔记

quad_sim.py 1.signal模块 通信模块 linux系统的通信基础 linux简单通信基础 linux系统中内核通过信号(signal)对进程进行作出指令,信号发出-等待-执行 python中的signal模块用来处理python进程中的信号 signal模块 signal.signal(signal.SIGINT, signal_handler) 使用signal.sign...

AndesStay的博客 1万+
上一篇: 为什么顶级团队都在用React做多模态交互?这4个优势你必须知道
下一篇: 揭秘NestJS中AI接口类型校验漏洞:90%开发者忽略的3个关键点
SimSolve
博客等级 码龄1年 152粉丝 2009原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值