
Ardupilot
moumde
我真的好菜啊
展开
-
Ardupilot姿态控制详解(完结篇)
本文主要是对过去写的一些APM中姿态控制流程及函数博文的汇总。按照之前写的博文以及个人认为的学习顺序,给出APM姿态控制器的学习顺序如下:APM姿态旋转理论基础Ardupilot姿态控制器 PID控制流程(整定后的P控制器)详解APM的开方控制器sqrt_controllerArdupilot前馈及平滑函数input_euler_angle_roll_pitch_yaw解析Ardupilot倾转分离函数thrust_heading_rotation_anglesArdupilot四元数姿态控制原创 2020-11-11 16:28:43 · 5970 阅读 · 2 评论 -
Ardupilot速率控制器rate_controller_run解析
Ardupilot速率控制器rate_controller_run解析PID速率控制器源码解析rate_controller_run()PID运算积分限制update_i()内容补充:函数中陀螺仪数据的获取rate_controller_run()在APM中是作为PID控制器将输入的期望角速率转换计算得到实际的电机控制指令的。下面将以Copter为例进行讲解。所有无人机的PID速率控制器都是在fast_loop()这个以400Hz频率运行的函数中被实时调用的。而update_flight_mode()原创 2020-11-11 11:32:09 · 2549 阅读 · 1 评论 -
Ardupilot四元数姿态控制函数attitude_controller_run_quat解析
Ardupilot四元数姿态控制函数attitude_controller_run_quat解析源码解析细节讲解thrust_heading_rotation_angles()update_ang_vel_target_from_att_error()角度前馈量旋转解释姿态更新部分在开始阅读本文之前,建议可以先看一下前面几篇博文,当然你基础好直接看也是没事的~详解APM的开方控制器sqrt_controllerArdupilot倾转分离函数thrust_heading_rotation_angles原创 2020-11-09 22:37:27 · 2501 阅读 · 3 评论 -
Ardupilot倾转分离函数thrust_heading_rotation_angles
Ardupilot倾转分离函数thrust_heading_rotation_angles什么是轴角分离源码分析一些细节补充效果显示及进一步修改本文主要写一下自己对于APM倾转分离(轴角分离)函数的一些学习笔记及思考。ZING已经很好地分析了APM轴角分离函数,以下是我参考的他的一些博文。[飞控]姿态误差(四)-APM如何计算姿态误差[飞控]倾转分离(一)-APM的倾转分离竟然没有效果?[飞控]倾转分离(补充)-等效旋转矢量(轴角)与旋转矩阵后续分析过程会主要引用来自上面三篇,侵删。什么是轴角原创 2020-11-09 22:12:07 · 1905 阅读 · 0 评论 -
Ardupilot前馈及平滑函数input_euler_angle_roll_pitch_yaw解析
Ardupilot前馈及平滑函数input_euler_angle_roll_pitch_yaw解析源码解析这个函数做了什么部分细节euler_accel_limit()input_shaping_angle()姿态变化率与机体角速度之间的关系本文将以input_euler_angle_roll_pitch_yaw()函数为例,讲解一下APM中的前馈及平滑控制函数,当然其余的类似input_euler_angle_roll_pitch_euler_rate_yaw()等等的函数也是类似的,当学习完这个原创 2020-11-09 22:11:25 · 2594 阅读 · 7 评论 -
详解APM的开方控制器sqrt_controller
前言前面说过,sqrt_controller是对P项进行整定用途的,目的就是让P项的控制响应“软”下来,实际上就是一个经过改进的P控制器。读懂了sqrt_controller,那么你对APM的P控制器就了解得差不多了。仅讨论P控制器,sqrt_controller的作用就是设定一个量linear_dist,以这个量的正负值为分界线划分出一个线性区域范围,在这个范围内表示误差量还很小,遵循Kp*error计算方式输出控制量。超过linear_dist后,表明误差较大,此时不能由着误差单纯按照线性方式乘以原创 2020-11-05 16:59:42 · 4262 阅读 · 3 评论 -
APM姿态旋转理论基础
Ardupilot姿态控制器解析(二)—— 理论基础欧拉角阅读源码的过程中发现对于一些基础理论的掌握还是不够深,因此本篇先把一些理论知识部分汇总一下。本博文会持续更新修改,所有引用均会表明出处。欧拉角借一张已经被用烂了的图简单来说一下欧拉角的一些基本概念:欧拉角是利用3次独立的绕轴旋转运动来确定三维空间中的某一刚体姿态;欧拉角可以绕着固定轴(大地坐标系) 和 运动轴(机体坐标系) 两种类型的轴进行旋转,运动过程对于前者称为外旋,后者称为内旋;对于绕轴的顺序,科学界并没有明确的规定,实原创 2020-11-01 16:46:14 · 4352 阅读 · 2 评论 -
Ardupilot姿态控制器 PID控制流程
APM的控制器主要分为attitude姿态控制器和pos位置控制器。这系列文章主要来讲一下姿态控制器内部的实现。本文主要目的是为了解析APM源码然后方便自己将其实现在自己的水下航行器控制器上的,因此将会以ArduCopter和ArduSub为例进行解析,其他无人机类型也是类似的,也可用作参考。一、PID姿态控制器1.1 Copter姿态控制官方原图在真正开始解析源码之前,可以看一下Ardupilot官方网站上开发者手册对于直升机姿态控制器的描述(虽然官方的文档已经很久没更新了,4.x版本之后的..原创 2020-10-26 16:45:50 · 8143 阅读 · 4 评论 -
Ardupilot PID Controls update
APM v4.x 版本PID控制器更新后的控制流程图。来源地址:Controls update转载 2020-10-24 19:02:58 · 1143 阅读 · 0 评论 -
MAVLINK消息在Ardupilot中的接收和发送过程
MAVLINK消息在Ardupilot中的接收和发送过程SCHED_TASKupdate_receive()update_send()由于现在网上很多的都是APM旧版本的解释,因此把自己的一些学习所得记录下来。截至写博客日期(2020/10/21),本文APM版本为4.0(针对各种车辆的)。SCHED_TASK关于MAVLINK消息在APM中的初始化过程,在之前的博文里面已经写过了:MAVLINK在Ardupilot中的初始化过程。建议先阅读一下,虽然写得不是很完整,但还是能理一下思路的,后面原创 2020-10-21 20:46:19 · 3530 阅读 · 2 评论 -
QGC添加自定义组件和发送自定义MAVLINK消息
QGC添加自定义组件并且发送自定义MAVLINK消息一、添加自定义组件1.1 在飞行界面添加组件1.2 实现组件事件1.3 在MOCK模拟链接中实现验证1.4 验证本文实现版本:QGC:Stable_V4.0;QT:5.12.6。下载和安装方式这边就不再赘述。侵删。一、添加自定义组件1.1 在飞行界面添加组件在QGC开发者文档中说明飞行视图的界面实现在FlightDisplayView.qml文件中在FlightDisplayView.qml文件中添加如下,可以在ToolStrip下原创 2020-10-16 19:29:33 · 5440 阅读 · 1 评论 -
MAVLINK在Ardupilot中的初始化过程
MAVLINK在Ardupilot中的初始化过程前言一、_chan二、init_ardupilot()2.1 SYSID2.2 setup_console()2.3 setup_uarts()2.4 mavlink_delay_cb()本文将以ArduSub为例写一下在APM中MAVLINK是如何实现初始化的,其他车辆类型实现过程是基本一致的,也可当作参考。如有错误请及时告知。前言APM中MAVLINK的传输和控制主要实现在libraries/GCS_MAVLINK以及对应的车辆文件夹原创 2020-10-13 21:32:07 · 1781 阅读 · 2 评论