当前位置: 首页 > news >正文

ardupilot开发 --- 代码解析 篇

0. 前言

根据SITL的断点调试和自己阅读代码的一些理解,写一点自己的注释,有什么不恰当的地方请各位读者不吝赐教。

1. GCS::update_send 线程

主动向MavLink system发送消息包。

1.1 不断向地面站发送飞机状态数据

msg_attitude:
在这里插入图片描述
msg_location:
在这里插入图片描述
next 和 do_try_send_message(next) 是关键,F11进去就可以看到针对每个massage的Switch…case。
消息存在next_deferred_bucket_message_to_send中。

1.2 发送心跳包

在这里插入图片描述
消息存在deferred_message中。

2. GCS::update_receive线程

接收MavLink消息,接收后处理。接收并回应(发送回应包如COMMAND_ACK消息)。
在这里插入图片描述
从串口buffer中读取字节并将每个字节decode成MavLink消息:

mavlink_frame_char_buffer(channel_buffer(), channel_status(), c, &msg, &status) 

处理该MavLink消息(及时处理):

packetReceived(status, msg);
http://www.lryc.cn/news/215711.html

相关文章:

  • C++引用概述
  • 精准努力,提升自己的核心竞争力——中国人民大学与加拿大女王大学金融硕士
  • string【C++】
  • 【Python爬虫】selenium4新版本使用指南
  • CCF_A 计算机视觉顶会CVPR2024投稿指南以及论文模板
  • 什么是鉴权?一篇文章带你了解postman的多种方式
  • go 语言介绍
  • 查询平均提速 700%,奇安信基于 Apache Doris 升级日志安全分析系统
  • Linux越学越头疼,我要怎么办?
  • 使用Fiddler进行Mock测试
  • js字符串支持多个分隔符分割
  • ajax-axios发送 get请求 或者 发送post请求带有请求体参数
  • C++ 单例模式
  • apache seatunnel支持hive jdbc
  • 【Git企业开发】第四节.Git的分支管理策略和bug分支
  • 玩转硬件之Micro:bit的玩法(四)——声控灯
  • STM32-创建项目流程
  • 软件测试 —— 移动端测试
  • PCL 计算一个平面与一个三角形的交线
  • Redis 应用问题
  • Java 谈谈你对OOM的认识
  • JavaScript中BOM与DOM
  • Nginx域名重定向(如何访问的域名和实际的数据请求路径不同,可解决前端跨域)
  • 2023年11月2日历史上的今天大事件早读
  • 红帽Redhat--Ansible实战1
  • 213. 打家劫舍 II
  • Spring 与 Spring Boot
  • Flutter 04 按钮Button和事件处理、弹框Dialog、Toast
  • thinkphp6多用用模式下缩短路由隐藏index应用名
  • AM@二阶常系数非齐次线性微分方程@待定系数法可解决的经典类型1