Программа на Питоне для мобильного робота TXT
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
1. Думаю можно и так и так писать, кому как удобнее
2. Хороший вопрос, возможно пауза и не нужна.
Вообще в библиотеке ftrobopy есть функция updateWait(), которая также вызывает time.sleep(). Судя по описанию в документации к библиотеке, функция эта нужна в том случае, если код запускается удалённо с ПК чтобы ожидать успешного завершения цикла обмена данными ПК с контроллером TXT.
2. Хороший вопрос, возможно пауза и не нужна.
Вообще в библиотеке ftrobopy есть функция updateWait(), которая также вызывает time.sleep(). Судя по описанию в документации к библиотеке, функция эта нужна в том случае, если код запускается удалённо с ПК чтобы ожидать успешного завершения цикла обмена данными ПК с контроллером TXT.
Re: Программа на Питоне для мобильного робота
Спасибо!
Не могли бы вы пояснить, как работает алгоритм следования по линии? У меня почему-то робот начинает крутиться на месте сраз после того как я нажал на кнопку. Может быть вы можете пояснить на блок схеме алгортитма?
Не могли бы вы пояснить, как работает алгоритм следования по линии? У меня почему-то робот начинает крутиться на месте сраз после того как я нажал на кнопку. Может быть вы можете пояснить на блок схеме алгортитма?
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
В виде блок-схемы алгоритм следования по линии выглядит так:
Если датчик находится на линии, его состояние - FALSE. В ROBOPro в режиме теста контроллера можно протестировать полярность подключения моторов.
Последний раз редактировалось AntonEngineer 22 ноя 2021, 17:33, всего редактировалось 1 раз.
Re: Программа на Питоне для мобильного робота
Ого! Отличная иллюстрация. Спасибо.
Благодаря комментарию на схеме насчет полярности подключения моторов я нашел ошибку в подключении. Теперь робот идёт по линии уверенно.
Есть ещё один маленький вопрос. На самом нижнем блоке ветвления у вас используется логическая функция, которая выглядит так: Похоже, что это не соответствует логической функции, которая используется в коде:
Наверное, схема логической функции должна выглядеть по другому?
Благодаря комментарию на схеме насчет полярности подключения моторов я нашел ошибку в подключении. Теперь робот идёт по линии уверенно.
Есть ещё один маленький вопрос. На самом нижнем блоке ветвления у вас используется логическая функция, которая выглядит так: Похоже, что это не соответствует логической функции, которая используется в коде:
Код: Выделить всё
if not TLstate and not TRstate:
IDKFA!
-
- Сообщения: 42
- Зарегистрирован: 10 дек 2019, 18:13
Re: Программа на Питоне для мобильного робота
Да, поправил.
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Программа на Питоне для мобильного робота
Вопрос про регистратор-самописец для TXT на Питоне переехал в отдельный топик.
Re: Программа на Питоне для мобильного робота
При запуске программы для мобильного робота выдает. Робот не работает.
$ ls
ftTA2py.so proga.py web-server.py
$ python proga.py
Traceback (most recent call last):
File "proga.py", line 8, in <module>
txt = ftrobopy.ftrobopy(use_TransferAreaMode=True)
File "/usr/lib/python3.8/site-packages/ftrobopy/ftrobopy.py", line 2797, in __ init__
File "/usr/lib/python3.8/site-packages/ftrobopy/ftrobopy.py", line 172, in __i nit__
NameError: name 'ftTA2py' is not defined
$ ls
ftTA2py.so proga.py web-server.py
$ python proga.py
Traceback (most recent call last):
File "proga.py", line 8, in <module>
txt = ftrobopy.ftrobopy(use_TransferAreaMode=True)
File "/usr/lib/python3.8/site-packages/ftrobopy/ftrobopy.py", line 2797, in __ init__
File "/usr/lib/python3.8/site-packages/ftrobopy/ftrobopy.py", line 172, in __i nit__
NameError: name 'ftTA2py' is not defined
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Программа на Питоне для мобильного робота
Попробуем разобраться. Запустите, пожалуйста в папке с проектом команду ls в расширенном режиме:
Код: Выделить всё
ls -al
Re: Программа на Питоне для мобильного робота
не ругай начальника только учусь.
Прога сразу завершает работу. Не включается моторчики при нажатии на кнопку.
Где я ошибаюсь.
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 == 1:
MotorL.setSpeed(512)
MotorR.setSpeed(0)
if SW == 0:
MotorL.setSpeed(0)
MotorR.setSpeed(512)
# Движение по линии остановлено
else:
txt.stopAll()
time.sleep(0.02)
Прога сразу завершает работу. Не включается моторчики при нажатии на кнопку.
Где я ошибаюсь.
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 == 1:
MotorL.setSpeed(512)
MotorR.setSpeed(0)
if SW == 0:
MotorL.setSpeed(0)
MotorR.setSpeed(512)
# Движение по линии остановлено
else:
txt.stopAll()
time.sleep(0.02)
- Mr.Kubikus
- Сотрудник ПАКПАК
- Сообщения: 1020
- Зарегистрирован: 22 окт 2010, 23:57
Re: Программа на Питоне для мобильного робота
В исходном коде все нормально есть ошибка. Единственное, я рекомендую при вставке исходного кода в пост использовать тег "code". Тогда сохранится форматирование - это важно для кода на языке Питон.
Ранее вы писали, что ваша программа завершается с ошибкой "NameError: name 'ftTA2py' is not defined". Это связано с тем, что интерпретатор не может найти модуль ftTA2py. Чтобы понять почему так происходит мне нужен вывод команды ls, выполненной в папке с проектом:
У меня выглядит так:
Ранее вы писали, что ваша программа завершается с ошибкой "NameError: name 'ftTA2py' is not defined". Это связано с тем, что интерпретатор не может найти модуль ftTA2py. Чтобы понять почему так происходит мне нужен вывод команды ls, выполненной в папке с проектом:
Код: Выделить всё
ls -al
Код: Выделить всё
$ ls -al
total 24
drwxr-xr-x 2 ROBOPro ROBOPro 456 Dec 18 15:30 .
drwxr-xr-x 12 ROBOPro ROBOPro 2352 Dec 17 16:56 ..
-rw-r--r-- 1 ROBOPro ROBOPro 129 Dec 18 15:30 filelogger.py
-rw------- 1 ROBOPro ROBOPro 9624 Dec 18 15:30 ftTA2py.so
-rw------- 1 ROBOPro ROBOPro 2037 Dec 18 15:30 line-follower-01.py
-rw-r--r-- 1 ROBOPro ROBOPro 16 Dec 18 15:30 workfile