Мазмуну:
- 1 -кадам: Керектүү компоненттер
- 2 -кадам: Роботту чогултуу
- 3 -кадам: Өз лабириниңизди түзүңүз - Милдеттүү эмес
- 4 -кадам: Айлана -чөйрөнү орнотуу
- 5 -кадам: GiggleBotту программалоо - I бөлүм
- 6 -кадам: Алыстан башкарууну программалоо - II бөлүм
- 7 -кадам: Алыстан экранды чечмелөө
Video: GiggleBot менен Лидар жетектеген робот жасаңыз: 8 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
Бул үйрөткүчтө биз GiggleBotту лабиринттин кыйынчылыктары менен күрөшүүгө мажбур кылабыз.
Биз GiggleBotко сервону орнотуп жатабыз, ага аралык сенсорун тиркеп жатабыз. Чуркап жүргөндө, servo алдыга жана артка айланат, ошондо аралык сенсор ар бир тоскоолдукка чейинки аралыкты өлчөй алат. Бул LIDAR сенсоруна окшош, ал көбүнчө кымбатыраак.
Ошол эле учурда, GiggleBot бул маалыматты алыскы Би-Би-Си микро: битине жөнөтөт, ал 5-тен 5-ге чейинки LED диоддоруна тоскоолдуктарга салыштырмалуу позициясын көрсөтөт.
Сиздин жумушуңуз - бул GiggleBotту башка Би -Би -Си микро: битинде көрсөтүлгөн нерсеге карап гана навигациялоо. GiggleBotту көзөмөлдөө үчүн, алыскы BBC micro: bit баскычтары колдонулат.
Бул кызыктуу окшойт! Келгиле, буга кирели, туурабы?
1 -кадам: Керектүү компоненттер
Бизге керек болот:
- A GiggleBot.
- BBC микро: бит үчүн батарейка. Бул пакетте BBC микро: бит менен кошо келет.
- GiggleBot үчүн x3 AA батареялары.
- Алыстык сенсорун GiggleBotко туташтыруу үчүн Grove кабели.
- DexterIndustriesтен келген Servo комплект.
- x3 BBC микро: бит. Бирөө GiggleBot үчүн, экинчиси роботту алыстан башкарып турган.
- DexterIndustriesтен алыстык сенсору.
BBC микро үчүн GiggleBot роботун алыңыз: бул жерде!
2 -кадам: Роботту чогултуу
GiggleBotту программалоого даяр кылуу үчүн, биз аны чогултушубуз керек, бирок анча деле көп нерсе кылуунун кажети жок.
3 AA батарейкасын GiggleBotтун астындагы бөлүмүнө салыңыз.
Серво пакетин чогултуп алыңыз. Сервонун айлануучу колуна сервону GiggleBotтун алдыңкы туташтыргычтарына бекитүү үчүн анын акыркы тешигин колдонуңуз. Сиз бураманы жана/же кандайдыр бир зымды колдонуп, анын ордуна туруктуу болушу мүмкүн. Же тактайга ысык желим менен чаптасаңыз болот. Менин учурда, мен бурама жана кыска зым менен GiggleBot тактасына servo колун байлап.
Серво колун servoго орнотуп жатканда, servo мурунтан эле 80 позициясына коюлганын текшериңиз. Муну gigglebot.set_servo (gigglebot. RIGHT, 80) чалуу менен жасай аласыз. Бул жерде бул тууралуу көбүрөөк биле алабыз.
Андан кийин, аралык сенсорун servo пакеттин алдыңкы жагына коюп, жогорудагы мисалда көрсөтүлгөндөй оңдоңуз.
Акыр -аягы, аралык сенсорун Grove кабели менен 2 I2C портторунун бирине жана servo моторун GiggleBotто отурган оң портко туташтырыңыз - анда туура порт айтылган.
3 -кадам: Өз лабириниңизди түзүңүз - Милдеттүү эмес
Бул учурда, мен NASCARге окшош жабык цикл трегин түзүү үчүн көптөгөн кутучаларды колдондум.
Бул кадамда сиз чындап чыгармачылыкка жетип, аны каалагандай бура аласыз же супер узун кыла аласыз, анткени бул чынында сизге байланыштуу.
Же такыр тректи каалабасаңыз, мисалы, GiggleBotту ашканага же конок бөлмөсүнө койсоңуз болот - бул жетишерлик жакшы болушу керек, анткени сиз дагы эле качышыңыз керек болгон дубалдар жана тоскоолдуктар көп.
4 -кадам: Айлана -чөйрөнү орнотуу
MicroPythonдо BBC микро: битин программалай алышыңыз үчүн, ага редакторду (Mu Editor) орнотуп, GiggleBot MicroPython Runtime'ди анын иштөө убактысы катары коюңуз. Ал үчүн бул беттеги көрсөтмөлөрдү аткарышыңыз керек. Ушул учурга карата, иштөө убактысынын v0.4.0 версиясы колдонулат.
5 -кадам: GiggleBotту программалоо - I бөлүм
Биринчиден, GiggleBotтун сценарийин орнотолу. Бул сценарий GiggleBotтун серво моторун 160 градуска (ар бир багытта 80 градус) айлантууга мажбур кылат, ошол эле учурда бир аралыкта сенсордон 10 окууну алат.
Күйгүзүлгөндө, GiggleBot алыстан башкаруудан буйрук алганга чейин турат. Болгону 3 буйрук болушу мүмкүн: алдыга, солго же оңго.
Эскертүү: Төмөнкү скриптте боштуктар жок болушу мүмкүн жана бул GitHub Gistsти көрсөтүүдөгү кандайдыр бир көйгөйдөн улам келип чыккан окшойт. Сизди GitHub баракчасына алып баруу үчүн, маңызын чыкылдатыңыз, анда сиз кодду көчүрүп-чаптай аласыз.
Алыстан башкарылуучу LIDAR негизделген GiggleBot
gigglebot импортунан* |
from distance_sensor импорттоо DistanceSensor |
microbit импорттук уйкудан |
utime импорттоодо 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 / (rotate_steps* overhead_compensation) |
last_read_time = 0 |
радар = байтрейр (rotate_steps) |
servo_rotate_direction = 0# 0 өйдө чыгуу үчүн (0-> 160) жана башка 1 |
radar_index = 0 |
set_servo (ОҢ, 0) |
whileTrue: |
# радардан окуу |
if ticks_us () - last_read_time> time_per_step: |
# аралык сенсорунан окуу |
радар [radar_index] = int (ds.read_range_continuous () /10) |
last_read_time = ticks_us () |
басып чыгаруу (radar_index) |
# сервону солдон оңго буруунун логикасын жасаңыз |
эгер 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 += 1if 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 -Би -Би -Си микро: битин программалоо.
Алыстан башкаруу 5-тен 5 пикселге чейинки экранда тоскоолдуктарга салыштырмалуу аралыкты көрсөтүү үчүн колдонулат. Көбүнчө 10 пиксел күйгүзүлөт.
Ошол эле учурда, пульт сизге GiggleBotту 2 баскычын басуу аркылуу башкарууга мүмкүнчүлүк берет: алдыга, солго жана оңго.
Эскертүү: Төмөнкү скриптте боштуктар жок болушу мүмкүн жана бул GitHub Gistsти көрсөтүүдөгү кандайдыр бир көйгөйдөн улам келип чыккан окшойт. Сизди GitHub баракчасына алып баруу үчүн, маңызын чыкылдатыңыз, анда сиз кодду көчүрүп-чаптай аласыз.
Алыстан башкарылуучу LIDAR негизделген GiggleBot - Remote Code
микробиттен импорттук уйку, дисплей, button_a, button_b |
структураны импорттоо |
радио импорттоо |
математиканы импорттоо |
radio.on () |
rotate_steps = 10 |
rotate_span = 160# градус |
rotate_step = rotate_span / rotate_steps |
max_distance = 50# сантиметрде |
side_length_leds = 3 # пикселдин саны менен өлчөнөт |
радар = байтрейр (rotate_steps) |
xar = bytearray (rotate_steps) |
yar = bytearray (rotate_steps) |
save_xar = байтрейр (rotate_steps) |
save_yar = bytearray (rotate_steps) |
motor_speed = 50 |
whileTrue: |
статус = radio.receive_bytes_into (радар) |
эгер статус жок болсо: |
# display.clear () |
c, val unenumerate (радар) үчүн: |
эгер радар [c] <= max_distance: |
# ар бир аралыктын 2d координаттарын эсептөө |
бурч = rotate_steps / (rotate_steps -1) * rotate_step * c |
бурч += (180- rotate_span) /2.0 |
x_c = math.cos (бурч * math.pi /180.0) * радар [c] |
y_c = math.sin (бурч * math.pi /180.0) * радар [c] |
# аралыктарды 5x5 микробиттик дисплейге ылайыкташтырыңыз |
x_c = x_c * (side_length_leds -1) / max_distance |
y_c = y_c * (side_length_leds +1) / max_distance |
# ордун алмаштыруу координаттары |
x_c += (side_length_leds -1) |
y_c = (side_length_leds +1) - y_c |
# тегерек координаттар так LED кайда |
эгер x_c - math.floor (x_c) <0.5: |
x_c = math.floor (x_c) |
башка: |
x_c = math.ceil (x_c) |
эгер y_c - math.floor (y_c) <0.5: |
y_c = math.floor (y_c) |
башка: |
y_c = math.ceil (y_c) |
xar [c] = x_c |
yar [c] = y_c |
башка: |
xar [c] = 0 |
yar [c] = 0 |
display.clear () |
x, y inzip үчүн (xar, yar): |
display.set_pixel (x, y, 9) |
# басып чыгаруу (тизме (zip (xar, yar, радар)))) |
stateA = button_a.is_pressed () |
stateB = button_b.is_pressed () |
эгер stateA жана stateB: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed)) |
басып чыгаруу ("алдыга") |
эгер мамлекетA жана мамлекеттик эмес Б: |
radio.send_bytes (ustruct.pack ('bb', motor_speed, -motor_speed)) |
басып чыгаруу ("сол") |
ifA эмес stateA жана stateB: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
басып чыгаруу ("оң") |
ifnot эмесA жана stateB эмес: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
басып чыгаруу ('токтоо') |
GitHub тарабынан ❤ уюштурулган rawgigglebot_lidar_remote.py көрүү
7 -кадам: Алыстан экранды чечмелөө
"loading =" жалкоо "GiggleBotту көзөмөлдөйт, сизде төмөнкү параметрлер бар:
- GiggleBotту алдыга жылдыруу үчүн А жана B баскычтарын басыңыз.
- GiggleBotту солго айландыруу үчүн А баскычын басыңыз.
- G баскычын басыңыз GiggleBot оңго.
Эң жакын тоскоолдуктар кайсы багытта аныкталганын билүү үчүн, жөн гана пульттун (алыскы BBC микро: сиз кармап турган бит) экранын караңыз. Сиз GiggleBotту алыстан эле көзөмөлдөп турушуңуз керек.
Сунушталууда:
Arduino UNO менен дронду кантип жасоо керек - Микроконтроллерди колдонуу менен квадрокоптер жасаңыз: 8 кадам (сүрөттөр менен)
Arduino UNO менен дронду кантип жасоо керек | Микроконтроллерди колдонуу менен квадрокоптер жасаңыз: КиришүүМенин Youtube каналыма баш багыңыз Drone - бул абдан кымбат гаджет (продукт) сатып алуу. Бул постто мен аны кантип арзан баада жасоону талкуулайм. Анан кантип ушундай арзан баада өзүңүздүн колуңуз менен жасай аласыз … Индияда бардык материалдар (моторлор, ЭСК
Raspberry Pi менен убакыттын өтүшү менен видеолорду жасаңыз (коддун 11 линиясы): 12 кадам (сүрөттөр менен)
Raspberry Pi (11 Линдин коду) менен Time Lapse Videos жасаңыз: Мен жакында эле столумдун казанына биринчи жолу уруктарды отургуздум. Мен алардын өсүшүн көрүп абдан кубандым, бирок баарыбыз билебиз, бул жай процесс. Өсүштү көрө албаганым мени чындап капалантты, бирок капыстан ичиндеги электроника хоббичи сени ойготту
Робот робот кол кап менен башкарылат: 6 кадам (сүрөттөр менен)
Мээлей менен башкарылган роботтук кол: Максаты: Бүтүрүү үчүн долбоор түзүп, тажрыйбага ээ болуу жана көйгөйлөрдү чечүү Outline-3-D роботтору менен басылган " колун”башкаруу үчүн колкапты колдонуп, arduino аркылуу туташыңыз. 3-D басылган колдогу муундардын ар биринде серво бар, ал
Интернетке туташкан робот жасаңыз (болжол менен 500 долларга) (Arduino жана Netbookту колдонуп): 6 кадам (Сүрөттөр менен)
Желе менен туташкан робот жасаңыз (болжол менен 500 долларга) (Arduino жана Netbookту колдонуу менен): Бул Нускама сизге кантип Интернетке туташкан роботту (Arduino микроконтроллерин жана Asus eee PC колдонуп) курууну көрсөтөт. Туташкан робот? Албетте ойнош үчүн. Роботыңызды бөлмөнүн ар тарабынан же санап көрүңүз
Өтө кичинекей робот жасаңыз: Дүйнөнүн эң кичинекей дөңгөлөктүү роботун туткун менен жасаңыз.: 9 кадам (сүрөттөр менен)
Өтө кичинекей роботту куруңуз: Дүйнөнүн эң кичинекей дөңгөлөктүү роботун туткун менен жасаңыз: 1/20 куб дюймдук роботту кичинекей нерселерди алып, жылдыра турган туткасы менен куруңуз. Бул Picaxe микроконтроллери тарабынан башкарылат. Бул учурда, менимче, бул дүйнөдөгү эң кичинекей дөңгөлөктүү робот болушу мүмкүн. Бул шексиз болот