Orodha ya maudhui:

Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitumia Ukitumia IRobot Unda Kama Msingi: Hatua 7 (na Picha)
Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitumia Ukitumia IRobot Unda Kama Msingi: Hatua 7 (na Picha)

Video: Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitumia Ukitumia IRobot Unda Kama Msingi: Hatua 7 (na Picha)

Video: Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu ya Kujitumia Ukitumia IRobot Unda Kama Msingi: Hatua 7 (na Picha)
Video: MAIDS WAINGIA BILA VIATU UKUMBINI !! NA WANAVYOJUA KURINGA SASA! |GadsonAndSalome |MCKATOKISHA 2024, Novemba
Anonim
Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu Inayotumia Kutumia IRobot Unda Kama Msingi
Jinsi ya Kutengeneza Roboti ya Mpira wa Kikapu Inayotumia Kutumia IRobot Unda Kama Msingi

Hii ndio kuingia kwangu kwa changamoto ya Uundaji wa iRobot. Sehemu ngumu zaidi ya mchakato huu wote kwangu ilikuwa kuamua ni nini roboti itafanya. Nilitaka kuonyesha sifa nzuri za Undaji, wakati pia nikiongeza kwa urembo wa robo. Mawazo yangu yote yalionekana ama kuanguka katika kitengo cha kuchosha lakini muhimu, au baridi na isiyowezekana. Mwishowe baridi na isiyowezekana ilishinda na robot ya kucheza mpira wa kikapu ilizaliwa. Baada ya mawazo kadhaa niligundua kuwa hiyo inaweza kuwa ya vitendo. Tuseme unatumia karatasi ya machungwa, na kwamba makopo yako yote ya taka yana mabango ya nyuma ya kijani…

Hatua ya 1: Sehemu za Aquire

Kwa sababu ya kikomo cha wakati wa shindano, sehemu nyingi nilizotumia zilikuwa "nje ya rafu". Sehemu za Roboti "Zilizotumiwa" Tengeneza (x1) - kutoka iRobot www.irobot.comXBC V.3.0 (x1) - kutoka kwa Botball www.botball.org Cable ya Roge-Roomba (x1) - kutoka Botball www.botball.org (x2) - kutoka kwa Botball www.botball.org Sharp rangefinder (x1) - kutoka Botball www.botball.org Matofali yaliyopigwa ya LEGO - kutoka LEGO www.lego.com screws za mashine 6-32 (x4) - kutoka McMaster www.mcmaster.com "Imeundwa" Sehemu za Roboti Zilizotumiwa: 3/8 "karatasi nene iliyotengwa ya PVC - vitu hivi ni vya kushangaza, lakini siwezi kukumbuka nilikipata wapi, lakini ni kama hii vitu https://www.lynxmotion.com / Category.aspx? CategoryID = 62 Sehemu zingine: Mpira wa Chungwa "POOF" - kutoka kwa WalMartBasketball inayoangalia takataka inaweza - kutoka LowesGreen "backboard" - PVC ya ziada iliyochorwa kijani kibichi.

Hatua ya 2: Unda Sehemu ya kipekee

Unda Sehemu ya kipekee
Unda Sehemu ya kipekee

Sehemu pekee ambayo ilibidi nitengeneze ilikuwa sahani ambayo ilifunga kwa Unda na kutoa nafasi ya LEGO. Nafasi ya mashimo ya matofali ya LEGO ni 8mm mbali, lakini nilifanya nafasi mara mbili ili kuokoa wakati. PVC iliyotolewa ni upepo wa kufanya kazi nayo. Inaweza kukatwa na kisu cha matumizi, lakini ni ngumu na yenye nguvu. Mara nyingi mimi huchukua roboti na sahani hii na sikuwa na shida bado.

Hatua ya 1: Kata karatasi hadi 3.5 "x 9.5", unaweza kukata hii na kisu cha matumizi. Hatua ya 2: Piga mashimo kwa vis. Vipimo vya kuunda hufanya sanduku ambalo ni 2 na 5/8 "na 8 na 5/8". Hatua ya 3: Toboa matundu yaliyopangwa kwa matofali ya LEGO. Tumia biti ya kuchimba ya 3/16 na nikaweka nafasi ya mashimo yenye urefu wa 16mm. Kidokezo: Niliweka karatasi kwenye programu ya CAD, nikachapisha saizi kamili na kuibandika kwenye karatasi. Kisha nikatumia hii kama mwongozo wa kukata na kuchimba visima.

