1

阿木币

0

精华

8 小时

在线时间

技术大V

Rank: 4

发表于 2022-3-24 17:25:29 6333 浏览 9 回复

[新手上路] p200

潇齐老师您好,打扰您一下,我想问一下关于p200里面控制程序代码的问题,关于pos_controller_pid.h文件里面,通过期望位置或者速度解算出期望的推力那部分,后面有一些限制,比如tilt_max为5,thr_min为0.1,thr_max为0.9这些限制,可以放开吗,这些是根据飞机设定的吗,因为现在我觉得这样的无人机响应速度不够快,不知道是不是这里的原因,还有hover_throttle为0.5那个位置,这些限制是不是也影响了飞机的响应速度?
已获得悬赏 3 阿木币

最佳答案

如tilt_max为5,thr_min为0.1,thr_max为0.9这些限制是可以适当放开的,但是不建议放开 主要目的是保证系统的稳定性和预留一定阈量;就如同汽车设计之初的最大速度都是大于120码的,但是限速要求最大只能跑120码,超 ...

扫一扫浏览分享
回复

使用道具 举报

Better 该用户已被删除
发表于 2022-3-24 18:28:50
提示: 作者被禁止或删除 内容自动屏蔽
回复 点赞

使用道具 举报

3

阿木币

0

精华

9 小时

在线时间

应届白菜

Rank: 1

发表于 2022-3-24 21:09:43
Better 发表于 2022-3-24 18:28
如tilt_max为5,thr_min为0.1,thr_max为0.9这些限制是可以适当放开的,但是不建议放开 主要目的是保证系统 ...

这些最大姿态、最大角速度在程序里有体现吗,我没有看到,我看代码里是将各个方向的推力转换为姿态thrustToAttitude,推力最终是norm()形式发给飞控,这里面没有设定最大姿态和角速度
回复 点赞

使用道具 举报

3

阿木币

0

精华

9 小时

在线时间

应届白菜

Rank: 1

发表于 2022-3-25 07:08:00
Better 发表于 2022-3-24 18:28
如tilt_max为5,thr_min为0.1,thr_max为0.9这些限制是可以适当放开的,但是不建议放开 主要目的是保证系统 ...

我还想问一下,如果我把p200的控制代码中,控制论改为有位置反馈、速度反馈以及加速度前馈,就像P600的控制代码一样,需要有每个电机最大推力的吗,进行加速度转化位推力的计算,为什么p200的控制代码里可以直接从PID的输出直接得到推力,而不用进行加速度到推力的转换
回复 点赞

使用道具 举报

188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2022-3-25 09:44:09
tilt_max为5是可以放开的,但是注意安全。
thr_min为0.1,thr_max为0.9 这个是油门,范围是【0,1】,所以这里不存在放开的问题

然后似乎你不是很理解无人机的动力学模型,建议学一下Promehteus的线上课程
回复 点赞

使用道具 举报

3

阿木币

0

精华

9 小时

在线时间

应届白菜

Rank: 1

发表于 2022-3-25 10:11:59
AmovlabQYP 发表于 2022-3-25 09:44
tilt_max为5是可以放开的,但是注意安全。
thr_min为0.1,thr_max为0.9 这个是油门,范围是【0,1】,所以这 ...

嗯嗯我知道了,谢谢老师!我想问问如果我在p200的controller_PID.h文件里将位置控制改为p600的output = a_ff + K_p * pos_error + K_d * vel_error + K_i * pos_error * dt这样的形式,因为我看这个有位置和速度反馈,我想采用这样的方法,这个算出来就是期望的加速度,p600是往后根据飞机质量解算出推力,然后再通过推力-油门曲线转化为油门,p200也是要这样实现吗,因为我想在p200里实现轨迹追踪
回复 点赞

使用道具 举报

188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2022-3-25 11:17:19
18867156270 发表于 2022-3-25 10:11
嗯嗯我知道了,谢谢老师!我想问问如果我在p200的controller_PID.h文件里将位置控制改为p600的output = a ...

是的,代码是一样的 ,不区分P600和P200。但是因为这块没有经过特别多的实机测试,你测试的时候注意安全
回复 点赞

使用道具 举报

188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2022-3-25 11:18:25
对了,追踪轨迹的话,前提是你能生成可靠的轨迹信息(也就是期望位置和期望速度),这个要你自己解决。
回复 点赞

使用道具 举报

3

阿木币

0

精华

9 小时

在线时间

应届白菜

Rank: 1

发表于 2022-3-26 11:21:44
AmovlabQYP 发表于 2022-3-25 11:17
是的,代码是一样的 ,不区分P600和P200。但是因为这块没有经过特别多的实机测试,你测试的时候注意安全 ...

嗯嗯好的谢谢老师,老师我还想问一下,在p200里的代码里计算推力时没有考虑无人机的质量,所以通过PID直接解算出了归一化的推力,并没有涉及p600中推力和油门曲线以及每个电机最大的推力,我在写p200的代码里,加入速度位置反馈和加速度反馈,可以也不考虑质量吗,将期望的加速度直接输出为期望的推力,因为我现在对p200的油门-推力曲线和每个电机最大的推力限制不太清楚,所以不太敢在实机改变之前的限制
float error_z = pos_sp(2) - pos_drone(2);
float error_vz = vel_sp(2) - vel_drone(2);
thrust_desired_Z = kpz_ball * error_z + kdz_ball * error_vz + acc_z + Hover_throttle;
然后后面的代码就和p200一样,不知道这样的控制方式会不会出现问题,我在p200里试验过,在给定时间内(比如1秒或者2秒)不断给位置速度加速度反馈,无人机没办法响应过来,也就没有办法在某一点达到期望的位置和速度,我想问一下老师如果我想实现,通过规定时间有目标状态的位置和速度,从而规划出一条轨迹,怎么能让无人机快速响应,跟上这条轨迹呢?让无人机可以在某一个具体时刻拥有轨迹规划出来的期望位置和期望速度,怎么提高其响应速度呢
回复 点赞

使用道具 举报

188

阿木币

3

精华

71 小时

在线时间

技术大V

Rank: 4

发表于 2022-3-26 12:57:36
首先,轨迹规划是另外一个维度的问题了,怎么生成轨迹这里不去讲了。

追踪轨迹就是选择合适的参数和控制算法对期望位置/速度/加速度进行追踪。

回复 点赞

使用道具 举报

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

本版积分规则

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