匿名无人机飞控代码整理2

这次是开关状态任务Swtich_State_Task(1)
首先,仍然不知道这是啥
然后,开始看程序。。。

switchs.baro_on = 1;

命名带baro,通常是气压的意思,这里是气压开关打开?表示一个状态应该是
然后一个超大的if括号:

if(sens_hd_check.of_ok || sens_hd_check.of_df_ok)
{

of是光流、of_df可能是光流解耦合?如果两个有一个好了,那么进入if的执行程序。

if(sens_hd_check.of_ok)
{
	of_qua_condition = OF_QUALITY;
	of_alt_condition = (u16)OF_ALT;
}
else //sens_hd_check.of_df_ok
{
	of_qua_condition = of_rdf.quality;
	of_alt_condition = Laser_height_cm;
}

of_qua_condition (光流质量)和of_alt_condition(光流高度)是啥,没看懂。。。。
如果of好了,那么把这两个变量赋值,如果of没好,那肯定of_df好了,就赋其他值,没看懂。。

	if(of_qua_condition>50 )
	
	{
		if(of_quality_delay<1000)
		{
			of_quality_delay += dT_ms;
		}
		else
		{
			of_quality_ok = 1;
		}
	}
	else
	{
		of_quality_delay =0;
		of_quality_ok = 0;
	}

如果光流质量大于50,那么等待,1000ms后,认为可用,of_quality_ok 。否则不可用,of_quality_ok =0;

	if(of_alt_condition<600)
	{
		
		of_tof_on_tmp = 1;
		
		if(of_alt_delay<2000)
		{
			of_alt_delay += dT_ms;
			of_alt_ok = 1;
		}
	}
	else
	{
	
		of_tof_on_tmp = 0;
		
		if(of_alt_delay>0)
		{
			of_alt_delay -= dT_ms;
			of_alt_ok = 0;
		}	
	}

如果光流高度小于600cm,认为可用,持续2000ms,具体跟上面有点不一样,不知道为啥,反正就of_alt_ok 有效就完了。。。

	if(flag.flight_mode == LOC_HOLD)
	{		
		if(of_alt_ok && of_quality_ok)
		{
			switchs.of_flow_on = 1;
		}
		else
		{
			switchs.of_flow_on = 0;
		}

	}
	else
	{
		of_tof_on_tmp = 0;
		switchs.of_flow_on = 0;
	}	

如果flag.flight_mode等于loc_hold,也就是位置固定,那么两个都ok,开关switchs.of_flow_on就会打开,如果有不ok的,就不打开。
如果flag.flight_mode不等于loc_hold,即此时不是定位状态,那么全0就完了。。

	switchs.of_tof_on = of_tof_on_tmp;

这个of_tof_是啥模块没看懂。。再说

}
else
{
	switchs.of_flow_on = switchs.of_tof_on = 0;
}

接最开始的大if,如果都不ok,直接置零

if(sens_hd_check.tof_ok)
{
	if(0)//(Laser_height_mm<1900)
	{
		switchs.tof_on = 1;
	}
	else
	{
		switchs.tof_on = 0;
	}
}
else
{
	switchs.tof_on = 0;
}

激光模块,看样子是阉割了。。。

gps也没了,开心

if(uwb_data.online && flag.flight_mode == LOC_HOLD)
{
	switchs.uwb_on = 1;
}
else
{
	switchs.uwb_on = 0;
}

uwb,查了查是定位的,估计用不上。。。

//OPMV
if(opmv.offline==0 && flag.flight_mode == LOC_HOLD)
{
	switchs.opmv_on = 1;
}
else
{
	switchs.opmv_on = 0;
}

openmv,一样,没了。。

总结一下,这段代码应该是通过检测硬件情况来设置硬件开关,如果成功检测到并符合要求,开关打开,否则断开。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值