|
发表于 2024-3-26 22:42:19
1579 浏览 2 回复
[新手上路]
位置控制环二次开发相关问题
在promethusV1平台中,位置控制环的二次开发部分,为什么在px4_pos_controller.cpp中声明切换了平台自带的ude控制算法,之后又./compile_control.sh重新编译了控制模块,但是运行 roslaunch prometheus_gazebo sitl_pos_control.launch进行轨迹跟踪时,与默认的pid算法相比没有任何明显区别,从matlab画出的位置误差图上看基本重合,请问我该如何声明切换控制算法并对比轨迹跟踪的效果?
admin已获得悬赏 3 阿木币最佳答案
你好,楼上机器人的回答可能有点偏差,需要在launch调用的yaml文件中将控制环参数修改了,具体请查看这个图片。
位置控制器相关参数请查阅Parameter_for_control.yaml ...
|
扫一扫浏览分享
|
|
|
|
|
|
|
发表于 2024-4-9 11:18:32
在Prometheus V1平台中进行位置控制环的二次开发,并尝试切换控制算法时,如果你发现使用不同算法进行轨迹跟踪时的效果没有明显区别,可能是由以下几个原因导致的:
1. **控制参数未优化:**即使切换了控制算法,如果新算法的控制参数(比如PID参数或自定义控制算法的参数)没有针对当前的应用场景进行优化,其性能可能不会有明显提升。每种控制算法都需要根据无人机的动力学特性和飞行任务特性进行参数调整。
2. **算法切换未生效:**可能是更改的代码没有正确编译或者新编译的模块没有被正确加载。确保使用了`./compile_control.sh`脚本后,相关的模块确实被更新。检查编译日志确保没有出现错误,并且重新编译的控制模块被正确加载到系统中。
3. **控制算法差异不大:**如果你切换的控制算法和原有的PID控制算法在本质上差异不大,或者对于给定的轨迹和飞行条件,两种算法本来就有类似的表现,那么在轨迹跟踪的效果上可能不会有太大区别。比如,在某些条件下,PID控制和某些现代控制算法(比如LQR,MPC等)的性能可能相近。
4. **测试条件未能充分区分算法性能:**可能是测试轨迹或者飞行条件没有充分挑战控制算法的极限,导致不同算法间的性能差异不明显。尝试使用更复杂的轨迹或者在更具挑战性的飞行环境下(比如强风)进行测试,以便能更明显地区分不同算法的性能差异。
为了声明切换控制算法并有效地对比轨迹跟踪效果,你可以尝试以下步骤:
- **确保算法切换代码正确:**再次检查你的代码,确保你已经正确修改了控制算法并且这些更改被正确地应用到了系统中。
- **优化参数:**针对你选择的新控制算法进行参数优化,确保它们是针对你的具体应用场景调整的。
- **详细记录和分析:**在进行轨迹跟踪测试时,详细记录下不同算法的性能指标,包括但不限于轨迹跟踪误差、响应时间、超调量等,使用更细致的分析来区分不同算法的性能。
- **查阅文档和资源:**参考Prometheus项目的官方文档或者社区讨论,看是否有类似的案例或者高级教程指导如何切换和比较不同的控制算法。
如果在以上步骤中遇到具体的编程或者算法问题,具体的代码实现和错误日志会有助于进一步的分析和解答。 |
|
|
|
|
|
|
|
你好,楼上机器人的回答可能有点偏差,需要在launch调用的yaml文件中将控制环参数修改了,具体请查看这个图片。
位置控制器相关参数请查阅Parameter_for_control.yaml |
|
|
|
|
|
|
|