Hatua ya 3: Kukusanya Robot

Kukusanya Robot
Kukusanya Robot
Kukusanya Robot
Kukusanya Robot
Kukusanya Robot
Kukusanya Robot

Ninafurahiya kujenga vitu kwa urahisi iwezekanavyo, kwa njia hiyo wakati wanaruka kutoka kwenye meza sio lazima ujenge tena!

1. Punja sahani iliyo na mtindo mpya juu ya Unda 2. Jenga mkono wa kunyakua mpira 3. Jenga mkono wa kushikilia kamera 4. Jenga mlima kwa safu ya upeo 5. Panda XBC na unganisha nyaya zote

Hatua ya 4: Kupanga Programu ya Robot

Niliamua kutumia XBC kama mtawala wangu kwa sababu ya kujengwa kwa ufuatiliaji wa rangi. Kwa sababu niliamua kuwa na XBC kama akili za operesheni hiyo nilipanga roboti yangu katika Interactive C, au kama ninavyoiita IC. IC ni bure kutumia na inaweza kupakuliwa kwenye www.botball.org. IC ni sawa na C ++, lakini imejengwa kadhaa kwenye maktaba. Kama inavyotokea, David Miller kutoka Chuo Kikuu cha Oklahoma ameandika maktaba ya Unda ambayo inaweza kupakuliwa kutoka kwa ukurasa wake katika https://i-borg.engr.ou.edu/~dmiller/create/. Na rasilimali hizo na miongozo ya kuunda nilikuwa tayari kuandaa. Lakini changamoto kubwa iliyofuata ilikuwa ni nini nilitaka ifanye? Nilitaka roboti ambayo inaweza kwenda kuchukua mipira ya machungwa na kuifunga kwenye kikapu. Lengo langu lilisikika kuwa rahisi, na pengine ingekuwa rahisi, lakini kadiri nilivyoingia katika kile Uundaji ungefanya, ndivyo nilitaka ifanye zaidi. Orodha yangu ya mwisho ilionekana kama hii: 1. Pata mpira wa machungwa2. Chukua mpira wa machungwa3. Pata kikapu4. Weka mpira kwenye kikapuWakati1. Kuepuka vitu2. Sio kuanguka kutoka kwa kitu chochote (kama meza) 3. Kugundua chaji ya betri na kuegesha kwa msingi wa nyumbani wakati chini Oh, na yote haya ni huru kabisa, ikimaanisha kuwa yote yamepangwa tayari.

Hatua ya 5: Kanuni

