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

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

Рекомендуемые сообщения

Какая точность при наведении на игрока? Будет ли тупить, если игрок стоит строго на оси Z?

Помню, надо было делать двойную проверку при триангуляции, либо добавлять еще точки для замера, чтобы дрон не пролетал мимо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@BrightYC Интерфейс выглядит приятно. Но для полного счастья не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@BrightYC А что делает знак подчёркивания в этой строке function ds()sn("PING")_,dtu=lm(3)return dtu or 0 end кода дрона?

 

Рекурсию в функции gtu предлагаю заменить на цикл repeat-until

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, eu_tomat сказал:

не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

 

@BrightYC  простенький код  в довесок к твоему

local full = false
local x_max, y_max = gpu.maxResolution()

[44] = function() full = not full if full then gpu.setResolution(1, 1) else gpu.setResolution(x_max,y_max) info() end end,
-- 44 = кнопка Z

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, Doob сказал:

Какая точность при наведении на игрока? Будет ли тупить, если игрок стоит строго на оси Z?

Помню, надо было делать двойную проверку при триангуляции, либо добавлять еще точки для замера, чтобы дрон не пролетал мимо.

Всё нормально, если расстояние до игрока изменилось с момента старта - всё начинается заново, так что дрон не промахивается, даже на огромных расстояниях погрешность пару блоков.

6 часов назад, eu_tomat сказал:

@BrightYC А что делает знак подчёркивания в этой строке function ds()sn("PING")_,dtu=lm(3)return dtu or 0 end кода дрона?

 

Рекурсию в функции gtu предлагаю заменить на цикл repeat-until

_, dtu пропускает первый аргумент со строкой модема, в lm() видно код. А что не так с рекурсией? Экономит место, по крайней мере я проблемы не вижу.

return dt[3],dt[5],dt[6],dt[7],dt[8],dt[9]

 

6 часов назад, eu_tomat сказал:

@BrightYC Интерфейс выглядит приятно. Но для полного счастья не хватает односимвольного режима экрана для максимально открытого обзора летающего дрона.

Так он есть же, я не обновил программу? Возможно я немного поторопился с заливанием программы.

4 часа назад, serafim сказал:

 

@BrightYC  простенький код  в довесок к твоему


local full = false
local x_max, y_max = gpu.maxResolution()

[44] = function() full = not full if full then gpu.setResolution(1, 1) else gpu.setResolution(x_max,y_max) info() end end,
-- 44 = кнопка Z

 

Ну, кнопка 'z' уже занята, да и односимвольный режим включается по кнопке 'm', но спасибо. Вот кстати код, если кто не заметил:

[50] = function() if not stuff.hide then stuff.hide = true event.cancel(battery_timer) event.cancel(clock_timer) event.cancel(data_timer) gpu.setBackground(color.black) gpu.set(1, 1, " ") gpu.setResolution(1, 1) else stuff.hide = false battery_timer = event.timer(5, battery, math.huge) clock_timer = event.timer(60, clock, math.huge) data_timer = event.timer(20, update_data, math.huge) gpu.setResolution(80, 25) draw_gui() first_launch() end end

Длинновато, да.

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вот односимвольный режим, если спутало 'Увеличить/Уменьшить размер экрана'
 

Скрытый текст

3hX9bPx.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Может мне кто-то объяснить, почему иногда tablet.getYaw() выдаёт отрицательный значения, а иногда - положительные. Что за ерунда? 

P.S Уже не важно, связано было с определением стороны взгляда 

 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Doob Специально для тебя записал видео с тестом:
 

Скрытый текст

 

 


P.S Даже на расстоянии в 400 блоков точность отменная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, whiskas сказал:

вот бы дронам чанклодер)

Ты про возвращение то? Даа, без чанклодера тоскливо. 100-150 блоков и всё, дрон не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, BrightYC сказал:

Даже на расстоянии в 400 блоков точность отменная.

Нет, если дрон и передатчик находятся на оси Z, то при команде на возвращение, дрон входит в бесконечный цикл пингования.

Еще в подсказке некоторые пункты перепутаны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Doob сказал:

Нет, если дрон и передатчик находятся на оси Z, то при команде на возвращение, дрон входит в бесконечный цикл пингования.

Еще в подсказке некоторые пункты перепутаны.

Проверил, всё работает штатно. 

А в подсказке что напутано? Если ты про видео - там действительно напутано.

P.S Я вставал прямо по оси Z, дрон спокойно прилетал домой, почему он должен входить в бесконечный цикл?

UPD: Не забывай про то, что по стандарту у модема 20% мощности. Возможно ты слишком далеко отлетел, дрон просто не может принять сообщение, увеличь мощность модема. Если не сложно, можешь поподробнее объяснить как и где это происходит? 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значит, срабатывает в исключительных случаях, когда дрон не сдвигается на достаточное расстояние для ошибки при округлении. У меня получилось воспроизвести только два раза, оба раза лечилось перезагрузкой мира.

11 час назад, BrightYC сказал:

А в подсказке что напутано?

Например, E не возвращает дрона домой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Doob сказал:

Например, E не возвращает дрона домой.

упс, у меня клавиши на клавиатуре перепутаны=d

1 час назад, Doob сказал:

Значит, срабатывает в исключительных случаях, когда дрон не сдвигается на достаточное расстояние для ошибки при округлении. У меня получилось воспроизвести только два раза, оба раза лечилось перезагрузкой мира.

Я не смог отловить за всё время использования на 2 разных версиях игры на разных картах такие странные баги.

 

P.S Подсказку починил, возвращение домой на 'T', а 'E' - обновить данные

 

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, BrightYC сказал:

P.S Подсказку починил, возвращение домой на 'T', а 'E' - обновить данные

клавиши лучше назначить так (по смыслу рядом или от первой буквы того, что они делают ):
h (home) домой

c (колор) цвет

u (update)- обновить данные какие-то(а лучше все сразу)
t / y - взять/положить

q - вых

i - инвентарь

wasd - движение

...
и тп.
 

Так проще будет запомнить.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Alex сказал:

клавиши лучше назначить так (по смыслу рядом или от первой буквы того, что они делают ):
h (home) домой

c (колор) цвет

u (update)- обновить данные какие-то(а лучше все сразу)
t / y - взять/положить

q - вых

i - инвентарь

wasd - движение

...
и тп.
 

Так проще будет запомнить.
 

Запомнить может и проще, но тянуть руки на другую часть клавиатуры-перебор. Основные функции постарался уместить рядом с WASD, 

чтобы было проще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Небольшое обновление:

 

Доделал интерпретатор, теперь почти неотличим от оригинала. Теперь не нужно писать return чтобы вернуть значение, так же добавил возможность прекратить код через CTRL+D при исполнении

Скрытый текст

d1vl7Wn.png

Так же добавил утилиту загрузки по сети. Чтобы загрузить программу на дрона. То есть, можно запустить любую программу командой 

net <program_name>

 И она сию минуту загрузится на дрон:

 

Скрытый текст

B2CTD1t.png

Установка:

wget https://raw.githubusercontent.com/BrightYC/DRC/master/network-load.lua net.lua

 

Так же, в интерпретаторе есть функции:

  • update() - обновляет данные на планшете
  • print(...) - помогает отправить данные на планшет в работающем коде
  • sleep([timeout: number]) - сон он и в африке сон 
  • pull([timeout: number]): name, ... - ожидает какой-либо сигнал не ломая связь 
  • move(dx: number, dy: number, dz: number, wait: number) - блокирующий drone.move
  • distance(): number - возвращает расстояние до планшета, если ответ не пришёл в течении 3 секунд - возвращает 0
  • moveToUser() - перемещает дрон к планшету
  • slot([slot:number]) - безопасно выбирает слот(К примеру - в дроне всего 4 слота, но slot(5) выделит самый последний и не выкинет ошибку)
  • clear - очищает терминал
Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Еще одно обновление:
Добавлена возможность загрузки модулей с планшета, то есть теперь можно расширять код хоть до полу мегабайта.
 

Для начала была добавлена сериализация, чтобы таблицы нормально отображались при отправке на планшет:

Скрытый текст

fVV6gHxaHJE.jpg


uE7iS1S.png

Теперь можно не ограничиваться фантазией и писать сколько угодно(в пределах, разумеется, ограничивается лишь размером оперативной памяти у дрона и планшета)

Изменено пользователем BrightYC

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Наткнулся на плеер NBS музыки через computronic's. Тема на англоязычном форуме:
https://oc.cil.li/topic/1758-noteblock-studio-player-for-computronics-sound-cards/

Что получилось у меня: 

Скрытый текст

 

Получилось довольно забавно, учитывая что дроном можно управлять во время проигрывания музыки, то есть теперь на свинолёте можно лететь не в тишину, а с музычкой =)

Порядок действий, как проигрывать музыку: 

  1. Обновить программу
  2. Скачать какой-нибудь .nbs файл 
  3. Теперь, через net можно сделать так: net <имя-файла>.nbs <имя>
  4. nbs файл сохранился как переменная, теперь создаём какой-нибудь файл, например play.lua, редактируем - пишем туда nbsPlay(nbs: string, repeat: boolean). В моём случае - nbsPlay(despacito, true) (Будет постоянный повтор музыки, остановить можно написав error() в интерпретаторе)
  5. Пишем net play.lua
  6. Слушаем и радуемся!

!ВНИМАНИЕ!
Требовательно к оперативной памяти.
Минимальная конфигурация с т 1.5 плашкой первого уровня, иначе дрон будет кричать о недостаточной памяти. Так же, с 1 платой при требовательных операциях и работающей музыке - возможен вылет дрона.

 

Изменено пользователем BrightYC
спасибо за внимание

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...