ROS-mavros-PX4加速度控制

要写的飞控算法本来的输入是roll、pitch以及推进力,由于PX4不支持输入具体大小的推进力,改用三方向加速度(可用旋转矩阵进行变换)进行控制。但是PX4的setpoint_accel实际控制效果很差,github上也有人说它不可用。

解决方案:参考阿木实验室的px4_command,使用attitude输出,个人用的是cascade pid,计算出throttle转换为attitude,项目内其他的几种方法就基本是accel->thurst->throttle->attitude,项目内有这几种量的转换函数。个人试过直接将(单数值)推进力照函数转换为油门,但是失败,可能是没有PID闭环,也可能是没搞懂单方向/三方向thrust的具体含义?

油门控制可以参考:PX4的控制分配

 

还有是试过给setpoint_accel上PID。在若干版本前PX4应该是可以读取加速度的,但是看issue区在18年的时候为了给一个里程计信息让路去掉了必要信息,按contributer说法需要实际加速度就直接用速度差和时间差作比吧()我按这么计算出来的加速度试了下一般输出,结果是一团乱糟(估计是限幅)

你可能感兴趣的:(ROS-mavros-PX4加速度控制)