Inaweza kuwa ya fujo, lakini inafanya kazi. // et port / * Cable ya kuunda pia inahitaji kuingizwa. Jack ya nguvu, kuziba 3 iliyokwenda kwa bandari ya 8 na ile iliyoitwa UX ndani ya JP 28 (karibu na bandari ya USB) na U kuelekea kamera * / #fafanua c_ chini 5 // kamera servo chini # fafanua a_ chini 17 // mkono servo chini # fafanua shika 50 // servo shika mpira # fafanua umekamatwa 27 // nafasi ya mkono wa servo kuzuia kushikwa kwenye meza # fafanua risasi 150 // servo tupa mpira # fafanua track_c 25 // kamera servo track nafasi ya karibu # fafanua track_f 45 // kamera servo track track position # fafanua kituo cha 120 // kituo cha maono ya kamera # define inrange 30 // track_y kuratibu wakati mpira uko kwenye kucha / fafanua mpira 0 // kituo cha mpira wa machungwa # fafanua mpira_x (track_x (mpira, 0)) // x uratibu wa mpira # fafanua mpira_y (track_y (mpira, 0)) // y uratibu wa mpira # fafanua polepole 100 // kasi ya polepole motor # fafanua haraka 175 // kasi ya gari haraka # fafanua wazi 0.2 // s leep kurudi nyuma na vizuizi # fafanua wakati 0.5 //1.0 ni zamu 90 kulia # fafanua mapumziko 0.05 // wakati wa kulala wakati wa kufuatilia matone nyuma mbali na kitu kilichopigwa # fafanua moja kwa moja 32767 // gari kwa njia iliyonyooka # fafanua nyuma 2 // kituo cha rangi kuu ya backboard # fafanua mraba 1 // kituo cha rangi ya lafudhi ya backboard # fafanua track_d 250 // nafasi ya kamera kwa lengo la ufuatiliaji # fafanua track_find 70 // nafasi ya kamera kwa ufuatiliaji mrefu # fafanua nyuma 2.25 // wakati wa kulala kwa 180 # fafanua nyuma_f -150 // kasi ya haraka # fafanua nyuma_sl -125 // kasi ya nyuma nyuma # fafanua kituo_x 178 // kituo cha kweli x ya cam # define center_y 146 // true y center of camint pida; // epuka processid pidb; // trackint pintc; kuwezesha_servos (); // kuwezesha servos init_camera (); {ikiwa (r_button () || gc_ldrop || gc_rdrop) {// ikiwa imechukuliwa au kifungo cha bega kuua (pida); kuua (pidb); kuua (pidc); afya_servos (); kukatwa (); kuvunja;} kuunda_battery_charge (); onyesha_ya wazi (); printf ("malipo =% l / n", gc_battery_charge); ikiwa (malipo ya gc_battery <1200l || b_button ()) {kuua (pida); kuua (pidb); kuua (pidc); kutupa (); have_ball = 0; kuunda_demo (1); wakati (b_button ()); wakati (gc_battery_charge <2800l &&! b_button ()) {create_battery_charge (); onyesha_ya wazi (); printf ("malipo =% l / n", gc_battery_charge); kulala (1.0);} kuunganishwa (); nyuma (); kulala (2.0); kuanza_a (); start_b ();}}}} utupu epuka () {wakati (1) {// rudia milele unda_sensor_update (); ikiwa (gc_lbump == 1) {// mapema bonge epuka_kulia ();} // inageuka kulia ili kuepuka mwingine ikiwa (gc_rbump == 1) {// bonge la kulia epuka_kushoto ();} // pinduka kushoto ili kuepuka mwingine ikiwa (gc_lfcliff == 1) {// mwamba wa kushoto mbele epuka_kulia ();} vingine ikiwa (gc_rfcliff == 1) {// kulia mbele mwamba epuka_kushoto ();} mwingine ikiwa (gc_lcliff == 1) {// mwamba wa kushoto epuka_kulia ();} mwingine ikiwa (gc_rcliff == 1) {// mwamba wa kulia epuka_kushoto ();}}}} batili ya track_ball () {kuua (pidc); wakati (! have_ball) {// kurudia hadi kupata track_update ya mpira (); mbali (); // huweka kamera tayari (); // inaweka mkono wakati (na katikati-5)) {// ikiwa mpira umesalia track_update (); unda_drive_direct (polepole, haraka); unda_drive_direct (haraka, polepole); tengeneza_drive_straight (haraka); // lala moja kwa moja (pumzika);}} shika (); // shika mpira beep (); Nina mpira} kuanza_c (); // pata usingizi wa kikapu (1.0); tafuta (); wakati (track_x (backb, 0) = (center_x + 20)) {// wakati sio katikati track_update (); ikiwa (track_x (backb, 0)> = (center_x + 20)) {// ikiwa ubao wa nyuma umesalia track_update (); kuunda_spin_CCW (100);} // pinduka kushoto nyingine ikiwa (track_x (backb, 0) <= (center_x-20)) {// ikiwa backboard iko sawa track_update (); kuunda_spin_CW (300-center_x);} // pinduka kulia inapokaribia kituo} kituo (); wakati (track_size (backb, 0) <= (6000)) {// wakati lengo ni chini ya saizi 6000 kwa ukubwa track_update (); ikiwa (track_x (backb, 0) <= (center_x-5)) {// ikiwa lengo limesalia track_update (); fanya_drive_direct (polepole, haraka); fanya_drive_direct (haraka, polepole); kuunda_drive_straight (haraka); // lala moja kwa moja (pumzika);}} simama (); // kuunda_drive_straight (haraka); // karibu kidogo // usingizi (1.0); // kuacha (); kulala (1.0); kuunda_spin_CW (speeda); // kulala kulia kulia (kurudi nyuma); chini (); // weka kamera chini kufuatilia usingizi wa backboard (1.0); track_set_minarea (200); // tumia saizi ndogo ndogo, kwani tumeelekezwa na tutakaribia wakati y kuratibu track_update (); ikiwa (track_x (backb, 0) <= (center_x-5)) {// ikiwa lengo limesalia track_update (); nyuma_kulia (); // piga usingizi wa kushoto (pumzika);}} ikiwa "track_x (backb, 0)> = (center_x + 5)) {// ikiwa lengo ni sawa track_update (); kushoto_kushoto (); nyuma (); // lala moja kwa moja (pumzika);}} simama (); beep (); kutupa (); // risasi usingizi (1.0); have_ball = 0; // ukumbusho nilitupa mpira na sina} start_b (); // kurudi kwenye usingizi wa ufuatiliaji wa mpira (1.0); // usifanye chochote mpaka mchakato huu utakapokufa} batili ya kuunganisha () {create_connect (); tengeneza_full ();; kulala (wazi); simama ();} batili zungusha_l () {tengeneza_spin_CCW (speeda); kulala (muda); simama ();} batili zungusha_r () {tengeneza_spin_CW (kasi); kulala (muda); stop ();} batili stop () {create_drive (0, straight);} batili nyuma () {create_drive (back_s, straight);} batili tayari () {set_servo_position (arm, a_down);} batili check () {set_servo_position (cam, track_c);} batili mbali () {set_servo_position (cam, track_f);} batili ledge () {set_servo_position (mkono, umeshikwa);} batili tupa () {int a; kwa (a = 50; a> = 30; a- = 1) {// jiandae set_servo_position (mkono, a);} set_servo_position (mkono, risasi);} batili kunyakua () {int a; kwa (a = 0; a (cam, track_find);} batili start_a () {pida = start_process (epuka ());} batili start_b () {pidb = start_process (track_ball ());} batili start_c () {pidc = start_process (find_basket ());} batili kuua (int pid) {CREATE_BUSY; // subiri mchakato wa kuunda sasa umalize, na kuchukua kipaumbele kill_process (pid); CREATE_FREE; daraja (); / {kuua (pidb); kuua (pidc); daraja (); kurudi_kuondoka (); zungusha_r (); tayari (); ikiwa (have_ball) {start_c ();}} mwingine ikiwa (! have_ball) {start_b ();}} batili back_left () {create_drive_direct (back_f, back_sl);} batili back_right () {create_drive_direct (back_sl, back_f);}

