首页 文章

OnboardSDK:任务管理和HomePoint初始化

提问于
浏览
1

我正在使用Matrice 210并使用OSDK上传任务 . 但如果没有初始化飞机的HomePoint,OSDK将不允许上传 .

如果仅打开无人机,我得到错误“WAYPOINT_MISSION_POINTS_TOO_FAR”,我必须打开RC并连接DJI GO应用程序以创建HomePoint .

如果我理解正确,任务管理员只有在无人机具有强大的GPS信号时才接受任务,但该文件没有说明HomePoint的初始化 . 我尝试在SDK中找到一个函数来告诉无人机将它当前的GPS作为HomePoint,但代码中没有这样的东西可用 . 我错过了什么吗?

Update: 以下是我设置任务管理器的方法:

void setWaypointInitDefaults(WayPointInitSettings* fdata)
{
   fdata->maxVelocity = 10;
   fdata->idleVelocity = 5;
   fdata->finishAction = 0;
   fdata->executiveTimes = 1;
   fdata->yawMode = 0;
   fdata->traceMode = 0;
   fdata->RCLostAction = 1;
   fdata->gimbalPitch = 0;
   fdata->latitude = 0;
   fdata->longitude = 0;
   fdata->altitude = 0;
}
...
bool InitWaypointMission(Vehicle* vehicle, int numberWaypoints, double maxSpeed, double turnSpeed, bool usePointsHeading)
{
   WayPointInitSettings fdata;
   setWaypointInitDefaults(&fdata);
   fdata.indexNumber = numberWaypoints;
   fdata.maxVelocity = maxSpeed;
   fdata.idleVelocity = turnSpeed;
   if ( usePointsHeading )
      fdata.yawMode = 3;

   ACK::ErrorCode initAck = vehicle->missionManager->init(DJI_MISSION_TYPE::WAYPOINT, responseTimeout, &fdata);
   if (ACK::getError(initAck))
   {
        ACK::getErrorCodeMessage(initAck, __func__);
        return false;
   }
   vehicle->missionManager->printInfo();
   return true;
}

1 回答

  • 1

    在DJI无人机上,当无人机能够看到足够的GPS卫星时,Homepoint会自动获得 . 一种可以告诉无人机将其当前位置作为homepoint的方法将无用 - 如果无人机确实可以很好地修复其在GPS坐标中的当前位置,它已经将其设置为homepoint,或者将在接下来的几秒钟内完成 .

    您可能有很多原因导致WAYPOINT_MISSION_POINTS_TOO_FAR错误,但您需要提供更多上下文来帮助我们缩小范围 . 一些有用的报告:

    • 启动无人机后,在尝试上传任务之前,你让它在晴朗的天空中坐了多久?

    • 当您通过MissionManager初始化航点任务时,您是否确保将 RCLostAction 设置为 Keep Going

    • 模拟中的行为是否可重现?

相关问题