本帖最后由 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)容易导致无人机因为到达目标点后速度太大,然后在通往下一个目标点的路途上转圈,最终导致更长的飞行时间。路径对比图如下:
至此我就没有一个更好的办法解决飞行缓慢的问题了,请问有什么办法让无人机既能在设置目标点距离在0.5m如此小的范围内飞行的快一些,又能不做到因为到达后残留速度过快而过冲的办法吗?
eason已获得悬赏 3 阿木币最佳答案
https://mp.weixin.qq.com/s/y0VKSRMEnAW1j-e-FQcCWA
可以参考这个文章,相信对你能够提供解决思路
|