ዝርዝር ሁኔታ:

በጊግቦቦት -8 ደረጃዎች በሊዳር የሚመራ ሮቦት ይስሩ
በጊግቦቦት -8 ደረጃዎች በሊዳር የሚመራ ሮቦት ይስሩ

ቪዲዮ: በጊግቦቦት -8 ደረጃዎች በሊዳር የሚመራ ሮቦት ይስሩ

ቪዲዮ: በጊግቦቦት -8 ደረጃዎች በሊዳር የሚመራ ሮቦት ይስሩ
ቪዲዮ: Консультант от бога Tg: cadrolikk 2024, ህዳር
Anonim
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ
ከጊግቦሌት ጋር በሊዳር የሚመራ ሮቦት ይስሩ

በዚህ መማሪያ ውስጥ GiggleBot የማይልን ችግሮች እንዲፈታ እያደረግን ነው።

እኛ የርቀት ዳሳሽ ባያያዝንበት GiggleBot ላይ servo እንጭናለን። በሚሮጥበት ጊዜ የርቀት ዳሳሹ ለእያንዳንዱ መሰናክል ርቀቱን ለመለካት እንዲችል servo ወደ ኋላ እና ወደ ፊት ይሽከረከራል። ይህ እንደ LIDAR ዳሳሽ ይሠራል ፣ እሱም ብዙውን ጊዜ በጣም ውድ ነው።

በተመሳሳይ ጊዜ ጊግሌቦት ይህንን መረጃ ወደ ሩቅ የቢቢሲ ማይክሮ-ቢት በ 5-በ -5 ማትሪክስ የኤልዲኤስ ማነፃፀሪያዎቹ ላይ ለሚገጥሙት እንቅፋቶች አንጻራዊ ቦታውን እየላከ ነው።

የእርስዎ ሥራ ጊግሌቦትን ማሰስ መቻል በሌላ የቢቢሲ ማይክሮ ቢት ላይ የሚታየውን በማየት ብቻ ነው። GiggleBot ን ለመቆጣጠር በርቀት በቢቢሲ ማይክሮ ላይ ያሉት አዝራሮች ጥቅም ላይ ይውላሉ።

ያ አስደሳች ይመስላል! ወደ እሱ እንውረድ?

ደረጃ 1 - አስፈላጊ አካላት

አስፈላጊ አካላት
አስፈላጊ አካላት

እኛ ያስፈልገናል:

  1. አንድ GiggleBot።
  2. ለቢቢሲ ማይክሮ ቢት የባትሪ ጥቅል። በጥቅሉ ውስጥ ከቢቢሲ ማይክሮ -ቢት ጋር አብሮ ይመጣል።
  3. ለ GiggleBot x3 AA ባትሪዎች።
  4. የርቀት ዳሳሹን ከ GiggleBot ጋር ለማገናኘት ግሮቭ ገመድ።
  5. ከ DexterIndustries አንድ Servo ኪት።
  6. x3 ቢቢሲ ማይክሮ ቢት። አንዱ ለ GiggleBot እና አንዱ ሮቦትን ከሩቅ ለመቆጣጠር ያገለግላል።
  7. የርቀት ዳሳሽ ከ DexterIndustries።

GiggleBot ሮቦትን ለቢቢሲ ማይክሮ -ቢት እዚህ ያግኙ!

ደረጃ 2 ሮቦትን መሰብሰብ

ሮቦትን መሰብሰብ
ሮቦትን መሰብሰብ
ሮቦትን መሰብሰብ
ሮቦትን መሰብሰብ

GiggleBot ለፕሮግራም ዝግጁ ለማድረግ ፣ ምንም እንኳን ብዙ መደረግ ባይኖርበትም መሰብሰብ አለብን።

በጊግቦቦቱ ስር 3 AA ባትሪዎችን በእሱ ክፍል ውስጥ ያስገቡ።

