Съдържание:
- Стъпка 1: Защо да използвате инерционна измервателна единица?
- Стъпка 2: Как да използвате BNO055 за 2D локализация?
- Стъпка 3: Хардуерна точка на Vue
- Стъпка 4: Как работи?
- Стъпка 5: Архитектурата и софтуерът
- Стъпка 6: Какво научих?
Видео: Начин за използване на инерционна измервателна единица?: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Контекстът:
Изграждам за забавление робот, който искам да се движи автономно в къща.
Това е дълга работа и върша стъпка по стъпка.
Вече публикувах 2 инструкции по тази тема:
- един за направата на енкодер на колела
- един за wifi връзката
Моят робот се задвижва от 2 DC двигателя с помощта на домашния ми енкодер на колела.
В момента подобрявам движещото се управление и прекарах известно време с жироскоп, акселерометър и IMU. С удоволствие ще споделя този опит.
Искате ли да знаете повече за локализацията? Ето една статия за това как да комбинирате изкуствен интелект и ултразвук за локализиране на робота
Стъпка 1: Защо да използвате инерционна измервателна единица?
И така, защо използвах IMU?
Първата причина беше, че ако енкодерът на колелото е достатъчно прецизен, за да контролира правото движение, дори след тунинг не успях да получа точност за въртене под +- 5 градуса и това не е достатъчно.
Затова опитах 2 различни сензора. Първо използвам магнитометър (LSM303D). Принципът беше прост: преди въртенето да се ориентира на север, изчислете целта и регулирайте хода, докато целта бъде достигната. Беше малко по -добре, отколкото с енкодера, но с твърде разсейване. След това се опитах да използвам жироскоп (L3GD20). Принципът беше просто да се интегрира скоростта на въртене, осигурена от сензора за изчисляване на въртенето. И работи добре. Успях да контролирам въртенето при +- 1 градус.
Въпреки това ми беше любопитно да опитам някои IMU. Избирам компонент BNO055. Прекарах известно време, за да разбера и тествам този IMU. В крайна сметка реших да избера този сензор поради следните причини
- Мога да контролирам въртенето, както и с L3GD20
- Мога да открия леко завъртане при движение право
- Трябва да получа северна ориентация за локализацията на робота и калибрирането на компаса на BNO055 е много просто
Стъпка 2: Как да използвате BNO055 за 2D локализация?
BNO055 IMU е 9 -осен интелигентен сензор на Bosch, който може да осигури абсолютна ориентация.
Информационният лист предоставя пълна документация. Това е високотехнологичен компонент, доста сложен продукт и прекарах няколко часа, за да науча как работи и да опитам различни начини да го използвам.
Мисля, че би било полезно да споделите този опит.
Първо използвах библиотеката Adafruit, която предоставя добър инструмент за калибриране и откриване на сензора.
В края и след много тестове реших да го направя
- използвайте библиотеката Adafruit само за запазване на калибрирането
- използвайте 3 от всички възможни режими на BNO055 (NDOF, IMU, Compss)
- посвети Arduino Nano за изчисляване на локализация въз основа на BNO055 съобщения
Стъпка 3: Хардуерна точка на Vue
BNO055 е I2C компонент. Така че се нуждае от захранване, SDA и SCL за комуникация.
Просто внимавайте за Vdd напрежение според продукта, който сте закупили. Чипът на Bosch работи в диапазона: 2.4V до 3.6V и можете да намерите 3.3v и 5v компонент.
Няма трудности при свързването на Nano и BNO055.
- BNO055 се захранва от Nano
- SDA и SCL са свързани с 2 x 2k издърпващи се резистори.
- 3 светодиода, свързани към Nano за диагностика (с резистори)
- 2 конектора, използвани за определяне на режима след зареждане
- 1 конектор към BNO (Gnd, Vdd, Sda, Scl, Int)
- 1 конектор към робота/мега (+9V, Gnd, sda, Scl, Pin11, Pin12)
Малко запояване и това е всичко!
Стъпка 4: Как работи?
От точката на комуникация на vue:
- Nano е майсторът на автобуса I2C
- Роботът/Mega и BNO055 са I2C роби
- Nano постоянно чете регистрите BNO055
- Роботът/Мега издига цифров сигнал, за да поиска думата от Nano
От точката на изчисление на vue: Nano в комбинация с BNO055 доставя
- Заглавието на компаса (използва се за локализация)
- Относителна заглавие (използва се за контрол на завъртанията)
- Абсолютната позиция и позиция (използва се за контрол на ходовете)
От функционална гледна точка на vue: The Nano:
- управлява калибрирането на BNO055
- управлява параметрите и командите BNO055
Подсистемата Nano & BNO055:
- изчислява за всяко колело на робота абсолютната позиция и локализация (с мащабен коефициент)
- изчислява относителния курс по време на въртене на робота
Стъпка 5: Архитектурата и софтуерът
Основният софтуер работи на Arduino Nano
- Архитектурата се основава на I2C комуникация.
- Избрах да посветя Nano поради факта, че Atmega, която управлява робота, по -скоро вече беше заредена и тази архитектура улеснява повторното използване на друго място.
- Nano чете регистрите BNO055, изчислява и съхранява заглавие и локализация в собствените си регистри.
- Arduino Atmega, който изпълнява кода на робота, изпраща информация за енкодери на колела до Nano и чете заглавията и локализацията в регистрите на Nano.
Кодът на подсистемата (Nano) е достъпен тук на GitHub
Инструментът за калибриране на Adafruit, ако е тук на GitHub (калибрирането ще се съхранява в eeproom)
Стъпка 6: Какво научих?
Относно I2C
Първо се опитах да имам 2 мастера (Arduino) и 1 подчинен (сензор) на една и съща шина, но в крайна сметка е възможно и най -лесно да задам само Nano като главен и да използвам GPIO връзката между 2 Arduinos, за да „поиска токена“.
Относно BNO055 за 2D ориентация
Мога да се концентрирам върху 3 различни режима на работа: NDOF (комбиниране на жироскоп, акселерометър и компас), когато роботът е празен, IMU (комбиниран жироскоп, акселерометър), когато роботът се движи, и компас по време на фазата на локализация. Превключването между тези режими е лесно и бързо.
За да намалите размера на кода и да запазите възможността да използвате прекъсване BNO055 за откриване на сблъсък, предпочитам да не използвам библиотеката Adafruit и да го правя сам.
Препоръчано:
Г -н Биг (мобилна единица, носеща тегло): 4 стъпки
Г -н Биг (Мобилна единица за пренасяне на тежести): Това е първата ми инструкция, затова моля за извинение за всяка грешка предварително. Назад в дома ми по време на лятната ваканция всички в къщата ме помолиха да донеса техните неща от другите стаи . Всичко беше наред, ако материалът беше малък или ограничен в n
Интелигентен измервателен уред с автоматична единица за корекция на фактора на мощността: 29 стъпки
Интелигентен измервателен уред с автоматична единица за корекция на фактора на мощността: Двупосочен измервател с притурка за автоматично изменение на коефициента на мощност разглежда активната и реактивната мощност и освен това коефициента на мощност от напрежението на линията и тока на линията от сензора за напрежение и ток
Направете подходяща единица за експониране на печатни платки от евтина UV лампа за втвърдяване на нокти: 12 стъпки (със снимки)
Направете подходяща единица за експониране на печатни платки от евтина UV лампа за втвърдяване на ноктите: Какво общо имат производството на печатни платки и фалшивите нокти? И двамата използват източници на ултравиолетова светлина с висока интензивност и, ако има късмет, тези източници на светлина имат точно същата дължина на вълната. Само тези за производство на печатни платки обикновено са доста скъпи
HC - 06 (Подчинен модул) Промяна на „ИМЕ“без използване „Монитор сериен Arduino“който „Работи лесно“: Безпроблемен начин!: 3 стъпки
HC - 06 (Подчинен модул) Промяна на „ИМЕ“без използване „Монитор на сериен Arduino“… който „Работи лесно“: Безпроблемен начин!: След " Дълго време " опит за промяна на името на HC - 06 (подчинен модул), използвайки " сериен монитор на Arduino, без " Успех ", намерих друг лесен начин и споделям сега! Забавлявайте се приятели
Измервателна лента: 7 стъпки
Измерващ говорител: Добре всички, това е първият ми инструктаж, така че моля коментирайте. Е, отегчих се и имах счупена лента наоколо и реших да направя кутия за високоговорители от нея. Това е забавен и прост проект. Това също е наистина страхотно, ако новият ви е продаден