Я не уверен, что это лучшее место для этого вопроса, но я думаю, что проблема имеет некоторые отношения к оптимальным алгоритмам планирования и теории очередей, поэтому, надеюсь, все будет хорошо.Алгоритм превентивного планирования для автономного автомобиля
Я собираюсь построить автомобиль RC, чтобы самостоятельно путешествовать по курсам. Идея состоит в том, что она будет просто идти по прямой линии, пока один из ее датчиков приближения не обнаружит стену или другое препятствие, что вызовет прерывание и регулировку руля.
Я узнал немного о алгоритмах планирования RTOS во встроенном системном курсе и упреждающей очереди в сетевом курсе производительности, поэтому мне было интересно, не выиграю ли от применения каких-либо из этих концепций к этой задаче при программировании микроконтроллера, или если я его переутомлю? Основная цель состоит в том, чтобы развить его таким образом, чтобы автомобиль ехал как можно быстрее без столкновения, но я также хотел бы помешать ему стать нервным как вторичная цель.
Итак, я полагаю, что на высоком уровне существует конкретный метод, схема или тип политики планирования для использования прерываний, которые приведут к лучшей производительности для такой системы? Существуют ли какие-либо критические разделы, для которых я должен отключить прерывания? Для справки об аппаратных ограничениях я планирую использовать микроконтроллер, похожий на ардуино, возможно, с тремя ИК-датчиками. Любые советы или предложения приветствуются.
Спасибо за все советы. Мне интересно, как обрабатывать датчики расстояния. Я думал, что датчик присутствия будет прямым аппаратным прерыванием, но датчики расстояния будут обрабатываться, а затем использоваться в качестве программного прерывания. Это неправильно? Я планирую использовать датчики расстояния, но у моего микроконтроллера нет программных прерываний. – Austin
Предполагая, что вы используете Arduino с Atmega328 - у вас есть прерывание ISR (ADC_vect). Если ваша обработка не займет много времени, просто введите ее здесь. Или просто прочитайте значения ADC здесь и обработайте их в основном цикле, как только они прибудут. – mactro