自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 从SolidWorks导出URDF并进行gazebo仿真

学完之后,在SolidWorks中需要下载一个插件才能导出URDF文件。

2024-10-25 16:16:14 717

原创 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实现逻辑⑤

状态更新和卡尔曼增益的计算我选择一个进行举例。

2024-09-30 16:01:44 1004

原创 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程序学习(2)--ArduSub主程序讲解

在。

2024-07-29 15:18:02 987

原创 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

从SolidWorks导出urdf并进行gazebo仿真

从SolidWorks导出urdf并进行gazebo仿真

2024-10-25

gazebo学习笔记配套资源文件

gazebo学习笔记配套文件,根据发布的文章进行编写的文件,免费供大家阅读。

2024-10-24

qgc源码,供qgc二次开发用

qgc源码,供qgc二次开发用

2024-09-04

linnux环境的qt软件

linnux环境的qt软件

2024-09-04

博途v17运动控制程序

博途V17运动控制程序,大小圆盘的点动,回零,定位,同步等,以及HMI的画面设计

2024-08-30

ekf2在MATLAB仿真

这是为APMPlane实现设计的原型21、22、23和24状态扩展卡尔曼滤波器的文件。 作者:Paul Riseborough 这是一个搭载式惯性导航系统的实现,采用扩展卡尔曼滤波算法,利用以下数据源(根据滤波器变体)提供辅助: 3维速度测量(来自UBlox6或同等GPS) 2维位置(来自UBlox6或同等GPS) 高度测量(可能是GPS、气压高度或其组合) 3轴固定于机身的磁通测量 真空速测量 车辆Z轴对齐的地形激光测距仪测量 地面光流测量(关于车辆X和Y轴的流动角速度) 假定IMU的偏航角和偏航速率是对应角速度和轴向加速度的简单积分,输入到滤波器之前不应用锥形补偿或漂移补偿。 该滤波器估计以下状态: 4个四元数参数 3个北、东、下方向的速度分量 3个北、东、下的位置分量 3个IMU偏航角偏差分量 2个IMU偏航速率偏差(仅在24状态推导中包含,X和Y轴) 1个IMU偏航速率偏差(仅在22和23状态推导中包含,Z轴) 2个北、东风速分量 3个北、东、下的地磁通分量 3个X、Y、Z车身固定位磁通分量(这些与APM使用的罗盘偏移量符号相反) 1个沿下轴的地形偏移量(仅在23状态滤

2024-08-29

ArduSub程序学习-自定义RGBled固件

今天我们还是实现RGBled闪烁,不同的是今天我们在libraries自建一个文件夹,通过我们自建的文件夹实现RGBled闪烁,大家能动手实践的一定动手实践,创建自定义文件的过程大同小异,不论什么版本,基本思路都是差不多的 在路径libraries\AP_Notify下,复制该文件夹,并粘贴在libraries下,根据自己的喜好更换文件夹名称 我这里将其命名为:AP_My_Notify,并将其目录下对本次试验没有用的文件删除,同时将各文件进行重命名,这里在每个文件名称前面加上“My” 接下来对我们所修改的文件里面的类名称进行修改,逐个修改,所有的文件里名称都要修改,我这里是在每个类前面加一个“My_”,

2024-07-31

ardupilot-RGBled控制

今天大家动手实践一下控制RGB LED的颜色,程序改起来比较简单,在更改程序之前先来学习一下有关这部分的程序,今天还是以sub4.1程序为例,网上有更改比较老版本的程序,应该是3.5版本的。关于控制RGB LED的颜色的程序主要在libraries/AP_Notify/RGBLed.cpp。 更改程序为了实现控制RGB灯红蓝绿三种颜色依次点亮,并循环执行。 在这个修改中: 在 RGBLed 类中添加了一个 _current_color 成员变量,用于跟踪当前的颜色索引。 修改了 update 方法,以便根据 _current_color 的值设置RGB灯的颜色,并在每次调用 update 时更新 _current_color,实现红、蓝、绿三色循环。 这样每次 update 方法被调用时,RGB LED 将依次切换红色、绿色和蓝色,并循环执行。你可以根据需要调整 update 方法的调用频率,以控制颜色切换的速度。

2024-07-30

含泪整理如何设置构建环境 (LinuxUbuntu)

本人刚接触ardupilot,本文介绍如何在 Linux/Ubuntu 机器上设置构建环境。耗时三天,每天晚上搞到12:30终于成功搞定,期间遇到各种问题,如vpn节点不稳定,网速超时,版本号不符,重新装载冲突等问题,现在将构建环境的过程分享,希望各位少走弯路。 如果您使用的是基于 debian 的系统(例如 Ubuntu 或 Mint),我们提供了一个脚本来为您完成。从 ardupilot 目录 :

2023-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除