Для отладки логики управления роботом, как от внешних команд, так и для самостоятельного движения с учетом датчиков, сделал отладочный вариант в Visio.
Здесь можно найти Visio файлик и jpeg с автоматов:
bibi_automata_win
https://cloud.mail.ru/public/r2yS/UXqN1mTG6Это для простых действий по выполнению команд - вперед, вправо, влево, назад, стоп, но с учетом имеющихся на борту датчиков касания, расстояния и одометров.
Вот здесь программа для отладки немного переделанная под Windows, правда она под 8.1 версию, тк на этом отладочном компьютере Windows давно не обновлялся, на нем понаставлено много старого софта который обновление на более новые версию не переживет да и сам компьютер старый.
bibi_prog_win
https://cloud.mail.ru/public/MXpV/n9QTx1jfMИсполняемый модуль под Windows 8.1 собранный на DEV C++ 5.11, проект там же лежит:
BiBi_1.x.exe
Для отладки эта программа выводит логирование состояния и переходов. Параметры во время работы программы можно задавать нажатием на кнопки, описание кнопок есть в main.cpp.
// Клавиша 1 - e1 - Команда Стоп
// Клавиша 2 - e2 - Команда Вперёд
// Клавиша 3 - e3 - Команда Назад
// Клавиша 4 - e4 - Команда Вправо
// Клавиша 5 - e5 - Команда Влево
// Клавиша 6 - e6 - Команда Приостановка
//
// В данной версии будем использовать симбиоз командного и смешанного режимов, в командном режиме нет параметров выполнения команды, нельзя сказать - вперед один метр
// В смешанном варианте можно сказать - вперед один метр
// Переменные Х для полуавтоматического режима (смешанного). В этом режиме должна передаваться команда и параметр, например - вперед один метр
// Переменные X в этом случае сообщают о выполнении команды с выполнением условия указанного в параметре
// В данной версии нет работы в полуавтомататическом режиме тк это отладка логики, есть только реакция на нажитию клавиши для проверки логики работы автоматов
// Команда стоп выполнена "q" такой нет переменной
// Команда вперёд выполнена "w" x32_2_in=1
// Команда вправо выполнена "e" x34_2_in=1
// Команда влево выполнена "r" x35_2_in=1
// Датчика касания правый сработал "t" x20_6_in=1
// Датчика касания левый сработал "y" x20_7_in=1
// Показания радара меньше заданного "u" x20_8_in=1
// Коррекция вперед требуется "i" x32_1_in=1
// Коррекция назад требуется "k" x32_1_in=1 //Была введена эта переменная тк может при коррекции назад нужно отдельная переменная, пока только для красоты: чтобы ее номер был созвучен с номером автомата
// Команда назад выполнена "o" x33_2_in=1
Вывод примера отладочной информации работы логики есть в файле log_example.txt
tic : 2
Старт A20 EVENT = 0
A20 в состоянии 1 запущен с событием e0
A21 в состоянии 1 запущен с событием e0
A21 в состоянии 1 завершил событие e0
A20 в состоянии 1 завершил событие e0
BUTTON 2 PRESSED
tic : 3
Старт A20 EVENT = 2
A20 в состоянии 1 запущен с событием e2
A21 в состоянии 1 запущен с событием e2
A21 перешел из состояния 1 в состояние 2
A32 в состоянии 0 запущен с событием e0
A32 перешел из состояния 0 в состояние 2
z32_2_1 Ф-я Вперёд старт запущена
A32 в состоянии 2 завершил событие e0
z21_2 Ф-я Вперёд запущена
A21 в состоянии 2 завершил событие e2
A20 в состоянии 1 завершил событие e2
Event: 2 Event freeze count: 1
Добавлено спустя 5 минут 11 секунд:Да, забыл сказать еще про гироскоп, там же еще коррекция движения при получении от гироскопа данных о необходимости коррекции маршрута