万事开头难,这是我的第一篇博客。谨以此将所学所悟记录下来,以防遗失,同时欢迎与大家进行技术交流,共同学习,共同进步,玩的开心!
这里的位置控制主要看PX4的mc_pos_control_main.cpp,其中位置控制主要执行函数为MulticopterPositionControl::task_main()。
首先位置控制的数据来源主要有三种:1、手动位置控制;2、offboard控制模式(由其他板载控制器提供控制指令);3、auto控制模式(由设置好的航迹自动计算)。其代码可追溯:
/* select control source */
if (_control_mode.flag_control_manual_enabled) {
/* manual control */
control_manual(dt);
_mode_auto = false;
} else if (_control_mode.flag_control_offboard_enabled) {
/* offboard control */
control_offboard(dt);
_mode_auto = false;
} else {
/* AUTO */
control_auto(dt);
}
PX4的手动位置控制模式,手动打杆时采用速度控制模式,摇杆回中时采用位置控制模式。位置环采用P控制,即单纯比例控制,速度环采用PID控制,速度环的输出转换成期望推力。期望推力同位置、速度环一样都处于NED(北东地)坐