ዝርዝር ሁኔታ:

GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም 5 ደረጃዎች
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም 5 ደረጃዎች

ቪዲዮ: GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም 5 ደረጃዎች

ቪዲዮ: GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም 5 ደረጃዎች
ቪዲዮ: Siapa pernah buat robot ikut garisan? Ini robot kami semasa menyertai Petrosains RBTX Challenge 2021 2024, ሀምሌ
Anonim
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም
GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም

በዚህ ጊዜ እኛ አብሮ የተሰራውን የመስመር ተከታይ ዳሳሽ በመጠቀም ጥቁር መስመርን ለመከተል በማይክሮፒቶን ውስጥ ዴክስተር ኢንዱስትሪዎች GiggleBot ውስጥ ፕሮግራም እያደረግን ነው።

GiggleBot በአግባቡ እንዲቆጣጠር ከቢቢሲ ማይክሮ ቢት ጋር ማጣመር አለበት።

ይህ አጋዥ ስልጠና ለእርስዎ በጣም የላቀ ከሆነ እና ጊግቦቦት ለአሁን በጣም ብዙ ከሆነ ፣ ሮቦቱ እዚህ በ MakeCode ውስጥ እንዴት መርሃ ግብር ሊደረግ እንደሚችል በሚያሳይዎት የጀማሪ መማሪያ በኩል መሄድ ይችላሉ። የተገናኘው አጋዥ ስልጠና በጣም መሠረታዊ በሆኑ ነገሮች ውስጥ ይራመዳል።

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

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

የሚከተሉት የሃርድዌር ክፍሎች ያስፈልጋሉ

  1. x3 AA ባትሪዎች - በእኔ ሁኔታ በአጠቃላይ ዝቅተኛ voltage ልቴጅ ያላቸውን ዳግም -ተሞይ ባትሪዎችን እጠቀማለሁ።
  2. አንድ ዲክስተር ኢንዱስትሪዎች GiggleBot ሮቦት ለማይክሮ -ቢት።
  3. ቢቢሲ ማይክሮ ቢት።

በእርግጥ ፣ የቢቢሲ ማይክሮ -ቢት ፕሮግራምን ለማቀናበር የማይክሮ ዩኤስቢ ገመድ ያስፈልግዎታል - ይህ ገመድ በአጠቃላይ በቢቢሲ ማይክሮ -ቢት ጥቅል ውስጥ ይመጣል ወይም ሁል ጊዜ (ለ Android) ስማርትፎኖች ለመሙላት የሚያገለግል አንዱን መጠቀም ይችላሉ።

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

ደረጃ 2 - ትራኮችን ያዋቅሩ

ትራኮችን ያዋቅሩ
ትራኮችን ያዋቅሩ

አንዳንድ ንጣፎችን በማተም እና የራስዎን ዱካዎች ዲዛይን በማድረግ ማለፍ ይኖርብዎታል። የእኛን ሁኔታዎች ማባዛቱን 100% እርግጠኛ እንዲሆኑ የራሳችንን ሰቆች መጠቀም ይችላሉ። ወይም የጀብደኝነት ስሜት ከተሰማዎት አንዳንድ ጥቁር ቴፕ በመጠቀም የራስዎን መሥራት ይችላሉ። እኛ ለተጠቀምንበት ሰድሎች ፒዲኤፍ እዚህ አለ።

ከላይ ያለው ትራክ በሚከተሉት የተለያዩ ሰቆች ብዛት የተዋቀረ ነው-

  • ዓይነት #1 12 ሰቆች።
  • ዓይነት #2 5 ሰቆች።
  • የሰድር ዓይነት #5 አብነቶች።
  • 3 የሰድር ዓይነት አብነቶች #6 - እዚህ ፣ አንድ ተጨማሪ ሰድር ያበቃል።

ቀጥሎ ፣ ያትሟቸው እና ይቁረጡ። ከላይ ባለው ፎቶ ላይ እንደእነሱ ለማስቀመጥ ይሞክሩ እና በትራኩ በቀኝ የላይኛው ክፍል ላይ 2 ሰቆች እርስ በእርስ መደራረብ እንዳለባቸው ያስታውሱ - አንድ ስህተት እየሰሩ እንደሆነ እያሰቡ ከሆነ ይህ ይጠበቃል።

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

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

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

ደረጃ 4 - GiggleBot ን ፕሮግራም ማድረግ

ወደ እሱ ከመውረዱ በፊት የጊግሌቦት ማይክሮፒታይን አሂድ ጊግሌቦትን እና ሌሎች የዴክስተር ኢንዱስትሪዎች ዳሳሾችን ለመደገፍ ለቢቢሲ ማይክሮ - ቢት እና ሌሎች ቤተመፃህፍት የታወቀውን የአሂድ ጊዜ ይ containsል።

