Программа на Питоне для мобильного робота TXT
Программа на Питоне для мобильного робота TXT
Добрый день!
Я недавно начал изучать язык программирования Питон (Python). Мне хотелось бы закрепить теоретические знания на практике. У меня уже есть конструктор TXT Набор первооткрывателя. Я построил из него робо-тележку следующей конфигурации:
Выходы:
* Левое колесо - M1
* Правое колесо - M2
Входы:
* Датчик маршрута (128598) левый канал - I1
* Датчик маршрута правый канал - I2
* Кнопка НО - I3
Помогите мне, пожалуйста, разработать управляющую программу на языке Python для следования вдоль черной линии. Возможно ли в принципе использовать Питон на контроллере TXT для решения такой задачи?
Я недавно начал изучать язык программирования Питон (Python). Мне хотелось бы закрепить теоретические знания на практике. У меня уже есть конструктор TXT Набор первооткрывателя. Я построил из него робо-тележку следующей конфигурации:
Выходы:
* Левое колесо - M1
* Правое колесо - M2
Входы:
* Датчик маршрута (128598) левый канал - I1
* Датчик маршрута правый канал - I2
* Кнопка НО - I3
Помогите мне, пожалуйста, разработать управляющую программу на языке Python для следования вдоль черной линии. Возможно ли в принципе использовать Питон на контроллере TXT для решения такой задачи?
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
Привет!
Конечно можно использовать Python для программирования TXT! Это кстати удобный язык программирования, т.к. в нём простой синтаксис.
Но прежде чем пробовать запускать написанные программы, нужно провести некоторую подготовку.
ПОДГОТОВКА К РАБОТЕ
1. Подключаем контроллер TXT к компьютеру и подключаемся по SSH
2. Чтобы программы, написанные на Питоне можно было запускать через экранное меню контроллера надо создать папку с именем "Python" в директории /opt/knobloch. Должно получиться так: /opt/knobloch/Python 3. В папку Python нужно поместить файл "ftTA2py.so". Это необходимо, чтобы запускать Python программы непосредственно на TXT. Файл находится в репозитории ftrobopy на GitHub. Как настроить передачу файлов через браузер, смотрите ответ на форуме
Подготовка завершена! Теперь Python программы можно запускать также, как и программы, созданные в ROBOPro.
Пример программы
Искодный код на языке Python для контроллера TXT, реализующий алгоритм следования по линии:
Конечно можно использовать Python для программирования TXT! Это кстати удобный язык программирования, т.к. в нём простой синтаксис.
Но прежде чем пробовать запускать написанные программы, нужно провести некоторую подготовку.
ПОДГОТОВКА К РАБОТЕ
1. Подключаем контроллер TXT к компьютеру и подключаемся по SSH
2. Чтобы программы, написанные на Питоне можно было запускать через экранное меню контроллера надо создать папку с именем "Python" в директории /opt/knobloch. Должно получиться так: /opt/knobloch/Python 3. В папку Python нужно поместить файл "ftTA2py.so". Это необходимо, чтобы запускать Python программы непосредственно на TXT. Файл находится в репозитории ftrobopy на GitHub. Как настроить передачу файлов через браузер, смотрите ответ на форуме
Подготовка завершена! Теперь Python программы можно запускать также, как и программы, созданные в ROBOPro.
Пример программы
Искодный код на языке Python для контроллера TXT, реализующий алгоритм следования по линии:
Код: Выделить всё
import ftrobopy
import time
# Движение робота по линии
# Подключаемся к контроллеру TXT
# Чтобы программа работала на TXT автономно, конструктору класса ftrobopy должен быть передан параметр use_TransferAreaMode=True
txt = ftrobopy.ftrobopy(use_TransferAreaMode=True)
# Создаём переменные для каждого сигнала
TrailL = txt.trailfollower(1) # Левый датчик маршрута - вход TXT 01
TrailR = txt.trailfollower(2) # Правый датчик маршрута - вход TXT 02
I3 = txt.input(3) # Кнопка - вход TXT 03
MotorL = txt.motor(1) # Левый мотор - выход TXT 01
MotorR = txt.motor(2) # Правый мотор - выход TXT 02
O5 = txt.output(5) # Лампы - выход TXT 05
# Объявляем переменные
run = bool(0) # Запуск
flag = bool(0) # Флаг кнопки
while True:
# Вызываем метод state() для определения состояния кнопки
SW = I3.state()
if SW and flag == 0:
flag = 1
if not SW and flag == 1:
run = not run
flag = 0
# Движение по линии запущено
if run:
O5.setLevel(512)
TLstate = TrailL.state()
TRstate = TrailR.state()
if TLstate and not TRstate:
MotorL.setSpeed(512)
MotorR.setSpeed(0)
if not TLstate and TRstate:
MotorL.setSpeed(0)
MotorR.setSpeed(512)
if TLstate and TRstate:
MotorL.setSpeed(0)
MotorR.setSpeed(0)
if not TLstate and not TRstate:
MotorL.setSpeed(512)
MotorR.setSpeed(512)
# Движение по линии остановлено
else:
txt.stopAll()
time.sleep(0.02)
Re: Программа на Питоне для мобильного робота
Спасибо!
Не могли бы вы рассказать как выполнить первые два пункта или дать ссылку на руководство?
Не могли бы вы рассказать как выполнить первые два пункта или дать ссылку на руководство?
1. Подключаем контроллер TXT к компьютеру и подключаемся по SSH
2. Создаём папку с именем "Python" в директории /opt/knobloch. Должно получиться так: /opt/knobloch/Python
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
1. Чтобы подключиться по SSH, нужно установить клиент удалённого доступа (Update: у Windows 10 есть встроенный клиент SSH). Из бесплатных я рекомендую putty
2. На контроллерe необходимо включить SSH Daemon в настройках Settings -> Security 3. Подключаем контроллер TXT к компьютеру через USB, открываем программу (в данном примере putty) и вводим адрес 192.168.7.2 4. Откроется окно терминала. Далее необходимо ввести логин "ROBOPro" и пароль "ROBOPro" (без кавычек)
5. Затем командой mkdir Python создаём папку с именем "Python". Чтобы проверить путь, переходим в созданную папку командой cd Python и затем вводим команду pwd. В окне терминала отобразится полный путь к папке.
2. На контроллерe необходимо включить SSH Daemon в настройках Settings -> Security 3. Подключаем контроллер TXT к компьютеру через USB, открываем программу (в данном примере putty) и вводим адрес 192.168.7.2 4. Откроется окно терминала. Далее необходимо ввести логин "ROBOPro" и пароль "ROBOPro" (без кавычек)
5. Затем командой mkdir Python создаём папку с именем "Python". Чтобы проверить путь, переходим в созданную папку командой cd Python и затем вводим команду pwd. В окне терминала отобразится полный путь к папке.
Re: Программа на Питоне для мобильного робота
Спасибо, разобрался. Оказывается в Windows 10 после обновления 1709 уже есть встроенный SSH client. Надо нажать "Пуск" и набрать "cmd" - запустится командная строка. Затем в ней надо набрать:
Кстати, чтобы завершить сессию в клиенте SSH надо нажать сочетание клавиш Ctrl+D
Код: Выделить всё
ssh ROBOPro@192.168.8.2
IDKFA!
Re: Программа на Питоне для мобильного робота
Я запустил ваш код и он работает, но у меня есть вопрос - зачему нужна следующая часть?
С переменной run все ясно - она нужна чтобы разрешать или запускать работу алгоритма управления движением тележки. Зачем нужны остальные переменные?
Код: Выделить всё
# Вызываем метод state() для определения состояния кнопки
SW = I3.state()
if SW and flag == 0:
flag = 1
if not SW and flag == 1:
run = not run
flag = 0
# Движение по линии запущено
Последний раз редактировалось Вася М. 20 ноя 2021, 13:32, всего редактировалось 1 раз.
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
Спасибо за информацию о SSH клиенте в Windows 10, буду пользоваться
По поводу работы этой части кода:
Она служит для того, чтобы действие выполнилось однократно (в данном примере смена значения переменной run на противоположное.
Такая конструкция позволяет отслеживать нажатие и отпускание кнопки и реагировать на них однократно.
По поводу работы этой части кода:
Код: Выделить всё
if SW and flag == 0:
flag = 1
if not SW and flag == 1:
run = not run
flag = 0
Такая конструкция позволяет отслеживать нажатие и отпускание кнопки и реагировать на них однократно.
Re: Программа на Питоне для мобильного робота
Правильно ли я понимаю, что для смены значения переменной run надо нажать кнопку и затем отпустить?
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
Спасибо!
У меня еще пара вопросов, если вы не против:
1. Подскажите, пожалуйста, почему в строке:
вы используете логический оператор "and" и оператор сравнения "=="? Вроде бы обе переменные можно отнести к логическому типу и тогда можно использовать более простую конструкцию, использующую только логические опреаторы:
2. Зачем в коде следующая строка?
У меня еще пара вопросов, если вы не против:
1. Подскажите, пожалуйста, почему в строке:
Код: Выделить всё
if SW and flag == 0:
Код: Выделить всё
if SW and not flag:
Код: Выделить всё
time.sleep(0.02)
IDKFA!