Sisällysluettelo:
- Vaihe 1: Laitteet
- Vaihe 2: Arduino -asennus
- Vaihe 3: Lopullinen ohjelma
- Vaihe 4: Video -opas
- Vaihe 5: Johtopäätös
Video: Piano -laatat, jotka soittavat robottivartta: 5 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Ryhmään kuuluu 2 automaatioinsinööriä UCN: stä, jotka keksivät loistavan idean, jota olemme motivoituneita tekemään ja kehittämään. Idea perustuu Arduino -korttiin, joka ohjaa robottivartta. Arduino -levy on operaation aivot, ja sitten operaation toimilaite, robotti, tekee mitä se tarvitsee. Tarkempi selitys tulee myöhemmin.
Vaihe 1: Laitteet
Robotti käsivarsi:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Ohjelmisto robotille- https://www.arduino.cc/en/Main/OldSoftwareRelease… Värintunnistuskamera:
CMUcam5 Pixy -kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Ohjelmisto - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Vaihe 2: Arduino -asennus
Näet asetukset taululla täältä, mikä on erittäin helppoa.
Vasemmalla on virtalähde.
Keskimmäinen on ensimmäistä servoa varten, joka on myöhemmin liitetty muihin servoihin, servo servolta.
Alareunassa hallitsemme korttia tietokoneelta tai kannettavalta tietokoneelta, jonka toisessa päässä on USB -tulo.
Vaihe 3: Lopullinen ohjelma
||| OHJELMA |||
#sisältää
#sisällytä #sisällytä "poses.h" #sisällytä // Pixy -kirjasto #sisällytä
#määritä TILA 5
BioloidController bioloid = BioloidController (1000000);
const int PALVELU = 5; int id; int pos; boolean IDCheck; boolean RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // aseta liitoksen numero 1 rekisteri 32 nopeuteen 50. ax12SetRegister2 (2, 32, 50); // aseta liitoksen numero 2 rekisteri 32 nopeuteen 50. ax12SetRegister2 (3, 32, 50); // aseta yhteinen numero 3 -rekisteri 32 nopeuteen 50. ax12SetRegister2 (4, 32, 50); // aseta yhteinen numero 4 -rekisteri 32 nopeuteen 50. ax12SetRegister2 (5, 32, 100); // aseta yhteinen numero 5 -rekisteri 32 nopeuteen 100. // alustavat muuttujat id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // avaa sarjaportti Serial.begin (9600); viive (500); Serial.println ("##########################" "); Serial.println ("Sarjaliikenne perustettu.");
// Tarkista Lipon akun jännite CheckVoltage ();
// Skannauspalvelut, paluupaikka MoveTest (); MoveHome (); MenuValinnat (); RunCheck = 1; }
void loop () {// lue anturi: int inByte = Serial.read ();
kytkin (inByte) {
tapaus '1': MovePose1 (); tauko;
tapaus '2': MovePose2 (); tauko; tapaus '3': MovePose3 (); tauko;
tapaus '4': MovePose4 (); tauko;
tapaus '5': MoveHome (); tauko; tapaus '6': Tartu (); tauko;
tapaus '7': LEDTest (); tauko;
tapaus '8': RelaxServos (); tauko; }}
void CheckVoltage () {// odota ja tarkista sitten jännite (LiPO -turvallisuus) kelluva jännite = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10.0; Serial.println ("##########################"); Serial.print ("Järjestelmän jännite:"); Sarjajälki (jännite); Serial.println ("volttia"); if (jännite 10,0) {Serial.println ("Jännitetasot nimelliset"); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("##########################" "); }
void MoveHome () {delay (100); // suositeltava tauko bioloid.loadPose (Home); // lataa pose FLASH: sta nextPose -puskuriin bioloid.readPose (); // lukee nykyisissä servoasemissa curPose -puskuriin Serial.println ("###########################"); Serial.println ("Servojen siirtäminen alkuasentoon"); Serial.println ("##########################" "); viive (1000); bioloid.interpolateSetup (1000); // interpoloinnin asetukset nykyisestä-> seuraavaksi yli 1/2 sekuntia (bioloid.interpolation> 0) {// tee tämä, kun emme ole saavuttaneet uutta bioloid-asentoa.interpolateStep (); // siirrä servoja tarvittaessa. viive (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {delay (100); // suositeltava tauko bioloid.loadPose (Pose1); // lataa pose FLASH: sta nextPose -puskuriin bioloid.readPose (); // lukee nykyisissä servoasemissa curPose -puskuriin Serial.println ("###########################"); Serial.println ("Servojen siirtäminen 1. asemaan"); Serial.println ("##########################" "); viive (1000); bioloid.interpolateSetup (1000); // interpoloinnin asetukset nykyisestä-> seuraavaksi yli 1/2 sekuntia (bioloid.interpolation> 0) {// tee tämä, kun emme ole saavuttaneet uutta bioloid-asentoa.interpolateStep (); // siirrä servoja tarvittaessa. viive (3); } SetPosition (3, 291); // aseta nivelen 3 sijainti 0 -viiveeksi (100); // odota liitoksen liikkua, jos (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {viive (100); // suositeltava tauko bioloid.loadPose (Pose2); // lataa pose FLASH: sta nextPose -puskuriin bioloid.readPose (); // lukee nykyisissä servoasemissa curPose -puskuriin Serial.println ("###########################"); Serial.println ("Servojen siirtäminen toiseen asemaan"); Serial.println ("##########################" "); viive (1000); bioloid.interpolateSetup (1000); // interpoloinnin asetukset nykyisestä-> seuraavaksi yli 1/2 sekuntia (bioloid.interpolation> 0) {// tee tämä, kun emme ole saavuttaneet uutta bioloid-asentoa.interpolateStep (); // siirrä servoja tarvittaessa. viive (3); } SetPosition (3, 291); // aseta nivelen 3 sijainti 0 -viiveeksi (100); // odota liitoksen liikkua, jos (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {delay (100); // suositeltava tauko bioloid.loadPose (Pose3); // lataa pose FLASH: sta nextPose -puskuriin bioloid.readPose (); // lukee nykyisissä servoasemissa curPose -puskuriin Serial.println ("###########################"); Serial.println ("Servojen siirtäminen kolmanteen asemaan"); Serial.println ("##########################" "); viive (1000); bioloid.interpolateSetup (1000); // interpoloinnin asetukset nykyisestä-> seuraavaksi yli 1/2 sekuntia (bioloid.interpolation> 0) {// tee tämä, kun emme ole saavuttaneet uutta bioloid-asentoa.interpolateStep (); // siirrä servoja tarvittaessa. viive (3); } SetPosition (3, 291); // aseta nivelen 3 sijainti 0 -viiveeksi (100); // odota liitoksen liikkua, jos (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {viive (100); // suositeltava tauko bioloid.loadPose (Pose4); // lataa pose FLASH: sta nextPose -puskuriin bioloid.readPose (); // lukee nykyisissä servoasemissa curPose -puskuriin Serial.println ("###########################"); Serial.println ("Servojen siirtäminen 4. asemaan"); Serial.println ("##########################" "); viive (1000); bioloid.interpolateSetup (1000); // asetukset interpolointiin nykyisestä-> seuraavaksi yli 1/2 sekuntia (bioloid.interpolation> 0) {// tee tämä, kun emme ole saavuttaneet uutta bioloid-asentoa.interpolateStep (); // siirrä servoja tarvittaessa. viive (3); } SetPosition (3, 291); // aseta nivelen 3 sijainti 0 -viiveeksi (100); // odota liitoksen liikkua, jos (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("###########################"); Serial.println ("Liikkeen merkkitestin alustus"); Serial.println ("##########################" "); viive (500); id = 1; pos = 512; while (id <= SERVOCOUNT) {Serial.print ("Moving Servo ID:"); Sarja.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; viive (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; viive (10); }
// iteroi seuraavaan servotunnukseen id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("###########################"); Serial.println ("Anna vaihtoehto 1-5 suorittaaksesi yksittäiset testit uudelleen."); Serial.println ("1) 1. asema"); Serial.println ("2) 2. asema"); Serial.println ("3) 3. sija"); Serial.println ("4) 4. sija"); Serial.println ("5) kotiasema"); Serial.println ("6) Tarkista järjestelmän jännite"); Serial.println ("7) Suorita LED -testi"); Serial.println ("8) Relax Servot"); Serial.println ("##########################"); }
mitätön RelaxServos () {id = 1; Serial.println ("##########################" "); Serial.println ("Rentouttavat servot"); Serial.println ("##########################"); while (id <= SERVOCOUNT) {Rentoudu (id); id = (id ++)%SERVOCOUNT; viive (50); } if (RunCheck == 1) {MenuOptions (); }}
mitätön LEDTest () {id = 1; Serial.println ("##########################"); Serial.println ("Running LED Test"); Serial.println ("##########################"); while (id <= SERVOCOUNT) {ax12SetRegister (id, 25, 1); Serial.print ("LED ON - Servo ID:"); Sarja.println (id); viive (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Sarja.println (id); viive (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // aseta nivelen 1 asento '0' viiveeksi (100); // odota liitoksen liikettä
}
Olemme perustaneet ohjelmamme valmistajien PincherTest -ohjelmaan, jossa on joitain suuria parannuksia paikannuksessa. Käytimme poses.h -kohtaa, jotta robotilla olisi paikat muistissa. Ensinnäkin yritimme luoda pelivarren Pixycamilla automaattiseksi, mutta valon ja pienien näyttöongelmien vuoksi se ei voinut tapahtua. Robotilla on perusasento, ohjelman lataamisen jälkeen se testaa kaikki robotissa olevat servot. Olemme asettaneet 1-4 painikkeiden asennot, joten ne on helppo muistaa. Voit vapaasti käyttää ohjelmaa.
Vaihe 4: Video -opas
Vaihe 5: Johtopäätös
Yhteenvetona voidaan todeta, että robotti on meille hauska pieni projekti ja hauska leikki ja kokeilu. Kehotan sinua kokeilemaan sitä ja muokkaamaan sitä myös.
Suositeltava:
Housut, jotka lataavat puhelintasi: 6 vaihetta (kuvilla)
Housut, jotka lataavat puhelintasi: Joten otamme lähes 1000 askelta päivässä laskematta tavallista fyysistä aktiivisuuttani ja jos olet tavallinen pyöräilijä kuten minäkin, se laskee. Entä jos voisimme jotenkin käyttää tämän sähkön tavaroiden lataamiseen. Tämä on siis ohje
Kuinka hallita 4dof suuritehoista suurikokoista robottivartta Arduinon ja Ps2 -kaukosäätimen avulla?: 4 vaihetta
Kuinka ohjata 4dof suuritehoista suurikokoista robottivartta Arduino- ja Ps2 -kauko -ohjaimella?: Tämä sarja käyttää suuritehoista moottoria mg996, se tarvitsee suurta virtaa, olemme testanneet paljon virransyöttöä. Vain 5v 6a -sovitin toimii. Ja arduino -levytyöskentely myös 6dof -robottivarressa. pää: kirjoita osta SINONING DIY -lelun myymälä
Ohjaa robottivartta Zion avulla PS2 -ohjaimella: 4 vaihetta
Ohjaa robottivartta Zion avulla PS2 -ohjaimen avulla: Tämä blogikirjoitus on osa Zio Robotics -sarjaa. Tässä opetusohjelmassa lisäämme toisen osan robottihaaraamme. Aiemmat opetusohjelmat eivät sisällä pohjaa
Ohjaa robottivartta Zio -moduuleilla Osa 1: 8 vaihetta
Ohjaa robottivartta Zio -moduuleilla Osa 1: Tämä blogikirjoitus on osa Zio Robotics -sarjaa. Tämä projekti opettaa sinulle, miten saat Robotic Arm -kynsi auki ja kiinni. Tämä n
Kuinka ohjata robottivartta 6 -kanavaisella servosoitimella ilman koodausta: 5 vaihetta
Kuinka ohjata robottivartta 6 -kanavaisella servo -soittimella ilman koodausta: Tämä opetusohjelma osoittaa, kuinka ohjata robottivartta 6 -kanavaisella servo -soittimella ilman koodausta