"Присоединение к подключенным независимым источникам данных" в Microsoft Robotics Developer Studio VPL
Я работаю над изготовленным на заказ роботом, созданным набором сущностей. Я пытаюсь оценить центр тяжести и точку нулевого момента, для которой мне нужен Центр тяжести каждой сущности, а затем применить общее правило для центра тяжести:
(X-координата Центра тяжести тела)*(Общая масса тела)
(X-координата центра тяжести объекта 1)(масса объекта 1) +...+ (X-координата центра тяжести объекта n)(масса объекта n)
(То же самое относится и к другим координатам Центра тяжести), но для этого мне нужны GPS-датчики, уведомляющие о положении центров тяжести каждого объекта и способ включить их все в вышеупомянутые вычисления, выполненные в блоке "Рассчитать". Но проблема в том, что, когда я пытаюсь "соединить" значения из разных экземпляров GPS-датчиков, появляется следующая ошибка: "Соединение подключено к независимым источникам данных. Оно никогда не завершится. Попробуйте изменить ваши соединения". (Приложено изображение диаграммы VPL). https://docs.google.com/file/d/0B2w3mmBOvQsIWHBiR2NvUmxHUnc/edit?usp=sharing Кто-нибудь, пожалуйста, помогите мне.
1 ответ
Эта проблема
Поскольку VPL не может знать ожидаемую скорость передачи данных для двух источников данных, и объединение будет срабатывать только тогда, когда во всех ветвях есть элементы (а затем потребляет элементы), есть две проблемы: одна состоит в том, что она может никогда не запускаться, другая - что данные могут быть не синхронизированы (представьте, что если два источника данных работают с частотой 1 Гц и 2 Гц, первый элемент в каждой ветви объединения будет разноситься во времени)
Решение
На вашей диаграмме используйте источники данных, чтобы установить переменные с их значениями (что, по-видимому, уже сделано)
Используйте один из источников данных (или некоторое другое периодическое уведомление), чтобы запустить вычисление, используя самые последние значения, которые были установлены в состояние. Хотя у вас не всегда есть самые последние данные, они всегда будут довольно свежими
В качестве альтернативы, вы можете поместить слияние, где у вас есть текущее соединение, и использовать уведомление на любом источнике данных для запуска вычисления (опять же, используя самые последние значения, которые были установлены в состояние)