ካዋቀሩት በኋላ የሚከተለውን ስክሪፕት በሙአ አርታኢው ውስጥ ይክፈቱ እና ፍላሽ ላይ ጠቅ ያድርጉ። ይህ GiggleBot MicroPython Runtime ን እና ለቢቢሲ ማይክሮ -ቢት የከፈቱትን ስክሪፕት ያበራልዎታል። ስክሪፕቱ እንዲሁ ከዚህ በታች ይታያል።

ብልጭ ድርግም የሚሉበት ሂደት ከተጠናቀቀ በኋላ የቢቢሲውን ማይክሮ -ቢት በጊግሌቦት ላይ ቦርዱ የኒዮፒክሰል ፊት ለፊት ወደ ፊት በመያዝ በትራኩ ላይ ያስቀምጡት እና ያብሩት።

በስክሪፕቱ ውስጥ PID እና ሌሎች 2 ቋሚዎች (የፍጥነት መለኪያ እና ዝቅተኛ የፍጥነት ቋሚዎች) አስቀድመው እንደተዘጋጁ ልብ ይበሉ።

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

GiggleBot PID መስመር ተከታይ - የተስተካከለ w/ NeoPixels

ከማይክሮቢት ማስመጣት*
ከ gigglebot ማስመጣት*
ከ utime አስመጣ sleep_ms ፣ ticks_us
ማስመጣት ustruct
# ጂቢ ኒዮፒክስሎችን ያስጀምሩ
ኒዮ = init ()
# ጊዜ
update_rate = 50
# ትርፍ/ቋሚዎች (የባትሪ ቮልቴጁ 4.0 ቮልት አካባቢ ነው ብለን ካሰብን)
ኬፕ = 25.0
ኪ = 0.5
Kd = 35.0
trigger_point = 0.3
min_speed_percent = 0.3
base_speed = 70
setpoint = 0.5
last_position = setpoint
ውህደት = 0.0
run_neopixels = እውነት
የፈገግታው ማዕከላዊ ፒክሰል በጂቢ ላይ የሚገኝበት center_pixel = 5#
# turquoise = tuple (ካርታ (ላምዳ x: int (x / 5) ፣ (64 ፣ 224 ፣ 208))) ስህተቱን ከኒዮፒክስሎች ጋር ለመሳል # ቀለም
# turquoise = (12, 44, 41) # ከዚህ በላይ አስተያየት የሰጠው ከላይ ያለው ቱርኩዝ ነው
error_width_per_pixel = 0.5/3# ከፍተኛ ስህተት በእያንዳንዱ ኒኦፒክስል መካከል በክፍሎች ብዛት ተከፍሏል
defupper_bound_linear_speed_reducer (abs_error, trigger_point, upper_bound, ትንሹ_ሞተር_ኃይል ፣ ከፍተኛ_ሞተር_ሃይል) ፦
ዓለምአቀፍ base_speed
abs_error> = = ቀስቅሴ ነጥብ
# x0 = 0.0
# y0 = 0.0
# x1 = የላይኛው_አንድ - ቀስቃሽ ነጥብ
# y1 = 1.0
# x = abs_error - ቀስቃሽ ነጥብ
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0)
# ልክ እንደ
y = (abs_error - trigger_point) / (የላይኛው_እስራት - ቀስቅሴ ነጥብ)
motor_power = base_speed * (ትንሹ_ሞተር_ኃይል + (1- y) * (ከፍተኛ_ሞተር_ኃይል - ትንሹ_ሞተር_ሃይል))
የሞተር_ሃይል መመለስ
ሌላ
base_speed * ከፍተኛውን_ሞተር_ ኃይልን ይመልሱ
ሩጫ = ሐሰት
previous_error = 0
እውነት:
# አዝራር ሀ ከተጫነ ከዚያ መከተል ይጀምሩ
button_a.is_pressed ከሆነ ():
አሂድ = እውነት
# ነገር ግን አዝራር ለ ከተጫነ የመስመር ተከታዩን ያቁሙ
button_b.is_press ከሆነ ():
ሩጫ = ሐሰት
ውህደት = 0.0
previous_error = 0.0
pixels_off ()
ተወ()
የእንቅልፍ_ኤምኤስ (500)
ሩጫ እውነት ከሆነ
# የመስመር ዳሳሾችን ያንብቡ
start_time = ticks_us ()
ቀኝ ፣ ግራ = የንባብ_ሴንሰር (LINE_SENSOR ፣ BOTH)
አቀማመጥ <0.5 በሚሆንበት ጊዜ # መስመር በግራ በኩል ነው
አቀማመጥ> 0.5 በሚሆንበት ጊዜ # መስመር በቀኝ በኩል ነው
አቀማመጥ = 0.5 በሚሆንበት ጊዜ # መስመር መሃል ላይ ነው
# እሱ ክብደት ያለው የሂሳብ ትርጉም ነው
ሞክር
አቀማመጥ = ቀኝ /ተንሳፋፊ (ግራ + ቀኝ)
ከዜሮ ዲቪዥን ስህተት በስተቀር
አቀማመጥ = 0.5
# ክልሉ (0, 1) መሆን አለበት እንጂ [0, 1]
አቀማመጥ == 0 ከሆነ - ቦታ = 0.001
አቀማመጥ == 1: አቀማመጥ = 0.999
# የፒዲ መቆጣጠሪያን ይጠቀሙ
ስህተት = አቀማመጥ - setpoint
integral += ስህተት
እርማት = Kp * ስህተት + ኪ * ጥምር + Kd * (ስህተት - ቀዳሚ_ ስህተት)
previous_error = ስህተት
# የሞተር ፍጥነቶችን ያስሉ
motor_speed = upper_bound_linear_speed_reducer (abs (ስህተት) ፣ setpoint * trigger_point ፣ setpoint ፣ min_speed_percent ፣ 1.0)
leftMotorSpeed = motor_speed + እርማት
rightMotorSpeed = motor_speed - እርማት
በተሰጠው ስህተት መሠረት # ኒዮፒክስሎችን ያብሩ
run_neopixels እውነት እና ጠቅላላ_መለያዎች %3 == 0 ከሆነ
ለ i inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08':
ኒዮ = (0, 0, 0)
ለ i inb '\ x00 / x01 / x02 / x03':
ifabs (ስህተት)> error_width_per_pixel * i:
ስህተት ከሆነ <0:
# neo [center_pixel + i] = ቱርኩዝ
ኒዮ [center_pixel + i] = (12, 44, 41)
ሌላ
# ኒዮ [መሃል_ፒክሴል - i] = ቱርኩዝ
ኒዮ [center_pixel + i] = (12, 44, 41)
ሌላ
በመቶ = 1- (error_width_per_pixel * i -abs (ስህተት)) / error_width_per_pixel
# የአሁኑን ፒክስል ያብሩ
ስህተት ከሆነ <0:
# neo [center_pixel + i] = tuple (ካርታ (lambda x: int (x * መቶኛ) ፣ ቱርኩስ))
ኒዮ [center_pixel + i] = (int (64* በመቶ /5) ፣ int (224* በመቶ /5) ፣ int (208* በመቶ /5))
ሌላ
# neo [center_pixel - i] = tuple (ካርታ (lambda x: int (x * መቶኛ) ፣ ቱርኩስ))
ኒዮ [center_pixel - i] = (int (64* በመቶ /5) ፣ int (224* በመቶ /5) ፣ int (208* በመቶ /5))
ሰበር
neo.show ()
ሞክር
# የሞተር ፍጥነቶችን ይከርክሙ
ግራ ከሆነ የሞተር ፍጥነት> 100:
leftMotorSpeed = 100
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100
ትክክል ከሆነ የሞተር ፍጥነት> 100:
rightMotorSpeed = 100
leftMotorSpeed = leftMotorSpeed - rightMotorSpeed +100
ግራ ከሆነ የሞተር ፍጥነት <-100:
leftMotorSpeed = -100
ትክክል ከሆነ የሞተር ፍጥነት <-100:
rightMotorSpeed = -100
# ሞተሮችን ያንቀሳቅሱ
set_speed (የግራ ሞተር ፍጥነት ፣ የቀኝ ሞተር ፍጥነት)
መንዳት ()
# ህትመት ((ስህተት ፣ የሞተር ፍጥነት))
ካልሆነ በስተቀር
# ወደማይስተካከል ጉዳይ ውስጥ ብንገባ
ማለፍ
# እና የ loop ድግግሞሹን ይጠብቁ
የማብቂያ ጊዜ = ticks_us ()
delay_diff = (end_time - start_time) /1000
if1000.0/ update_rate - delay_diff> 0:
እንቅልፍ (1000.0/ update_rate - delay_diff)

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

ደረጃ 5: እንዲሄድ መፍቀድ

በቢቢሲ ማይክሮ ላይ 2 አዝራሮች አሉ - ቢት - አዝራር ሀ እና ቁልፍ ለ

  • በአዝራር ሀ ላይ መጫን GiggleBot መስመሩን እንዲከተል ያዘጋጃል (ካለ)።
  • አዝራር ቢ ላይ መጫን ጊግሌቦትን ያቆማል እና እንደገና እንዲጠቀሙበት ሁሉንም ነገር ዳግም ያስጀምራል።

መስመርን እየተከተለ ጊግሌቦትን እንዳያነሳ እና ከዚያ በላዩ ላይ እንዳያስቀምጠው በጣም ይመከራል ፣ ምክንያቱም ያሰላው ስህተት የሮቦቱን መንገድ ሊያከማች እና ሙሉ በሙሉ ሊያበላሸው ይችላል። እሱን ለማንሳት ከፈለጉ ፣ ቁልፍ B ላይ ይጫኑ እና መልሰው ሲያስገቡት እንደገና ሀ ን ይጫኑ።

የሚመከር: