Агуулгын хүснэгт:
- Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
- Алхам 2: Робот угсрах
- Алхам 3: Өөрийнхөө лабиринтийг үүсгээрэй - заавал биш
- Алхам 4: Хүрээлэн буй орчныг тохируулах
- Алхам 5: GiggleBot програмчлах - I хэсэг
- Алхам 6: Алсын удирдлагыг програмчлах - II хэсэг
- Алхам 7: Алсын дэлгэцийг тайлбарлах
Видео: GiggleBot ашиглан Лидар удирддаг робот хий: 8 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
Энэхүү гарын авлагад бид GiggleBot -ийг төөрдөг байшингийн бэрхшээлийг даван туулахад туслах болно.
Бид GiggleBot дээр зайны мэдрэгчийг холбосон servo суурилуулж байна. Гүйлтийн үеэр servo нь нааш цааш эргэлдэх бөгөөд ингэснээр зайны мэдрэгч нь саад тус бүр хүртэлх зайг хэмжих боломжтой болно. Энэ нь ихэвчлэн илүү үнэтэй LIDAR мэдрэгчтэй адил ажилладаг.
Үүний зэрэгцээ, GiggleBot нь энэхүү өгөгдлийг 5-аас 5-ийн LED матриц дээр саад бэрхшээлтэй харьцангуй байр сууриа харуулдаг BBC-ийн алслагдсан микро: бит рүү илгээдэг.
Таны даалгавар бол GiggleBot дээр зөвхөн BBC -ийн нөгөө микро: бит дээр үзүүлсэн зүйлийг хараад л удирдах боломжтой байх явдал юм. GiggleBot -ийг хянахын тулд алсын BBC микро: битийн товчлууруудыг ашигладаг.
Энэ хөгжилтэй санагдаж байна! Энэ асуудалд оръё, тийм үү?
Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд
Бидэнд хэрэгтэй болно:
- GiggleBot.
- BBC микро: битийн батерейны багц. Энэ нь BBC micro: bit -тэй хамт ирдэг.
- GiggleBot -д зориулсан x3 АА батерей.
- GiggleBot руу зайны мэдрэгчийг холбох Grove кабель.
- DexterIndustries -ийн Servo хэрэгсэл.
- x3 BBC микро: бит. Нэг нь GiggleBot -д зориулагдсан, нөгөө нь роботыг алсаас удирддаг байв.
- DexterIndustries -ийн зайн мэдрэгч.
BBC micro -ийн GiggleBot роботыг эндээс аваарай!
Алхам 2: Робот угсрах
GiggleBot -ийг програмчлахад бэлэн болгохын тулд бид үүнийг угсрах хэрэгтэй, гэхдээ тийм ч их зүйл хийх шаардлагагүй.
3 АА батерейг GiggleBot -ийн доор байрлах тасалгаандаа оруулна уу.
Серво багцыг угсарна уу. Серво эргэдэг гартаа сүүлчийн нүхийг ашиглан servo -ийг GiggleBot -ийн урд талын холбогч дээр бэхлээрэй. Түүнийг илүү тогтвортой байлгахын тулд та шураг ба/эсвэл зарим утсыг ашиглаж болно. Эсвэл та үүнийг самбар дээр халуун цавуугаар хийж болно. Миний хувьд, би шураг, богино утас ашиглан servo гарыг GiggleBot самбар дээр уяв.
Servo гарыг servo дээр холбохдоо servo аль хэдийн 80 -р байрлалд тохируулагдсан эсэхийг шалгаарай. Та gigglebot.set_servo (gigglebot. RIGHT, 80) руу залгаж үүнийг хийж болно. Та эндээс илүү ихийг уншиж болно.
Дараа нь зайны мэдрэгчийг servo багцын урд талд байрлуулж дээрх жишээн дээрх шиг засна.
Эцэст нь, зайны мэдрэгчийг Grove кабелиар 2 I2C порт болон servo моторыг GiggleBot дээр сууж буй зөв порт руу холбоно уу.
Алхам 3: Өөрийнхөө лабиринтийг үүсгээрэй - заавал биш
Энэ тохиолдолд би олон хайрцгийг ашиглан NASCAR -тай төстэй хаалттай гогцоо үүсгэсэн.
Энэ үе шатанд та үнэхээр бүтээлч байж, хүссэн хэмжээгээрээ мушгин гуйвуулж эсвэл супер урт болгож чадна, учир нь энэ нь танд хамаарна.
Эсвэл хэрэв та зам огт хүсэхгүй байгаа бол GiggleBot -ийг гал тогоо эсвэл зочны өрөөнд байрлуулж болно - энэ нь хангалттай сайн байх ёстой, учир нь та зайлсхийх хэрэгтэй олон хана, саад бэрхшээлтэй хэвээр байна.
Алхам 4: Хүрээлэн буй орчныг тохируулах
Та BBC micro: bit -ийг MicroPython -д програмчлах боломжтой байхын тулд түүнд зориулж редактор (Mu Editor) тохируулж, GiggleBot MicroPython Runtime -ийг ажлын цаг болгон тохируулах ёстой. Үүнийг хийхийн тулд та энэ хуудсан дээрх зааврыг дагаж мөрдөх ёстой. Одоогийн байдлаар ажлын цагийн v0.4.0 хувилбарыг ашиглаж байна.
Алхам 5: GiggleBot програмчлах - I хэсэг
Эхлээд GiggleBot -ийн скриптийг тохируулъя. Энэхүү скрипт нь GiggleBot -ийг servo мотороо 160 градус (чиглэл бүрт 80 градус) эргүүлэх бөгөөд нэг ээлжинд зайны мэдрэгчээс 10 уншилт авах болно.
Асаах үед GiggleBot алсын удирдлагаас тушаал хүлээн авах хүртэл зогсож байх болно. Зөвхөн 3 тушаал байж болно: урагш, зүүн эсвэл баруун тийш.
Тэмдэглэл: Дараах скриптэд хоосон зай байхгүй байж магадгүй бөгөөд энэ нь GitHub Gists -ийг харуулахад гарсан зарим асуудлаас үүдэлтэй юм шиг байна. Голыг нь дарж кодоо GitHub хуудас руу аваачна уу, та кодыг хуулж буулгах боломжтой.
Алсын удирдлагатай LIDAR дээр суурилсан GiggleBot
gigglebot импортоос* |
from distance_sensor import DistanceSensor |
микробит импортлох нойрноос |
utks импортоос ticks_us, sleep_us |
бүтцийг импортлох |
радио импортлох |
# робот аль хэдийн хөдөлж байгаа бол түүнийг зогсоо |
Зогс() |
# радио идэвхжүүлэх |
radio.on () |
# зай мэдрэгчийн объект |
ds = DistanceSensor () |
ds.start_continuous () |
rotate_time = 0.7# секундээр хэмжигддэг |
rotate_span = 160# градусаар хэмжигддэг |
rotate_steps = 10 |
нэмэлт зардал = 1.05# хувиар тодорхойлсон |
time_per_step = 10 ** 6* rotate_time / (эргүүлэх_ алхмууд* нэмэлт төлбөр) |
last_read_time = 0 |
радар = bytearray (эргүүлэх_ алхам) |
servo_rotate_direction = 0# 0 дээшээ (0-> 160), өөрөөр 1 |
radar_index = 0 |
set_servo (ЗӨВ, 0) |
whileTrue: |
# радараас уншсан |
if ticks_us () - last_read_time> step_per_step: |
# зайны мэдрэгчээс уншина уу |
радар [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
хэвлэх (radar_index) |
# servo -ийг зүүнээс баруун тийш эргүүлэх логикийг хий |
хэрэв radar_index == rotate_steps -1 ба servo_rotate_direction == 0 бол: |
set_servo (ЗӨВ, 0) |
servo_rotate_direction = 1 |
elif radar_index == 0 ба servo_rotate_direction == 1: |
set_servo (ЗӨВ, эргүүлэх_спаник) |
servo_rotate_direction = 0 |
өөр: |
radar_index += 1 хэрэв servo_rotate_direction == 0else-1 |
# болон радарын утгыг илгээнэ үү |
radio.send_bytes (радар) |
оролдоно уу: |
# роботын командыг уншина уу |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# хүлээн авсан тушаалууд байгаа бол хөдөлгүүрийг ажиллуулна уу |
set_speed (lmotor, rmotor) |
жолоодох () |
exceptTypeError: |
дамжуулах |
GitHub -ийн ❤ дээр зохион байгуулагдсан rawgigglebot_lidar_robot.py -г үзэх
Алхам 6: Алсын удирдлагыг програмчлах - II хэсэг
Үлдэх зүйл бол алсын удирдлагын үүргийг гүйцэтгэдэг 2 дахь BBC микро: битийг програмчлах явдал юм.
Алсын удирдлага нь 5-аас 5 пикселийн дэлгэц дээр саад бэрхшээлийг харьцангуй алслагдсан зайд харуулахад ашиглагддаг. Хамгийн ихдээ 10 пикселийг асаах болно.
Үүний зэрэгцээ алсын удирдлага нь GiggleBot -ийг урагш, зүүн, баруун тийш 2 товчлуур дээр дарж алсаас удирдах боломжийг танд олгож байна.
Тэмдэглэл: Дараах скриптэд хоосон зай байхгүй байж магадгүй бөгөөд энэ нь GitHub Gists -ийг харуулахад гарсан зарим асуудлаас үүдэлтэй юм шиг байна. Голыг нь дарж кодоо GitHub хуудас руу аваачна уу, та кодыг хуулж буулгах боломжтой.
Алсын удирдлагатай LIDAR дээр суурилсан GiggleBot - Алсын код
микробит импортлох унтах, дэлгэц, button_a, button_b |
бүтцийг импортлох |
радио импортлох |
математик импортлох |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# градусаар |
rotate_step = rotate_span / rotate_steps |
хамгийн их_зай = 50# сантиметр |
side_length_leds = 3 # пикселийн тоогоор хэмжигддэг |
радар = bytearray (эргүүлэх_ алхам) |
xar = bytearray (rotate_steps) |
yar = bytearray (эргүүлэх_ алхам) |
save_xar = bytearray (эргүүлэх_ алхам) |
аварсан_яр = байтраатай (эргүүлэх_ алхам) |
хөдөлгүүрийн хурд = 50 |
whileTrue: |
байдал = radio.receive_bytes_into (радар) |
хэрэв статус байхгүй бол: |
# дэлгэц.луу () |
c, val тоо томшгүй (радар): |
хэрэв радар [c] <= хамгийн их_зай: |
# зай бүрийн 2d координатыг тооцоолох |
өнцөг = эргүүлэх_ алхам / (эргүүлэх_ алхам -1) * эргүүлэх_ алхам * c |
өнцөг += (180- эргүүлэх_спан) /2.0 |
x_c = math.cos (өнцөг * математик.pi /180.0) * радар [c] |
y_c = math.sin (өнцөг * математик.pi /180.0) * радар [c] |
# 5x5 микробит дэлгэц дээр багтах зайг хэмжих |
x_c = x_c * (хажуугийн урт_лэд -1) / хамгийн их_зай |
y_c = y_c * (хажуугийн урт_лэдс +1) / хамгийн их_зай |
# координатын байршлыг өөрчлөх |
x_c += (хажуугийн урт_лэд -1) |
y_c = (хажуугийн урт_лэд +1) - y_c |
# дугуй координатууд нь яг л LED -ийг хаана байна |
хэрэв x_c - math.floor (x_c) <0.5: |
x_c = математикийн шал (x_c) |
өөр: |
x_c = math.ceil (x_c) |
хэрэв y_c - math.floor (y_c) <0.5: |
y_c = математикийн шал (y_c) |
өөр: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
яр [c] = y_c |
өөр: |
xar [c] = 0 |
яр [c] = 0 |
display.clear () |
x, y inzip (xar, yar): |
display.set_pixel (x, y, 9) |
# хэвлэх (жагсаалт (zip (xar, yar, radar)))) |
төлөвA = button_a.is_pressed () |
төлөвB = button_b.is_pressed () |
хэрэв төлөвA ба муж Б: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
хэвлэх ("урагш") |
хэрэв төлөвA бол төлөв биш бол B: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
хэвлэх ("зүүн") |
Хэрэв төлөв биш болA ба төлөвB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
хэвлэх ("баруун") |
хэрэв төлөв бишA ба төлөв биш бол B: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
хэвлэх ('зогсоох') |
GitHub -аас ❤ -тай зохион байгуулагдсан rawgigglebot_lidar_remote.py -г үзэх
Алхам 7: Алсын дэлгэцийг тайлбарлах
"loading =" залхуу "нь GiggleBot -ийг удирддаг бол танд дараах сонголтууд байна.
- GiggleBot -ийг урагшлуулахын тулд А товч, В товчийг дарна уу.
- GiggleBot -ийг зүүн тийш эргүүлэхийн тулд А товчийг дарна уу.
- G товчлуурыг дарж GiggleBot -ийг баруун тийш эргүүлнэ үү.
Хамгийн ойрхон саад тотгорыг аль чиглэлд илрүүлэхийг харахын тулд алсын удирдлагын дэлгэцийг (BBC -ийн алсын зайны микро: таны барьж буй бит) харна уу. Та GiggleBot -ийг харахгүйгээр холоос удирдах боломжтой байх ёстой.
Зөвлөмж болгож буй:
Arduino Nano ашиглан хооллох робот хий Алтан шураг: 5 алхам
Arduino Nano ашиглан хооллох робот хий Алтан эрэг: Энэхүү төслийн санаа нь миний охиноос гаралтай бөгөөд тэр роботыг хүсдэг бөгөөд энэ робот хоолоо амандаа оруулахын тулд амаа нээж чаддаг. Тиймээс би дотроос боломжтой зүйлсийг хайлаа: картон, ардуино нано, хэт авианы мэдрэгч, servo мотор
Arduino ашиглан дохио зангаагаар удирддаг робот: 7 алхам
Arduino ашиглан дохио зангаагаар удирддаг робот: Роботыг барилга, цэрэг, үйлдвэрлэл, угсралт гэх мэт олон салбарт ашигладаг. Роботууд бие даасан эсвэл хагас бие даасан байж болно. Автономит роботууд хүний оролцоо шаарддаггүй бөгөөд нөхцөл байдлын дагуу бие даан ажиллах боломжтой. За
Алсын зай, чиглэл, эргэлтийн зэрэгтэй Arduino робот (Зүүн, Баруун, Хойд, Өмнөд) Bluetooth модуль болон автономит роботын хөдөлгөөнийг ашиглан дуу хоолойгоор удирддаг. 6 алхам
Алсын зай, чиглэл, эргэлтийн зэрэгтэй Arduino робот (Зүүн, Баруун, Хойд, Өмнөд) Bluetooth модуль, автономит роботын хөдөлгөөнийг ашиглан дуу хоолойгоор удирддаг. Энэхүү заавар нь Arduino роботыг хэрхэн шаардлагатай чиглэлд зөөх боломжтойг тайлбарласан болно. , Зүүн, Баруун, Зүүн, Баруун, Хойд, Өмнөд) Дуут командыг ашиглан сантиметрээр зай авах шаардлагатай. Роботыг бие даан хөдөлгөж болно
Gesture Hawk: Зургийн боловсруулалтанд суурилсан интерфэйсийг ашиглан гараар удирддаг робот: 13 алхам (зурагтай)
Gesture Hawk: Зургийн боловсруулалтанд суурилсан интерфэйсийг ашиглан гарын дохио зангаагаар удирддаг робот: Gesture Hawk нь TechEvince 4.0-д дүрс боловсруулахад суурилсан хүний машины интерфейс хэлбэрээр танилцуулагдсан. Үүний ашиг тус нь өөр өөр төхөөрөмж дээр ажилладаг робот машиныг удирдахын тулд бээлийгээс өөр нэмэлт мэдрэгч, өмсдөг зүйл шаардлагагүй юм
Arduino руу Bluetooth ашиглан дохио зангаагаар удирддаг сургагдах робот гар: 4 алхам
Arduino руу Bluetooth ашиглан дохио зангаагаар удирддаг робот гар: Гар дээр хоёр горим байдаг. Нэгдүгээрт, гар дээрх bluetooth -тэй гараа аппликешны гулсагчийг хөдөлгөж хөдөлгөж болно. Үүний зэрэгцээ та байр сууриа хадгалж, тоглож чадна … Хоёрдугаарт, таны ph -ийг ашигладаг дохио зангаа