1

阿木币

0

精华

8 小时

在线时间

应届白菜

Rank: 1

发表于 2024-3-26 22:42:19 298 浏览 2 回复

[控制算法] 位置控制环二次开发相关问题

在promethusV1平台中,位置控制环的二次开发部分,为什么在px4_pos_controller.cpp中声明切换了平台自带的ude控制算法,之后又./compile_control.sh重新编译了控制模块,但是运行 roslaunch prometheus_gazebo sitl_pos_control.launch进行轨迹跟踪时,与默认的pid算法相比没有任何明显区别,从matlab画出的位置误差图上看基本重合,请问我该如何声明切换控制算法并对比轨迹跟踪的效果?
我知道答案 回答被采纳将会获得3 阿木币 已有2人回答

扫一扫浏览分享
回复

使用道具 举报

4

阿木币

0

精华

1 小时

在线时间

应届白菜

Rank: 1

发表于 2024-4-9 11:18:32
在Prometheus V1平台中进行位置控制环的二次开发,并尝试切换控制算法时,如果你发现使用不同算法进行轨迹跟踪时的效果没有明显区别,可能是由以下几个原因导致的:

1. **控制参数未优化:**即使切换了控制算法,如果新算法的控制参数(比如PID参数或自定义控制算法的参数)没有针对当前的应用场景进行优化,其性能可能不会有明显提升。每种控制算法都需要根据无人机的动力学特性和飞行任务特性进行参数调整。

2. **算法切换未生效:**可能是更改的代码没有正确编译或者新编译的模块没有被正确加载。确保使用了`./compile_control.sh`脚本后,相关的模块确实被更新。检查编译日志确保没有出现错误,并且重新编译的控制模块被正确加载到系统中。

3. **控制算法差异不大:**如果你切换的控制算法和原有的PID控制算法在本质上差异不大,或者对于给定的轨迹和飞行条件,两种算法本来就有类似的表现,那么在轨迹跟踪的效果上可能不会有太大区别。比如,在某些条件下,PID控制和某些现代控制算法(比如LQR,MPC等)的性能可能相近。

4. **测试条件未能充分区分算法性能:**可能是测试轨迹或者飞行条件没有充分挑战控制算法的极限,导致不同算法间的性能差异不明显。尝试使用更复杂的轨迹或者在更具挑战性的飞行环境下(比如强风)进行测试,以便能更明显地区分不同算法的性能差异。

为了声明切换控制算法并有效地对比轨迹跟踪效果,你可以尝试以下步骤:

- **确保算法切换代码正确:**再次检查你的代码,确保你已经正确修改了控制算法并且这些更改被正确地应用到了系统中。
- **优化参数:**针对你选择的新控制算法进行参数优化,确保它们是针对你的具体应用场景调整的。
- **详细记录和分析:**在进行轨迹跟踪测试时,详细记录下不同算法的性能指标,包括但不限于轨迹跟踪误差、响应时间、超调量等,使用更细致的分析来区分不同算法的性能。
- **查阅文档和资源:**参考Prometheus项目的官方文档或者社区讨论,看是否有类似的案例或者高级教程指导如何切换和比较不同的控制算法。

如果在以上步骤中遇到具体的编程或者算法问题,具体的代码实现和错误日志会有助于进一步的分析和解答。
回复 点赞

使用道具 举报

44

阿木币

1

精华

2328 小时

在线时间

管理员

Rank: 9Rank: 9Rank: 9

发表于 2024-4-9 11:25:16
你好,楼上机器人的回答可能有点偏差,需要在launch调用的yaml文件中将控制环参数修改了,具体请查看这个图片。

                               
登录/注册后可看大图
位置控制器相关参数请查阅Parameter_for_control.yaml
回复 点赞

使用道具 举报

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

本版积分规则

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