Почему после каждой загрузки путевой точки спится 1 с? - PullRequest
0 голосов
/ 19 сентября 2018

Я работаю с DJI Onboard-SDK-ROS и DJI Matrice M600.Когда я загружаю миссию путевой точки, мне приходится долго ждать загрузки, чтобы завершить загрузку (1 с для каждой путевой точки).Проблема в dji_sdk_node_mission_services.cpp в методе missionWpUploadCallback.

Здесь:

for (auto waypoint : request.waypoint_task.mission_waypoint) {
        wpData.latitude = waypoint.latitude * C_PI / 180;
        wpData.longitude = waypoint.longitude * C_PI / 180;
        wpData.altitude = waypoint.altitude;
        wpData.damping = waypoint.damping_distance;
        wpData.yaw = waypoint.target_yaw;
        wpData.gimbalPitch = waypoint.target_gimbal_pitch;
        wpData.turnMode = waypoint.turn_mode;
        wpData.hasAction = waypoint.has_action;
        wpData.actionTimeLimit = waypoint.action_time_limit;
        wpData.actionNumber = 15;
        wpData.actionRepeat = waypoint.waypoint_action.action_repeat;
        wpData.index = i;
        std::copy(waypoint.waypoint_action.command_list.begin(),
                  waypoint.waypoint_action.command_list.end(), wpData.commandList);
        std::copy(waypoint.waypoint_action.command_parameter.begin(),
                  waypoint.waypoint_action.command_parameter.end(),
                  wpData.commandParameter);

        uploadAck = vehicle->missionManager->wpMission->uploadIndexData(
                &wpData, WAIT_TIMEOUT);

        ROS_DEBUG("uploaded waypoint lat: %f lon: %f alt: %f", waypoint.latitude,
                  waypoint.longitude, waypoint.altitude);

        response.cmd_set = (int) uploadAck.ack.info.cmd_set;
        response.cmd_id = (int) uploadAck.ack.info.cmd_id;
        response.ack_data = (unsigned int) uploadAck.ack.data;

        if (ACK::getError(uploadAck.ack)) {
            ACK::getErrorCodeMessage(uploadAck.ack, __func__);
            response.result = false;
        } else {
            response.result = true;
        }

        ROS_INFO("uploaded the %dth waypoint\n", (wpData.index + 1));
        i += 1;
        sleep(1);
    }

Когда я комментировал команду sleep(1) в конце цикла, миссия все еще загружалась и выполнялась (по крайней мере, в симуляции).

Итак, мой вопрос: в чем причина команды sleep(1) и нужна ли она?

Я видел вопрос о том же здесь , но, как я уже сказал вышеМиссия загружается без проблем даже без сна.

...