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

19 августа 2013 г.

Советы и хитрости ЛЕГО

(C) НеПотеряйка

Известно, что среда NXT-G довольно тяжелая и неповоротливая. На медленных компьютерах работа с ней превращается в мучение. С этим ничего нельзя поделать. Существует несколько советов, которые позволят избежать многих досадных неприятностей при работе с данной программой. В этом разделе приведена подборка подсказок и приемов NXT-G, записанных Брайаном Дэвисом. Это не "официальные" советы, а просто коллекция его собственных мыслей и правил использования NXT-G v1.1.

Первое правило NXT-G: не торопите редактор. Когда вставляете блок между уже существующими блоками, Вы можете перетащить его в нужное положение так, что "тень" размером  1x3 клеточки появится в правильном месте... но не отпускайте блок, пока редактор не создаст для него место. По неизвестным причинам, редактор при спешке чаще всего «теряется» и начинает ошибаться с расстановкой блоков, хотя и предполагается, что он запомнил последовательность всех произведенных действий.

Второе правило NXT- G (и всего остального на компьютере): "Сохраняйтесь как можно чаще". Поскольку Вы никогда не знаете, могут ли какие-то внесенные изменения повлиять на то, что корректно работало прежде, или когда редактор перестанет работать вообще. Не сохраняйте рабочие копии под одним и тем же именем, что и основной файл, сохраняйте "новые версии" программ (и My Blocks!), таким образом, Вы всегда сможете вернуться к предыдущей версии.

Третье правило NXT-G: используйте My Blocks. Они позволяют сохранить огромное количество памяти, способствуют хорошему программированию, делают код более читабельным и т.д. Единственный недостаток My Blocks - иногда в редакторе они кажутся "поврежденными", но компилятор все равно будет получать из них отличный код; это плохо выглядит, но хорошо работает. My Blocks поддерживают независимый код для многократного использования лучше, чем большинство текстовых языков.

4) Переключатели выглядят слишком большими в "плоской" форме - избавьтесь от них. Форма «вкладок» более полезна (можно подсоединять/разсоединять связи в виде вкладок, при этом иметь более двух состояний) и более стабильна (возможно, потому что она намного ближе к тому, как NI реализует это в LabVIEW, в то время как "плоский" формат является специальной адаптацией для NXT- G).

4.1) При проводном соединении в рамках снабженной вкладками структуры Switch, соединение хорошо работает в "первом" поле с вкладками (например, "истинное" поле логического Switch), но делает забавные "прямые провода в бесконечность" в других полях. Вы можете соединить объекты на луче последовательности позади Switch, затем выбрать весь объект (провода также) и перетащить его.
 
5) Не используйте переменные там, где каналы данных сделают это за вас. Каждый из нас на основании текстовых языков находит трудным избавиться от привычки использовать переменные, но в некоторых случаях NXT- G обрабатывает значения, передаваемые через канал данных, лучше, чем это делаются при наличии фактических переменных (ограничения: все переменные - общие, длинные имена переменных не отображаются).

6) При связывании блоков между собой с помощью каналов данных в Switches & Loops сначала целиком разверните все блоки, которые вы хотите связывать - сделав это один раз, вам не нужно будет больше тратить на это время (в прошлом подпрограмма " crowbar & pin"). Затем используйте каналы связи так, как было Вами задумано (не просто "соединить две точки"). Щелчок в промежуточной позиции позволит "прикрепить" провод связи к одной точке и отрисовать его к следующему сегменту.
7) Старайтесь избегать использования многозадачных программ. Довольно часто они не нужны, к тому же они замедляют общее выполнение.
Во-вторых, если NXT- G довольно хорошо работает при редактировании первой задачи... то гораздо хуже работает со второй, третьей и т.д. Также если Вы решили разделить какую-то задачу посреди выполнения, то среда будет нормально отрабатывать ее до тех пор, пока Вы не захотите удалить/добавить что-то из задачи, которую вы разделили. Если возможно, избегайте этого вообще.

8) Выводите отладочную информацию на экран. Это сделает вашу жизнь проще. Использование собственных блоков (MyBlocks) для отладки не увеличит объем вашей программы значительно - в скомпилированном виде только одна копия MyBlock хранится в памяти, в остальных же местах программа просто обращается к этой памяти. Вывести текстовую строку на экран в нужной позиции: PrintLine.rbt. Вывести число строк на экран в нужной позиции: PrintNumber.rbt.
Простые Sound блоки, "подающие звуковой сигнал" в различных тонах, - еще один хороший пример отладки.
9) Опция клонирования существующего блока (или ряда блоков) копирует его вместе со всеми внутренними сохраненными настройками. Зажмите Ctrl и перетащите блок или группу блоков. Другими словами, если Вам необходимо дублировать уже существующий на поле программирования блок "Motor B", то Вам не нужно обращаться к панели, чтобы создать новый и переконфигурировать его должным образом, нужно просто использовать "клон-перетаскивание" существующего блока.

10) Если Вы устали от того, что редактор слишком медленно работает, перемещая объекты, что  все значки на карте в нижнем правом углу экрана похожи на единичные пиксели… обратитесь к совету 3 (но прежде, чем сделаете это, снова последуйте правилу 2).

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

12) Для разработки значков My Block Вы можете использовать многократные перекрывающиеся значки, так же как и изменять их размеры. Для удаления же на Mac нужно выбрать значок, который хотите удалить, и нажать fn-delete ("функция удаления"), на PC – только "Delete".

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

14) Операция Undo работает хорошо (вызывается из меню редактирования или с помощью сочетания клавиш), но редактор не хранит достаточно длинную историю изменений. Тем не менее, довольно часто Вы можете попробовать "отменить" последние изменения, которые привели к тому, что Ваша программа стала работать некорректно.

15) Вы не можете подключить связь к Wait (для программы нужно установить условие, которое не было известным во время компиляции) или Switch..., но можно всегда использовать блоки Compare Logic для составления необходимого условия, и установить логический Switch, или подсоединить значение в Loop, которое выполняет некоторую внутреннюю проверку для получения логики, которая управляет Loop. Значение состояния для Loop и Switch по умолчанию должно быть "control on logical", поскольку это помогает избежать многих проблем.
16) Каналы данных можно разветвлять так, чтобы один выход мог вести к нескольким входам: просто начните вести новый "провод" от нужного выхода к соответствующему каналу данных и щелкните мышкой для соединения.
Будьте осторожны при удалении таких разветвляющихся каналов. Если выбрать канал, а потом нажать Delete - удалиться весь канал целиком со всех входов. Довольно трудно восстановить по памяти после этого все соединения, которые удалять не надо было. Если нужно удалить только одно ответвление - выберите соответствующий вход (курсор изменит свой внешний вид) и нажмите на него.
17) Когда никакой блок не выбран, клавиши "1", "2" и "3" обозначают панели, к которым Вы можете перейти. Клавиша "Tab" переключает инструменты.

18) Если возможно, не смешивайте структуру каталогов. NXT- G действительно хорош при поиске объектов (My Blocks, например), которые были перемещены..., но не всегда, и поиск занимает время, особенно когда Вы открываете программу.

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

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

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