ዝርዝር ሁኔታ:
- ደረጃ 1 - አስፈላጊ አካላት
- ደረጃ 2 - ትራኮችን ያዋቅሩ
- ደረጃ 3 - አካባቢን ማቀናበር
- ደረጃ 4 - GiggleBot ን ፕሮግራም ማድረግ
- ደረጃ 5: እንዲሄድ መፍቀድ
ቪዲዮ: GiggleBot መስመር ተከታይ ፓይዘን በመጠቀም 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
በዚህ ጊዜ እኛ አብሮ የተሰራውን የመስመር ተከታይ ዳሳሽ በመጠቀም ጥቁር መስመርን ለመከተል በማይክሮፒቶን ውስጥ ዴክስተር ኢንዱስትሪዎች GiggleBot ውስጥ ፕሮግራም እያደረግን ነው።
GiggleBot በአግባቡ እንዲቆጣጠር ከቢቢሲ ማይክሮ ቢት ጋር ማጣመር አለበት።
ይህ አጋዥ ስልጠና ለእርስዎ በጣም የላቀ ከሆነ እና ጊግቦቦት ለአሁን በጣም ብዙ ከሆነ ፣ ሮቦቱ እዚህ በ MakeCode ውስጥ እንዴት መርሃ ግብር ሊደረግ እንደሚችል በሚያሳይዎት የጀማሪ መማሪያ በኩል መሄድ ይችላሉ። የተገናኘው አጋዥ ስልጠና በጣም መሠረታዊ በሆኑ ነገሮች ውስጥ ይራመዳል።
ደረጃ 1 - አስፈላጊ አካላት
የሚከተሉት የሃርድዌር ክፍሎች ያስፈልጋሉ
- x3 AA ባትሪዎች - በእኔ ሁኔታ በአጠቃላይ ዝቅተኛ voltage ልቴጅ ያላቸውን ዳግም -ተሞይ ባትሪዎችን እጠቀማለሁ።
- አንድ ዲክስተር ኢንዱስትሪዎች GiggleBot ሮቦት ለማይክሮ -ቢት።
- ቢቢሲ ማይክሮ ቢት።
በእርግጥ ፣ የቢቢሲ ማይክሮ -ቢት ፕሮግራምን ለማቀናበር የማይክሮ ዩኤስቢ ገመድ ያስፈልግዎታል - ይህ ገመድ በአጠቃላይ በቢቢሲ ማይክሮ -ቢት ጥቅል ውስጥ ይመጣል ወይም ሁል ጊዜ (ለ 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 ላይ ይጫኑ እና መልሰው ሲያስገቡት እንደገና ሀ ን ይጫኑ።
የሚመከር:
የ PID መስመር ተከታይ Atmega328P: 4 ደረጃዎች
የፒአይዲ መስመር ተከታይ Atmega328P: መግቢያ ይህ አስተማሪው በአዕምሮው ውስጥ (ፒሜጋ 328 ፒ) ውስጥ በሚሠራ በፒአይዲ (ተመጣጣኝ-ኢንተራል-ተኮር) ቁጥጥር (ሂሳብ) ውጤታማ እና አስተማማኝ የመስመር ተከታይ ስለማድረግ ነው።
የአርዱዲኖ መስመር ተከታይ የ Wallrides የመማሪያ ክፍል ነጭ ሰሌዳ 8 ደረጃዎች (ከስዕሎች ጋር)
የአርዱዲኖ መስመር ተከታይ የ Wallrides የመማሪያ ክፍል ነጭ ሰሌዳ - መሬት ላይ ያለውን መስመር መከተል በጣም አሰልቺ ነው! በመስመር ተከታዮች ላይ የተለየ አንግል ለማየት እና ወደ ሌላ አውሮፕላን ለማምጣት ሞክረናል - ወደ ትምህርት ቤቱ ነጭ ሰሌዳ። ምን እንደ መጣ ይመልከቱ
የ GoPiGo3 መስመር ተከታይ 8 ደረጃዎች
የ GoPiGo3 መስመር ተከታይ - በዚህ መማሪያ ውስጥ የመስመር ተከታይ እየወሰድን እና ጥቁር መስመርን እንዲከተል በ GoPiGo3 ላይ እንጠቀማለን።
የራስ ገዝ መስመር ተከታይ ድሮን በ Raspberry Pi 5 ደረጃዎች
የራስ ገዝ መስመር ተከታይ ድሮን ከ Raspberry Pi ጋር - ይህ አጋዥ ስልጠና የመስመር ተከታይ ድሮን በመጨረሻ እንዴት ማድረግ እንደሚችሉ ያሳያል። ይህ ድሮን “የራስ ገዝ ሁኔታ” ይኖረዋል። ወደ አውሮፕላኑ ወደ ሞድ የሚገባ መቀየሪያ። ስለዚህ ፣ አሁንም እንደበፊቱ አውሮፕላንዎን መብረር ይችላሉ። እየሆነ መሆኑን እባክዎ ልብ ይበሉ
BrickPi3 መስመር ተከታይ: 4 ደረጃዎች
የ BrickPi3 መስመር ተከታይ -የዴክስተር ኢንዱስትሪዎች መስመር ተከታይ የ BrickPi3 ሮቦት መስመርን እንዲከተል እንዴት እንደሚሠራ የሚያሳይ ፕሮጀክት እዚህ አለ።