የ servo ጥቅሉን ያሰባስቡ። ወደ ሰርቦው ወደሚሽከረከረው ክንዱ ፣ በጊግቦቦት የፊት ማያያዣዎች ላይ አገልጋዩን ለመጠገን የመጨረሻውን ቀዳዳ ይጠቀሙ። በእሱ ቦታ ላይ የበለጠ የተረጋጋ እንዲሆን ዊንች እና/ወይም አንዳንድ ሽቦን መጠቀም ይችላሉ። ወይም በቦርዱ ላይ ሙጫውን ማጣበቅ ይችላሉ። በእኔ ሁኔታ ፣ የ servo ክንድን በጊግቦቦት ሰሌዳ ላይ ለማሰር ጠመዝማዛ እና አጭር ሽቦ እጠቀም ነበር።

የ servo ክንድን ወደ servo ላይ ሲጭኑ ፣ ሰርቪው ቀድሞውኑ ወደ ቦታው 80 መዘጋጀቱን ያረጋግጡ። gigglebot.set_servo (gigglebot. RIGHT ፣ 80) በመደወል ያንን ማድረግ ይችላሉ። ስለዚያ የበለጠ እዚህ ማንበብ ይችላሉ።

በመቀጠልም የርቀት ዳሳሹን በ servo ጥቅል ፊት ለፊት በኩል ያድርጉት እና ከላይ ባለው ምሳሌ ውስጥ እንደነበረው ያስተካክሉት።

በመጨረሻም የርቀት ዳሳሹን ከግሮቭ ገመድ ከማንኛውም የ 2 I2C ወደቦች እና የ servo ሞተር በ GiggleBot ላይ ከተቀመጠው ወደ ቀኝ ወደብ ያገናኙ - ትክክለኛው ወደብ በላዩ ላይ ተጠቅሷል።

ደረጃ 3 - የራስዎን ማዘር ይፍጠሩ - እንደ አማራጭ

የራስዎን ጭጋግ ይፍጠሩ - እንደ አማራጭ
የራስዎን ጭጋግ ይፍጠሩ - እንደ አማራጭ

በዚህ ሁኔታ ፣ ከ NASCAR ጋር የሚመሳሰል የተዘጋ ሉፕ ትራክ ለመፍጠር ብዙ ሳጥኖችን ተጠቅሜያለሁ።

በዚህ ደረጃ ፣ በእውነቱ ፈጠራን ማግኘት እና እርስዎ የሚፈልጉትን ያህል ጠማማ ማድረግ ወይም በጣም ረጅም ማድረግ ይችላሉ ምክንያቱም በእውነቱ በእርስዎ ላይ የተመሠረተ ነው።

ወይም ትራክ በጭራሽ የማይፈልጉ ከሆነ ፣ ለምሳሌ ጊግሌቦትን በወጥ ቤት ውስጥ ወይም ሳሎን ውስጥ ማስቀመጥ ይችላሉ - አሁንም ብዙ ግድግዳዎች እና መሰናክሎች ስለሚኖሩዎት በቂ መሆን አለበት።

ደረጃ 4 - አካባቢን ማቀናበር

አካባቢን ማዋቀር
አካባቢን ማዋቀር

በማይክሮ ፓይቶን ውስጥ የቢቢሲ ማይክሮ -ቢት ፕሮግራም ማድረግ እንዲችሉ ለእሱ (ለሙ አርታኢ) አርታዒ ማዘጋጀት እና GiggleBot MicroPython Runtime ን እንደ ሥራው ጊዜ ማዘጋጀት አለብዎት። ለዚያ ፣ በዚህ ገጽ ላይ ያሉትን መመሪያዎች መከተል አለብዎት። በዚህ ቅጽበት ፣ የአሂደቱ ጊዜ v0.4.0 ስሪት ጥቅም ላይ ውሏል።

ደረጃ 5 - GiggleBot ን ፕሮግራም ማድረግ - ክፍል አንድ

በመጀመሪያ ፣ የጊግቦቦትን ስክሪፕት እናዘጋጅ። ይህ ስክሪፕት GiggleBot የ servo ሞተር 160 ዲግሪዎች (በእያንዳንዱ አቅጣጫ 80 ዲግሪዎች) እንዲሽከረከር እና በተመሳሳይ ጊዜ ከርቀት ዳሳሽ 10 ንባቦችን በየተራ እንዲወስድ ያደርገዋል።

