正在上传图片(0/1)

有关控制权的问题分享

 1
手机看帖 4 1697
1、  什么是控制权
控制权就是飞机实际的受控主体,飞机正在被哪个设备控制飞行。这里需要澄清的是,控制权是指飞机飞行的控制权,相机云台的控制不属于控制权的范畴。此外在没有获取控制权的时候也是可以控制飞机起飞降落的,但是没有办法前后左右飞行。
2、  控制权的优先级
正如官网的文档所说,控制权的优先级遥控>MSDK>OSDK。这个优先级的意思是优先级高的可以从优先级低的手中强行夺回控制权。
3、  如何知道飞机的控制权在哪个设备
目前仅发现OSDK有一个TOPIC_CONTROL_DEVICE,通过订阅这个topic可以知道飞机的控制权在哪个设备。具体过程如下:
首先创建一个package,以一定的频率来发送这个数据

  // Package 0: Subscribe to flight status at freq 1 Hz
  int       pkgIndex        = 0;
  int       freq            = 1;
  TopicName topicList1Hz[]  = { TOPIC_CONTROL_DEVICE, TOPIC_STATUS_FLIGHT };
  int       numTopic        = sizeof(topicList1Hz) / sizeof(topicList1Hz[0]);
  bool      enableTimestamp = false;

  bool pkgStatus = vehicle->subscribe->initPackageFromTopicList(
    pkgIndex, numTopic, topicList1Hz, enableTimestamp, freq);
  if (!(pkgStatus))
  {
    return pkgStatus;
  }
  subscribeStatus = vehicle->subscribe->startPackage(pkgIndex, responseTimeout);
  if (ACK::getError(subscribeStatus) != ACK::SUCCESS)
  {
    ACK::getErrorCodeMessage(subscribeStatus, __func__);
    // Cleanup before return
    vehicle->subscribe->removePackage(pkgIndex, responseTimeout);
    return false;

  }

然后,在循环中不断去get这个数据。

control_device= vehicle->subscribe->getValue<TOPIC_CONTROL_DEVICE>();
最后把数据转换成int类型打印出来。
std::cout << "Control Devic = " << (int)controlGK7efkajZiW//7sZaszg4qVHdI0skrUkOJ1jpiaaTAPBzeTgRbeJ9uFaFs1hEv5XsBZxoz6Jvjn2/fAC/9ZzJ02KJzxWtC/50FH1xPBQ2fTK1I3/1t4I9wsICAisTARmiX5l9n+BXrsYHuhnWPApXwAb4ZKAgIDAjxGBN5Dof4zTKIxZQEBAQEBgcQT+H5VxwrndZki9AAAAAElFTkSuQmCC[/img]

4、  有关MSDK的控制权
MSDK没有专门获取控制权的函数。实测发现,调用setVirtualStickModeEnabled方法可以获取和释放控制权。通过MSDK执行航点任务,没有发现控制权的交换。而OSDK执行航点任务,需要先获取控制权。
5、  调用释放控制权的函数,控制权会怎么变更
控制权会回到之前所在的设备。例如,控制权在OSDK,调用MSDK获取控制权,然后释放控制权。此时控制权会回到OSDK。
6、  不建议在高控制权设备控制飞机时,低控制权设备调用获取控制权函数去抢夺控制权。此时控制会变得很不稳定。低控制权设备获取控制权,一定要在高控制权设备没有发送控制命令时进行。
评论
上传
你需要登录之后才能回帖    登录 | 注册
内涵阿哥  Mavic Air认证用户 2020-6-28 3#
很有用, 多谢
djiuser_bjWbzEY   2020-7-2 4#
控制权指的只是控制无人机飞行等操作么? 包括获取数据接口么?  比如MSDK获取无人机视频、gps数据时,会影响遥控器操控无人机么?
楼主   2020-7-3 5#
djiuser_bjWbzEY7-2 21:40
控制权指的只是控制无人机飞行等操作么? 包括获取数据接口么?  比如MSDK获取无人机视频、gps数据时,会影响遥控器操控无人机么?
不影响的
银华   2021-3-29 6#
我现在在做A3的OSDK STM32开发,关于控制权问题,只要打开遥控器开关,开发板中的程序就跑不了,控制权直接被遥控器接管,我在主函数里面通过读取一个遥控器通道的数据进行判断,如rc.mode的值,从而决定调用获得还是释放控制权函数,但是还是遥控器一开就立马夺取了控制权,我的判断不管有,请问这个应该如何加函数?
收藏 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表