Мазмұны:

GiggleBot көмегімен Лидар басқаратын робот жасаңыз: 8 қадам
GiggleBot көмегімен Лидар басқаратын робот жасаңыз: 8 қадам

Бейне: GiggleBot көмегімен Лидар басқаратын робот жасаңыз: 8 қадам

Бейне: GiggleBot көмегімен Лидар басқаратын робот жасаңыз: 8 қадам
Бейне: GiggleBot Controlled with micro:bit 2024, Қараша
Anonim
GiggleBot көмегімен Лидар басқаратын робот жасаңыз
GiggleBot көмегімен Лидар басқаратын робот жасаңыз
GiggleBot көмегімен Лидар басқаратын робот жасаңыз
GiggleBot көмегімен Лидар басқаратын робот жасаңыз
GiggleBot көмегімен Лидар басқаратын робот жасаңыз
GiggleBot көмегімен Лидар басқаратын робот жасаңыз

Бұл оқулықта біз GiggleBot -қа лабиринттің қиындықтарын шешуге көмектесеміз.

Біз GiggleBot -қа серво орнатамыз, оған қашықтық сенсоры қосылады. Жүгіру кезінде серво алға және артқа айналады, осылайша қашықтық сенсоры әр кедергіге дейінгі қашықтықты өлшей алады. Бұл LIDAR сенсоры сияқты жұмыс істейді, ол әдетте әлдеқайда қымбат.

Сонымен қатар, GiggleBot бұл деректерді 5-тен 5-ке дейінгі светодиодты кедергілерге қатысты орналасуын көрсететін BBC қашықтағы микро: битіне жібереді.

Сіздің міндетіңіз - GiggleBot -ті BBC -дің басқа микро: битінде көрсетілгенге қарап шарлау. GiggleBot басқару үшін қашықтағы BBC micro: bit түймелері қолданылады.

Бұл көңілді сияқты! Келіңіздер, солай ма?

1 -қадам: Қажетті компоненттер

Қажетті компоненттер
Қажетті компоненттер

Бізге қажет болады:

  1. GiggleBot.
  2. BBC micro: битке арналған батарея жиынтығы. Ол пакетте BBC микро: битімен бірге келеді.
  3. GiggleBot үшін x3 AA батареялары.
  4. GiggleBot -қа қашықтық сенсорын қосуға арналған Grove кабелі.
  5. DexterIndustries сервистік жиынтығы.
  6. x3 BBC микро: бит. Бірі GiggleBot үшін, екіншісі роботты алыстан басқаратын.
  7. 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 басқарады, сізде келесі опциялар бар:

  1. GiggleBot -ты алға жылжыту үшін А түймешігі мен В түймесін басыңыз.
  2. GiggleBot -ты солға айналдыру үшін А түймесін басыңыз.
  3. GiggleBot оңға айналдыру үшін B түймесін басыңыз.

Ең жақын кедергілер қай бағытта табылғанын білу үшін, қашықтан басқару пультінің (BBC микробағдарламасы: сіз ұстап тұрған бит) экранын қараңыз. Сіз GiggleBot -ты алыстан бақылап отыруыңыз керек.

Ұсынылған: