1.使用固件:apm
2.使用场景:无人机携带静电吸附装置,降落到被吸附物上方,pixhawk输出信号,使静电吸附装置通电产生吸力吸起被吸附物
2.控制思路:定义一个标志变量,这个变量用来决定是否输出信号,初始化为假,当判断到无人机已经位于目标物上方,将无人机降落,并且置为真,同时飞控输出信号
3.固件修改:
(1)对应文件位置:..\ardupilot-master\ArduCopter\Copter.cpp
该文件是apm固件中旋翼无人机的主逻辑所在处,如下图红框所示
首先在该文件内定义变量absorb_flag(吸附标志),如上图蓝框所示
bool absorb_flag = false;
(2)修改哪个函数:void Copter::one_hz_loop()
该函数是飞控以一赫兹频率调用的函数,包含大量逻辑代码
首先加入识别到目标物就自动降落的代码
在其中再增加如下代码
if(prev_control_mode!=Mode::Number::Land&&control_mode==Mode::Number:Land){
absorb_flag=!absorb_flag;
}
这部分是说,如果之前的飞行模式不是降落模式,而目前处于降落模式,就将标志取反。
再加入以下代码用来输出信号,输出的pwm信号是pixhawk上某一输出口的输出电压,这个电压可以驱动静电吸附装置的开关通断