- 博客(23)
- 收藏
- 关注
原创 Ardusub中添加自定义控制器
将自定义控件变量的最大数量增加 1 ,在文件AC_CustomControl.h中,找不到就全局搜索一下;当前自定义控制器总共有:NONE,EMPTY,PID 共3中,但是从0开始,因此CUSTOMCONTROL_MAX_TYPES默认值为2,现在多增加了一种ADRC,所以要把CUSTOMCONTROL_MAX_TYPES定义为3,如:在AC_CustomControl文件夹下添加,我添加文件夹名为AC_ADRC,AC_ADRC文件下为AC_ADRC.h,AC_ADRC.cpp。
2024-11-07 10:00:57 1241
原创 Gazebo学习笔记(2)--传感器和执行器的使用
这个launch启动Gazebo仿真环境(包含外部的Gazebo世界文件)。解析并加载机器人的URDF模型。在Gazebo中生成机器人并设置其初始位置。启动机器人状态发布器,实时发布机器人关节的状态和坐标变换。这使得机器人模型可以在Gazebo中仿真运行,并通过ROS与其他组件(如控制器、传感器处理器等)进行交互。
2024-10-24 18:21:04 768
原创 Gazebo学习笔记(1)--入门gazebo和URDF
该选项卡显示当前场景中的模型,允许查看和修改模型参数(姿态调整),也可以通过展开“GUI”选项调整视角该选项卡是向仿真场景中添加新对象(模型)的。单击文件夹展开,可以看到模型序列。点击模型可以在场景中部署他该选项卡是组织并显示仿真中可用的不同可视化组。一个图层可包含多个模型。关闭图层可以隐藏该图层的模型(跟画画的图层一个作用)URDF(统一机器人麦哦书格式)是ROS中的重要机器人模型描述格式,ROS提供了URDF文件的c++解析器,可以解析URDF文件中使用XML格式的机器人模型。
2024-10-23 20:49:29 883
原创 ArduSub程序学习(11)--EKF实现逻辑④
UpdateStrapdownEquationsNED() 函数在 NavEKF2_core 类中扮演着关键角色,负责使用惯性测量单元(IMU)提供的增量角度和增量速度数据,更新滤波器的姿态、速度和位置状态。这一过程涉及从机体坐标系到导航坐标系(NED,北、东、地)的转换,并考虑地球旋转的影响
2024-09-30 09:00:00 796
原创 ArduSub程序学习(11)--EKF实现逻辑③
EKF的五大主要步骤状态预测(State Prediction)协方差预测(Covariance Prediction)卡尔曼增益计算(Kalman Gain Calculation)状态更新(State Update)协方差更新(Covariance Update)
2024-09-29 15:36:39 1268
原创 ArduSub程序学习(11)--EKF实现逻辑②
该函数不仅处理 EKF 的预测和状态更新,还管理多个 EKF 核心的选择和切换,以应对不健康或误差较大的核心。截止目前是卡尔曼的初始化,我们总结下:开始进行计算我们的飞控有几组IMU,根据IMU数,就创建多少用于进行EKF2处理的对象,然后根据创建的不同的IMU对象进行传感器初始化。这个函数的核心功能是设置并启动 EKF2 滤波器,包括内存分配、滤波器核心设置以及与惯性测量单元 (IMU) 的关联。:对所有可用的 IMU 核心进行初始化,检查是否每个核心都成功初始化。如果任意一个核心初始化失败,则返回。
2024-09-29 11:29:51 862
原创 ArduSub程序学习(11)--EKF实现逻辑①
更新DCM时,可以利用传感器(如加速度计、磁力计等)的测量值,计算与当前DCM表示的姿态之间的误差,并据此调整陀螺仪读数。通过这种方式,DCM能够起到校正漂移的作用,确保姿态估计的准确性。由于DCM计算效率高,姿态估计在短期内较为准确,EKF可以使用DCM的估计值作为其初始状态,逐渐根据传感器数据和预测模型进行更复杂的修正。更新DCM(方向余弦矩阵,Direction Cosine Matrix)的作用是保持和更新飞行器或自主车辆的姿态信息,使得其在三维空间中的朝向能够持续精确地被估计和修正。
2024-09-26 16:03:01 859
原创 ArduSub程序学习(10)--位置控制和导航
函数是一个航点导航更新函数,用于在航点导航过程中更新目标位置、速度以及控制输出。这个函数的主要功能是更新当前的导航状态,并通过调用相关控制器的方法来实现无人机或机器人的移动控制。这是飞控系统中的一个核心函数,负责根据航点导航任务调整姿态、速度和位置,确保飞行器安全稳定地向目标航点移动。,这段代码实现了 PID 控制算法的核心逻辑,能够根据目标和测量的输入动态调整控制信号。位置控制器的结构是:p位置 ~> pid 速度 ~> 加速度 ~>飞机倾角 的这样一种串联结构,控制器实例调用本身的。
2024-09-25 20:51:04 906
原创 ArduSub程序学习(9)-电机控制
以bluerov2的6推进器为例,比如我现在要前进,通过计算每个电机对于俯仰,横滚,偏航的推力来分配每个电机,通过我保持前进的信号,分配到5电机和6电机不需要其他操作,只需要保持一定的推力保持机体的平衡就行,而3,4电机计算后的推力推动向前,1,2电机反向推力推动机体向前。位于AP_MotorsMulticopter.cpp中,电机控制模块,它负责根据当前飞行状态和传感器数据计算各电机的推力,并将推力转换为具体的电机控制信号(如 PWM 信号),最终输出给电机。
2024-09-23 19:54:48 1212
原创 ArduSub程序学习(7)--自定义参数
在枚举变量后面的参数类中声明上面枚举变种提到的参数。可使用的类型包括AP_Int8,AP_Int16,AP_Float,AP_Int32,AP_Vector3(目前还不支持unsigned integer无符号整型)。新的枚举变量的名称应该保持一致,只是去掉了前缀k_param_。参数类中的枚举变量(enum)的合适位置,像下面代码块最后一行一样添加你自己的新的参数。不要在一个代码块的中间添加新的参数,那样容易造成现存参数对应的信息的改变。的注释信息向使用者说明用户所设置的变量的范围等。
2024-09-23 17:05:50 396
原创 ArduSub程序学习(8)-QGC多机控制
我这里用的的固件是ArduSub的固件,需要修改参数SYSID_THISMAV=1,如果用PX4的固件修改参数为MAV_SYS_ID。故我们根据mavlink的服务器链接和客户端链接,在添加连接中选择udp。断开飞控1,连接飞控2, 修改参数SYSID_THISMAV=2。我这里采用的是通过树莓派4b进行中间通讯,用到的是BlueOS。连接类型选择串口模式,选择对应的端口。在这里也介绍一下UDP的连接方法。打开设备管理器,查看设备端口号。2.断开飞控1,连接飞控2。这里我们参考UDP连接介绍。
2024-09-09 09:50:59 483
原创 ArduSub程序学习(6)--EKF2在MATLAB的仿真
选择LoadNavFilterTestData.m,进行初始化数据,顶部为上传的数据表,这里我选择的是TestLog2.mat,点击运行按钮,工作区就会加载数据。,在这篇文章的基础下使用MATLAB仿真EKF2,关于EKF2的学习大家去看看这篇文章吧,我只是列出MATLAB仿真的步骤。该滤波器旨在与现有的APM AHRS互补滤波器并行运行,首先提供初始对齐的引导,并其次作为检测滤波器偏离的看门狗参考。假定IMU的偏航角和偏航速率是对应角速度和轴向加速度的简单积分,输入到滤波器之前不应用锥形补偿或漂移补偿。
2024-08-29 19:40:03 1167
转载 九天揽月带你玩转EKF纸老虎(3)
目录摘要直升机和固定翼可以使用扩展滤波器(EKF)算法,基于和测量来估计飞机。(即“惯性导航”)相比在于:通过融合所有可用的测量数据,,这使飞机不会受单个传感器故障的影响。。目前稳定版本的。如果飞行控制器有两个(或多个)IMU可用,则两个EKF“内核”(即EKF的两个实例)将并行运行,每个使用不同的IMU。飞控会选取一个传感器数据一致性最好,性能最佳的EKF核心作为单个EKF输出使用,其它核心不起输出作用。第一:ekf初始化。
2024-08-28 20:03:08 66
原创 ArduSub程序学习(5)--printf调试程序中变量的值
我用的是正点原子的串口调试助手ATK XCOM,连接板子后开启串口即可,记住不要选择十六进制显示。我这里以获取_ekf_type的值为例,用printf打印出来,在程序中添加如下代码。(例如,串口设备和波特率)。如果你使用的是 Windows 系统,串口设备可能是。串口打印出来了我们选中的参数_ekf_type值为2,也就是现在用的是EKF2。如果 MAVProxy 启动成功,你会看到类似的启动信息并连接到飞控系统。生成固件,下载板子后通过一下方式查看打印结果。并连接到你的飞控系统。
2024-08-27 19:16:57 341
原创 ArduSub程序学习(4)--添加自定义文件实现RGBled闪烁
自建一个文件夹,通过我们自建的文件夹实现RGBled闪烁,大家能动手实践的一定动手实践,创建自定义文件的过程大同小异,不论什么版本,基本思路都是差不多的。最后直到编译成功,自定义文件就添加成功了,后面就是在添加好的文件中My_AP_Notify.cpp等文件的操作了,和上一篇。接下来对我们所修改的文件里面的类名称进行修改,逐个修改,所有的文件里名称都要修改,我这里是在每个类前面加一个“My_”,,在对应的文件中添加上我们自定义的文件夹,如下所示:我用的是waf编译,所以只更改。
2024-07-31 22:06:06 1397
原创 ArduSub程序学习(3)--控制RGB LED的颜色
今天大家动手实践一下控制RGB LED的颜色,程序改起来比较简单,在更改程序之前先来学习一下有关这部分的程序,今天还是以sub4.1程序为例,网上有更改比较老版本的程序,应该是3.5版本的。关于控制RGB LED的颜色的程序主要在libraries/AP_Notify/RGBLed.cpp。
2024-07-30 19:40:52 1277
原创 ardusub关于gazebo仿真补充
总体电路板方向相对于电路板类型的标准方向。这会旋转 IMU 和指南针读数,使电路板能够以任何 90 度或 45 度角在您的车辆中定向。此选项在下次启动时生效。更换后,您将需要重新调平您的车辆。关于在进行gazebo仿真时qgc地面站中roll反转的现象进行补充说明,在qgc参数设置中选择。参数进行修改roll为180即可实现roll反转的情况。如果出现没有合适的角度进行选择可以使。这三个参数的大小改变roll、pit、和yaw。参数说明:Board Orientation。,然后就可以自主改变。
2024-07-29 11:11:45 360
原创 ArduSub程序学习(1)——ardupilot框架整理
AP_HAL层(硬件抽象层)是我们制作 ArduPilot 的方式可移植到许多不同的平台。有一个顶级AP_HAL libraries/AP_HAL,用于定义代码其余部分的接口 有针对具体的板子特性,然后就有了AP_HAL_XXX 子目录,例如,AP_HAL_AVR 用于基于 AVR 的 开发板,AP_HAL_PX4用于 Pixhawk 开发板和 AP_HAL_Linux 基于 Linux 开发板。工具目录tools directories工具目录是杂项支持目录。
2024-07-26 21:17:59 1291
原创 配置ardusub编译环境,下载ardusub代码
/waf sub以上就是编译成功,即编译环境成功。附加问题解决方案:Ubuntu 64位系统,而上述arm-none-eabi是直接下载的编译好的32位,还需要安装一个东西可以检查arm-none-eabi 4.9是否安装成功,输入以下指令:就是这部分。其中sudo apt-get install lsb-core这一步安装的包,不一定好用,不能用就自己搜一下,安装一个包。
2024-07-24 20:33:18 1552
原创 ardusub使用gazebo仿真
在进行gazebo仿真的时候首先要验证软件在环能否仿真,如果软件在环或者编译环境不会的话去看我上一篇博客。如果在进行多次下载删除gazebo后可能在重新下载的时候会因为出现依赖项导致无法成功下载,这时候可以先一个个下载依赖项然后再进行下载,或者遇到文件冲突的时候可以进行强制覆盖等操作,例如可以使用dpkg命令的选项来实现。这样做将强制dpkg安装软件包,即使存在文件冲突也会覆盖已有文件。请注意,这种操作可能导致系统不稳定或引起其他软件功能的问题,因为它可能破坏了现有软件包的期望行为。
2024-07-24 19:59:26 1694
ekf2在MATLAB仿真
2024-08-29
ArduSub程序学习-自定义RGBled固件
2024-07-31
ardupilot-RGBled控制
2024-07-30
含泪整理如何设置构建环境 (LinuxUbuntu)
2023-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人