Hatua ya 6: Ilikuwa ya Thamani?

Gharama zilikuwa: Unda + betri + doc = $ 260XBC starter kit (xbc, cam, matofali ya LEGO, sensorer) = $ 579PVC + rangi + screws = karibu $ 20 Gharama ya jumla = $ 859 tayari nilikuwa na kitita cha XBC kutoka Botball, kwa hivyo gharama Nilipata gharama ya Uundaji. Nadhani ilikuwa ya thamani, na sehemu nzuri zaidi ni kwamba sehemu zote nilizotumia zinaweza kutumika tena, ikiwa ningeweza kujiletea kugawanya bot hii. Video hii inaonyesha utaratibu mdogo wa kuepuka., juu ya meza. Video hii inaonyesha roboti akifunga mipira 5 ya machungwa kwa goli. Nilisaidia tu kuharakisha mchakato pamoja, ingekuwa imepata mpira 5 mwishowe peke yake.

Hatua ya 7: Hitimisho

Matokeo ya mwisho ni roboti inayoweza kuchukua na kufunga mipira ya machungwa kwa lengo peke yake.

Nilipenda kufanya kazi kwenye mradi huu. Kadri nilivyofanya kazi kwenye roboti hii ndivyo nilivyozidi kushikamana nayo. Sasa nazungumza nayo kana kwamba ni mnyama kipenzi. Natumahi kuwa hii imekusaidia kwenye mradi wako unaofuata. Kuna watu wengi ambao ninahitaji kuwashukuru, lakini kuna watu wengi sana. Kama Bernard wa Chartres alivyosema kwa kifahari: "sisi ni kama kibete juu ya mabega ya majitu, ili tuweze kuona zaidi yao, na vitu kwa mbali zaidi, sio kwa sababu ya ukali wowote tunaouona, au mwili wowote tofauti, lakini kwa sababu tunachukuliwa juu na kukuzwa na saizi yao kubwa."

Ilipendekeza: