ዝርዝር ሁኔታ:

የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች 5 ደረጃዎች
የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች 5 ደረጃዎች

ቪዲዮ: የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች 5 ደረጃዎች

ቪዲዮ: የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች 5 ደረጃዎች
ቪዲዮ: ጥሩ ነገሮችን እንዴት መሳብ እንደሚቻል. ኦዲዮ መጽሐፍ 2024, ሀምሌ
Anonim
የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች
የሮቦት ክንድ የሚጫወቱ የፒያኖ ሰቆች

ቡድኑ እኛ ከ UCN የመጡ 2 አውቶሜሽን መሐንዲሶችን ያቀፈ ሲሆን እኛ ለመስራት እና ለማዳበር ተነሳስተናል የሚል ብሩህ ሀሳብ ያወጡ። ሀሳቡ የሮቦት ክንድ በሚቆጣጠር በአርዱዲኖ ቦርድ ላይ የተመሠረተ ነው። የአርዱዲኖ ቦርድ የቀዶ ጥገናው አንጎል ነው ፣ ከዚያ የቀዶ ጥገናው አንቀሳቃሹ ፣ የሮቦት ክንድ ፣ የሚፈልገውን ያደርጋል። የበለጠ ጥልቅ ማብራሪያ በኋላ ላይ ይመጣል።

ደረጃ 1 - መሣሪያዎች

መሣሪያዎች
መሣሪያዎች

የሮቦት ክንድ;

Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)

ለሮቦቱ ሶፍትዌር- https://www.arduino.cc/en/Main/OldSoftwareRelease… የቀለም ማወቂያ ካሜራ ፦

CMUcam5 Pixy ካሜራ - (https://charmedlabs.com/default/pixy-cmucam5/)

ሶፍትዌር - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)

ደረጃ 2: Arduino Setup

የአርዱዲኖ ማዋቀር
የአርዱዲኖ ማዋቀር

እዚህ በቦርዱ ላይ ማዋቀሩን ማየት ይችላሉ ፣ ይህም በጣም ቀላል ነው።

በግራ በኩል የኃይል አቅርቦት አለ።

መካከለኛው ለመጀመሪያው ሰርቪስ ነው ፣ እሱም በኋላ ላይ ከሌላው servos ጋር የተገናኘ ፣ servo by servo።

የታችኛው አንደኛው በሌላኛው ጫፍ ላይ የዩኤስቢ ግብዓት ካለው ፒሲ ወይም ላፕቶፕ ሰሌዳውን የምንቆጣጠርበት ነው።

ደረጃ 3 የመጨረሻ ፕሮግራም

||| ፕሮግራም |||

#ያካትቱ

#አካትት #poses.h #ያካትቱ // ፒክሲ ቤተ -መጽሐፍት #ያካትቱ

#POSECOUNT 5 ን ይግለጹ

BioloidController bioloid = BioloidController (1000000);

const int SERVOCOUNT = 5; int id; int pos; ቡሊያን IDCheck; ቡሊያን RunCheck;