ሲበራ GiggleBot ከርቀት መቆጣጠሪያው ትእዛዝ እስኪያገኝ ድረስ ይቆማል። 3 ትዕዛዞች ብቻ ሊሆኑ ይችላሉ -ወደ ፊት ፣ ወደ ግራ ወይም ወደ ቀኝ ይሂዱ።

ማሳሰቢያ -የሚከተለው ስክሪፕት የነጭ ቦታዎች ሊኖሩት ይችላል እና ይህ የ GitHub Gists ን በማሳየት ምክንያት በሆነ ችግር ምክንያት ይመስላል። ኮዱን መቅዳት እና መለጠፍ ወደሚችልበት ወደ GitHub ገጽዎ ሊወስድዎት የሚገባውን ቁልፍ ጠቅ ያድርጉ።

በርቀት ቁጥጥር የሚደረግበት በ LIDAR ላይ የተመሠረተ GiggleBot

ከ gigglebot ማስመጣት*
ከርቀት_ሴንሰር ማስመጣት DistanceSensor
ከማይክሮቢት ማስመጣት እንቅልፍ
ከ utime ማስመጣት ticks_us ፣ sleep_us
ማስመጣት ustruct
ሬዲዮ አስመጣ
ሮቦቱ ቀድሞውኑ የሚንቀሳቀስ ከሆነ # ያቁሙ
ተወ()
# ሬዲዮን ያንቁ
radio.on ()
# የርቀት ዳሳሽ ነገር
ds = DistanceSensor ()
ds.start_continuous ()
rotate_time = 0.7# በሰከንዶች ይለካል
rotate_span = 160# በዲግሪዎች ይለካል
rotate_steps = 10
overhead_compensation = 1.05# በመቶኛ ተተርጉሟል
time_per_step = 10 ** 6* rotate_time / (rotate_steps* overhead_compensation)
last_read_time = 0
ራዳር = bytearray (rotate_steps)
servo_rotate_direction = 0# 0 ወደ ላይ ለመውጣት (0-> 160) እና 1 በሌላ
radar_index = 0
set_servo (RIGHT ፣ 0)
እውነት:
# ከራዳር ያንብቡ
ticks_us () ከሆነ - የመጨረሻ_ንባብ_ጊዜ> ጊዜ_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 (RIGHT ፣ 0)
servo_rotate_direction = 1
elif radar_index == 0 እና servo_rotate_direction == 1:
set_servo (RIGHT ፣ rotate_span)
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)
መንዳት ()
ከታይፕ ስህተት በስተቀር
ማለፍ

በ GitHub በ hosted የተስተናገደ rawgigglebot_lidar_robot.py ን ይመልከቱ

ደረጃ 6 - የርቀት ፕሮግራምን - ክፍል II

ሊደረግ የቀረው እንደ በርቀት የሚሠራውን 2 ኛ ቢቢሲ ማይክሮ -ቢት ማዘጋጀት ነው።

የርቀት መቆጣጠሪያው እንቅፋቶችን አንጻራዊ ርቀት በ 5-በ -5 ፒክሰል በተሠራ ማያ ገጹ ላይ ለማሳየት ያገለግላል። ቢበዛ 10 ፒክሰሎች በርተዋል።

በተመሳሳይ ጊዜ የርቀት መቆጣጠሪያው ጊግቦቦትን 2 ቁልፎቹን በመጫን የርቀት መቆጣጠሪያ ችሎታዎችን ይሰጥዎታል -ወደ ፊት ፣ ወደ ግራ እና ወደ ቀኝ ይሂዱ።

ማሳሰቢያ -የሚከተለው ስክሪፕት የነጭ ቦታዎች ሊኖሩት ይችላል እና ይህ የ GitHub Gists ን በማሳየት ምክንያት በሆነ ችግር ምክንያት ይመስላል። ኮዱን መቅዳት እና መለጠፍ ወደሚችልበት ወደ GitHub ገጽዎ ሊወስድዎት የሚገባውን ቁልፍ ጠቅ ያድርጉ።

በርቀት ቁጥጥር የሚደረግበት በ LIDAR ላይ የተመሠረተ GiggleBot - የርቀት ኮድ

