Программа на Питоне для мобильного робота TXT

Обсуждаем модели и конструкции, построенные своими руками
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Программа на Питоне для мобильного робота TXT

Сообщение Вася М. »

Добрый день!

Я недавно начал изучать язык программирования Питон (Python). Мне хотелось бы закрепить теоретические знания на практике. У меня уже есть конструктор TXT Набор первооткрывателя. Я построил из него робо-тележку следующей конфигурации:

Выходы:
* Левое колесо - M1
* Правое колесо - M2

Входы:
* Датчик маршрута (128598) левый канал - I1
* Датчик маршрута правый канал - I2
* Кнопка НО - I3

Помогите мне, пожалуйста, разработать управляющую программу на языке Python для следования вдоль черной линии. Возможно ли в принципе использовать Питон на контроллере TXT для решения такой задачи?
IDKFA!
AntonEngineer
Сообщения: 42
Зарегистрирован: 10 дек 2019, 18:13

Re: Программа на Питоне для мобильного робота

Сообщение AntonEngineer »

Привет!

Конечно можно использовать Python для программирования TXT! Это кстати удобный язык программирования, т.к. в нём простой синтаксис.
Но прежде чем пробовать запускать написанные программы, нужно провести некоторую подготовку.

ПОДГОТОВКА К РАБОТЕ
1. Подключаем контроллер TXT к компьютеру и подключаемся по SSH
2. Чтобы программы, написанные на Питоне можно было запускать через экранное меню контроллера надо создать папку с именем "Python" в директории /opt/knobloch. Должно получиться так: /opt/knobloch/Python
Python_folder.jpg
Python_folder.jpg (29.55 КБ) 9252 просмотра
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)
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Re: Программа на Питоне для мобильного робота

Сообщение Вася М. »

Спасибо!

Не могли бы вы рассказать как выполнить первые два пункта или дать ссылку на руководство?
1. Подключаем контроллер TXT к компьютеру и подключаемся по SSH
2. Создаём папку с именем "Python" в директории /opt/knobloch. Должно получиться так: /opt/knobloch/Python
IDKFA!
AntonEngineer
Сообщения: 42
Зарегистрирован: 10 дек 2019, 18:13

Re: Программа на Питоне для мобильного робота

Сообщение AntonEngineer »

1. Чтобы подключиться по SSH, нужно установить клиент удалённого доступа (Update: у Windows 10 есть встроенный клиент SSH). Из бесплатных я рекомендую putty
2. На контроллерe необходимо включить SSH Daemon в настройках Settings -> Security
ssh.jpg
ssh.jpg (23.2 КБ) 9243 просмотра
3. Подключаем контроллер TXT к компьютеру через USB, открываем программу (в данном примере putty) и вводим адрес 192.168.7.2
putty.jpg
putty.jpg (66.83 КБ) 9243 просмотра
4. Откроется окно терминала. Далее необходимо ввести логин "ROBOPro" и пароль "ROBOPro" (без кавычек)

5. Затем командой mkdir Python создаём папку с именем "Python". Чтобы проверить путь, переходим в созданную папку командой cd Python и затем вводим команду pwd. В окне терминала отобразится полный путь к папке.
terminal.jpg
terminal.jpg (20.68 КБ) 9243 просмотра
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Re: Программа на Питоне для мобильного робота

Сообщение Вася М. »

Спасибо, разобрался. Оказывается в Windows 10 после обновления 1709 уже есть встроенный SSH client. Надо нажать "Пуск" и набрать "cmd" - запустится командная строка. Затем в ней надо набрать:

Код: Выделить всё

ssh ROBOPro@192.168.8.2 
Кстати, чтобы завершить сессию в клиенте SSH надо нажать сочетание клавиш Ctrl+D
IDKFA!
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Re: Программа на Питоне для мобильного робота

Сообщение Вася М. »

Я запустил ваш код и он работает, но у меня есть вопрос - зачему нужна следующая часть?

Код: Выделить всё

	# Вызываем метод state() для определения состояния кнопки
	SW = I3.state()
	if SW and flag == 0:
		flag = 1
	if not SW and flag == 1:
		run = not run
		flag = 0
	# Движение по линии запущено
С переменной run все ясно - она нужна чтобы разрешать или запускать работу алгоритма управления движением тележки. Зачем нужны остальные переменные?
Последний раз редактировалось Вася М. 20 ноя 2021, 13:32, всего редактировалось 1 раз.
IDKFA!
AntonEngineer
Сообщения: 42
Зарегистрирован: 10 дек 2019, 18:13

Re: Программа на Питоне для мобильного робота

Сообщение AntonEngineer »

Спасибо за информацию о SSH клиенте в Windows 10, буду пользоваться :D
По поводу работы этой части кода:

Код: Выделить всё

if SW and flag == 0:
	flag = 1
if not SW and flag == 1:
	run = not run
	flag = 0
Она служит для того, чтобы действие выполнилось однократно (в данном примере смена значения переменной run на противоположное.
Такая конструкция позволяет отслеживать нажатие и отпускание кнопки и реагировать на них однократно.
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Re: Программа на Питоне для мобильного робота

Сообщение Вася М. »

Правильно ли я понимаю, что для смены значения переменной run надо нажать кнопку и затем отпустить?
IDKFA!
AntonEngineer
Сообщения: 42
Зарегистрирован: 10 дек 2019, 18:13

Re: Программа на Питоне для мобильного робота

Сообщение AntonEngineer »

Всё верно!
Вася М.
Сообщения: 26
Зарегистрирован: 20 дек 2010, 19:28

Re: Программа на Питоне для мобильного робота

Сообщение Вася М. »

Спасибо!

У меня еще пара вопросов, если вы не против:
1. Подскажите, пожалуйста, почему в строке:

Код: Выделить всё

if SW and flag == 0:
вы используете логический оператор "and" и оператор сравнения "=="? Вроде бы обе переменные можно отнести к логическому типу и тогда можно использовать более простую конструкцию, использующую только логические опреаторы:

Код: Выделить всё

if SW and not flag:
2. Зачем в коде следующая строка?

Код: Выделить всё

time.sleep(0.02)
IDKFA!
Ответить