ባዶነት ማዋቀር () {pinMode (0 ፣ OUTPUT); ax12SetRegister2 (1 ፣ 32 ፣ 50) ፤ // የጋራ ቁጥር 1 መመዝገቢያ 32 ን ወደ ፍጥነት 50. ax12 SetRegister2 (2 ፣ 32 ፣ 50) ፤ // አዘጋጅ የጋራ ቁጥር 2 ይመዝገቡ 32 ወደ ፍጥነት 50. ax12SetRegister2 (3 ፣ 32 ፣ 50); // የጋራ ቁጥር 3 ይመዝገቡ 32 ለፍጥነት 50። 32 ለማፋጠን 100. // ተለዋዋጮችን መታወቂያ id = 1; ፖዝ = 0; IDCheck = 1; RunCheck = 0; // ክፍት ተከታታይ ወደብ Serial.begin (9600); መዘግየት (500); Serial.println ("###########################"); Serial.println ("ተከታታይ ግንኙነት ተቋቋመ");

// የ Lipo ባትሪ ቮልቴጅ ፍተሻ ቮልት () ይመልከቱ;

// ሰርቪስ ይቃኙ ፣ የመመለሻ ቦታ MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }

ባዶነት loop () {// አነፍናፊውን ያንብቡ - int inByte = Serial.read ();

መቀየሪያ (inByte) {

ጉዳይ '1': MovePose1 (); ሰበር;

ጉዳይ '2': MovePose2 (); ሰበር; ጉዳይ '3': MovePose3 (); ሰበር;

ጉዳይ '4': MovePose4 (); ሰበር;

ጉዳይ '5': MoveHome (); ሰበር; ጉዳይ '6': ያዝ (); ሰበር;

ጉዳይ '7': LEDTest (); ሰበር;

ጉዳይ '8': RelaxServos (); ሰበር; }}

ባዶ CheckVoltage () {// ይጠብቁ ፣ ከዚያ የቮልቴጅ (የ LiPO ደህንነት) ተንሳፋፊ ቮልቴጅ = (ax12GetRegister (1 ፣ AX_PRESENT_VOLTAGE ፣ 1)) / 10.0; Serial.println ("###########################"); Serial.print ("የስርዓት ቮልቴጅ:"); Serial.print (ቮልቴጅ); Serial.println ("ቮልት"); ከሆነ (ቮልቴጅ 10.0) {Serial.println ("የቮልቴጅ ደረጃዎች በስመ."); } ከሆነ (RunCheck == 1) {MenuOptions (); } Serial.println ("############################"); }

ባዶ MoveHome () {መዘግየት (100); // የሚመከር ለአፍታ ማቆም bioloid.loadPose (መነሻ); // ቦታውን ከ FLASH ይጫኑ ፣ ወደ ቀጣዩ የቦዝ ቋት bioloid.readPose (); // ለ curPose ቋት Serial.println (“#########################################################) ጀምሮ እስከ“CurPose buffer”Serial.println ውስጥ ያንብቡ። Serial.println ("servos ን ወደ መነሻ ቦታ ማንቀሳቀስ"); Serial.println ("###########################"); መዘግየት (1000); bioloid.interpolateSetup (1000); // ከአሁን በኋላ ለ interpolation ማዋቀር-> ከሚቀጥለው ከ 1/2 ሰከንድ በላይ (bioloid.interpolating> 0) {// የእኛን አዲስ አቀማመጥ bioloid.interpolateStep () ላይ ስንደርስ ይህንን ያድርጉ። // አስፈላጊ ከሆነ servos ን ያንቀሳቅሱ። መዘግየት (3); } ከሆነ (RunCheck == 1) {MenuOptions (); }}

ባዶ MovePose1 () {መዘግየት (100); // የሚመከር ለአፍታ ማቆም bioloid.loadPose (Pose1); // አቀማመጥን ከ FLASH ይጫኑ ፣ ወደ ቀጣዩ የቦዝ ቋት bioloid.readPose (); // ለ curPose ቋት Serial.println (“#########################################################) ጀምሮ እስከ“CurPose buffer”Serial.println ውስጥ ያንብቡ። Serial.println (“servos ን ወደ 1 ኛ ቦታ ማንቀሳቀስ”); Serial.println ("###########################"); መዘግየት (1000); bioloid.interpolateSetup (1000); // ከአሁን በኋላ ለ interpolation ማዋቀር-> ከሚቀጥለው ከ 1/2 ሰከንድ በላይ (bioloid.interpolating> 0) {// የእኛን አዲስ አቀማመጥ bioloid.interpolateStep () ላይ ስንደርስ ይህንን ያድርጉ። // አስፈላጊ ከሆነ servos ን ያንቀሳቅሱ። መዘግየት (3); } SetPosition (3 ፣ 291); // የጋራ 3 ን ወደ '0' መዘግየት (100) አቀማመጥ ያዋቅሩ ፤ // (RunCheck == 1) {MenuOptions () ፤ }}

ባዶ MovePose2 () {መዘግየት (100); // የሚመከር ለአፍታ ማቆም bioloid.loadPose (Pose2); // አቀማመጥን ከ FLASH ይጫኑ ፣ ወደ ቀጣዩ የቦዝ ቋት bioloid.readPose (); // ለ curPose ቋት Serial.println (“#########################################################) ጀምሮ እስከ“CurPose buffer”Serial.println ውስጥ ያንብቡ። Serial.println (“servos ን ወደ 2 ኛ ቦታ በማዛወር ላይ”); Serial.println ("###########################"); መዘግየት (1000); bioloid.interpolateSetup (1000); // ከአሁን በኋላ ለ interpolation ማዋቀር-> ከሚቀጥለው ከ 1/2 ሰከንድ በላይ (bioloid.interpolating> 0) {// የእኛን አዲስ አቀማመጥ bioloid.interpolateStep () ላይ ስንደርስ ይህንን ያድርጉ። // አስፈላጊ ከሆነ servos ን ያንቀሳቅሱ። መዘግየት (3); } SetPosition (3, 291); // የመገጣጠሚያውን አቀማመጥ ከ 3 ወደ '0' መዘግየት (100) ያዋቅሩ ፤ // (RunCheck == 1) {MenuOptions () ፤ }} ባዶነት MovePose3 () {መዘግየት (100) ፤ // የሚመከር ለአፍታ ማቆም bioloid.loadPose (Pose3); // ቦታውን ከ FLASH ይጫኑ ፣ ወደ ቀጣዩ የቦዝ ቋት bioloid.readPose (); // ለ curPose ቋት Serial.println (“#########################################################) ጀምሮ እስከ“CurPose buffer”Serial.println ውስጥ ያንብቡ። Serial.println ("servos ን ወደ 3 ኛ ደረጃ በማንቀሳቀስ ላይ"); Serial.println ("###########################"); መዘግየት (1000); bioloid.interpolateSetup (1000); // ከአሁን በኋላ ለ interpolation ማዋቀር-> ከሚቀጥለው ከ 1/2 ሰከንድ በላይ (bioloid.interpolating> 0) {// የእኛን አዲስ አቀማመጥ bioloid.interpolateStep () ላይ ስንደርስ ይህንን ያድርጉ። // አስፈላጊ ከሆነ servos ን ያንቀሳቅሱ። መዘግየት (3); } SetPosition (3 ፣ 291); // የመገጣጠሚያውን አቀማመጥ ከ 3 ወደ '0' መዘግየት (100) ያዋቅሩ ፤ // (RunCheck == 1) {MenuOptions () ፤ }}

ባዶ MovePose4 () {መዘግየት (100); // የሚመከር ለአፍታ ማቆም bioloid.loadPose (Pose4); // አቀማመጥን ከ FLASH ይጫኑ ፣ ወደ ቀጣዩ የቦዝ ቋት bioloid.readPose (); // ለ curPose ቋት Serial.println (“###################################################################f ጋር ላይ) Serial.println (“servos ን ወደ 4 ኛ ቦታ ማንቀሳቀስ”); Serial.println ("###########################"); መዘግየት (1000); bioloid.interpolateSetup (1000); // ከአሁን በኋላ ለ interpolation ማዋቀር-> ከሚቀጥለው ከ 1/2 ሰከንድ በላይ (bioloid.interpolating> 0) {// የእኛን አዲስ አቀማመጥ bioloid.interpolateStep () ስላልደረስን ይህንን ያድርጉ። // አስፈላጊ ከሆነ servos ን ያንቀሳቅሱ። መዘግየት (3); } SetPosition (3 ፣ 291); // የመገጣጠሚያውን አቀማመጥ ከ 3 ወደ '0' መዘግየት (100) ያዋቅሩ ፤ // (RunCheck == 1) {MenuOptions () ፤ }}

ባዶነት MoveTest () {Serial.println ("###############################"); Serial.println (“የእንቅስቃሴ ምልክት ሙከራን ማስጀመር”); Serial.println ("###########################"); መዘግየት (500); መታወቂያ = 1; ፖዝ = 512; ሳለ (መታወቂያ <= SERVOCOUNT) {Serial.print ("Servo IDvo:"); Serial.println (መታወቂያ);

(pos> = 312) {SetPosition (መታወቂያ ፣ ፖስ) ፤ pos = pos--; መዘግየት (10); }

(pos <= 512) {SetPosition (መታወቂያ ፣ ፖስ) ፤ pos = pos ++; መዘግየት (10); }

// ወደ ቀጣዩ የ servo ID id = id ++ ይድገሙት;

} ከሆነ (RunCheck == 1) {MenuOptions (); }}

ባዶ MenuOptions () {Serial.println ("##############################"); Serial.println ("የግለሰብ ፈተናዎችን እንደገና ለማካሄድ እባክዎን አማራጭ 1-5 ያስገቡ") ፤ Serial.println ("1) 1 ኛ ቦታ"); Serial.println ("2) 2 ኛ ቦታ"); Serial.println ("3) 3 ኛ ቦታ"); Serial.println ("4) 4 ኛ ቦታ"); Serial.println ("5) የቤት አቀማመጥ"); Serial.println ("6) Check System Voltage"); Serial.println ("7) የ LED ሙከራ ያከናውኑ"); Serial.println ("8) Servos ዘና"); Serial.println ("###########################"); }

ባዶነት RelaxServos () {id = 1; Serial.println ("###########################"); Serial.println ("ዘና የሚያደርግ ሰርቮስ"); Serial.println ("###########################"); ሳለ (መታወቂያ <= SERVOCOUNT) {ዘና ይበሉ (መታወቂያ); id = (id ++)%SERVOCOUNT; መዘግየት (50); } ከሆነ (RunCheck == 1) {MenuOptions (); }}

ባዶ LEDTest () {id = 1; Serial.println ("###########################"); Serial.println ("የሩጫ የ LED ሙከራ"); Serial.println ("###########################"); ሳለ (መታወቂያ <= SERVOCOUNT) {ax12SetRegister (መታወቂያ ፣ 25 ፣ 1) ፤ Serial.print ("LED ON - Servo ID:"); Serial.println (መታወቂያ); መዘግየት (3000); ax12SetRegister (መታወቂያ ፣ 25 ፣ 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (መታወቂያ); መዘግየት (3000); id = id ++; } ከሆነ (RunCheck == 1) {MenuOptions (); }}

ባዶነት ያዝ () {SetPosition (5, 800); // የመገጣጠሚያውን 1 ወደ '0' መዘግየት (100) ያቀናብሩ ፤ // መገጣጠሚያ እስኪንቀሳቀስ ይጠብቁ

}

በአቀማመጥ ረገድ አንዳንድ ዋና ዋና ማሻሻያዎችን በማድረግ ፕሮግራማችንን በአምራቾች PincherTest ፕሮግራም ላይ መሠረት አድርገናል። እኛ ሮቦቶች በማስታወሻ ውስጥ ቦታዎችን እንዲይዙ poses.h ን እንጠቀም ነበር። በመጀመሪያ አውቶማቲክ ለመሆን ከፒክሲካም ጋር የመጫወቻ ክዳችንን ለመፍጠር ሞክረናል ፣ ግን በብርሃን እና በትንሽ ማያ ገጽ ችግሮች ምክንያት ያ ሊከሰት አይችልም። ሮቦቱ መሰረታዊ የቤት አቀማመጥ አለው ፣ ፕሮግራሙን ከሰቀለ በኋላ በሮቦቱ ውስጥ የተገኙትን ሁሉንም ሰርቶፖች ይፈትሻል። ለ 1-4 አዝራሮች አቀማመጥን አዘጋጅተናል ፣ ስለዚህ ለማስታወስ ቀላል ይሆናል። ፕሮግራሙን ለመጠቀም ነፃነት ይሰማዎ።

ደረጃ 4 - የቪዲዮ መመሪያ

ደረጃ 5 መደምደሚያ

ለማጠቃለል ፣ ሮቦቱ ለእኛ አስደሳች ትንሽ ፕሮጀክት እና በዙሪያችን ለመጫወት እና ለመሞከር አስደሳች ፍላጎት ነው። እርስዎ እንዲሞክሩት እና እርስዎም እንዲያበጁት እመክራለሁ።

የሚመከር: