ДО курс по робототехнике

3 апреля 2013 г.

Тонкости и уловки при работе с NXT-G

Известно, что среда NXT-G довольно тяжелая и неповоротливая. На медленных компьютерах работа с ней превращается в мучение. С этим ничего нельзя поделать. Но существует несколько советов, которые позволят избежать многих досадных неприятностей при работе с данной программой. Довольно большая коллекция таких советов была собрана командой teamhassenplug.org, за что им отдельное спасибо.
Здесь предлагается перевод данных советов, с примечаниями и дополнениями.

Совет 1.
Не торопите события. Когда вставляете блок между существующими блоками, вы можете перетащить его в нужную позицию так, что "тень" размером 1x3 клеточки появится в нужном месте... Но не спешите сразу же "отпустить" блок, подождите пока редактор действительно освободит место для него.
По неизвестным причинам, редактор начинает ошибаться с расстановкой блоков наиболее часто тогда, когда вы начинаете торопить его и надеятся, что он запомнит, где все захваты и перемещения блоков были выполнены.


Совет 2.
"Сохраняйтесь чаще, как можно чаще". Вы никогда не знаете, в какой момент вы сможете исковеркать то, что работало раньше, или в какой момент редактор перестанет работать вообще. Если имя программы уже задано, комбинация клавиш Ctrl+S поможет вам сохранять вашу программу довольно часто.
Неплохой мыслью является идея сохранять каждую работающую версию с новым именем, так что вы можете всегда вернуться на предыдущую версию или даже более поздние.
Особенно рекомендация актуальна для подпрограмм (MyBlock). Если одна подпрограмма используется в нескольких программах. Но в ходе работы над новой программой, необходимо внести изменения в подпрограмму - сделайте для нее новую версию. Тогда вы будете уверены, что старые программы будут работать точно так, как и были протестированы.

Совет 3.
Используйте подпрограммы. Они позволяют сохранить огромное количество памяти ( когда похожие конструкции кода используются несколько раз в программе), являются хорошим тоном при программировании, делают код программы более читабельным и т.п.

Совет 4.
Блок Условия очень нагляден, чтобы показать ветвление алгоритма, но отключение "flat" режима было бы
- занимающим меньше места
- более полезным - в этом режиме вы можете передавать данные в ветки условий и из них, а также вы можете иметь больше чем два ветвления.
- более стабильным - возможно, потому что такая форма блока условия ближе к той, что используется в LabVIEW, в то время как "обычная" форма блока, была специально адаптирована для NXT-G


Совет 5.
Не используйте переменные, там где каналы данных (data wires) сделают это за вас. Трудно избавиться от привычки использовать переменные, для людей пришедших из текстовых языков программирования. Но NXT-G обрабатывает значения, передаваемые "вперед" через канал данных, лучше в некоторых случаях, чем та же реализация, но с переменными.
К тому же есть ограничения на использование переменных: все переменные глобальные, длинные имена переменных не отображаются.

Совет 6.
Перед тем, как начать связывать блоки между собой с помощью каналов данных внутри Циклов и блоков Выбора, целиком разверните все блоки, которые вы хотите связывать - сделав это один раз, вам не нужно тратить время, чтобы среда тратила время на перерисовку в будущем. Затем, связывайте блоки, как вами задуманно. Примите во внимание, что если при проведении канала вы нажмете мышкой на промежуточное место на поле, позволит среде не заниматься дополнительными просчетами, как лучше канал данных отрисовать.


Совет 7.
Старайтесь избегать использования многозадачных программ. Довольно часто они не нужны, к тому же они замедляют общее выполнение.
Да, и еще, NXT-G хорошо работает (позволяет редактировать) только с основной задачей (последовательностью) и гораздо хуже со второй, третьей и т.д.
Также если вы решили разделить какую-то задачу посреди выполнения, то среда будет нормально отрабатывать это, до тех пор пока вы не захотите удалить/добавить что-то из задачи, которую вы разделили. Старайтесь не делать этого.


Совет 8.
Выводите отладочную информацию на экран. Это явно сделает вашу жизнь проще, точно не сложнее. Вы можете использовать готовые блоки для этого, просто скопируйте их в [USER_HOME_DIRECTORY]\Documents\LEGO Creations\MINDSTORMS Projects\Profiles\Default\Blocks\My Blocks\. Использование собственных блоков (MyBlocks) для отладки не увеличит объем вашей программы значительно - в скомпилированном виде только одна копия MyBlock храниться в памяти, в остальных же местах программа просто обращается к этой памяти.
Вывести текстовую строку на экран в нужной позиции: PrintLine.rbt

Вывести число строку на экран в нужной позиции: PrintNumber.rbt


Совет 9.
Пользуйтесь возможностью клонирования уже выставленных на форму блоков: зажмите Ctrl и перетащите блок или группу блоков. Все настройки блоков сохраняться. Например, если вы в блоке Move настроили работу только мотора B, после клонирования новый блок будет содержать все те же настройки.

Совет 10.
Copy-and-Paste скорее не работает, чем работает. Используйте клонирование из Совета 9, вместо Copy-and-Paster.

Совет 11.
Если у вас стали появятся незавершенные графические элементы в блоках Цикл или Выбор (например, "балка выполнения" не достигает конца блока Цикл, когда вы используете блок Выбора внутри блока Цикл) - это сигнал того, что редактор, начал "терять вещи из виду".
Один из способов исправить - перетащить блок Выбор целиком на пустое пространство и заменить его новым блоком (не спешите, вспомните про Совет 1). Скорее всего, редактор вновь дорисует "балку выполнения" до конца.
Также иногда удаление последнего элемента в блоке Цикл может привести к тому, что в блоке Цикл не будет отображаться достаточно пустого места для вставки нового блока. К сожалению, чтобы исправить это вы должны удалить старый цикл и создать новый.

Совет 12.
Хотя и авторы оригинальных "NXT-G Tips & Tricks" говорят, что операция Undo работает хорошо, на самом деле, судя по всему, редактор не хранит достаточно длинную историю изменений. Тем не менее, довольно часто вы можете попробовать "откатить" последний изменения, которые привели к тому, что ваша программа стала выглядеть некорректно.

Совет 13.
Каналы данных можно разветвлять так, чтобы один выход мог вести к нескольких входам:

Просто начните вести новый "провод" от нужного выхода к соответствующему каналу данных и щелкните мышкой для соединения.
Будьте осторожны при удалении таких разветвляющихся каналов. Если выбрать канал, а потом нажать Delete - удалиться весь канал целиком со всех входов. Довольно трудно восстановить по памяти после этого все соединения, которые удалять не надо было. Если нужно удалить только одно ответвление - выбирите соответствующий вход (курсор изменит свой внешний вид) и нажмите на него.


Совет 14.
Если необходимо опубликовать где-то всю вашу программу целиком в виде картинки, а не .rbt файла, лучший способ это сделать воспользоваться пунктом печать.

Он предусматривает печать в html файл, при этом сама программа сохраняется в виде .png картинок. Если программа имеет вызовы подпрограмм (созданных через MyBlock) или блоки Выбор со вкладками - их содержимое будет сохранено в отдельные файлы, если Print Hidden Code выбрана.

Все картинки и .html файл будут сохранены в том же месте, где и сама программа:


На этом пока все. Если у вас есть чем дополнить эти советы - пишите.

Комментариев нет:

Отправить комментарий