-
Content Count
829 -
Joined
-
Last visited
-
Days Won
7
Posts posted by kharlashkin
-
-
2 минуты назад, Tornado_Odan_Rot сказал:О, плюсаны вернулись .
Да, сейчас пойду @C.M. дальше вгонять в "глубокий минус".
-
В 21.09.2017 в 08:07, Mr 13 сказал:Это временно, скоро верну систему репутации.
Блин, я тут подумал - значит @C.M.вернут репутацию в 0? Значит я зря минусил его в течении очень долгого времени.
-
Только что, Mr 13 сказал:Постараюсь как можно быстрее.
В таких делах лучше не спешить - делайте основательно. Мне очень понравился движок форума на тесте, ну и "с почином"!
-
-
Пока ничего лучше не смог придумать, кроме как корректировать получаемый кватернион в момент прохождения датчика горизонта...
-
Прошу прощения огромная фатальная ошибка.
Так получилось, что в скетче я перепутал переменные - таким образом мой кватернион коррекции по компасу с помощью низкочастотного фильтра просто тупо стремился к нулевому вида (1, 0, 0, 0) и умножая полученный из DMP датчика на него у меня и получался вот тот супер стабильный ;)
Смутило что когда я коробок двигал - кубик вращался, но это только за счет того что фильтр не отрабатывает моментально.
В общем не спал пол ночи, результатом является вот это:
Особенно интересным выглядит вращение беспорядочное в конце - это я за шнурок кручу-верчу коробку с датчиком и возвращая коробок в первоначальное положение - получаю практически те же значения, что и в положении покоя. Так же видно, что есть некоторая задержка корректировки - пока не придумал что с ней делать, ну и немного трясет кубик по оси Z.
-
Можно сказать на финишной прямой ;)Учитывая, что датчик в коробке находиться на столе рядом с клавой, мышей, usb-хабом и 2-мя мониторами (менее 20 см) и под столом ПК (менее 30 см) в помещении результаты думаю неплохие.И самое главное, если взять коробок и неистово начать его вертеть, а затем положить его на место - данные о положении меняются очень незначительно (в пределах пары градусов). Пока нужно ставить эксперименты и проверять - всё ли так как мне кажется сейчас ;)Прошу прощения огромная фатальная ошибка.
- 2
-
Поздравляю с выходом Sublime Text 3.0, только вот сегодня заново его попробовал как альтернативу Arduino IDE - нравится всё.
-
еще бы физ. движок подключить с мультиплАером, классно бы было.Вопрос скорее всего в том, что игр с прямым управлением персонажа даже для VR нет и вряд ли в ближайшее время появятся. Разве что в какие-то игры для Kinect попробовать подключить.
Тут выявилось несколько других проблем.
- После подключение магнитометра непосредственно в вычисления DMP - точность кватерниона повысилась, но дрифт по оси Z никуда не делся. После активных вращений и возвращение датчика в первоначальное положение, кватернионы уже не будут как первоначальные. Хотя примерно после 10 секунд после активации, данные стабилизируются и в неподвижном положении очень точны. Этот же датчик с таким же кодом но без подключенного в DMP магнитометра имеет постоянный дрифт.
- Конфигурация DMP сразу имеет в своем арсенале матрицу корректировки данных от магнитометра, никак не могу пока понять каким образом этот "некий функционал" работает - документации маловато.
0x02, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_00 inv_set_compass_calibration 0x02, 0x44, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_01 0x02, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_02 0x02, 0x4C, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_10 0x02, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_11 0x02, 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_12 0x02, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_20 0x02, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_21 0x02, 0xBC, 0x04, 0xC0, 0x00, 0x00, 0x00, // CPASS_MTX_22
- Моя реализация корректировки по компасу пока не до конца продуманна - я пробую получать из кватерниона вычисленного в DMP вектор гравитации, затем получаю вектор нормали к плоскости образованной векторами компаса и гравитации, потом вычисляю из того- же кватерниона вектор, который должен быть коллинеарным вектору нормали, вычисляю угол между ними и доворачиваю объект.
- 1
-
Инструкция хороша, плюсанул за труды.
Аффтар пешы ысчо ©
-
Гы.
Создал в MakeHuman персонажа со скелетом, набросал скриптик для забора данных из Arduino и отправки кватернионов для положения кости головы персонажа. Весело получилось - крутить на usb-шнуре коробок с датчиком и ардуинкой и смотреть как голова сходит с ума.
- 1
-
всегда рад, проект сложный, по крайней мере для меня. продолжайте в том же духе, авось получится какая-нибудь полезная диковинка.
Думаю что настоящему программисту, а не поделке в моем лице, работы было бы на пару дней. Мне больше для души нравится копошиться в этом всём, математику пришлось подтянуть для понимания общего процесса. Ну уже с Вами обсуждалось какую диковинку :)
Сейчас у меня лежит 3 датчика 9250, 3 платки Arduino Pro Mini + едет батарейка с платкой именно для продолжение проекта.
Думаю попробовать сделать подобие отслеживания руки (плечо, предплечье и кисть). Ломал на дня голову с корпусами - решил использовать обычные двойные телефонные розетки, сразу вопрос с соединениями отпадёт - все таки разъемные с нормальным проводом это плюс ;)
Тестировал дома код для MPU-9250 чет не такой стабильный оказался на столе, но выявилась проблема с домашней экспериментальной Uno - рандомно ложится передача данных. Пробовал на ноуте/ПК под разными ОС - идет передача данных 2-5-10-20 сек и потом всё замирает. Хотя после повторной инициализации соединения - все работает нормально. На работе где экспериментирую с Nano - все более-менее стабильно.
- 2
-
класс.
Спасибо Вам, Павел, за поддержку. Очень часто, именно вот таких простых слов от окружающих в отношении того, что ты делаешь - не хватает ;)
- 1
-
После отпуска по доставал свои игрушки, взялся с новыми силами за положения в пространстве датчика MPU-9250.
Чет, не могу считать данные магнитометра.
Получилось заставить DMP обрабатывать данные от магнитометра, дополнительно включил математику в обработку кватерниона от DMP по этой статье. В принципе получилось очень даже ничего, особенно учитывая что данные от магнитометра без калибровки. Есть лишь небольшое подергивание кубика в блендер, но зато практически полностью пропал дрифт.
Видео чуть позже добавлю.Залил проект на github.
Имхо, будет неплохо наложить фильтр Калмана на данные от магнетометра, повысить точность позиционирования например на 4 знака после запятой (сейчас, как видно 2).
- 2
-
Должен сообщить, что OpenWrt лучше родной прошивки. Приведу пример.
Выше отписывал, что гроза потянула за собой стационарный ПК, который у меня как HTPC работает. Выгорел сетевой порт, и отвалились часть usb-портов. Во временное пользование был выпрошен у знакомого Wi-Fi usb-свисток. Так вот с родной прошивкой от Xiaomi наблюдалось периодическое отваливание беспроводной сети, помогало только физическое передергивание модуля. Изначально грешил именно на беспроводной модуль - так как мне сразу говорили что он очень глючный и пришлось повозиться с драйверами (в комплекте не было, в интернете тоже не сразу нашлись). После перепрошивки маршрутизатора, отваливаний не наблюдаю пока от слова "вообще".
- 1
-
Ну хоть один человек (кроме меня) одобрил мой выбор - плюсик поставил. Заказал я себе Xiaomi MiWiFi Mini, при чем оаказалось что дешевле и быстрее заказать себе этот маршрутизатор по месту, в Украине. На AliExpress цена около 718 грн с бесплатной доставкой, в интернет-магазине ROZETKA я покупал во вторник за 609 грн +35 грн доставка (сейчас ещё подешевел до 599 грн.). Вчера днем его забрал, вечером настроил на
китайскойстоковой прошивке и больше суток все нормально работало до сегодняшнего вечера.Сегодня же руки зачесались, и решил попробовать установить на него ту прошивку для которого эта железка и покупалась - OpenWrt. Всё встало/заработало без проблем и считаю своим долгом поделиться опытом.
Первым делом сходил на страничку с описанием маршрутизатора на OpenWrt и увидел способ прошивки без плясок с бубном, регистрации и смс.
Вчера я обновлял прошивку на последнюю от производителя, и при попытке получить telnet доступ я не получил правильное сообщение об ошибки из описания:
{"msg":"未能連線到指定Wi-Fi(Probe timeout)","code":1616}
Был ответ на китайском с кодом 1617 ;)
Первым делом я откатился в ручном режиме на стоковую прошивку с версией 2.1.6, хотя маршрутизатор после перезагрузки ругался что последняя версия доступная 2.15.78:
Далее в соседней вкладке вводим в адресную строку:
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqnetwork/set_wifi_ap? ssid=whatever&encryption=NONE&enctype=NONE&channel=1%3B%2Fusr%2Fsbin%2Ftelnetd
Где <STOK> это цифробуквенный код с обычного web-интерфеса, мой видно на скриншоте.
Получаю правильную ошибку, и ввожу следующий запрос:
http://192.168.31.1/cgi-bin/luci/;stok=<STOK>/api/xqsystem/set_name_password?oldPwd=<CURRENTPASS>&newPwd=<NEWPASS>
Где <CURRENTPASS> это установленный на этапе настройки пароль доступа к вебморде (кстати в родной прошивке он ключ к Wi-Fi) и <NEWPASS>, соответственно новый пароль. Открываем консольку и телнетом перешиваем, последовательно вводя несколько команд - загрузка прошивки OpenWrt, проверка расположения MTD и собственно прошивка. Ниже привожу просто копипаст из терминала.
kharlashkin@asus-K56CB:~$ telnet 192.168.31.1 Trying 192.168.31.1... Connected to 192.168.31.1. Escape character is '^]'. XiaoQiang login: root Password: BusyBox v1.19.4 (2015-03-20 10:08:59 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. ----------------------------------------------------- Welcome to XiaoQiang! ----------------------------------------------------- root@XiaoQiang:~# cd /tmp; wget http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin --2017-07-16 03:36:31-- http://downloads.openwrt.org/chaos_calmer/15.05.1/ramips/mt7620/openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin Resolving downloads.openwrt.org... 78.24.191.177 Connecting to downloads.openwrt.org|78.24.191.177|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3670020 (3.5M) [application/octet-stream] Saving to: 'openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin' 100%[======================================>] 3,670,020 2.61M/s in 1.3s 2017-07-16 03:36:33 (2.61 MB/s) - 'openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin' saved [3670020/3670020] root@XiaoQiang:/tmp# cat /proc/mtd dev: size erasesize name mtd0: 01000000 00010000 "ALL" mtd1: 00030000 00010000 "Bootloader" mtd2: 00010000 00010000 "Config" mtd3: 00010000 00010000 "Factory" mtd4: 00c80000 00010000 "OS1" mtd5: 00b21c3e 00010000 "rootfs" mtd6: 00200000 00010000 "OS2" mtd7: 00100000 00010000 "overlay" mtd8: 00010000 00010000 "crash" mtd9: 00010000 00010000 "reserved" mtd10: 00010000 00010000 "Bdata" root@XiaoQiang:/tmp# mtd -r write openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mi ni-squashfs-sysupgrade.bin OS1 Unlocking OS1 ... Writing from openwrt-15.05.1-ramips-mt7620-xiaomi-miwifi-mini-squashfs-sysupgrade.bin to OS1 ... Rebooting ...
После перезагрузки увидя активное сетевое подключения и посмотрев адрес полученный от dhcp - 192.168.1.115 я возликовал, а зайдя в веб-интерфейс и увидев OpenWrt - вдвойне ;)
- 1
-
Прошла гроза, сгорел мой добрый Asus RT-N16. Вот взял во временное пользование у знакомого железку попользоваться, теперь есть некоторое время ломать голову покупкой нового маршрутизатора. Денег много как то вообще не готов отдавать, потому как гроза за собой потянула и стационарный комп (пока масштаб бедствий не известен).
Что нужно - usb, пара внутренних портов и наверное AC. Разумеется чтобы работало это все под OpenWRT. Вот смотрю в сторону Xiaomi Mini, кто что думает?
- 1
-
Как-то позабылась тема. В основном из-за того, что много пересекающихся связей между маршрутизатором и ардуинкой ;)
Как-то статья мимо меня прошла - "Умный обход блокировок в Украине". Ну и ссылка на репозиторий.
- 1
-
умерла так умерла.Приехала новая "тинька". Как не странно, всё завелось "с пол пинка".
'Код Digispark'
#include "SoftSerial.h" #include "TinyPinChange.h" SoftSerial mySerial(3, 4); #define ControlSimistor 1 // Выход на симистор, физический порт P1 #define ControlZero 2 // Вход контроля перехода через 0, физический порт P2 volatile byte dimming = 0; // Начальное значение мощности void setup() { mySerial.begin(9600); pinMode(ControlSimistor, OUTPUT); // Включаем работу выхода на симистор pinMode(ControlZero, INPUT); // Переключаем контроль перехода через 0 на выход digitalWrite(ControlZero, HIGH); // Активируем контроль перехода через 0 attachInterrupt(0, zero, RISING); // Внешнее прерывание контроля перехода через ноль } void zero() // Если есть переход через 0 { if (dimming >= 255) // Если задано максимальное значение { digitalWrite(ControlSimistor, HIGH); // Тиристор постоянно открыт } else if (dimming <= 10) // Если минимум { digitalWrite(ControlSimistor, LOW); // Тиристор закрыт } else if (dimming > 10 && dimming < 255) // Если не минимум и не максимум { digitalWrite(ControlSimistor, LOW); // Сначала закрываем delayMicroseconds((5100 - dimming * 20)); // Ждем digitalWrite(ControlSimistor, HIGH); // Открываем тиристор } } void loop() { if (mySerial.available()) { dimming = mySerial.read(); } }
'Код Arduino'
#include "SoftwareSerial.h" SoftwareSerial mySerial(10, 11); // Задаем программный порт на 10 и 11 портах volatile byte dimming = 0; // Начальное значение мощности void setup() { Serial.begin(57600); // Включаем порт с ПК mySerial.begin(9600); // Включаем порт с Attiny85 } void loop() { if (Serial.available()) // Если порт открыт { dimming = Serial.parseInt(); // Считываем данные и находим в них целое число mySerial.write(dimming); // Отправляем значение мощности в Attiny85 } }
Есть багофича - значения менее 17 тинька отрабатывает но вентилятор не крутится. Думаю переделать на более вменяемые значения мощности :)
P.S. Думаю что первоначальная платка имела брак - потому как новая завелась под Ubuntu на рабочем ноуте без "бубна";)
- 1
-
Сегодня получилось уделить немного времени подключению ардуинки по Bluetooth. Платка где-то месяц уже у меня не все никак руки не доходили.
Итак, платка вот такая HC-06 (фото не мое):
Перво-наперво нужно настроить модуль для работы, думаю понятно что скорость 9600 б/с будет маловата. Инструкций в интернетах несколько, попробовав некоторые - привожу что и как получилось у меня. В качестве транслятора команд для настройки модуля я использовал саму ардуинку.
Собственно код, который позволяет обмен данными между ПК и модулем:
#include <SoftwareSerial.h> #include <Time.h> int gLedPin = 13; int gRxPin = 10; // Pin-ы подключения модуля int gTxPin = 11; SoftwareSerial BTSerial(gRxPin, gTxPin); void setup() { // Настраиваем скорости обмена от ПК в ардуину и в модуль BTSerial.begin(9600); Serial.begin(38400); delay(500); } void loop() { if (BTSerial.available()) { Serial.write(BTSerial.read()); } if (Serial.available()) { BTSerial.write(Serial.read()); } }
Для работы с модулем корректно завелась программка терминала HMComAssistant (архив приложил). Остальные могли только одну команду "AT", т.е. не поменять ни скорость, ни пин-код, ни посмотреть версию прошивки не смогли.
Так же прилагаю документ с AT-командами.
P.S. Собственно я уже попробовал крутить кубик в Blender через беспроводной интерфейс ;) Жду в течении 7/10 дней портативный аккумулятор и буду делать более корректное видео кручения автономного кубика (привет Portal/Portal2) + причесывать код.
-
Чет, не могу считать данные магнитометра. Код для получения кватерниона с помощью DMP брал отсюда (улыбнуло размещение сайта - kr).
Относительно управления платформой кватернионами, нашел интересную статью - "Применение кватернионов в задачах наведения антенной системы ретранслятора связи на беспилотном летательном аппарате". Решается задача подобная моей для антенны с 3-мя степенями свободы, а чтобы получить 6 степеней нужно наверное будет использовать бикватернионы. Кому интересно статья во вложении.
-
Прочел книгу про кватернионы и трехмерную геометрию, начал заново копать ориентацию в пространстве с помощью MPU-9250. Набаловавшись до "не могу" со всякими фильтрами Маджвика, Махони и Калмана и так и не получив внятную картинку в Blender - пошел по пути наименьшего сопротивления. А если быть точным решил попробовать DMP (digital motion process), который по-умолчанию есть в датчике. Результат на видео.
Если я правильно понимаю, то для более точного позиционирования (а кубик гуляет по оси Z где то секунд 10, в самом начале), нужно дополнительно забирать данные магнитометра и корректировать полученный из DMP кватернион.
- 1
-
постоянная необходимость "идти на поклон" к разработчикам чтобы поддерживать "актуальность/совместимость с настоящем патчем"в свое время убила моё желание публиковать моды на res-mods.ru.
Отписываюсь по результатам публикации мода - может кому интересно будет. Отправил на модерацию мод изменения разрешения в игре менее чем 1024х768 (например для нетбуков 1024х600 или 720р - 1280х720). Поле нескольких часов пришел ответ от проверяющего - что нельзя нажать кнопку применить :)
Тут как бы и моя ошибка - не указал явно что перед установкой нужно выставить "Масштабирование интерфейса" в позицию "х1", хотя на приложенном скриншоте это явно видно:
Ну да ладно, добавил строчку о необходимости, добавил скриншот с явно выделенным масштабированием, отправил повторно.
Ну собственно практически то что и требовалось доказать от момента отправки мода на модерацию, до выставления его на портале возможно пройдут не одни сутки - при чем не факт что проверяющий одюжит установку и тестирование, если даже не постарался привести настройки графики, для примера как у меня на скриншоте, или через портал отправить мне сообщение уточняющего характера (уверен, что доступ к электронным адресам у WG есть).
Тупо не сработало - нафиг, теперь опять ждите сутки или больше - именно про это я говорил в упоминании "идти на поклон". Тестировщик/модератор, имхо, должен помогать мододелам правильно оформлять и дополнять описания. В следующий раз когда патч клиента сделает невозможным использовать мод - проще выложить рабочий через тот же гугль-диск, чем ждать.
- 5
-
Ну у меня на ПКМ все как и было.
Обновлённый форум
in About Korean Random
Posted
Когда то давно на форуме обсуждался этот бот, и встал вопрос откуда у бота положительный рейтинг и кто ему его накручивает. ИМХО, я не хочу чтобы роботы захватили планету и возложил на себя миссию по уменьшению важности бота на форуме ;)