Перейти к содержимому

Поиск по сайту

Результаты поиска по тегам 'дрон'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Блоги

  • Робот Байт
  • Fingercomp's Playground
  • 1Ridav' - блог
  • Totoro Cookies
  • Блог cyber01
  • IncluderWorld
  • KelLiN' - блог
  • Крутой блог
  • eutomatic blog
  • Programist135 Soft
  • Сайт в сети OpenNet
  • PieLand
  • Очумелые ручки
  • Блог недоблоггера
  • В мире Майнкрафт
  • LaineBlog
  • Квантовый блог
  • Блог qwertyMAN'а
  • some blog name
  • Дача Игоря
  • Путешествия Xytabich'а
  • Рецепты программирования
  • Шкодим по крупному
  • 123
  • mineOS и её удивительный мир
  • Поляна говнокода Bumer 32

Форумы

  • Программирование
    • Программы
    • База знаний
    • Разработчикам
    • Вопросы
  • Игровой раздел
    • Игровые серверы
    • Моды и плагины
    • Жалобы
    • Ивенты и конкурсы
    • Файлы
  • Общение
    • Задать вопрос
    • Обратная связь
    • Беседка
    • Шкатулка
  • Технический раздел
    • Корзина

Категории

  • Форум
  • Лаунчер
  • Игровой сервер

Группы продуктов

Нет результатов для отображения.


Искать результаты в...

Искать результаты, которые...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


ВКонтакте


Gtalk


Facebook


Twitter


Город


Интересы

Найдено 14 результатов

  1. Всем привет! Я написал программу для дистанционного управления дроном (например, с планшета). Плюсы программы: Плюсы При запуске дрона требуется ввести случайный код (т.е. дрона никто не угонит). Можно изменять цвет подсветки дрона, надпись на его экране, скорость дрона. Доступен ввод своих комманд (например, для работы с лассо) Относительно нормальное управление дроном Скрины и мини инструкция для работы с программой Установка прог: Для пульта: pastebin get JTY87AiR control Для дрона: На компьютер скачиваем прошивку для дрона: pastebin get up53MtPM drone Вставляем в системник чистый EEPROM Вводим flash drone eeprom Пихаем в дрона полученную прошивку (eeprom) Включаем дрона!
  2. Del

    Управляемый дрон

    Привет, читатель! Лазая по сайту я наткнулся на вот эту статью. Мне стало интересно и его код был нагло скопирован и немного переработан. Сейчас дрон умеет: Самое очевидное - ДВИГАТЬСЯ НА WASD Собирать предметы с полу/из сундука Выбрасывать предметы из инвентаря Менять текст статуса Получать команды пользователя Из нового: Цеплять и отпускать сущности поводком (требуется апгрейд-лассо) Перемещаться на координаты относительно себя Выбирать слот и выбрасывать из него вещи(Полезно когда всё скидывать не нужно) Установка: Для контроллера(планшета или компьютера): pastebin get 2PNs5NKx control.lua Для дрона: pastebin get jsCZB3k9 drone.lua Вставляем чистую EEPROM flash drone.lua
  3. На форуме было как минимум две программы, которые позволяют летать на свинье, которую несет на поводке дрон. Одна из главных проблем такого метода в приземлении: если свинка ударится о блоки, то умрет от падения. Обычно для того, чтобы предотвратить это, рекомендуют разбивать воду(или другие нейтральные жидкости) в местах приземления. Однако жидкости могут быть не очень удобным решением, ибо замедляют движение игрока. В сборках можно найти более удобные блоки, предотвращающие урон от падения. Например, в версии 1.12 есть блоки слизи. При достаточно точном позиционировании приземления можно использовать минимум один блок слизи на возвышении. В 1.7.10 можно использовать похожие блоки слизи из TinkersConstuct
  4. Bumer_32

    DronePad

    Привет! это снова мой тупой ГЕНИАЛЬНЫЙ, ШИКАРНЫЙ (нет) проект DronePad предыстория : смысл приложения я думаю вы уже поняли (кто не понял можно управлять дроном с геймпада) Сис требования : Установка : Инструкция : Источник кода - stackoverflow (не весь только частично и только python) и я сам который учился по другим программам дронов Вот так Исходники : *Бомбить* Версия 1.0
  5. Всем привет. Представляю вам программу для почти полного управления дроном. Но сначала короткая предыстория: Из возможностей отмечу следующее: Перемещение по сторонам света без улучшения "Навигация"(Спасибо версии OC 1.7.3) Возвращение дрона к управляющему планшету(Компьютеру) Удалённый интерпретатор Привязка дрона к управляющему планшету(Почти полная невозможность угона) Красивый Динамичный интерфейс(Отображение заряда планшета, время, заряд дрона, уровень сигнала) Остальные функции можно найти в программе или в скриншотах. Системные требования: Планшет с OpenOS и видеокартой 2 уровня, беспроводной картой любого уровня и интернет-платой Дрон с беспроводной картой любого уровня (остальное не так важно, это опционально) Установка: На планшет (Для обладателей интернет-карт): wget https://raw.githubusercontent.com/BrightYC/DRC/master/tablet.lua drc.lua Для дрона (Для обладателей интернет карт): wget https://raw.githubusercontent.com/BrightYC/DRC/master/drone.lua drc-flash.lua && flash -q drc-flash.lua drc.lua (Код без минификации: https://raw.githubusercontent.com/BrightYC/DRC/master/non-minify-drone.lua) После вынимаем биос и вставляем в дрона. Первый запуск: Первый запуск сопровождается привязкой дрона к порту(Порт можно увидеть открыв дрона) и адресу беспроводной карты. Из-за этого возможность угнать дрона стремится к нулю, так как для первичной настройки нужно стоять не дальше 5 блоков от дрона. Пишем: drc <порт дрона> После этого дрона невозможно угнать, если рядом никого не было и он не мог подслушать сообщение(Перезагрузка привязку не ломает) Пара скриншотов: Видео: P.S Процент справа от шкалы сигнала обозначает не силу сигнала, а мощность передатчиков на планшете с дроном(поэтому для корректной работы нужны одинаковые карты беспроводной сети) На этом всё, дань уважения дронам выполнена, теперь могу спать спокойно.
  6. Здравствуйте! У дрона есть возможность извлекать и помещать предметы и жидкости между своим инвентарем и внешними хранилищами. А может ли он отдавать энергию?(принимать может - через зарядник)
  7. Chebuya

    Дроноферма

    Я очень обожаю дронов из OC, довольно быстрые и манёвренные(и дешёвые!). Меня смущает насколько автофермы из разных модов дорогие, так что вот решение этой проблемы: В программе есть конфигурация, состоит она из: Размер фермы по X и Z Ожидание в секундах(Это нужно для того, чтобы культура успела вырасти) Ожидание при зарядке(Если дрон разрядился во время полёта) Процент заряда, при котором дрон вернётся домой Версия работы(лкм/пкм) Конфигурация дрона совсем простая, нужен лишь инвентарь, при желании можно запихнуть и 2 инвентаря, солнечную панель. Установка довольно простая: Пишем: wget https://raw.githubusercontent.com/BrightYC/Other/master/dronefarm.lua Делаем чистый EEPROM Вставляем в компьютер Пишем flash -q dronefarm.lua dronefarm.lua Вставляем в дрона ??? Профит! Расстановка фермы: Где жёлтый - граница фермы Красный - место стоянки Длина и ширина может быть любой, главное чтобы зарядки хватило(Если у дрона переполнится инвентарь или разрядится до 20% от общей зарядки единиц - он вернётся на базу)
  8. Многие игроки здесь видели или хотя бы слышали про огромный дронодом, который построил @Asior в былые времена на сервере RoboCraft. С тем чтобы прояснить происхождение этой хаты и оставить о ней заметку в этом клубе, специально для «Новостей подполья» @Fingercomp обратился к создателю постройки и попросил рассказать про неё. Редакция представляет обработанную версию истории. История начинается в начале мая 2016 года, когда запустился сервер RoboCraft, на который сразу же хлынули толпы игроков, хотевшие «поскорее стать топовыми игроками, обладателями гор ресурсов и, конечно же, новых идей и программ». Туда попал и герой нашего рассказа. Развитие было довольно сложным. Поначалу он «хотел, как обычно, отстроить бункер и спокойно, потихоньку наращивать силы», но этому воспрепятствовал случай: система автоматического расселения игроков закинула Asior невесть куда — в середину заражённого биома. Очевидно, что герой этому не обрадовался. Ему потому пришлось бегать в поисках нового места. Конечно, Asior таки организовал себе временное убежище и начал стремительное развитие в игре. Но в чате игроки часто оставляли ссылочки на скриншоты своих невероятно красивых палат с невероятно крутых ракурсов. Он перерыл огромное число чертежей домов, замков, статуй — и решил построить дрона. Дрона из OpenComputers. Ведь сервер специально разрабатывался для этого мода. Asior зашёл в сингл и долго, упорно воздвигал новые варианты постройки и безжалостно крушил старые. Наконец, он определился с тем, как именно должно будет выглядеть его будущее жилище. Оставалось лишь воспроизвести это всё на сервере. Но здесь и возникла основная проблема: как добыть такое огромное количество ресурсов для строительства? Разрешена она была путём не самым чистым: Впрочем, и того, что он раздобыл, сполна хватило на постройку основного корпуса дрона. Это потребовало огромного числа строительных лесов и невероятных акробатических способностей и дополнительно осложнялось тем фактом, что полученные вечные блоки не перемещались из хотбара. Но стиснув зубы и получая подкормку от щедрых игроков Asior таки построил дрона. Потому пришлось придумать, как расширить жилище. Некоторые предлагали соорудить какое-нибудь здание, к которому был бы «привязан» дрон, но, увы, это не вписывалось в местность. Далее настала очередь внутренней отделки: ставились перегородки, размещалось оборудование. А монументальное сооружение, памятник роботу и дрону, стал пользовался большой популярностью, чему создатель не противился: «я был не против, чтобы все желающие посмотрели, как я живу, уточнили какие-то вопросы или помогли чем-нибудь». С тех пор сервер RoboCraft давно закрыт, но память о роботе и дроне жива до сих пор. Редакция присоединяется к пожеланию героя остроить то, что поражало бы воображение и отпечаталось в приятных воспоминаниях десятков игроков. И мы всё так же мы призываем вас оформить подписку на «Новости подполья». Годноты здесь много было, есть — а то ли ещё будет.
  9. Охайо! Полгода назад мы проводили второй этап Unreal Tournament (топик). Это был трейнврек, но весёлый, — этап звался Deathmatch, к слову. Роботы пытались друг друга перестрелять (могли ещё взорвать, но никто так и не заюзал бомбы). Но четверо участников пришло, был треш, угар и много стрельбы. :P Пришло время открывать обсуждение третьего этапа Unreal Tournament: Resurrection — и он будет последним в трилогии. Этап 3: Dominance Feat. drones! Проводить будем зимой (февраль?). На подготовку тогда имеем 5 месяцев. Участники третьего этапа: @Totoro, @FluttyProger. Зареквестить участие можно: в ЛС @Fingercomp или @Totoro; в этой теме; сообщением в IRC (#cc.ru или в ЛС fingercomp или Totoro). Команда UT#3: @Totoro — дизайнер, специалист по связям с правительством, пиарщик и просто очень хороший человек. @Fingercomp — кодер, горе-строитель, админ серва, прожект-менеджер. @Fiender — хостер, админ серва. @LeshaInc — кодер. Правила Правила третьего этапа нереально просты. В общих чертах TL;DR: Захват и удержание карты дронами. Арена для этого этапа представляет собой просторную закрытую карту. Карта поделена на условные секторы. В каждом секторе стоит контрольная точка, представляющая собою микроконтроллер, в котором установлена беспроводная сетевая карта с небольшой силой сигнала. В раунде участвуют четыре игрока. Каждый игрок управляет командой из четырёх дронов. За командой закреплен какой-то цвет. Дроны имеют возможность захватывать контроль над секторами карты. Для этого им необходимо завладеть контрольной точкой сектора. После захвата точки она окрашивается в цвет команды, также как и весь сектор. Победные места распределяются по количеству захваченных точек. То есть по проценту территории, которую команда удерживает за собой на карте. За порядком на арене и игровым процессом, как всегда, следит игровой Сервер. Координаты всех важных объектов на карте обозначаются вейпоинтами. Захват точки Для захвата точки дрон должен подлететь к ней на достаточно близкое расстояние и послать сообщение Серверу. Процесс захвата разбивается на несколько пакетов. На который сервер будет отвечать с некоторым делеем. Это даст шанс другим дронам помешать захвату. Например, если у точки висят два дрона и шлют пакеты с одинаковой скоростью, то захват замирает. Дроны взаимно уничтожают прогресс друг друга. Теперь дело можно сдвинуть с мёртвой точки только подогнав ещё одного дрона на помощь. Зарядка В качестве дополнительной геймплейной фишки, можно добавить станции зарядки — места, где дроны должны будут восполнить запас энергии. Иначе дроны сдохнут, и команда проиграет. Визуализация рейтинга Для того чтобы наблюдать за процессом было интереснее, можно повесить на видном месте динамическую карту локации. На ней отрисовать схему арены. Отобразить контрольные точки и сектора, окрашенные в цвета команд, которые их в данный момент удерживают. Точки, которые подвергаются захвату, отобразить мерцающими. Опционально добавить к этому топ команд по количеству секторов и проценты захвата. Условия конца игры Будет три раунда. Раунд завершается при любом из этих событий: Прошло 15 минут и командами захвачены все точки. Три из четырёх команд успешно сдохли. Прошло 30 минут с начала раунда (это на случай пьяных дронов). Технические детали На сервере ждите из модоверсий: Ядрёные моды MC 1.12.2 SpongeForge 7.what.ever Регулярные моды OpenComputers 1.7.0 OpenGlasses 3.3.3 Computronics 1.6.5 Chisel 0.0.13.23 Плагины Antimony LuckPerms Арена будет доступна заранее, контрольные точки будут находиться в фиксированных позициях. С поиском пути в этот раз париться не нужно: дроны двигаются по прямой. Дроны будут иметь одинаковую конфигурацию. Прошивка на дронах будет скачивать саму программу с сервера, куда, в свою очередь, код будет заливаться с компьютеров участников в их кабинках. To Do Как обычно, перед ивентом нужно основательно поработать над его подготовкой. ✅ Доработать правила. Помогайте, оставляя свои мысли в постах в этом топике. ❎ Собрать игровой сервер. Это означает договориться с хостом, закончить пляски со сборкой и выложить её. ❎ Построить арену. ❎ Написать софтверную часть. ❎ Набрать участников. ❎ Провести игру. Проблемные вопросы Остаются ещё несколько проблемных вопросов, которые нужно будет решить по мере разработки проекта. 1. Какая прошивка будет на дронах? Она не должна ограничиваться тупо скачкой проги с сервера. Нужно написать какие-нибудь дебаг-инструменты (например, рестарт). 2. Какая комплектация у дронов? Нужно основательно продумать её, потому что дроны довольно лимитированы по компонентам. 3. Какие настройки энергии установить? Дроны не должны мочь без подзарядки летать весь раунд, иначе не будет толка в зарядниках, но и вырубаться после минуты полёта — это крайность. Нужно отрегулировать скорость зарядки, чтобы не висеть там всю игру. Все программы должны в среднем есть схожее количество энергии. Q&A В топике задают очень важные вопросы, которые поясняют концепт, но ответ на них бывает трудно встроить в текст так, чтобы было заметно. Поэтому ниже будем писать их вместе с ответами. Могут ли участники самостоятельно контролировать дронов во время игры? Нет. После старта дроны становятся полностью автономными. Мы не собираемся менять это — автономность является ключевой фишкой UT:R. Не исключено, однако, что дронами можно будет управлять в других ивентах и сериях ивентов, которые мы, может быть, будем проводить. Будет ли возможен перезахват сектора? Да, конечно же. В этом и весь интерес и интрига. Команда может дружно спать, а за минуту до финала внезапно вылететь и перезахватить все контрольные точки на карте. Разные чудеса случаются, да. Можно ли захватывать одну точку всей командой? Да, можно. Так процесс пойдёт куда шустрее. Как определять цвет дронов и их наличие для статистики на главном мониторе? Цвет дронов определяем перекличкой в начале игры. Сервер запоминает соответствие цвета к модему, с которого прилетело сообщение. Наличие определяется периодическим пингом дронов. Как будут захватываться секторы арены, конкретно? Мы берём концепцию @eu_tomat. Каждая точка имеет уровень захвата. Если он равен нулю (а при старте игры именно так и будет), точка считается нейтральной. У точки небольшой радиус модема, поэтому дроны должны быть очень близко к ней. Для начала захвата дрон должен поймать сообщение от точки (оно регулярно броадкастится) с кодом и отправить его назад, указав свою команду. За каждое сообщение от команды-захватчика уровень захвата точки увеличивается на единицу, но если точка поймает сообщение от другой команды, то уровень захвата уменьшается на единицу до тех пор, пока она не станет снова нейтральной. Для каждого дрона есть кулдаун. Например, дрон отправил сообщение — новое точка примет только через несколько секунд. Однако дрон может вызвать подкрепление: если несколько дронов одной команды будут отсылать коды, то точка может быть захвачена быстрее. После достижения некоторого уровня захвата точка становится собственностью команды. Дрон может продолжить отправлять коды, чтобы увеличивать уровни сопротивления — прежде чем другая команда сможет разблокировать уровни захвата и перезахватить точку, она должна сначала довести уровни сопротивления до нуля. Как дроны узнают, что другая команда начала захват их точки? Если какой-то дрон разблокирует уровни захвата, сообщение об этом отправится всем дронам команды, у которой точка была в собственности. Однако до того сообщения не посылаются. Чтобы заранее узнать, что вражеский дрон начинает разрушать уровни сопротивления, нужно патрулировать территорию. Как будет защищаться территория арены от вмешательства игроков и дронов? Используем мод Conventional: оборачиваем арену в область, где нельзя кликать, и радуемся. Арену сделаем из дрононепробиваемых блоков — тех, что рукой разбить нельзя. Откуда дронам узнавать информацию о состоянии точки? Сообщение о характеристиках будет периодически (раз в 5 секунд, например) броадкаститься точкой на небольшой радиус. Таким образом, поймать его смогут только те дроны, что будут поблизости. Оно будет содержать: текущую принадлежность точки; код захвата уровни захвата и сопротивления. Обновления Так как бампать один и тот же пост на данном форуме — очень невесёлое занятие (да и никто толком не заметит изменение), в топике мы будем писать дополнения. Ниже нарисован список ссылок на обновления. Если вы собираетесь участвовать, обязательно прочитайте их в хронологическом порядке. 2017-10-23: Финализация правил. 2017-11-21: У нас всё медленно и печально. 2017-12-02: Движение началось. Посражаемся?
  10. Всем привет. У меня вопрос: возможно ли поставить в дрона из OC плату на красном камне и подавать дроном редстоун-сигнал? (на двери например) Если можно, то приложите код. Заранее спасибо
  11. Totoro

    Запускаем дронов!

    Дроны - как керосин. Они есть везде. Еще года два назад это было просто еще одно интересное видео на Ютубе. Год назад они вдруг оказались в интернет магазинах. Затем просочились в рекламу на ТВ, и вот теперь - они есть и в OpenComputers! Пришла пора с ними разобраться. 1. Матчасть Дрон, в данном случае - квадрокоптер, это беспилотный летающий аппарат, приводимый в движение двумя парами горизонтальных винтов. Приостановливая вращение винтов с одного боку, дрон двигается в сторону (стрейф). Эти винты вращаются в разном направлении (два - по часовой срелке и два - против), за счет чего дрон не нуждается в стабилизирующем хвостовом пропеллере (как вертолет). За счет этого же он и разворачивается в воздухе, замедлив вращение однонаправленной пары винтов. Дрон обладает небольшой массой, для экономии энергии, которой у него не много (на 10-30 минут полета в среднем). (с) Википедия 2. Дроны и OpenComputers Приблизительное изображение дрона в OpenComputers =): В мире Майнкрафта дрон представляет из себя "сущность" (Entity). Это значит, что он обладает возможностями мобов Майнкрафта. (В то время как робот - это блок.) Его можно сдвинуть с места толкая. Он умеет пролетать сквозь двери и калитки (в отличии от робота). Он движется не последовательно, из блока в блок, а из точки в точку. Причем маршрут может лежать по диагонали. Конечно, движется он по кратчайшей линии, и если на пути окажется стена - дрон столкнется с нею. Программирование дрона как две капли воды похоже на программирование микроконтроллера. Вы точно так же записываете программу на EEPROM, и при необходимости меняете ее на верстаке. Только в отличии от контроллера, вам становится доступен новый компонент: drone. Подробнее об командах дрона можно узнать здесь: OpenComputers/Дрон. (Или здесь: ocdoc.wiki (англ.)) 3. План Нужна какая-нибудь несложная задача, для целей эксперимента. Используем программку send из предыдущего поста, для удаленного управления. Зальем ее на планшет. А дрон пусть... носит свиней. Будем оригинальными и непоследовательными. 1. Команда 'add X Y Z Name From'. Добавляем точку Name к маршруту, цепляя ее к точке From. Зададим дрону последовательность точек, которые образуют граф - безопасные маршруты. 2. Команда 'catch' - дрон ловит свинью. 3. Команда 'drop' - дрон выпускает свинью. 4. Команда 'to X' - дрон летит в точку Х. Для начала не будем особо заморачиваться с графом маршрутов. Это будет простое неориентированное дерево. Примерно такое: 4. Строим полигон Построим что-нибудь подходящее для тестов. Отметим ключевые точки будущего графа красными блоками. А синий блок - будет стартовой площадкой дрона. Поскольку я играю без модов на энергию, мой планшет и дрон будут работать вечно. И я не заморачиваюсь станцией подзарядки. Иначе, к схеме выше было бы необходимо добавить станцию, где дрон мог бы зарядить аккумулятор. 5. Пишем программу Скрипт для удаленного управления скопипастим из прошлого поста, подправим, чтобы умела отправлять несколько переменных и зальем на планшетик, для удобства. (Для этого, соберите планшет - не забудьте клавиатуру и видеокарту! - положите его в зарядник и запустите с подключенного компа команду install. Укажите адрес винчестера планшета - и все, что было у вас на компе автоматически загрузится в планшет, включая даже ваши собственные программы.) local com = require('component') local modem = com.modem local args = {...} modem.broadcast(27, table.unpack(args)) io.write("Message: ") print(table.unpack(args)) Далее - более сложная часть. Программа дрона. Программа предназначена для EEPROM. Значит соблюдаем те же правила: используем computer, component и API имеющихся у дрона компонентов. Включая его родной компонент drone. В нашем случае, дрон вооружен апргейдом-лассо (leash) и беспроводной сетевой картой (modem) для связи. Стоит отметить, что процесс отладки программы (по крайней мере в текущем билде мода) достаточно неудобен. В случае ошибки дрон отказывается включиться, издав тонкий писк, и не выводя никакой информации. Получить отчет об ошибке при помощи анализатора не выйдет - ведь Shift+ПКМ просто снимает дрона. Автор обещал в скором времени это исправить. Ну а пока - помучаемся. Отредактировать чип в стороннем редакторе, не вынимая его из дрона тоже не выйдет. В отличии от файловых систем, которые имеют удобную папку вида /saves/World/opencomputers/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/, чипы EEPROM хранят свой код в NBT тегах предмета. Этим же обусловлено и ограничение размера кода в 4 килобайта. 5.1. Основная часть Это цикл который ждет указаний, а затем запускает соответствующую функцию. drone = component.proxy(component.list("drone")()) modem = component.proxy(component.list("modem")()) leash = component.proxy(component.list("leash")()) modem.open(27) route = {} path = {} current = "" while true do name, _, sender, _, _, message, x, y, z, point, from = computer.pullSignal(1) if name == "modem_message" then if message == 'add' then add(tonumber(x), tonumber(y), tonumber(z), point, from) if current == "" then current = point end elseif message == 'to' then to(x) elseif message == 'catch' then catch() elseif message == 'drop' then drop() end end if #path > 0 and drone.getOffset() < 1 then drone.move(route[path[#path]].x-route[current].x, route[path[#path]].y-route[current].y, route[path[#path]].z-route[current].z) current = path[#path] path[#path] = nil end end modem.close() Чтобы облегчить себе жизнь (и тестирование bios), вы можете сделать так: напишите заглушку для компонента drone (и других, если надо), вроде этой: http://pastebin.com/EVYzN5Bj Просто скопируйте в папку на компьютере, где вы пишете программу для дрона. Затем измените первые строки программы следующим образом: component = require('component') computer = require('computer') drone = require('drone') modem = component.modem -- leash = component.proxy(component.list("leash")()) Затем добавьте в цикл условие выхода по нажатию кнопки: if name == 'key_down' then break end И вы можете просто запустить вашу программу для дрона на компьютере. Разумеется полноценной эмуляцией дрона тут и не пахнет, зато очень удобно отслеживать глупые синтаксические и логические ошибки. Как устроен код основного цикла? Переменная route - хранит таблицу "вейпоинтов" (waypoints). Это вершины графа и информация о связях между ними. Переменная path - хранит путь от текущей вершины до цели. Переменная current - отмечает текущее местоположение дрона в графе. В цикле мы читаем получаемые сообщения и вызываем соответствующие функции. Первая переданная вершина считается дроном текущей. Во второй части цикла происходит проверка. Если путь до цели - не пуст (это значит, что дрону надо куда-то лететь) и дрон уже долетел до текущей вершины (getOffset()), то программа берет следующую вершину из path, отправляет дрона к ней и объявляет ее текущей. 5.2. Функции-команды Теперь последовательно добавим функции для каждой команды. function add(x, y, z, name, from) route[name] = {x=x, y=y, z=z, link = {}} if from ~= nil then if route[name] == nil or route[from] == nil then drone.setStatusText("Error!") else table.insert(route[name].link, from) table.insert(route[from].link, name) end end end Тут все просто. Пишем вершину в список. Если он связана с другой вершиной (from ~= nil), то в специальную табличку link заносим две связи: из name в from, и из from в name. function search(target, point, prev) for key, name in pairs(route[point].link) do if name == target then table.insert(path, point) return true end end for key, name in pairs(route[point].link) do if name ~= prev then if search(target, name, point) then table.insert(path, point) return true end end end return false end function to(name) path = {} table.insert(path, name) search(name, current) end Функция to обнуляет старый путь (на всякий случай), затем вставляет в него цель пути (name) и запускает функцию search, которая рекурсивно ищет и записывает остальные промежуточные вершины на маршруте от name до current (текущей локации). Функция search сделана достаточно примитивно (возможно вы предложите более эффективный способ?). Поскольку мы договорились, в целях упрощения использовать граф-дерево (не содержаший петель), от любой точки к другой существует один и только один маршрут, который функция и находит перебором связанных вершин. function catch() for c = 2, 5 do if leash.leash(c) then return true end end return false end function drop() leash.unleash() end Тут все элементарно. 6. Подготовка Пишем программу на дрона, заряжаем планшет и выдвигаемся в зону действий. Дрона ставим на синий куб (стартовая площадка) и включаем. После уточнения на местности, составляем карту вейпоинтов и строим на бумажке будущий граф: Для каждого загона добавлены две точки - name и name_up. Основные "трассы" дрона лежат на высоте в 6 блоков. А в каждом загоне спускаются к земле. (Чтобы заарканить животное, выстреливая лассо вбок, дрону желательно находиться на одном уровне с жертвой). С планшета вносим координаты в память дрона. Примерно так: Главное - не ошибиться. Т.к. в код не была добавлена защита "от дурака" =) Алгоритм позволяет добавлять вершину "на лету". В любой момент вы можете добавить еще одну ветку к схеме. Теперь все готово к тесту. 7. Запуск Все готово. Проверим, как он двигается. Введем send to sheeps в консоль планшета. Дрон уверенно поднимается в воздух и опускается в загоне в овцами. Теперь введем send to pigs. Функция search снова вычислит путь и робот переместится в указанную вершину: Функции catch и drop тоже работают штатно =) Хотя и не лишены некоторых глюков (ведь физика веревки не просчитывается): 8. Итоги а) Дрон - любопытная штуковина. б) Полный код прошивки. использованный в этом посте - здесь: http://pastebin.com/Cy1UR6vy в) Навигация по вейпоинтам - интересный и очень распространенный способ организации сложного движения. Схему можно усложнить - опционально добавлять только одну связь в таблицу link - тогда получатся ребра с односторонним движением. Добавить петли, оптимизировать поиск кратчайшего пути. Еще можно облегчить правление дроном - хранить все команды для конкретной задачи в виде файла-скрипта, который запускать одной командой и т.д. Enjoy!
  12. Очередная Программа для дистанционного управления дроном с планшета Может быть использована в разных целях, например просто поиграть с дроном или полетать на всегда востребованном свинолёте Скриншоты: Возможности программы: Сборка планшета и дрона Собственно вам потребуется планшет с минимально такой комплектацией: Корпус планшета (1 уровень) Центральный процессор (1 уровень) Память (2 уровень) Видеокарта (2 уровень) Плата беспроводной сети Жёсткий диск (1 уровень) (С установленной OpenOS) EEPROM (Lua Bios) Улучшение "Навигация" (По желанию, без него не будет работать управление с учётом направления взгляда) Интернет карта (По желанию, без неё не получится напрямую скачать программу с Pastebin) Также вам потребуется сам дрон с минимально такой комплектацией: Корпус дрона (1 уровень) Центральный процессор (1 уровень) Память (1 уровень) Плата беспроводной сети EEPROM (с программой) (Можно установить на уже собранный дрон) Улучшение "Поводок" Улучшение "Инвентарь" Установка программы Программа для планшета При наличии интернет карты можно скачать выполнив команду: pastebin get EYkxNTss ud.lua Программа для дрона Устанавливается на компьютер для последующей записи в чип EEPROM! При наличии интернет карты можно скачать выполнив команду: pastebin get G6JJfxfh udBios.lua Для записи программы для дрона в чип EEPROM, возьмите EEPROM вставте его в компьютер (вместо того что там был) и выполните команду: flash -q udBios.lua UDRC Теперь достаньте с компьютера уже прошитый чип EEPROM и используйте его при сборке дрона, а если дрон уже собран, то совместите текущий чип с дроном в верстаке. Использование: Поставте дрон и включите его. На планшете запустите программу ud. Текущая версия программы - v1.0
  13. Придумал способ создания защиты блоков, чтобы дрон не сможет активировать их, делюсь с вами) Смысл в том, что если дрон попытается пройти сквозь блок жидкости, то он выключится. Пример защищённой двери:
  14. Вот код для компьютера: local modem=require("component").modem local keyboard=require("keyboard") local event = require("event") local term = require("term") modem.open(111) modem.setStrength(10) while true do local x=term.read() local y=term.read() local z=term.read() term.write("sending") modem.broadcast(111,x,y,z) end Вот для дрона: drone = component.proxy(component.list("drone")()) modem = component.proxy(component.list("modem")()) modem.open(111) while true do local name,receiverAddress, senderAddress, port, distance, x, y, z = computer.pullSignal(1) if name == "modem_message" then --local tabletAddress="" --if(sender==computer.address() or tabletAddress)then dron.move(x,y,z) --end end end По идее дрон должен смещаться на x,y,z, переданные через беспроводной модем, но он тупо вырубается(
×
×
  • Создать...