Мазмұны:
- 1 -қадам: Қажетті компоненттер
- 2 -қадам: роботты құрастыру
- 3 -қадам: Жеке лабиринт жасаңыз - міндетті емес
- 4 -қадам: Қоршаған ортаны реттеу
- 5 -қадам: GiggleBot бағдарламалау - І бөлім
- 6 -қадам: Қашықтан басқару құралын бағдарламалау - ІІ бөлім
- 7 -қадам: Қашықтағы экранды түсіндіру
Бейне: GiggleBot көмегімен Лидар басқаратын робот жасаңыз: 8 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:25
Бұл оқулықта біз GiggleBot -қа лабиринттің қиындықтарын шешуге көмектесеміз.
Біз GiggleBot -қа серво орнатамыз, оған қашықтық сенсоры қосылады. Жүгіру кезінде серво алға және артқа айналады, осылайша қашықтық сенсоры әр кедергіге дейінгі қашықтықты өлшей алады. Бұл LIDAR сенсоры сияқты жұмыс істейді, ол әдетте әлдеқайда қымбат.
Сонымен қатар, GiggleBot бұл деректерді 5-тен 5-ке дейінгі светодиодты кедергілерге қатысты орналасуын көрсететін BBC қашықтағы микро: битіне жібереді.
Сіздің міндетіңіз - GiggleBot -ті BBC -дің басқа микро: битінде көрсетілгенге қарап шарлау. GiggleBot басқару үшін қашықтағы BBC micro: bit түймелері қолданылады.
Бұл көңілді сияқты! Келіңіздер, солай ма?
1 -қадам: Қажетті компоненттер
Бізге қажет болады:
- GiggleBot.
- BBC micro: битке арналған батарея жиынтығы. Ол пакетте BBC микро: битімен бірге келеді.
- GiggleBot үшін x3 AA батареялары.
- GiggleBot -қа қашықтық сенсорын қосуға арналған Grove кабелі.
- DexterIndustries сервистік жиынтығы.
- x3 BBC микро: бит. Бірі GiggleBot үшін, екіншісі роботты алыстан басқаратын.
- DexterIndustries -тен қашықтық сенсоры.
BBC micro үшін GiggleBot роботын алыңыз: осында!
2 -қадам: роботты құрастыру
GiggleBot бағдарламалануға дайын болу үшін, біз оны жинауымыз керек, бірақ бұл қажет емес.
3 AA батареясын GiggleBot астындағы бөліміне салыңыз.
Серво пакетін жинаңыз. Серваның айналатын тұтқасына GiggleBot алдыңғы коннекторларына сервоны бекіту үшін оның соңғы саңылауын пайдаланыңыз. Оның орнында тұрақты болуы үшін бұранданы және/немесе сымды қолдануға болады. Немесе оны тақтаға ыстық желіммен жабыстыруға болады. Менің жағдайда, мен бұранданы және қысқа сымды пайдаланып, серво қолын GiggleBot тақтасына байладым.
Серво тұтқасын сервоға орнатқанда, серво 80 -ші күйге орнатылғанына көз жеткізіңіз. Мұны gigglebot.set_servo (gigglebot. RIGHT, 80) нөміріне қоңырау шалу арқылы жасауға болады. Бұл туралы толығырақ мына жерден оқи аласыз.
Содан кейін қашықтық датчигін серво пакетінің алдыңғы жағына қойып, оны жоғарыдағы мысалдағыдай бекітіңіз.
Ақырында, қашықтық сенсорын Grove кабелінің көмегімен кез келген 2 I2C портына және серво қозғалтқышты GiggleBot -та орналасқан оң портқа қосыңыз - онда дұрыс порт туралы айтылады.
3 -қадам: Жеке лабиринт жасаңыз - міндетті емес
Бұл жағдайда мен NASCAR -ге ұқсас жабық контурды құру үшін көптеген қораптарды қолдандым.
Бұл қадамда сіз шынымен креативті бола аласыз және оны қалағаныңызша бұра аласыз немесе оны ұзаққа созасыз, себебі бұл сізге байланысты.
Немесе сіз мүлде трек алғыңыз келмесе, мысалы, GiggleBot -ті ас үйге немесе қонақ бөлмеге қоюға болады - бұл жеткілікті жақсы болуы керек, себебі сіз әлі де аулақ болуыңыз керек қабырғалар мен кедергілер көп.
4 -қадам: Қоршаған ортаны реттеу
Сіз MicroPython -да BBC micro: bit бағдарламасын жасай алуыңыз үшін оған редактор (Mu Editor) орнатып, GiggleBot MicroPython жұмыс уақытын оның жұмыс уақыты ретінде орнатуыңыз қажет. Ол үшін сіз осы беттегі нұсқауларды орындауыңыз керек. Осы сәтте жұмыс уақытының v0.4.0 нұсқасы қолданылады.
5 -қадам: GiggleBot бағдарламалау - І бөлім
Алдымен GiggleBot сценарийін орнатамыз. Бұл сценарий GiggleBot -тың серво қозғалтқышын 160 градусқа (әр бағытта 80 градус) айналдыруға мүмкіндік береді, сонымен қатар қашықтық сенсорынан бір айналымға 10 көрсеткіш алады.
Қосылған кезде, GiggleBot қашықтан басқару пультінен пәрмен келгенше күте тұрады. Тек 3 команда болуы мүмкін: алға, солға немесе оңға.
Ескерту: Келесі сценарийде бос орындар болмауы мүмкін және бұл GitHub Gists көрсетудегі кейбір мәселелерге байланысты. Сізді GitHub бетіне апару үшін түйінді басыңыз, онда кодты көшіріп қоюға болады.
LIDAR негізіндегі қашықтан басқарылатын GiggleBot
gigglebot импортынан* |
distance_sensor импортынан DistanceSensor |
микробиттік импорттық ұйқыдан |
уақыттан бастап 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 += 1 егер servo_rotate_direction == 0 басқа-1 |
# және радар мәндерін жіберіңіз |
radio.send_bytes (радар) |
тырысу: |
# робот командаларын оқу |
lmotor, rmotor = ustruct.unpack ('bb', radio.receive_bytes ()) |
# және кез келген қабылданған командалар болған кезде қозғалтқышты іске қосыңыз |
жиынтық жылдамдығы (қозғалтқыш, айналмалы қозғалтқыш) |
жүргізу () |
exceptTypeError: |
өту |
GitHub ❤ арқылы орналастырылған rawgigglebot_lidar_robot.py файлын қарау
6 -қадам: Қашықтан басқару құралын бағдарламалау - ІІ бөлім
Қалған нәрсе - қашықтан басқару пультінің рөлін атқаратын 2 -ші BBC микро: битін бағдарламалау.
Қашықтан басқару құралы 5-тен 5 пиксельге дейінгі экранда кедергілерге қатысты қашықтықты көрсету үшін қолданылады. Ең көбі 10 пиксель қосылады.
Сонымен қатар, қашықтан басқару құралы сізге GiggleBot -ты қашықтан басқаруға мүмкіндік береді, оның 2 түймесін басу арқылы: алға, солға және оңға.
Ескерту: Келесі сценарийде бос орындар болмауы мүмкін және бұл GitHub Gists көрсетудегі кейбір мәселелерге байланысты. Сізді GitHub бетіне апару үшін түйінді басыңыз, онда кодты көшіріп қоюға болады.
LIDAR негізіндегі қашықтан басқарылатын GiggleBot - қашықтан басқару коды
microbit импорттық ұйқыдан, дисплей, 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) |
құтқарылған_xar = байт -рельс (айналдыру_қадамдары) |
құтқарылған_жыл = байтүлік (бұрылу_қадамдары) |
қозғалыс жылдамдығы = 50 |
whileTrue: |
күй = radio.receive_bytes_into (радар) |
егер күй жоқ болса: |
# display.clear () |
c, val valecumerate (радар) үшін: |
егер радар [c] <= max_distance: |
# әр қашықтықтың 2d координаттарын есептеңіз |
бұрыш = бұрылу_қадамдары / (бұру_қадамдары -1) * бұру_қадамы * c |
бұрыш += (180- айналдыру_алқасы) /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 * (бүйір_ұзақтығы_ледс -1) / максималды_ашықтық |
y_c = y_c * (бүйір_ұзақтығы_ледс +1) / максималды_қашықтық |
# координаттарды қайта орналастыру |
x_c += (бүйір_ұзақтығы_ледс -1) |
y_c = (side_length_leds +1) - y_c |
Светодиодтар табылған жерде # дөңгелек координаттар |
егер x_c - math.floor (x_c) <0,5: |
x_c = math.for (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 () |
stateB = button_b.is_pressed () |
егер stateA және stateB болса: |
radio.send_bytes (ustruct.pack ('bb', motor_ speed, motor_speed)) |
басып шығару («алға») |
егер күйA және күй B емес: |
radio.send_bytes (ustruct.pack ('bb', motor_peed, -motor_speed)) |
басып шығару ('солға') |
егер күй A мен күй B болмаса: |
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed)) |
басып шығару (оң жақта) |
егер күй A болмаса күй B болмаса: |
radio.send_bytes (ustruct.pack ('bb', 0, 0)) |
басып шығару («тоқтату») |
rawgigglebot_lidar_remote.py файлын GitHub ❤ арқылы орналастыруды қараңыз
7 -қадам: Қашықтағы экранды түсіндіру
«loading =» жалқау «GiggleBot басқарады, сізде келесі опциялар бар:
- GiggleBot -ты алға жылжыту үшін А түймешігі мен В түймесін басыңыз.
- GiggleBot -ты солға айналдыру үшін А түймесін басыңыз.
- GiggleBot оңға айналдыру үшін B түймесін басыңыз.
Ең жақын кедергілер қай бағытта табылғанын білу үшін, қашықтан басқару пультінің (BBC микробағдарламасы: сіз ұстап тұрған бит) экранын қараңыз. Сіз GiggleBot -ты алыстан бақылап отыруыңыз керек.
Ұсынылған:
L293D көмегімен температураны басқаратын жүйе: 19 қадам (суреттермен)
L293D көмегімен температураны басқаратын жүйе: Температураға сезімтал басқарылатын жүйе - бұл қоршаған ортаға қатысты белгілі бір аумақтағы объектінің температурасын бақылайтын және ұстап тұратын құрылғы. Басқарылатын жүйелердің бұл түрлері негізінен айнымалы токта (кондиционерлерде), тоңазытқышта
Shota Aizawa өшіргіш бас көзілдірігінің көмегімен көздің жыпылықтауын басқаратын жарық қосқышы (Менің Батыр Академиям): 8 қадам (суреттермен)
Shota Aizawa өшіргіш бас көзілдірігінің көмегімен көздің жыпылықтауы арқылы басқарылатын жарық қосқышы (Менің Батыр Академиям): Егер сіз менің кейіпкерім академиялық мангасын оқысаңыз немесе менің академиялық кейіпкерімді көрсеңіз, сіз shota aizawa есімді кейіпкерді білуіңіз керек. Шота Айзава өшіргіш басы ретінде де белгілі, Pro Hero және БАА-ның 1-А сыныбының сынып жетекшісі. Shota's Quirk оған мүмкіндік береді
Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: 12 қадам (суреттермен)
Pool Pi Guy - AI басқаратын дабыл жүйесі мен Raspberry Pi көмегімен бассейнді бақылау: Үйде бассейннің болуы көңілді, бірақ үлкен жауапкершілікпен келеді. Менің ең үлкен алаңдаушылығым - бассейннің жанында қараусыз жүргендердің бар -жоғын бақылау (әсіресе кішкентай балалар). Менің басты ренішім - бассейндегі су құбыры ешқашан сорғыдан төмен түспейтініне көз жеткізу
MESH SDK көмегімен қозғалысты басқаратын камера: 6 қадам (суреттермен)
MESH SDK көмегімен қозғалысты басқаратын камера: Үйде болмаған кезде үй жануарларының ең жақсы сәттерін түсіру үшін камераны автоматтандырғыңыз келе ме? MESH қозғалыс сенсоры SDK қолдайтын камераларға мүмкіндік береді. Мысалы, біз мысық тағамдары мен мысық ойыншықтарының жанына MESH қозғалыс сенсорын қойдық
Кішкентай робот жасаңыз: ұстағышпен әлемдегі ең кішкентай дөңгелекті робот жасаңыз.: 9 қадам (суреттермен)
Өте кішкентай робот жасаңыз: ұстағышпен әлемдегі ең кішкентай доңғалақты роботты жасаңыз: ұсақ заттарды алып, жылжыта алатын 1/20 текше дюймдік робот жасаңыз. Оны Picaxe микроконтроллері басқарады. Қазіргі уақытта бұл менің ойымша, бұл әлемдегі ең кішкентай доңғалақты робот болуы мүмкін. Бұл сөзсіз