我正在使用 ROS_DJI_OSDK 版本 3.7 和 dji matrice M600。直到今天,我还在使用 MissionWaypointTask.msg
here 中定义的 TRACE_POINT 模式来执行自主任务。一切都很好。但我想对 TRACE_COORDINATED 模式做同样的事情,并在航路点之间进行一些阻尼。
问题是即使我将阻尼设置为 0,我也会收到此错误消息:
STATUS/1 @ getErrorCodeMessage, L656: missionWpUploadCallback
STATUS/1 @ getCMDSetMissionMSG, L883: WAYPOINT_MISSION_CHECK_FAILED
[ INFO] [1538563753.039855552]: waypoint mission initialized and uploaded
[ WARN] [1538563753.040152078]: ack.info: set = 3 id = 17
[ WARN] [1538563753.040214866]: ack.data: 231
[ WARN] [1538563753.040261163]: Failed sending waypoint upload command
ack.data等于231表示阻尼检查失败
消息。但无论我如何设置阻尼,结果都保持不变。
我已阅读 here阻尼有一些限制: “实际上我们没有 1/2 距离的限制。但是,我们有一个限制,即航点 A 的阻尼距离加上航点 B 的阻尼距离应小于 A 和 B 之间的距离” 但是当阻尼等于 0 或其他小的值时,这个限制应该没问题。
这里有什么我错过的吗?
这是我对整个 MissionWaypointTask
和每个 WaypointSettings
的默认配置:
waypoint_task.velocity_range = 10;
waypoint_task.idle_velocity = 5;
waypoint_task.action_on_finish = dji_sdk::MissionWaypointTask::FINISH_NO_ACTION;
waypoint_task.mission_exec_times = 1;
waypoint_task.yaw_mode = dji_sdk::MissionWaypointTask::YAW_MODE_AUTO;
waypoint_task.trace_mode = dji_sdk::MissionWaypointTask::TRACE_COORDINATED;
waypoint_task.action_on_rc_lost = dji_sdk::MissionWaypointTask::ACTION_AUTO;
waypoint_task.gimbal_pitch_mode = dji_sdk::MissionWaypointTask::GIMBAL_PITCH_FREE;
waypoint_settings.damping = 0;
waypoint_settings.yaw = 0;
waypoint_settings.gimbalPitch = 0;
waypoint_settings.turnMode = 0;
waypoint_settings.hasAction = 0;
waypoint_settings.actionTimeLimit = 100;
waypoint_settings.actionNumber = 0;
waypoint_settings.actionRepeat = 0;
for (int i = 0; i < 16; ++i) {
waypoint_settings.commandList[i] = 0;
waypoint_settings.commandParameter[i] = 0;
}
最佳答案
好的,我已经弄清楚了。我将整个时间 damping_distance
设置为 0,这是 DJI SDK 不支持的。其他值似乎有效。
关于ros - TRACE_COORDINATED 模式下 DJI_SDK 阻尼检查失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52625711/