Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:09
Skupino sestavljata 2 inženirja avtomatizacije iz UCN, ki sta se domislila briljantne ideje, da smo motivirani za razvoj in razvoj. Ideja temelji na plošči Arduino, ki upravlja robotsko roko. Plošča Arduino je možgani operacije, nato pa bo aktuator operacije, robotska roka, naredil vse, kar mora. Bolj poglobljena razlaga bo prišla kasneje.
1. korak: Oprema
Robotska roka:
Phantomx Pincher Robot Arm Kit Maek II (https://learn.trossenrobotics.com/38-interbotix-ro…)
Programska oprema za robota- https://www.arduino.cc/en/Main/OldSoftwareRelease… Kamera za zaznavanje barv:
CMUcam5 Pixy kamera - (https://charmedlabs.com/default/pixy-cmucam5/)
Programska oprema - PixyMon (https://cmucam.org/projects/cmucam5/wiki/Install_PixyMon_on_Windows_Vista_7_8)
Korak: Namestitev Arduina
Namestitev na plošči si lahko ogledate tukaj, kar je zelo enostavno.
Na levi strani je napajalnik.
Srednji je za prvi servo, ki je pozneje povezan z drugimi servomotorji, servo s servo.
Spodnji del je, kjer nadzorujemo ploščo iz računalnika ali prenosnika, ki ima na drugem koncu USB vhod.
3. korak: Končni program
||| PROGRAM |||
#vključi
#include #include "poses.h" #include // Pixy Library #include
#define POSECOUNT 5
BioloidController bioloid = BioloidController (1000000);
const int SERVOCOUNT = 5; int id; int pos; logična IDCheck; boolean RunCheck;
void setup () {pinMode (0, OUTPUT); ax12SetRegister2 (1, 32, 50); // nastavite register številke 1 registra 32 na hitrost 50. ax12SetRegister2 (2, 32, 50); // nastavite register številk 2 registra 32 na hitrost 50. ax12SetRegister2 (3, 32, 50); // nastavimo register številke 3 registra 32 na 50 32 do hitrosti 100. // inicializiramo spremenljivke id = 1; pos = 0; IDCheck = 1; RunCheck = 0; // odprite serijska vrata Serial.begin (9600); zamuda (500); Serial.println ("###########################"); Serial.println ("Serijska komunikacija vzpostavljena.");
// Preverite napetost akumulatorja Lipo CheckVoltage ();
// Skeniraj servomotorje, povratni položaj MoveTest (); MoveHome (); MenuOptions (); RunCheck = 1; }
void loop () {// preberite senzor: int inByte = Serial.read ();
switch (inByte) {
primer '1': MovePose1 (); prekiniti;
primer '2': MovePose2 (); prekiniti; primer '3': MovePose3 (); prekiniti;
primer '4': MovePose4 (); prekiniti;
primer '5': MoveHome (); prekiniti; primer '6': Zgrabi (); prekiniti;
primer '7': LEDTest (); prekiniti;
primer '8': RelaxServos (); prekiniti; }}
void CheckVoltage () {// počakajte, nato preverite napetost (LiPO varnost) plavajoča napetost = (ax12GetRegister (1, AX_PRESENT_VOLTAGE, 1)) / 10,0; Serial.println ("###########################"); Serial.print ("Sistemska napetost:"); Serial.print (napetost); Serial.println ("volti"); if (napetost 10,0) {Serial.println ("Nazivne ravni napetosti."); } if (RunCheck == 1) {MenuOptions (); } Serial.println ("##########################"); }
void MoveHome () {zakasnitev (100); // priporočena pavza bioloid.loadPose (Domov); // naložimo pozo iz FLASH -a v bioloid nextPose medpomnilnika.readPose (); // beremo v trenutnih položajih servo v vmesnem pomnilniku curPose Serial.println ("#########################"); Serial.println ("Premikanje servomotorjev v začetni položaj"); Serial.println ("##########################"); zamuda (1000); bioloid.interpolateSetup (1000); // nastavitev za interpolacijo od trenutnega-> naslednjih več kot 1/2 sekunde medtem (bioloid.interpolating> 0) {// to storite, dokler nismo dosegli naše nove bioge bioze.interpolateStep (); // premaknite servomotorje, če je potrebno. zamuda (3); } if (RunCheck == 1) {MenuOptions (); }}
void MovePose1 () {zakasnitev (100); // priporočena pavza bioloid.loadPose (Pose1); // naložimo pozo iz FLASH -a v bioloid nextPose medpomnilnika.readPose (); // beremo v trenutnih položajih servo vmesnika curPose Serial.println ("#########################"); Serial.println ("Premikanje servomotorjev na 1. mesto"); Serial.println ("##########################"); zamuda (1000); bioloid.interpolateSetup (1000); // nastavitev za interpolacijo od trenutnega-> naslednjih več kot 1/2 sekunde medtem (bioloid.interpolating> 0) {// to storite, dokler nismo dosegli naše nove bioge bioze.interpolateStep (); // premaknite servomotorje, če je potrebno. zamuda (3); } SetPosition (3, 291); // nastavimo položaj spoja 3 na zakasnitev '0' (100); // počakamo, da se zgib premakne, če (RunCheck == 1) {MenuOptions (); }}
void MovePose2 () {zakasnitev (100); // priporočena pavza bioloid.loadPose (Pose2); // naložimo pozo iz FLASH -a v bioloid nextPose medpomnilnika.readPose (); // beremo v trenutnih položajih servo v vmesnem pomnilniku curPose Serial.println ("#########################"); Serial.println ("Premikanje servomotorjev na 2. mesto"); Serial.println ("##########################"); zamuda (1000); bioloid.interpolateSetup (1000); // nastavitev za interpolacijo od trenutnega-> naslednjih več kot 1/2 sekunde medtem (bioloid.interpolating> 0) {// to storite, dokler nismo dosegli naše nove bioge bioze.interpolateStep (); // premaknite servomotorje, če je potrebno. zamuda (3); } SetPosition (3, 291); // nastavimo položaj spoja 3 na zakasnitev '0' (100); // počakamo, da se zgib premakne, če (RunCheck == 1) {MenuOptions (); }} void MovePose3 () {zakasnitev (100); // priporočena pavza bioloid.loadPose (Pose3); // naložimo pozo iz FLASH -a v bioloid nextPose medpomnilnika.readPose (); // beremo v trenutnih položajih servo vmesnika curPose Serial.println ("#########################"); Serial.println ("Premikanje servomotorjev na 3. mesto"); Serial.println ("###########################"); zamuda (1000); bioloid.interpolateSetup (1000); // nastavitev za interpolacijo od trenutnega-> naslednjih več kot 1/2 sekunde medtem (bioloid.interpolating> 0) {// to naredimo, dokler še nismo dosegli naše nove bioge poze.interpolateStep (); // premaknite servomotorje, če je potrebno. zamuda (3); } SetPosition (3, 291); // nastavimo položaj spoja 3 na zakasnitev '0' (100); // počakamo, da se zgib premakne, če (RunCheck == 1) {MenuOptions (); }}
void MovePose4 () {zakasnitev (100); // priporočena pavza bioloid.loadPose (Pose4); // naložimo pozo iz FLASH -a v bioloid nextPose medpomnilnika.readPose (); // beremo v trenutnih položajih servo v vmesnem pomnilniku curPose Serial.println ("#########################"); Serial.println ("Premikanje servomotorjev na 4. mesto"); Serial.println ("###########################"); zamuda (1000); bioloid.interpolateSetup (1000); // nastavitev za interpolacijo od trenutnega-> naslednjih več kot 1/2 sekunde medtem (bioloid.interpolating> 0) {// to storite, dokler nismo dosegli naše nove bioge bioze.interpolateStep (); // premaknite servomotorje, če je potrebno. zamuda (3); } SetPosition (3, 291); // nastavimo položaj spoja 3 na zakasnitev '0' (100); // počakamo, da se zgib premakne, če (RunCheck == 1) {MenuOptions (); }}
void MoveTest () {Serial.println ("##########################"); Serial.println ("Inicializacija preskusa znakov gibanja"); Serial.println ("##########################"); zamuda (500); id = 1; poz = 512; while (id <= SERVOCOUNT) {Serial.print ("Premikanje servo ID -ja:"); Serial.println (id);
while (pos> = 312) {SetPosition (id, pos); pos = pos--; zamuda (10); }
while (pos <= 512) {SetPosition (id, pos); pos = pos ++; zamuda (10); }
// iterate to next servo ID id = id ++;
} if (RunCheck == 1) {MenuOptions (); }}
void MenuOptions () {Serial.println ("###########################"); Serial.println ("Prosimo, vnesite možnost 1-5, če želite znova zagnati posamezne teste."); Serial.println ("1) 1. položaj"); Serial.println ("2) 2. mesto"); Serial.println ("3) 3. položaj"); Serial.println ("4) 4. položaj"); Serial.println ("5) Domači položaj"); Serial.println ("6) Preverite sistemsko napetost"); Serial.println ("7) Izvedite preskus LED"); Serial.println ("8) Sprostite servomotorje"); Serial.println ("##########################"); }
void RelaxServos () {id = 1; Serial.println ("###########################"); Serial.println ("Sproščujoči servomotorji."); Serial.println ("##########################"); while (id <= SERVOCOUNT) {Sprosti se (id); id = (id ++)%SERVOCOUNT; zamuda (50); } if (RunCheck == 1) {MenuOptions (); }}
void 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:"); Serial.println (id); zamuda (3000); ax12SetRegister (id, 25, 0); Serial.print ("LED OFF - Servo ID:"); Serial.println (id); zamuda (3000); id = id ++; } if (RunCheck == 1) {MenuOptions (); }}
void Grab () {SetPosition (5, 800); // nastavimo položaj spoja 1 na zakasnitev '0' (100); // počakamo, da se zgib premakne
}
Naš program smo zasnovali na programu proizvajalcev PincherTest z nekaj večjimi spremembami v primeru pozicioniranja. Uporabili smo poses.h, da je imel robot položaje v spominu. Najprej smo poskušali ustvariti samodejno roko za igranje s Pixycam, vendar se zaradi težav s svetlobo in majhnim zaslonom to ni zgodilo. Robot ima osnovni domači položaj, po nalaganju programa bo preizkusil vse servomotorje, ki jih najdemo v robotu. Postavili smo poze za gumbe 1-4, zato si jih bomo zlahka zapomnili. Uporabite program.
4. korak: Video vodič
5. korak: Zaključek
Skratka, robot je za nas zabaven majhen projekt in zabavno lupkanje, s katerim se lahko igramo in eksperimentiramo. Predlagam, da ga preizkusite in prilagodite.
Priporočena:
Kako narediti brezžično robotsko roko s kroglicami Airsoft: 9 korakov
Kako narediti brezžično robotsko roko z Airsoft kroglami: Pozdravljeni prijatelji, v tem navodilu vam bom pokazal, kako narediti brezžično robotsko roko, ki lahko niha, se premika v smeri navzgor in navzdol in strelja s kroglicami airsoft z brezžičnim daljinskim upravljalnikom
Zamahnite z roko, da nadzirate robotsko roko OWI Brez priloženih strun: 10 korakov (s slikami)
Zamahnite z roko, da nadzirate robotsko roko OWI … Brez priloženih nizov: IDEJA: Na spletnem mestu Instructables.com (od 13. maja 2015) obstajajo še vsaj 4 drugi projekti, ki se nanašajo na spreminjanje ali nadzor robotske roke OWI. Ni presenetljivo, saj je tako odličen in poceni robotski komplet za igranje. Ta projekt je podoben v
Kako narediti robotsko roko doma: 8 korakov
Kako narediti robotsko roko doma: V tem navodilu sem vam pokazal, kako sem naredil to robotsko roko in kako sem to roko nadzoroval s pametnim telefonom
Upravljajte robotsko roko z Zio moduli, del 1: 8 korakov
Nadzor robotske roke z Zio moduli 1. del: Ta objava na spletnem dnevniku je del serije Zio Robotics.Uvod V tej vadnici bomo zgradili projekt, v katerem bomo za krmiljenje robotske roke uporabili module Zio. Ta projekt vas bo naučil, kako narediti, da se kremplj robotske roke odpre in zapre. Ta n
Arduino - Klavirske ploščice: 16 korakov (s slikami)
Arduino - Piano Tiles: Pozdravljeni, ljudje na internetu, tukaj bo šlo za to, kako narediti, kar DEFINITIVNO ni odtrganje mobilne igre na arduino uno r3.za začetek boste potrebovali vse dele, ki so naslednji 1x Arduino Uno r3 (42 USD) 2x ščit za tipkovnico LCD (vsak po 19 USD) 5