Планирование пути и симуляция АС в Simulink модели uavInflightFailureRecovery
При попытке задать свою собственную траекторию движения и отключить симуляцию АС столкнулся с несколькими проблемами. Про Matlab узнал совсем недавно и начал своё знакомство сразу с этой модели, поэтому прошу употреблять максимально простые термины и простить мою неграмотность в этой теме :)
Я задавал свою собственную траекторию из 42 точек в QGroundControl (почему проект нормально ест только структуры с 42 точками я так и не понял, при другом количестве возникает ошибка, если знаете почему, пожалуйста, объясните). Далее шёл такой блок кода:
homeLocation = [46.09022582503057, 48.30415147039693, 0];
myMission = getUAVMissionStructFromQGCPlan('myMission.plan', homeLocation, 1);
dataDictionary = Simulink.data.dictionary.open('uavPackageDeliveryDataDict.sldd');
designData = getSection(dataDictionary, 'Design Data');
addEntry(designData, 'myMission', myMission);
saveChanges(dataDictionary);
close(dataDictionary);
homeLocation я задавал ту, которая была указана в конце созданного мной файла формата .plan. Далее в разделе uavInflightFailureRecovery/Ground Control Station/Get Flight Mission/noQGC я устанавливал таким же образом свой файл из uavPackageDeliveryDataDict.sldd, как это было сделано с baseMission и oaMission, третьим входом и получал ошибку:
'Input Port 1' of 'MultirotorModel/OBCCommands' expects a bus but receives a nonbus signal from 'Output Port 1' of 'MultirotorModel/Guidance Logic'.
Хотя добавлял соединение типа "шина" (толстая стрелочка с черными точками). Подумал, ладно, не беда — поставлю на первый вход. Заработало, но что-то полетел не совсем по траектории. Поставил еще и на второй вход тот же файл — дрон полетел как попало уже по очень странной траектории. Вот тут я выпал. Соответсвенно вопрос: как мне правильно задать траекторию и как настроить блоки и их взаимосвязь, чтобы все работало корректно (от добавления третьей мисии до просто ее корректной работы) и почему в зависимости от входа разный результат, если миссия и файл одинаковые? Долго пытался найти решение, но так и не нашел. Кстати, подавал выход блока myMission напрямую, не используя блок Variant Source, и траектория все равно менялась в зависимости от заданного значения guidanceType, как будто я ничего в блок-схеме и не менял.
Далее я пытался отключить симуляцию АС на 30 секунде. В пространстве matlab workspace изменил переменную rotor4ThrustGain с 1 на 0. Там же увеличил время faultTime с 30 до 100. Запустил симуляцию — и ничего не изменилось. Выпал во второй раз. Помогите, пожалуйста, понять, что я сделал не так.
Моя цель в данном проекте — получить данные с гироскопа и акселерометра дрона при наличии неисправности разной тяжести на роторе и ее отсутствии для обучения нейронной сети для определения АС и ее "серьёзности". Далее планирую добавить её в саму модель, чтобы она определяла состояние в режиме реального времени. С получением данных и обучением проблем нет. Если есть советы на тему добавления такой нейронки в модель — с удовольствием выслушаю.
Очень желательно давать подробные комментарии и рекомендации :). Всем бобра!
Ответы