33

阿木币

4

精华

32 小时

在线时间

技术大V

Rank: 4

发表于 2019-9-1 17:20:02 4170 浏览 0 回复

[入门教程] 在PX4 v1.9.2替换姿态控制算法方法

本帖最后由 Bingo 于 2019-9-3 19:43 编辑

在PX4 v1.9.2替换姿态控制算法方法

此方法是阿木实验室《基于matlab模型开发》课程的"姿态环PID控制器的设计与仿真"一节中实际应用指导。

目的是在model中写一个与mc_att_control类似的model加入自己的姿态控制算法并替换之

目录

  • 姿态控制算法simlink搭建生成并简单说明

  • PX4 v1.9.2姿态控制接口简单介绍

  • SITL以及HITL简单调试方法

姿态控制算法simlink搭建生成并简单说明

我们设计了一个简单的串级pid控制器,如下图

image

输入信号:飞机的当前姿态角以及当前角速度(state)、期望姿态(reference)、命令(command包括复位和模式选择)

  • 当前姿态包括pitch、roll、yaw、pitch-rate、roll-rate、yaw-rate 单位:rad、rad/s
  • 期望姿态包括pitch、roll、yaw 单位为:rad

输出信号:为归一化的x、y、z的控制信号范围为[-1,1]要和PX4姿态控制输出接口吻合

中间过程就是一些外环,内环控制了,这里就不详解了。

然后我们用simlink中代码生成工具bulid并配置一些必要的参数,就可以生成我们需要的嵌入式C++代码了,接下来就是要在飞控板中实际的验证我们的算法。

PX4 v1.9.2姿态控制接口简单介绍

关于如何在PX4中添加模块,你可以参考官网的例程(hello_sky)。

根据上一节可知我们的控制器至少需要三种接口,分别为当前姿态接口,期望姿态接口以及输出接口。大致这样:

image

其中 当前的控制模式 需要飞机的是否解锁信息为的时判断是否启动控制器和是否reset,还有飞机当前的飞行模式,这里我们主要判断的是飞机是否处在STABILIZED模式,其他的模式控制不在我们的讨论之中。

这里我先介绍上述接口对应的TOPIC:

期望的角度manual_control_setpoint_s

当前的角度以及角速度vehicle_attitude_s

当前的控制模式vehicle_control_mode_s

控制输出actuator_controls_s

注意当飞机处在STABILIZED模式时,遥控器的俯仰、翻滚、油门、偏航通道分别对应manual_control_setpoint_s结构体中的x、y、z、r。 这四个量都是归一化后的数据范围为[-1,1],其中的x、y、z可以直接送给我们的mc_att_linear_pid模型,而偏航r需要转换一下,否则当你控制yaw方向时,飞机yaw方向会随着遥控器的偏航杆回中飞机的yaw也会回到初始位置。

mc_att_control_main.cpp中这个部分的对应的函数是MulticopterAttitudeControl::generate_attitude_setpoint()

主要的功能是把manual_control_setpoint_s结构体中的x、y、z、r,转换成我们需要的期望角度。

下图是源码mc_att_control_main.cppSTABILIZED模式下简单的流程图(只跟踪了stabilized模式)。

image

SITL以及HITL简单调试方法

我们在调试代码的时候主要用到gazebo软件在环仿真,以及gazebo硬件在环仿真。

用到的函数是 PX4_INFO()可以在终端中打印信息,用于调试,

初期可以软件在环仿真,确保程序架构正确,能够正常运行。后期可以gazebo硬件在环仿真加入遥控器在连接PX4飞控实时的查看模型的运动情况

在运行仿真前要把自己的模块加入到sitl 中的defult.cmake如下

image

  • SITL

    终端输入

    make px4_sitl_default gazebo

    然后终端中就会实时打印你在模块中写的PX4_INFO()内容了

    image

  • HITL

    HITL中,查看调试信息PX4_INFO() 需要在qgc地面站中查看,前提是你的PX4已成功连接gazbeo,qgc成功连接gazebo。具体配置可参考官网HITL Simulation.

    key:当你的model处在运行状态,但是PX4_INFO()信息却没有打印出来,你可已重启一下这个model试一下。

    image

    而我在调试中用的方法是在airsim中进行HITL,你可以参考这个Airsim Setting up PX4 Hardware-in-Loop 环境搭建教程(windows)


扫一扫浏览分享
回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表