Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Алхам 2: Замуудыг тохируулна уу
- Алхам 3: Хүрээлэн буй орчныг тохируулах
- Алхам 4: GiggleBot програмчлах
- Алхам 5: Үүнийг ажиллуулах
Видео: Python ашиглан GiggleBot мөр дагагч: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Энэ удаад бид MicroPython-д Dexter Industries GiggleBot програмыг суурилуулсан мөр дагалдах мэдрэгч ашиглан хар шугамыг дагахаар програмчилж байна.
GiggleBot -ийг зохих ёсоор хянахын тулд BBC micro: bit -тэй хослуулах ёстой.
Хэрэв энэ заавар танд хэтэрхий дэвшилтэт бөгөөд GiggleBot програмчлах нь одоогоор хэтэрхий их байгаа бол та роботыг MakeCode дээр хэрхэн програмчлах боломжтойг харуулах зааварчилгааг үргэлж үзэх боломжтой. Холбоотой заавар нь танд үндсэн мэдлэгийг өгөх болно.
Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
Дараахь тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүд шаардлагатай болно.
- x3 AA батерей - миний хувьд би бага хүчдэлтэй цэнэглэдэг батерей ашигладаг.
- Dexter Industries GiggleBot робот нь микро: бит.
- BBC микро: жаахан.
Мэдээжийн хэрэг, танд BBC micro: bit програмчлахад микро USB кабель хэрэгтэй болно - энэ кабель нь ерөнхийдөө BBC micro: bit -ийн багцад багтдаг эсвэл та ухаалаг гар утсаа цэнэглэхэд ашигладаг кабелийг үргэлж ашиглаж болно.
GiggleBot -ийг микро: битээс аваарай
Алхам 2: Замуудыг тохируулна уу
Та хэдэн плита хэвлэж, өөрийн замаа зохиох хэрэгтэй болно. Та манай хавтанг ашиглаж болно, ингэснээр та бидний нөхцөлийг хуулбарлаж байгаа гэдэгт 100% итгэлтэй байна. Эсвэл танд адал явдалтай санагдаж байвал хар соронзон хальс ашиглаж өөрөө хийж болно. Бидний ашигласан хавтангуудын PDF файл энд байна.
Дээрх зам нь дараах тооны өөр өөр хавтангуудаас бүрдэнэ.
- №1 төрлийн 12 хавтан.
- №2 төрлийн 5 хавтан.
- №5 хавтангийн 3 загвар.
- №6 хавтангийн 3 загвар - энд та нэг нэмэлт хавтан авах болно.
Дараа нь тэдгээрийг хэвлээд хайчилж ав. Дээрх зурган дээрх шиг тэдгээрийг байрлуулж үзээрэй, замын баруун дээд талд 2 хавтан хоорондоо давхцах ёстой гэдгийг санаарай - хэрэв та буруу зүйл хийж байгаа бол гэж бодож байгаа бол үүнийг хийх болно.
Алхам 3: Хүрээлэн буй орчныг тохируулах
Та BBC micro: bit -ийг MicroPython -д програмчлах боломжтой байхын тулд түүнд зориулж редактор (Mu Editor) тохируулж, GiggleBot MicroPython Runtime -ийг ажлын цаг болгон тохируулах ёстой. Үүнийг хийхийн тулд та энэ хуудсан дээрх зааврыг дагаж мөрдөх ёстой. Одоогийн байдлаар ажлын цагийн v0.4.0 хувилбарыг ашиглаж байна.
Алхам 4: GiggleBot програмчлах
Үүнийг ойлгохын өмнө GiggleBot MicroPython -ийн ажиллах хугацаа нь GiggleBot болон бусад Dexter Industries мэдрэгчийг дэмжих зорилгоор BBC micro: bit болон бусад номын сангуудын сонгодог ажиллах хугацааг агуулдаг.
Үүнийг тохируулсны дараа Му редактороос дараах скриптийг нээгээд Flash дээр дарна уу. Энэ нь GiggleBot MicroPython Runtime болон таны саяхан нээсэн BBC скриптийг гэрэлтүүлэх болно. Скриптийг мөн доор харуулав.
Гялалзах процесс дууссаны дараа BBC micro: bit -ийг GiggleBot руу самбарын неопикселийг урагш харуулан байрлуулж, зам дээр байрлуулаад асаана уу.
Скрипт дээр PID болон бусад 2 тогтмол (хурдны тогтоосон цэг ба хамгийн бага хурдны тогтмол) аль хэдийн тохируулагдсан болохыг анхаарна уу.
Тэмдэглэл: Дараах скриптэд хоосон зай байхгүй байж магадгүй бөгөөд энэ нь GitHub Gists -ийг харуулахад гарсан зарим асуудлаас үүдэлтэй юм шиг байна. Голыг нь дарж кодоо GitHub хуудас руу аваачна уу, та кодыг хуулж буулгах боломжтой.
GiggleBot PID шугамын дагалдагч - NeoPixels ашиглан тохируулагдсан
микробит импортоос* |
gigglebot импортоос* |
utime импортоос sleep_ms, ticks_us |
бүтцийг импортлох |
# GB неопикселийг эхлүүлэх |
нео = эхлэл () |
# цаг |
update_rate = 50 |
# ашиг/тогтмол (зайны хүчдэл 4.0 вольт орчим гэж үзвэл) |
Kp = 25.0 |
Ки = 0.5 |
Kd = 35.0 |
trigger_point = 0.3 |
min_speed_percent = 0.3 |
үндсэн хурд = 70 |
тогтоосон цэг = 0.5 |
last_position = тогтоосон цэг |
интеграл = 0.0 |
run_neopixels = Үнэн |
center_pixel = 5#, инээмсэглэлийн төв пиксел нь GB дээр байрладаг |
# turquoise = tuple (газрын зураг (lambda x: int (x / 5), (64, 224, 208))) # неопикселийн тусламжтайгаар алдаа гаргахад ашиглах өнгө |
# оюу = (12, 44, 41) # энэ нь яг дээрх дээрх оюу юм |
error_width_per_pixel = 0.5/3# max алдаа нь неопиксел бүрийн хоорондох сегментийн тоогоор хуваагддаг |
defupper_bound_linear_speed_reducer (abs_error, trigger_point, дээд_холбоотой, хамгийн бага_мотор_хүч, хамгийн их_мотор_хүч): |
дэлхийн үндсэн хурд |
хэрэв abs_error> = trigger_point: |
# x0 = 0.0 |
# y0 = 0.0 |
# x1 = дээд_холбоотой - гох цэг |
# y1 = 1.0 |
# x = abs_error - гох цэг |
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0) |
# шиг |
y = (abs_error - trigger_point) / (top_bound - trigger_point) |
моторын хүч = суурийн хурд * (хамгийн бага_мотор_хүч + (1- y) * (хамгийн их_хүчний - хамгийн бага_мотор_хүч)) |
моторын хүчийг буцаана |
өөр: |
буцах үндсэн хурд. * хамгийн их_мотор_хүч |
ажиллуулах = Худал |
өмнөх_ алдаа = 0 |
whileTrue: |
# а товчлуур дарагдсан бол дагаж эхэлнэ үү |
хэрэв button_a.is_pressed (): |
гүйх = Үнэн |
# гэхдээ b товчлуур дарагдсан бол мөр дагагчийг зогсооно уу |
хэрэв button_b.is_pressed (): |
ажиллуулах = Худал |
интеграл = 0.0 |
өмнөх_ алдаа = 0.0 |
piksel_off () |
Зогс() |
унтах_мин (500) |
хэрэв ажиллуулах нь үнэн бол: |
# шугамын мэдрэгчийг уншина уу |
start_time = ticks_us () |
баруун, зүүн = уншсан_ мэдрэгч (LINE_SENSOR, BOTH) |
<0.5 байрлалтай үед # мөр зүүн талд байна |
Байрлал> 0.5 байхад # мөр баруун талд байна |
Байрлал = 0.5 байхад # мөр дунд байна |
# энэ нь жинлэсэн арифметик дундаж юм |
оролдоно уу: |
байрлал = баруун /хөвөх (зүүн + баруун) |
ZeroDivisionError -ээс бусад: |
байрлал = 0.5 |
# муж нь [0, 1] байх ёстой бөгөөд [0, 1] биш |
хэрэв байрлал == 0: байрлал = 0.001 |
хэрэв байрлал == 1: байрлал = 0.999 |
# PD хянагч ашиглах |
алдаа = байрлал - тогтоосон цэг |
интеграл += алдаа |
залруулга = Kp * алдаа + Ki * интеграл + Kd * (алдаа - өмнөх_ алдаа) |
previous_error = алдаа |
# моторын хурдыг тооцоолох |
motor_speed = дээд хязгаарын шугаман_хурдааг бууруулагч (abs (алдаа), setpoint * trigger_point, setpoint, min_speed_percent, 1.0) |
leftMotorSpeed = motor_speed + залруулга |
rightMotorSpeed = motor_speed - залруулга |
Өгөгдсөн алдааны дагуу неопикселийг гэрэлтүүлээрэй |
хэрэв run_neopixels isTrueand total_counts %3 == 0 бол: |
i inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08' хувьд: |
нео = (0, 0, 0) |
i inb '\ x00 / x01 / x02 / x03' хувьд: |
ifabs (алдаа)> error_width_per_pixel * i: |
хэрэв алдаа <0: |
# нео [төв_пиксел + i] = оюу |
нео [center_pixel + i] = (12, 44, 41) |
өөр: |
# нео [төв_пиксел - i] = оюу |
нео [center_pixel + i] = (12, 44, 41) |
өөр: |
хувь = 1- (error_width_per_pixel * i -abs (error)) / error_width_per_pixel |
# одоогийн пикселийг гэрэлтүүлэх |
хэрэв алдаа <0: |
# neo [center_pixel + i] = tuple (газрын зураг (lambda x: int (x * хувь), оюу)) |
neo [center_pixel + i] = (int (64* хувь /5), int (224* хувь /5), int (208* хувь /5)) |
өөр: |
# neo [center_pixel - i] = tuple (газрын зураг (lambda x: int (x * хувь), оюу)) |
нео [center_pixel - i] = (int (64* хувь /5), int (224* хувь /5), int (208* хувь /5)) |
завсарлага |
neo.show () |
оролдоно уу: |
# моторын хурдыг хавчих |
solMotorSpeed> 100: |
leftMotorSpeed = 100 |
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100 |
Хэрэв зөвMotorSpeed> 100: |
rightMotorSpeed = 100 |
leftMotorSpeed = leftMotorSpeed - rightMotorSpeed +100 |
Хэрэв үлдсэн болMotorSpeed <-100: |
leftMotorSpeed = -100 |
Хэрэв зөвMotorSpeed <-100: |
rightMotorSpeed = -100 |
# моторыг ажиллуулах |
set_speed (зүүнMotorSpeed, баруунMotorSpeed) |
жолоодох () |
# хэвлэх ((алдаа, моторын хурд)) |
бусад: |
Хэрэв бид шийдэгдээгүй асуудалтай тулгарвал |
дамжуулах |
# ба давталтын давтамжийг хадгалах |
төгсгөл_ цаг = ticks_us () |
delay_diff = (end_time - start_time) /1000 |
if1000.0/ update_rate - delay_diff> 0: |
унтах (1000.0/ update_rate - delay_diff) |
rawgigglebot_tuned_line_follower.py -г GitHub -аас ❤ -аар зохион байгуулсныг үзэх
Алхам 5: Үүнийг ажиллуулах
BBC micro: bit: A товчлуур ба B товчлуур дээр 2 товчлуур байна:
- А товчлуурыг дарахад GiggleBot -ийг мөрийг дагахаар тохируулна (хэрэв байгаа бол).
- B товчлуур дээр дарахад GiggleBot зогсох бөгөөд бүх зүйлийг дахин тохируулах бөгөөд ингэснээр та үүнийг дахин ашиглах боломжтой болно.
GiggleBot -ийг мөр мөрдөж байх үед өргөж болохгүй, дараа нь буцааж тавихыг зөвлөж байна. Хэрэв та үүнийг өргөхийг хүсч байвал B товчлуур дээр дараад буцааж тавихдаа А товчийг дарна уу.
Зөвлөмж болгож буй:
Arduino Uno болон L298N -ийг ашиглан мөр дагагч робот: 5 алхам
Arduino Uno ба L298N ашиглан шугамын дагалдагч робот: Line Flower бол эхлэгч электроникийн хувьд маш энгийн робот юм
Arduino ашиглан энгийн мөр дагагч: 5 алхам
Arduino ашиглан энгийн мөр дагагч: Arduino шугам дагагч робот Энэхүү гарын авлагад бид цагаан дэвсгэр дээр хар шугамыг дагаж, замдаа муруй хүрэх үед зөв эргэлт хийх Arduino шугамын дараах роботын талаар ярилцах болно. Arduino Line Follower Co
Arduino ашиглан мөр дагагч - Хялбар DIY төсөл: 6 алхам
Arduino ашиглан мөр дагагч | Хялбар DIY төсөл: Энэхүү гарын авлагад бид ArduinoParts хэрэгтэй: Chasis: BO Motors and Wheels: https://amzn.to/2Yjh9I7 L298n моторын драйвер: https://amzn.to/2IWNMWF IR мэдрэгч ашиглан шугам дагагч хийх болно. : https://amzn.to/2FFtFu3 Arduino Uno: https://amzn.to/2FyTrjF J
WitBlox ашиглан мөр дагагч робот: 3 алхам
WitBlox ашиглан шугам дагагч робот: Робот бүтээх нь биднийг үргэлж сэтгэл хөдөлгөдөг. Бие даан шийдвэр гаргах чадвартай ухаалаг робот бүтээх нь бүр ч сэтгэл хөдөлгөм юм. Өнөөдөр WitBlox ашиглан шугам дагагч робот бүтээцгээе. Шугам дагагч бол бие даасан робот бөгөөд хоёр блэкийг дагадаг
Arduino ашиглан мөр дагагч хэрхэн хийх вэ: 8 алхам (зурагтай)
Arduino ашиглан мөр дагагчийг хэрхэн яаж хийх вэ: Хэрэв та робот техникийг ашиглаж эхэлж байгаа бол эхлэгчдийн хийж буй анхны төслүүдийн нэг нь шугам дагагчтай болно. Энэ бол ердийн хар өнгөтэй, арын дэвсгэрээс ялгаатай шугамын дагуу явах зориулалттай тусгай тоглоомон машин юм. Од авцгаая