Doob
Гуру-
Публикации
1 086 -
Зарегистрирован
-
Посещение
-
Победитель дней
139
Doob стал победителем дня 1 октября 2023
Doob имел наиболее популярный контент!
Репутация
2 748 Очень хорошийDoob
-
Звание
Старожил
Информация
-
Пол
Не определился
-
Их очень много, можно визуализировать при помощи дебаг платы таким скриптом: local l_x, l_y, l_z = 1427, 44, 816 -- координаты центральной точки local setblock, block = 'setblock ', ' minecraft:redstone_block' local run = require('component').debug.runCommand local sqrt = math.sqrt local collision = { [16] = true, [18] = true, [22] = true, [24] = true, [30.757112998459] = true, [32] = true, [32.326459750489] = true, [33] = true, [36] = true, [36.837480912788] = true, [44] = true, [48] = true } for x = 0, 32 do for z = 0, x do for y = 0, x do if collision[sqrt(x^2 + y^2 + z^2)] then for xm = -1, 1, 2 do for ym = -1, 1, 2 do for zm = -1, 1, 2 do run(setblock .. l_x + x*xm .. ' ' .. l_y + y*ym .. ' ' .. l_z + z*zm .. block) run(setblock .. l_x + z*xm .. ' ' .. l_y + y*ym .. ' ' .. l_z + x*zm .. block) run(setblock .. l_x + y*xm .. ' ' .. l_y + x*ym .. ' ' .. l_z + z*zm .. block) end end end end end end end Для разных расстояний разные вероятности, в среднем при однократном сканировании бывает около 30% ошибок от общего числа, это ~216 блоков на весь объем.
- 14 ответов
-
- 2
-
- робот
- opencomputers
-
(и ещё 1 )
Теги:
-
Нет, коллизии возникают на фиксированных расстояниях, если сместить геосканер в любую сторону, те расстояния покрываются областью где плотность определяется на 100% без коллизий.
- 14 ответов
-
- 2
-
- робот
- opencomputers
-
(и ещё 1 )
Теги:
-
Чтобы узнать плотность всех блоков на 100% требуется затратить примерно на 30% больше энергии и времени из-за дополнительных сканирований. (19% если немного усложнить алгоритм) Если надеяться на удачу и повторно сканировать блоки только с явной коллизией, то в худшем случае, будет потрачено в 2.4 раза больше энергии и времени. Вот списки расстояний с коллизиями руды и окружающей породы: Коллидирующие расстояния для земли почти полностью объединены с расстояниями камня, а гравий встречается в 3 раза реже земли, поэтому их можно полностью игнорировать. Самый безопасный куб x23 блока с геосканером в центре не имеет коллизий, но он довольно мал для серьезных задач. Поэтому лучше потратить энергию на сканирование и тогда абсолютная точность будет достигнута для объема 65x65x63.
- 14 ответов
-
- 2
-
- робот
- opencomputers
-
(и ещё 1 )
Теги:
-
local robot = require('robot') local component = require('component') local tunnel = component.tunnel local function send() local qty = 0 for i = 1, 12 do qty = qty + robot.count(i) end tunnel.send(qty) end local event = require('event') local term = require('term') while true do local e = {event.pull()} if e[1] == 'modem_message' then term.clear() term.write(e[6]) end end
- 1 ответ
-
- 3
-
Да, обучал на питоне, модель конвертировал в Lua-табличку. Свертки "в лоб" работают очень плохо O(n^2) против O(n*log(n)) на нормальных алгоритмах. Полносвязные до определенного предела будут работать спокойно, но условно после 1000 параметров градиент перестанет влезать в память и скорость обучения упадет на пару порядков. Поэтому лучше работать с готовой моделькой, функционал попроще и мороки меньше.
-
Вот как вариант, выгружает тикеты, когда их больше или равно нужному количеству. От других предметов инвентарь не чистит, для этого нужна отдельная функция. local component = require('component') local function get_tickets(item, min_qty, side) -- получаем имя предмета, количество и куда перемещать if not component.isAvailable('chest') then -- проверяем наличие сундука return nil, 'нет сундука' end local chest = component.chest -- линкуем сундук local stacks = chest.getAllStacks() -- получаем инвентарь local counter, slots, c_item, moved = 0, {} -- создаем счетчик, список слотов и текущий предмет for k, v in pairs(stacks) do -- пробегаем по слотам c_item = v.basic() -- линкуем основную информацию о предмете if c_item.id == item then -- если имя совпадает table.insert(slots, k) -- добавляем слот в список counter = counter + c_item.qty -- обновляем счетчик end end if counter >= min_qty then -- условие допилить под свои нужды moved = true for i = 1, #slots do -- бежим по слотам chest.pushItem(side, slots[i]) -- выгружаем предметы end end return moved, counter -- возвращаем количество end local status, tickets = get_tickets('minecraft:stone', 3, 'DOWN') if status then print('получено ' .. tickets .. ' билетов') -- обрабатываем удачную ситуацию else -- обрабатываем исключение end
- 2 ответа
-
- 2
-
Не добавят. Можно проверять наличие определенного предмета через удаление командой clear, затем возвращать его игроку.
-
Да, рабочая штука. Еще MIPS и DCPU-16 попадались, но один удалили, другой не собирается.
-
Дебага вроде не работала с плагинами без специального аддона. Или то вообще была кастомная дебага, короче встроенная не работала.
-
Конвертацию итемов в цифру и переводы? Какой именно плагин? Какая СУБД? Как сервер устроен, через локалхост конектиться надо?
-
Пару лет назад я хотел сделать универсальный комбайн, чтобы можно было сделать специализированного робота, накидать ему алгоритм работы, а комбайн соберет и упакует все из готовых модулей, с учетом заданной конфигурации. Но удобство сомнительное и в EEPROM все нужные свистоперделки не влезают. Так что да, без харда нормальной копалке никак, да и не занимает он ничего, если не нужен доступ к роботу через OpenOS. С зарядниками весело было. Там в разных версиях, в разных модах, генераторы странно работали. Я долго с ними воевал и понял, что проще написать крафт кирок из булыги и алмазов, чем сделать поддержку всех популярных перезаряжаемых инструментов.
-
Шта? Алмазная кирка всегда ломала паутину. Есть у меня набор библиотек для копателя, там и контроль энергии, и поиск руды, навигация, обход препятствий, короче, на все случаи жизни. Надо только кое-чего подкрутить и можно будет хоть каждый час новую копалку писать. Алгоритм добычи дубокопа где-то на 50 строк влезет, а что-нибудь более совершенное и в 20 войдет.
-
Дрон не хочет нажимать шифт+пкм ключем по блоку(демонтаж блока)
Doob ответил в вопрос hohserg в Компоненты
У робота есть слот для инструментов, только через него происходит работа (не знаю как сейчас, но раньше не каждый инструмент и не каждый блок обрабатывался адекватно). У дронов такого слота нет, поэтому они могут имитировать только пустую руку. -
Кому нужны такие подробные объяснения? Идея лежит на поверхности, ухватившись за нее, можно легко разобраться своим ходом. Это ведь прикладная задача. Берешь код, вставляешь в свою прогу и пользуешься.
- 14 ответов
-
- робот
- opencomputers
-
(и ещё 1 )
Теги: