飞控周边
文章平均质量分 63
Chasing中的小强
自信悠然,不争,不端,实事求是
展开
-
PX4 Position_Control RC_Remoter引入
PX4飞控位置环控制中如何引入遥控器的控制量, 本文基于PX4 1.12版本, 相比于之前的版本, 多引入了Flight Task这么一个模块.主要的程序位于mc_pos_control_main.cpp中, 毕竟这个是位置环的主体部分. 每次循环下面的Run()函数voidMulticopterPositionControl::Run(){ if (should_exit()) { _local_pos_sub.unregisterCallback(); exit_and_cleanup原创 2022-05-28 15:57:28 · 719 阅读 · 0 评论 -
Ardupilot动力分配-混控部分分析
首先从copter.cpp中的fast_loop开始进入到motors_output()函数中上述函数中完成的有一些解锁检查, 进入之后如下图所示这个函数中完成由τ\tauτ , thrust到 PWM的输出转换过程首先在output_armed_stabilizing()函数中完成系数因子* τ\tauτ, 具体代码为for (i = 0; i < AP_MOTORS_MAX_NUM_MOTORS; i++) { if (motor_enabled[i]) {原创 2022-03-29 16:01:12 · 847 阅读 · 0 评论 -
ArduPilot-Mocap转换解析
针对小直升机在optitrack移植过程中出现的两个Bug进行解析:1)高度的控制如何实现,在直升机中,存在油门和总螺距的一起联动问题。2)在切换的瞬间,会有一个大的偏差,需要查看log并想办法修复这个问题.问题1) 解答:在loiter模式下, 摇杆的位置对应的是给定的target_climb_rate, 详见代码如下:对应语句为target_climb_rate = get_pilot_desired_climb_rate(channel_throttle->get_control_原创 2021-11-28 20:16:22 · 395 阅读 · 0 评论 -
Matlab-Ubuntu 2018b-Unable to launch the MATLABWindow application的解决方案
问题阐述今天在Ubuntu18.04LTS上运行之前建好的simulink的仿真时,只听见duangduang两声报错声,命令行报错了:simulinkWarning: MATLABWindow application failed to launch. Unable to launch the MATLABWindow application解决方案>> cd(matlabroot)>> ! bin/glnxa64/MATLABWindowbin/glnxa64转载 2021-08-09 12:58:04 · 778 阅读 · 0 评论 -
有趣的四元数,无聊的Rotation,舒心的EulerAngle
常见的姿态的表示有欧拉角,四元数,旋转矩阵三种方式。其中欧拉角的表示是最直观的,说白的就是给人看的。但是欧拉角这个东西有很多问题。1. 万向锁死结2. 定义是有先后旋转顺序的3. 空间的姿态是用旋转表示的,应该用乘法。由此,在工程中,很多时候都是采用四元数的方式进行运算,原因在于:四元数不存在奇异问题,也就是没有万向锁死结的问题四元数采用四个数来表示旋转,相比旋转矩阵,结构更紧凑但是,四元数具有二义性的问题。这里要展开说明一下:首先,定义四元数q=[q0(t)qvT(t)]T∈R×R原创 2021-04-24 17:00:44 · 781 阅读 · 0 评论 -
matlab发送mavlink消息
主要介绍了通过matlab脚本实现UDP发送mavlink消息,为后面matlab计算,与Optitrack联合调试,控制无人机做准备。示例演示效果链接为 matlab通过UDP协议发送mavlink消息demo采用的github仓库为https://github.com/lustosa-leandro/matlab-mavlink添加matlab下.m文件代码为fclose(instrfindall);des = mavlink('127.0.0.1');while 1 sendH原创 2021-04-23 10:34:52 · 4664 阅读 · 3 评论 -
APM,PX4之开源协议
APM代码设计的是GPLv3协议, PX4代码采用的是BSD协议。从上图可以看出,ardupilot的代码是允许别人修改,但是修改之后必须开源且采用相同的许可证书。而PX4代码则是允许别人修改,且diamante修改后可以变成自己的商用而无需征得原作者的同意,是完全可以用来商用的。...原创 2020-11-13 11:00:47 · 835 阅读 · 0 评论 -
C++多线程-实现示例
需求:在ROS中,通过捕捉按键输入完成飞机的模式切换,该方式比较适合多机一键起飞或者其他模式切换操作。简单说明:采用的是C++标准库提供的cin函数,但是这种方式为阻塞等待键盘按下,所以需要采用多线程或者多进程的方式,又采用了的是共享变量(标志位)的想法,故在一个进程中采用多线程即可。下面的示例给出一个简单的实现模板。在ROS中可以直接编译执行,在单C++函数中,需要在g++ -lpthread完成编译。join的作用为主函数运行结束后,子线程仍然可以一直运行,而不是一起结束。#include <原创 2020-10-30 19:14:15 · 1314 阅读 · 0 评论 -
matlab_plot_template
下面的代码给出的是我在matlab作图中常用的一些指令,仅提供用作模板,后面如果有更好的方法再更新%%%parameter%%%linewidth = 1.5;fontsize = 14;%%%attitude and desired attitude%%%figure1 = figure(1);subplot(311);plot(attitude.data(15001:75000,7)-30,attitude.data(15001:75000,4),'b','LineWidth',linewi原创 2020-10-30 10:26:06 · 1223 阅读 · 0 评论 -
catkin_make 与 catkin build
习惯使用了catkin_make, 又接触到了catkin build。起因在vscodevscodevscode中开发ROS工程,好像vscode 发现工程有某个路径不对,然后提示修改了工程配置,手快点击了确认…然后,就发现再也编译不了修改的源文件了(显示在编译,其实并没有…),这种情况之前也遇到过,解决方法是重新建立一个工作空间,catkin_init_workplace 走一遍,无奈ROS工程下没有一个clean,实在不方便。使用方法首先安装sudo apt-get install pyth原创 2020-08-24 22:41:34 · 3764 阅读 · 0 评论 -
几种控制小结
前馈控制:前馈控制是根据扰动或者给定值的变化,按补偿原理来工作的控制系统。其特点是当扰动产生后,被控变量还未变化以前,根据扰动作用的大小进行控制,以补偿扰动作用对被控变量的影响。前馈控制的条件:扰动可测但不可控变化频繁且变化幅度大的扰动扰动对被控变量的影响显著,反馈控制难以及时克服,且过程控制精度要求又十分严格的情况前馈控制的效果:系统增加前馈和未增加前馈时,传递函数的分母是相同的,即两传递函数的极点是相同的。因此,增加前馈控制不会影响系统的稳定性,却可以在不改变原系统参数和结构的情况下,原创 2020-08-24 14:56:29 · 3253 阅读 · 0 评论 -
树莓派4B上安装ROS以及Mavros
单8G主板,TB价格600+原创 2020-07-16 08:30:23 · 3746 阅读 · 5 评论 -
四旋翼飞行器数学模型
最近接触到四旋翼无人机的位置控制方法,就又了解了一下四旋翼飞机的数学模型,现总结如下:位置环 (均定义在惯性坐标系下)P˙e=Ve(1)\dot{P}_{e} = V_{e} \tag{1}P˙e=Ve(1)V˙e=−g+fmRebe3(2)\dot{V}_{e} = -g + \frac f m R_{e} ^{b} e_{3} \tag{2}V˙e=−g+mfRebe3(2)这里需要说明一点,对于方程(2)中RebR_{e}^{b}Reb表示从惯性坐标系到机体坐标系的选择矩阵。原创 2020-07-12 12:39:50 · 4898 阅读 · 0 评论 -
路径规划算法--PRM,从原理到Matlab实现
注: 本篇博客转载自运动规划入门 | 3. 白话PRM,从原理到Matlab实现,老师讲的太好了,我这里转载留存下。上一回,我们讲完了A的工作原理,与Dijkstar相比A确实有一定程度上的优化,但是我们最后也提到了,即便如此A和Dijkstar一样,依旧还是在逐一遍历地图中的每一个栅格,这对于算法的实际使用是十分不友好的,毕竟我们不可能使用一张2020或者100*100的地图来描述实际的物理世界,往往实际上的地图是会远远大于这个尺寸的。在座的小伙伴们一定知道在概率统计中,有一个概念叫做抽样调查,对大量转载 2020-06-24 12:54:24 · 7182 阅读 · 3 评论 -
匿名飞控中的时间分配注解
匿名飞控中仍然采用陀螺仪,加速度计和磁力计修正旋转矩阵偏差,然后反推欧拉角的做法实现姿态解算过程。其飞控中时间分配如下:1000Hz任务:四元数更新,传感器数据的读取。谁让是SPI通信呢…500Hz任务:角速度环控制,以及电机输出;200Hz任务:获得姿态角,以及角度环输出;100Hz任务:遥控器数据处理,飞行模式设置,高度融合,灯光控制;50Hz任务:罗盘处理,程序指令控制,位置速度环控制;20Hz任务:TOF,电池电压,恒温控制2Hz任务:SPI_Flash存储任务。匿名程序中Flas原创 2020-06-22 20:35:26 · 885 阅读 · 0 评论 -
匿名飞控中的低通滤波器解析
写在前面的话:针对匿名飞控进行了一系列的研究,该飞控made in China,硬件电路设计简洁,提供开源PDF文档,软件方面 飞控注释详细,程序逻辑清晰,入门首选。以下是去年针对匿名中经常使用的低通滤波器整理的笔记,公式符号有点多,不在手敲了。附:正点原子的程序中有提到带通的事情,一并也贴出来吧最后,本来应该做个试验,验证下飞控与机架硬链接,通过软件滤波的效果的,但是时间问题,还没有完成。滤波后的时间延迟问题。...原创 2020-06-22 17:08:23 · 651 阅读 · 0 评论 -
四轴&电直中的零碎基础知识点
电机型号:2204-2300kv 电机。其中2204表示定子,单位mm,即定子11mm, 高4mm; 2300kv表示每升高1V电压,转速上升2300r/min, 该电机重27g,最大电流12A,最大升力420g,空载电流0.6A,内阻0.112Ω\OmegaΩ,电机尺寸Φ\PhiΦ 27.9mm*29.7mm(高)20A BLHELI 说明书:处理器 MEGA8A(16MHz);额定电压 2s~4s Lipo; 持续电流20A; 瞬时电流 30A(max5S);PWM 极性-高电平(默认);电调频率.原创 2020-06-22 16:45:08 · 3947 阅读 · 0 评论 -
ROS导航navigation功能包
如上图所示,首先要知道导航中的目标点(Goal), 然后 AMCL 会获取当前坐标点,Path Planner即为路径规划,Move_base 主要解决的是本地优化(Path Planner相当于全局规划,move_base相当于本地规划),在ROS中可以采用Move_base功能包,该功能包包含有全局规划与本地规划。然后Move_base会发布一个速度指令给底层驱动器,完成导航功能。上图显示了,在move_base中的关系。其中蓝色为重点关注的,白色为提供的结点(已经不需要我们来进行修改了)。其中m.原创 2020-06-20 20:45:35 · 5298 阅读 · 0 评论 -
DARPA_FLA项目计划-简介(转载)
作者:路住昌平 转载链接:https://www.jianshu.com/p/875afcaedf8c项目简介DARPA-美国国防高级研究局。FLA-Fast lightweight autonomy 快速轻量级自主飞行计划。该研究计划于2015年启动,致力于发展全新算法,使小型无人机仅凭所搭载的高分辨摄像机、激光雷达、声呐或惯性测量单元,便可在房间等设障环境中自主导航飞行、搜集态势感知数据。该项目在2016年利用商用四旋翼无人机在设置障碍物的机库内进行了验证试验,达到了20米/秒的飞行速度指转载 2020-06-20 18:20:57 · 3045 阅读 · 0 评论 -
四轴轨迹规划-Minimum snap总结
理论知识微分平坦:系统状态可以被平坦空间的状态以及他们的导数所组成的代数组合所表示。系统状态12维,首先可以看出 x,y,z 和 dot_x, dot_y, dot_z, 以及 \phi , \theta, \psi和 \omega_x \omega_y \omega_z之间的导数关系,所以整个系统可以先规划成6个,然后无人机的角度和\dot\dot_x相关,所以,最终可以缩减为4个输入,x,y,z和\psiMinimum jerk: minimize angular velocity, good原创 2020-06-19 13:55:15 · 4838 阅读 · 1 评论 -
路径优化算法--Dijkstra和A*算法及其Matlab实现
写在前面的话:只是对两种路径优化算法进行简单的理解和尝试,为后续使用做准备。如果用到,请再次好好理解原理和Matlab源码。参考博客:用Matlab实现A*算法和Dijkstra算法运动规划入门 | 1. 白话Dijkstra,从原理到Matlab实现运动规划入门 | 2. 白话A*,从原理到Matlab实现直接上干货(参考上述博客可得)首先给出Matlab下的三个脚本文件:TestScript.m%% TestScript for Assignment 1%%% Define a原创 2020-06-09 23:21:45 · 5360 阅读 · 7 评论 -
Linux下cmake编译流程实践--添加外部库(OpenCV)
OpenCV库的安装首先下载最新的OpenCV库,OpenCV-4.3.0.解压后,在子目录下创建mkdir releasecd releasecmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLE原创 2020-06-01 23:37:19 · 1407 阅读 · 1 评论 -
Linux下cmake编译流程实践--添加外部库(Sophus)
注:本文基于视觉SLAM中的历程进行实践操作,在上一篇(Linux下cmake编译流程实践–初学篇)完成了外部库Sophus的引用。Sophus库是Eigen库的扩展,可以完成李代数,李群的操作。首先从gitee上下载代码包 https://gitee.com/gchasing/sophus.git,我这边从https://gitee.com/gchasing/slambook.git下载。后者为高翔视觉SLAM教材对应的所有代码包。下载解压后如下图所示:在Sophus目录下有CMakeLists.t原创 2020-05-31 23:32:36 · 1957 阅读 · 0 评论 -
eigen 中四元数、欧拉角、旋转矩阵、旋转向量 (转载)
文章转载自同名博客:eigen 中四元数、欧拉角、旋转矩阵、旋转向量一、旋转向量1.0 初始化旋转向量:旋转角为alpha,旋转轴为(x,y,z)Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z))1.1 旋转向量转旋转矩阵Eigen::Matrix3d rotation_matrix;rotation_matrix=rotation_vector.matrix();Eigen::Matrix3d rotation_matrix;rot转载 2020-05-31 19:38:38 · 521 阅读 · 0 评论