Doob 2 749 Опубликовано: 4 апреля, 2016 (изменено) Эта кoпалка не требует для рабoты лишних деталей, т. к. кoд запиcываетcя на EEPROM. При cбoрке рoбoта, вмеcтo ЖД, мoнитoра и клавиатуры мoжнo дoбавить чтo-тo дейcтвительнo нужнoе, например раcширение инвентаря или аккумулятoра. Требoвания: Инвентарь (чем бoльше - тем лучше) Кoнтрoллер инвентаря. Геocканер. Инcтрумент, врoде алмазнoгo или иридиевoгo бура. Хoвер-апгрейд (еcли неoбхoдимo) При cбoрке мoжнo дoбавить: Апгрейд-верcтак. (пoзвoляет экoнoмить меcтo) Чанклoадер. Генератoр. (при наличии чанклoадера реже будет неoбхoдимocть ездить к заряднику) Беcпрoвoдную cетевую карту. (пoзвoлит рoбoту oтправлять cтатуcные cooбщения) Пример минимальнoй и пoчти макcимальнoй cбoрки (при желании, мoжнo дoбавить раcширения) Иcпoльзoвать oчень прocтo: В кoмпьютер c интернет-платoй вcтавить EEPROM. Запуcтить кoманду pastebin get eFkAZP0u b && edit b && flash b -q && rm b Пo желанию, редактирoвать параметры - первые переменные этo кoличеcтвo нoд, минимальная плoтнocть, макcимальная плoтнocть, выcoта (неoбхoдимo указывать для мирoв, в кoтoрых нет бедрoка), пoрт, cпиcoк oтхoдoв. Сoхранить/закрыть файл. Дocтать EEPROM из кoмпьютера и вcтавить в рoбoта. Выдвинутьcя на меcтo дoбычи. Пocтавить рoбoта. Дать рoбoту бур. Пocтавить вoзле негo кoнтейнер и включенный зарядник. Включить рoбoта и ждать завершения рабoты. Функциoнал: Рoбoт cканирует квадраты x8 блoкoв пo гoризoнтали, пocтепеннo oпуcкаяcь вниз. Дoбывает блoки из заданнoгo диапазoна плoтнocтей. Дoйдя дo бедрoка, рoбoт пoднимаетcя на cтартoвую выcoту и перехoдит к cледующей кoлoнне. При низкoм урoвне заряда аккумулятoра, пытаетcя заправить генератoр (еcли имеетcя), в прoтивнoм cлучае или при низкoм урoвне заряда инcтрумента, oтправляетcя на cтартoвую пoзицию, к заряднику. Так же, при запoлнении инвентаря, cбраcывает муcoр, при наличии верcтака упакoвывает реcурcы в блoки и еcли меcта вcе-равнo малo, тo cледует к кoнтейнеру, cбраcывает лут и вoзвращаетcя к рабoте. Еcли имеетcя чанклoадер, тo при начале рабoты oн включаетcя, а при завершении выключаетcя. Еcли имеетcя беcпрoвoднoй мoдем, тo рoбoт пocылает cтатуcные cooбщения: 0 - неразрушимый блок (скорее всего - приват) 1 - контейнер заполнен 2 - контейнер отсутствует 3 - зарядка инструмента 4 - заправка генератора 5 - конец работы Изменено 25 февраля, 2017 пользователем Doob 8 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 625 Опубликовано: 4 апреля, 2016 Yet Another Opencomputers Miner Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat 55 Опубликовано: 4 апреля, 2016 Yet Another Opencomputers Miner Может WOPR? Не могу подобрать слова) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 4 апреля, 2016 С чанклоадером я так понимаю сожрет много энергии? Поддержку можно добавить (чтобы прогу можно было не только у нас использовать) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 4 апреля, 2016 Тут все зависит от того, насколько накручен чанклоадер, как много роботу придется добывать и какая плотность генерации руд. С обычным конфигом чанклоадер ест 0.06 энергии за тик, это 1.2 в секунду, 72 в минуту, 4320 в час, т. е. сам по-себе он съест стандартную батарею на 20500 почти за 5 часов, но надо еще прибавить 0.25 энергии при работе самого робота, движения, повороты, взмахи буром. Если приспособить программу, чтобы робот всегда с собой таскал стак блоков угля и закидывал их в генератор, будет вполне неплохо работать, хотя и расход топлива будет очень невеселый. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 4 апреля, 2016 Думаю поддержка все же не будет лишней (можно сделать опциональной) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 4 апреля, 2016 Добавил, если есть чанклоадер он сразу включается, если есть генератор, робот будет пытаться закинуть в него топливо, если топлива нет, то пойдет к заряднику. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 5 апреля, 2016 Учитывая нелюбовь других участников проекта к длинным текстам, сосредоточусь на самых злых моментах: 1) В цикле while not bedrock do scan() miner() end есть движения между найденными блоками руды, но нет возврата к центру столба. Полагаю, робот будет смещаться от центра столба, что приведет к недостаточно чистой копке. 2) Также мне видится довольно вероятной возможность нарваться на пустую площадку 7x7 в зоне бедрока. При текущей реализации выхода из нее к следующему столбу очень велик риск застрять в бедроке. Не вижу в коде обхода таких сюрпризов. 3) Этого и других крокодилов можно заметно укоротить: if d == 0 and dT == 1 or d == 1 and dT == 2 or d == 2 and dT == 3 or d == 3 and dT == 0 then turn(true) else turn() endНапример, так: turn((dT-d)%4==1) 5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 6 апреля, 2016 1. Возврат у центру столба это лишняя энергия, поэтому при сканировании учитывается смещение от центра и робот не делает лишних движений. 2. Пустота 7x7 это из области фантастики, ну если генерация карты накручена, но способ передвижения от ноды к ноде надо будет еще подшаманить и с учетом внезапного бедрока. 3. Отлично! Крокодилов, вообще, надо замариновать и съесть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 6 апреля, 2016 1. Возврат у центру столба это лишняя энергия, поэтому при сканировании учитывается смещение от центра и робот не делает лишних движений. 2. Пустота 7x7 это из области фантастики, ну если генерация карты накручена, но способ передвижения от ноды к ноде надо будет еще подшаманить и с учетом внезапного бедрока. 1) Извиняюсь, был невнимателен, возврат не требуется. Лишь точность сканирования падает, но этот вопрос ты уже прояснил. 2) Я не сохранил записи давних экспериментов, а интуиция – не аргумент. Перепроверю, как найду время для майнкрафта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 6 апреля, 2016 Кстати, да, если робот попадает в угол сканируемой зоны, то может не разглядеть руду с минимальной плотностью на другом конце зоны. После экспериментов на свинцовой руде понизил минимальную плотность, теперь вероятность добычи свинца больше 95% Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 8 апреля, 2016 (изменено) Пустота 7x7 это из области фантастики, ну если генерация карты накручена, но способ передвижения от ноды к ноде надо будет еще подшаманить и с учетом внезапного бедрока.Фантастика? Не думаю.Отладочной платой просканирован верхний слой бедрока площадью 401x401, посчитаны все пустые квадраты всех размеров sq= 1 128600/160801 = 79.97% sq= 2 65599/160000 = 41.00% sq= 3 21605/159201 = 13.57% sq= 4 4712/158404 = 2.97% sq= 5 723/157609 = 0.46% sq= 6 111/156816 = 0.07% sq= 7 26/156025 = 0.02% sq= 8 7/155236 = 0.00% sq= 9 1/154449 = 0.00% sq=10 0/153664 = 0.00%Вероятность встретить пустой квадрат 7x7 в верхнем слое бедрока равен 0.02%. Это очень мало (и не очеь точно измерено), но вероятно.Когда пользователь твоей копалки пожалуется на застревание в бедроке, ты вряд ли сможешь воспроизвести проблему, и всё спишешь на глюки майна. Интересно, что квадрат 10x10 в этом сканировании ни разу не встретился, но полагаю, что это тоже лишь вопрос вероятности, а она коварна. Upd: График зависимости вероятности обнаружения пустого квадрата от размера его стороны в логарифмической шкале демонстрирует почти прямую линию, что позволяет прогнозировать вероятность существования пустых квадратов любого размера. Изменено 8 апреля, 2016 пользователем eu_tomat 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 8 апреля, 2016 (изменено) Неплохо, хоть вероятность ничтожна, но она есть. Ладно, значит робот будет ходить сначала по вертикали. В принципе, можно сделать умную защиту от застреваний, это всего две строчки, но я и так еще не придумал, как впихнуть программу в EEPROM не лишая ее полного функционала. ...Хотя, нет, придумал - crunch --lz77 это то, что надо. Изменено 8 апреля, 2016 пользователем Doob Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
danshat 55 Опубликовано: 8 апреля, 2016 Это шедевр! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Andronio 13 Опубликовано: 19 апреля, 2016 Дуб. Помнишь то, что я тебе вчера говорил? По поводу отсылки оповещений на компьютер. Можешь написать? Отправлено с моего X5pro через Tapatalk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 20 апреля, 2016 Я же в чате объяснил, как это сделать. При крафте надо добавить в робота одну связанную карту, а другую в комп или планшет, сообщение ловить примерно таким образом: print(table.pack(event.pull('modem_message'))[6], os.date()) computer.beep(1000, 3) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Andronio 13 Опубликовано: 24 апреля, 2016 Я же в чате объяснил, как это сделать. При крафте надо добавить в робота одну связанную карту, а другую в комп или планшет, сообщение ловить примерно таким образом: print(table.pack(event.pull('modem_message'))[6], os.date()) computer.beep(1000, 3) Про computer.beep(). Что значат 1000 и 3? Отправлено с моего X5pro через Tapatalk Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 24 апреля, 2016 http://minecraft-ru.gamepedia.com/OpenComputers/Computer_API Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
cyber01 1 704 Опубликовано: 17 мая, 2016 А обновление программы будет? а то 1.6 уже на носу (надеюсь) Ее уже можно пихать в EEPROM и т.п.? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob Автор темы 2 749 Опубликовано: 17 мая, 2016 (изменено) Вроде-бы работает стабильно. Для EEPROM еще версии нет (переделал копалку под версию 1.5, с EEPROM робот работает заметно быстрее, да и компонентов меньше) Для особо одаренных сделаю возврат на хомку при обнаружении чужого привата, а то говорят, что СЛУЧАЙНО застревают роботы. Изменено 19 мая, 2016 пользователем Doob 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах