параллельное программирование для управления роботом - PullRequest
0 голосов
/ 28 февраля 2012

Мне нужно написать программу, которая выполняет 2 задачи одновременно для повышения эффективности и быстрого отклика.Первая задача, например, получить данные о зрении с камеры и обработать их.

Вторая задача - получить обработанные данные из первой задачи и сделать что-либо еще с этими данными (стратегия управления роботом).Однако, пока выполняется задача управления роботом, прием данных с камеры все еще должен работать.

Есть ли решение для такого типа программирования на C ++ / C # ??Я учусь TBB, это правильный выбор?Тем не менее, я читаю такие вещи, как «распараллеливание цикла», иду ли я в правильном направлении ??

Это связано с очень распространенным стилем в программировании управления, где компьютер используется в качестве центрального блока для подключения кэлектронные устройства (датчики) и исполнительные механизмы, и все эти устройства обрабатываются одновременно

Ответы [ 2 ]

2 голосов
/ 28 февраля 2012

Нет, ваш пример параллельного цикла использует параллельное программирование для ускорения результата расчета для одного набора данных.

Что вам нужно, это многозадачность. Вы не упомянули никакой целевой архитектуры. Предполагая, что это будет встроенная система, например, микропроцессор, у вас есть несколько вариантов. Есть встроенные микро-ОС, такие как VXworks и uC-OS, которые позволяют вам делать то, что вы просите. Это позволяет вам настроить несколько «задач», которые выполняются практически одновременно. Конечно, истинный параллелизм невозможен с одним ЦП, но планировщик в этих ОС спроектирован так, чтобы быть очень детерминированным для квазиреальных систем реального времени, как вы описываете.

0 голосов
/ 28 февраля 2012

Звучит хорошо для меня! TBB OK, C # имеет полезные классы потоков и т. Д. Еще одна вещь, если вы не делали ничего подобного раньше - это все о данных, а не код. Если вы спроектируете поток данных правильно, код напишет сам, (хорошо, не совсем:).

...