无人机项目跟踪记录五十四----接收遥控函数

此函数RCDataProcess(void)处理来自2.4G遥控器或手机APP的遥控数据,确保在飞机电池过放自动降落状态下使用中值处理,并通过限制函数保持数据在安全范围内。同时,根据解锁或上锁状态调整无人机的飞行使能状态,涉及惯导检测、电池告警检查等关键飞行控制逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此函数名称为void RCDataProcess(void),作用是接收来自手柄的数据。将接收的数据进行一系列的处理。具体解释如下:

//函数名:RCDataProcess(void)
//输入:无
//描述:处理接收到的遥控数据。
//遥控数据可能来自2.4G遥控器,如函数ReceiveDataFormNRF()
//也可能来自手机APP遥控,如函数CommAppCmdProcess()
//所以该函数防止在CommApp.c文件中有失妥当
//该函数以50Hz频率在main函数中执行
//Porcess the RC data from 2.4G RC or smartphone APP
void RCDataProcess(void)
{
    //飞机电池过放,处于自动降落状态
    //对遥控数据不再响应,使用归中值
    if(LANDING == altCtrlMode) {       //当处于着陆模式时候,自动用中值处理
			  rcData[THROTTLE] = 1500;       //油门中值为1500
			  rcData[YAW] = 1500;            //方位中值为1500
			  rcData[PITCH] = 1500;            //俯仰中值为1500
			  rcData[ROLL] = 1500;          //横滚中值为1500 
    }

    CONSTRAIN(rcData[THROTTLE],1000,2000);    //限制函数将其限制在最大最小值之间
    CONSTRAIN(rcData[YAW],1000,2000);         //同上
    CONSTRAIN(rcData[PITCH],1000,2000);       //同上
    CONSTRAIN(rcData[ROLL],1000,2000);        //同上

    RC_DATA.THROTTLE=rcData[THROTTLE]-1000;//减去最小值,有效值为1000~2000之间
    RC_DATA.YAW= YAW_RATE_MAX * dbScaleLinear((rcData[YAW] - 1500),500,APP_YAW_DB);//对死区进行处理,在手柄移动一个小范围情况下无人机不进行处理,并将其按照比例映射成角度值
    RC_DATA.PITCH= Angle_Max * dbScaleLinear((rcData[PITCH] - 1500),500,APP_PR_DB);//同上
    RC_DATA.ROOL= Angle_Max * dbScaleLinear((rcData[ROLL] - 1500),500,APP_PR_DB);//同上

    switch(armState)
    {
    case REQ_ARM:  //解锁
        if(IMUCheck() && !Battery.alarm) {//检测惯导是不是准备好并且电池无告警
            armState=ARMED;     //arm使能
            FLY_ENABLE=0xA5;  //无人机使能
        } else {
					FLY_ENABLE=0;      //无人机不使能
					armState=DISARMED;  //arm不使能
        }
        break;
    case REQ_DISARM: //上锁
			  FLY_ENABLE=0;   //无人机不使能
        altCtrlMode=MANUAL;		//上锁后加的处理
		    zIntReset=1;   //复位
        thrustZSp=0;   //z轴方向油门的期望值
        thrustZInt=estimateHoverThru();   //获得z轴方向油门的悬停值
		    offLandFlag=0;               //着陆标记为零

		    armState=DISARMED;  //arm不使能
        break;
    default:
        break;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wyssailing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值