ከማይክሮቢት ማስመጣት እንቅልፍ ፣ ማሳያ ፣ button_a ፣ button_b
ማስመጣት ustruct
ሬዲዮ አስመጣ
ማስመጣት ሂሳብ
radio.on ()
rotate_steps = 10
rotate_span = 160# በዲግሪዎች
rotate_step = rotate_span / rotate_steps
max_distance = 50# በሴንቲሜትር
የጎን_መጠን_መንገዶች = 3 # በፒክሰሎች # ይለካሉ
ራዳር = bytearray (rotate_steps)
xar = bytearray (rotate_steps)
yar = bytearray (rotate_steps)
save_xar = bytearray (rotate_steps)
save_yar = bytearray (rotate_steps)
ሞተር_ፍጥነት = 50
እውነት:
ሁኔታ = radio.receive_bytes_into (ራዳር)
ሁኔታ ካልሆነ ማንም የለም
# ማሳያ። ግልፅ ()
ለ c ፣ val inenumerate (ራዳር)
ራዳር ከሆነ [c] <= max_distance:
# የእያንዳንዱ ርቀት 2 ዲ መጋጠሚያዎችን ያስሉ
ማዕዘን = rotate_steps / (rotate_steps -1) * rotate_step * ሐ
አንግል += (180- rotate_span) /2.0
x_c = math.cos (አንግል * math.pi /180.0) * ራዳር [ሐ]
y_c = math.sin (አንግል * math.pi /180.0) * ራዳር [ሐ]
በ 5x5 ማይክሮቢት ማሳያ ላይ ለመገጣጠም # ርቀቶችን ይለኩ
x_c = x_c * (side_length_leds -1) / max_distance
y_c = y_c * (side_length_leds +1) / max_distance
# ዳግም አቀማመጥ መጋጠሚያዎች
x_c += (የጎን_ ርዝመት_መረጃዎች -1)
y_c = (የጎን_ርዝመት_ላይዶች +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
ያር [ሐ] = 0
ማሳያ። ግልጽ ()
ለ x ፣ y inzip (xar ፣ yar)
display.set_pixel (x, y, 9)
# ማተም (ዝርዝር (ዚፕ (xar ፣ yar ፣ ራዳር)))
stateA = button_a.is_pressed ()
stateB = button_b.is_pressed ()
stateA እና stateB ከሆነ:
radio.send_bytes (ustruct.pack ('bb', motor_speed, motor_speed))
ማተም ('ወደፊት')
ግዛት ከሆነ እና ሁኔታ B ካልሆነ:
radio.send_bytes (ustruct.pack ('ቢቢ' ፣ ሞተር_ስፔድ ፣ -ሞተር_ስፔድ))
ማተም ('ግራ')
ሁኔታ ካልሆነ ሀ እና ግዛት ቢ:
radio.send_bytes (ustruct.pack ('bb', -motor_speed, motor_speed))
ማተም ('ቀኝ')
ሁኔታ ካልሆነ A andnot stateB:
radio.send_bytes (ustruct.pack ('bb', 0, 0))
ማተም ('አቁም')

በ GitHub በ hosted የተስተናገደ rawgigglebot_lidar_remote.py ን ይመልከቱ

ደረጃ 7 - የርቀት ማያ ገጽን መተርጎም

“ጭነት =” ሰነፍ”ጊግቦትን ይቆጣጠሩ ፣ የሚከተሉት አማራጮች አሉዎት

  1. GiggleBot ን ወደ ፊት ለማንቀሳቀስ አዝራሩን ሀ እና ቁልፍን ይጫኑ።
  2. GiggleBot ን ወደ ግራ ለማሽከርከር ቁልፍን ሀ ይጫኑ።
  3. GiggleBot ን ወደ ቀኝ ለማሽከርከር B ቁልፍን ይጫኑ።

በጣም ቅርብ የሆኑ መሰናክሎች ወደየትኛው አቅጣጫ እንደተገኙ ለማየት የርቀት መቆጣጠሪያውን (የርቀት ቢቢሲ ማይክሮ - የያዙት ቢት) ማያ ገጽ ላይ ብቻ ይመልከቱ። GiggleBot ን ሳይመለከቱ ከሩቅ መቆጣጠር መቻል አለብዎት።

የሚመከር: