Мазмұны:

Инерциялық өлшеу қондырғысын қолдану әдісі?: 6 қадам
Инерциялық өлшеу қондырғысын қолдану әдісі?: 6 қадам

Бейне: Инерциялық өлшеу қондырғысын қолдану әдісі?: 6 қадам

Бейне: Инерциялық өлшеу қондырғысын қолдану әдісі?: 6 қадам
Бейне: Жол төсемдері 1 дәріс 2024, Қараша
Anonim
Инерциялық өлшем бірлігін қолдану әдісі?
Инерциялық өлшем бірлігін қолдану әдісі?

Мәтінмән:

Мен ермек үшін үйдің ішінде автономды түрде қозғалатын робот жасап жатырмын.

Бұл ұзақ жұмыс, мен біртіндеп жасаймын.

Мен осы тақырып бойынша 2 нұсқаулықты жарияладым:

  • Дөңгелек кодер жасау туралы
  • wifi байланысы туралы

Менің роботымды үйдегі доңғалақ кодерінің көмегімен тұрақты токтың 2 қозғалтқышымен басқарады.

Мен қазір қозғалыстағы басқаруды жетілдіріп жатырмын және біраз уақытты гироскоппен, акселерометрмен және ХБҚ -мен өткіздім. Мен бұл тәжірибемен бөлісуге қуаныштымын.

Локализация туралы көбірек білгіңіз келе ме? Міне, роботты локализациялау үшін жасанды интеллект пен ультрадыбысты қалай біріктіру керектігі туралы мақала

1 -қадам: Неліктен инерциялық өлшеу қондырғысын қолдану керек?

Неліктен инерциялық өлшем бірлігін қолдану керек?
Неліктен инерциялық өлшем бірлігін қолдану керек?

Неліктен мен ИМУ -ды қолдандым?

Бірінші себеп, егер доңғалақты кодер тура қозғалысты басқаруға жеткілікті дәл болса, тіпті баптаудан кейін де мен +- 5 градустан төмен айналу дәлдігін ала алмадым және бұл жеткіліксіз.

Сондықтан мен 2 түрлі сенсорды сынап көрдім. Алдымен мен магнитометрді қолданамын (LSM303D). Принцип қарапайым болды: айналу алдында солтүстік бағытты алыңыз, мақсатты есептеңіз және мақсатқа жеткенше қозғалысты реттеңіз. Бұл кодермен салыстырғанда сәл жақсы болды, бірақ тым дисперсиялық. Осыдан кейін мен гироскопты (L3GD20) қолдануға тырыстым. Принцип айналуды есептеу үшін сенсор беретін айналу жылдамдығын біріктіру болды. Және ол жақсы жұмыс істеді. Мен айналуды +- 1 градуста басқара алдым.

Соған қарамастан, мен ӨИҚ -ты сынап көруге қызығатынмын. Мен BNO055 компонентін таңдаймын. Мен осы ӨДБ -ды түсінуге және сынауға біраз уақыт жұмсадым. Соңында мен келесі себептерге байланысты сенсорды таңдауға шешім қабылдадым

  • Мен айналуды L3GD20 көмегімен басқара аламын
  • Мен түзу қозғалу кезінде шамалы айналуды анықтай аламын
  • Мен роботты локализациялау үшін солтүстік бағытты алуым керек және BNO055 компасын калибрлеу өте қарапайым.

2 -қадам: 2D локализация үшін BNO055 қалай қолдануға болады?

BNO055 2D локализациясы үшін қалай қолдануға болады?
BNO055 2D локализациясы үшін қалай қолдануға болады?

BNO055 IMU - бұл Bosch 9 осьтік интеллектуалды сенсор, ол абсолютті бағдар бере алады.

Мәліметтер парағы толық құжаттаманы ұсынады. Бұл жоғары технологиялық компонент, бұл өте күрделі өнім, мен оның қалай жұмыс істейтінін білуге және оны қолданудың әр түрлі әдістерін қолдануға бірнеше сағат жұмсадым.

Менің ойымша, бұл тәжірибемен бөлісу пайдалы болар еді.

Алдымен мен сенсорды калибрлеуге және ашуға жақсы құрал беретін Adafruit кітапханасын қолдандым.

Соңында және көптеген сынақтардан кейін мен шешім қабылдадым

  • тек калибрлеуді сақтау үшін Adafruit кітапханасын пайдаланыңыз
  • BNO055 (NDOF, IMU, Compss) барлық мүмкін болатын режимдерінің 3 -ін қолданыңыз.
  • BNO055 бақылауына негізделген локализацияны есептеу үшін Arduino Nano арнаңыз

3 -қадам: Vue аппараттық нүктесі

Vue аппараттық нүктесі
Vue аппараттық нүктесі
Vue аппараттық нүктесі
Vue аппараттық нүктесі
Vue аппараттық нүктесі
Vue аппараттық нүктесі

BNO055 - I2C компоненті. Сондықтан байланыс үшін оған қуат көзі, SDA және SCL қажет.

Сіз сатып алған өнімге сәйкес Vdd кернеуіне назар аударыңыз. Bosch чипі диапазонда жұмыс істейді: 2,4 В -тан 3,6 В -ға дейін, сіз 3,3 В және 5 В компоненттерін таба аласыз.

Нано мен BNO055 қосылуында ешқандай қиындықтар жоқ.

  • BNO055 нано қуатымен жұмыс істейді
  • SDA & SCL 2 x 2k тартылатын резисторлармен қосылады.
  • Диагноз қою үшін наноға қосылған 3 жарық диоды (резисторлармен)
  • Жүктеуден кейін режимді анықтау үшін 2 қосқыш қолданылады
  • BNO -ға қарай 1 коннектор (Gnd, Vdd, Sda, Scl, Int)
  • Robot/Mega қарай 1 қосқыш (+9V, Gnd, sda, Scl, Pin11, Pin12)

Кішкене дәнекерлеу және осымен!

4 -қадам: Бұл қалай жұмыс істейді?

Бұл қалай жұмыс істейді?
Бұл қалай жұмыс істейді?

Байланыс нүктесінен:

  • Нано - I2C автобус шебері
  • Robot/Mega және BNO055 - I2C құлдары
  • Нано BNO055 регистрлерін үнемі оқиды
  • Робот/Мега нанодан сөз сұрау үшін сандық сигналды көтереді

Есептеу нүктесінен: нано BNO055 -пен бірге жеткізеді

  • Компас тақырыбы (локализация үшін қолданылады)
  • Салыстырмалы тақырып (ротацияларды басқару үшін қолданылады)
  • Абсолютті тақырып және позиция (қозғалыстарды бақылау үшін қолданылады)

Функционалдық тұрғыдан: нано:

  • BNO055 калибрлеуін басқарады
  • BNO055 параметрлері мен командаларын басқарады

Nano & BNO055 ішкі жүйесі:

  • әр робот дөңгелегі үшін абсолюттік бағыт пен локализацияны есептеңіз (масштаб коэффициентімен)
  • роботты айналдыру кезінде салыстырмалы бағытты есептеңіз

5 -қадам: Сәулет және бағдарламалық қамтамасыз ету

Сәулет және бағдарламалық қамтамасыз ету
Сәулет және бағдарламалық қамтамасыз ету

Негізгі бағдарламалық қамтамасыз ету Arduino Nano -де жұмыс істейді

  • Сәулет I2C байланысына негізделген.
  • Мен нано арнауды таңдадым, себебі роботты басқаратын Atmega әлдеқайда жүктелген және бұл архитектура басқа жерде қайта пайдалануды жеңілдетеді.
  • Нано BNO055 регистрлерін оқиды, тақырыптар мен локализацияны есептейді және сақтайды.
  • Arduino Atmega робот кодын басқарады, дөңгелектерді кодтаушы туралы ақпаратты наноға жібереді және нано регистрлеріндегі тақырыптар мен локализацияны оқиды.

Ішкі жүйе (Nano) коды мұнда GitHub -да қол жетімді

Adafruit калибрлеу құралы, егер бұл жерде GitHub болса (калибрлеу бөлмесінде сақталады)

6 -қадам: Мен не үйрендім?

I2C туралы

Алдымен мен бір автобуста 2 мастер (Arduino) мен 1 құл (сенсор) болуға тырыстым, бірақ соңында тек қана наноды мастер ретінде қоюға болады және 2 Arduino арасындағы GPIO байланысын «жетонды сұрау» үшін қолдануға болады..

2D бағдарлау үшін BNO055 туралы

Мен 3 түрлі жұмыс режиміне шоғырлана аламын: робот бос тұрғанда NDOF (гироскопты, акселерометрді және компаны біріктіреді), робот қозғалғанда IMU (гироскопты, акселерометрді біріктіреді) және локализация кезеңінде компасты. Бұл режимдер арасында ауысу оңай және жылдам.

Код өлшемін азайту және соқтығысуды анықтау үшін BNO055 үзілісін қолдану мүмкіндігін сақтау үшін мен Adafruit кітапханасын пайдаланбай, оны өз бетімше жасағанды жөн көремін.

Ұсынылған: