20

阿木币

0

精华

9 小时

在线时间

老司机

Rank: 2

发表于 2022-7-8 17:04:35 3707 浏览 5 回复

maros以目标点的方式控PX4无人机飞行速度太慢

本帖最后由 NJMOV 于 2022-7-8 17:09 编辑

我在机载计算机(ubuntu18树莓派上)使用mavros的"mavros/setpoint_position/local" topic发送PoseStamped类型的消息给飞控控制无人机运动,这个类型的消息只能设置无人机的目标位置,并不能设置速度相关的选项。由于任务的需求我需要经常控制无人机向前后左右四个方向之一做0.5m的运动(这是必须的),并且在代码里设置飞行过程中距离目标点0.15m内就视为已到达,但是无人机在如此小距离的范围内运动速度就非常慢,经过测试要经过7-10s的时间才能到达0.5m远的目标点,我希望能够将耗时缩短到1-2s内。

然后我参考了PX4官网的这两篇文章,这两篇文章分别是飞控1.9和1.12版本的,目前我飞控用的1.13版本:
https://docs.px4.io/v1.9.0/en/config_mc/advanced_mc_position_tuning.html#mpc_acc_hor-and-mpc_dec_hor_slow
https://docs.px4.io/v1.12/en/config_mc/mc_jerk_limited_type_trajectory.html

根据文章里阐述的无人机自动控制原理我调整过了以下参数:巡航速度MPC_XY_CRUISE,接收半径NAV_ACC_RAD,加速度MPC_ACC_HOR,加加速度MPC_JERK_AUTO,Distance to velocity gains when close to a waypoint:MPC_XY_TRAJ_P。结果经过测试发现对于无人机的飞行速度影响只有调整加速度MPC_ACC_HOR有用然后就只有调整PID中位置环的P参数可以让无人机飞的快一些,但是可能过冲,但是结合以上方法最佳也就只能将无人机移动0.5m的时间缩短为3-5s

我就想到了另一种方法来加速无人机,就在移动开始的时候将目标点沿着起始点指向目标点的方向设置远一些(距离增大3倍,即距离无人机现在所处现在位置1.5m,并且随着位置的不同以20HZ的频率刷新),这个延长后交给飞控作为运动目标的点我称为导航点,然后再无人机飞行一段时间(我称为加速时间)后将导航点重新设置为和目标点相同。在SITL中测试,设置无人机依次向9个目标点飞行,到达后切换目标点,目标点距离为0.5m,结果发现这样做在加速时间设置的比较短的时候(如0.2s)飞行速度会稍快一点,但是设置的稍微长一些(如0.3s)容易导致无人机因为到达目标点后速度太大,然后在通往下一个目标点的路途上转圈,最终导致更长的飞行时间。路径对比图如下:
image.png

至此我就没有一个更好的办法解决飞行缓慢的问题了,请问有什么办法让无人机既能在设置目标点距离在0.5m如此小的范围内飞行的快一些,又能不做到因为到达后残留速度过快而过冲的办法吗?




eason已获得悬赏 3 阿木币

最佳答案

https://mp.weixin.qq.com/s/y0VKSRMEnAW1j-e-FQcCWA 可以参考这个文章,相信对你能够提供解决思路
image.png

扫一扫浏览分享
回复

使用道具 举报

139

阿木币

0

精华

287 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2022-7-11 08:52:49
用速度控制,积分得到位置,响应速度应该会快些。用速度控制,简单写一个位置控制环路,应该可以....
我不为己,谁人为我,但我只为己,那我又是谁?
回复 点赞 1

使用道具 举报

20

阿木币

0

精华

9 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2022-7-12 19:32:29
amov_msq 发表于 2022-7-11 08:52
用速度控制,积分得到位置,响应速度应该会快些。用速度控制,简单写一个位置控制环路,应该可以.... ...

感谢你提供的思路,我会尝试的。
回复 点赞

使用道具 举报

149

阿木币

1

精华

429 小时

在线时间

技术大V

Rank: 4

发表于 2022-7-13 09:10:30
https://mp.weixin.qq.com/s/y0VKSRMEnAW1j-e-FQcCWA
可以参考这个文章,相信对你能够提供解决思路
回复 点赞

使用道具 举报

20

阿木币

0

精华

9 小时

在线时间

老司机

Rank: 2

 楼主| 发表于 2022-7-18 15:40:24
eason 发表于 2022-7-13 09:10
https://mp.weixin.qq.com/s/y0VKSRMEnAW1j-e-FQcCWA
可以参考这个文章,相信对你能够提供解决思路 ...

十分感谢你的回答!但是,我看完后有了个疑惑:px4是位置-速度-加速度-角度-角速度-推力这样的串级控制,我记得mavros/setpoint_raw/local 话题是如果同时set了位置和速度,那么会根据位置输出一个setpoint速度然后加上之前set的速度作为新的目标速度,以此类推下去。我有点疑惑的是文中同时设置了位置速度和加速度,理论上只用设置一个加速度,无人机将这个加速度追踪的比较好就能完成8字飞行,但是用了这个接口后最后获得的加速度setpoint输出和计算出的正确值应该是相差甚远,所以为什么同时设置位置速度和加速度是正确的做法?
回复 点赞

使用道具 举报

149

阿木币

1

精华

429 小时

在线时间

技术大V

Rank: 4

发表于 2022-7-19 09:27:03
只设置一个加速度控制,这是开环。同时位置速度加速度是闭环控制。
回复 点赞

使用道具 举报

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

本版积分规则

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