Orodha ya maudhui:

Mdhibiti wa Roboti ya msingi wa Matlab: Hatua 9
Mdhibiti wa Roboti ya msingi wa Matlab: Hatua 9

Video: Mdhibiti wa Roboti ya msingi wa Matlab: Hatua 9

Video: Mdhibiti wa Roboti ya msingi wa Matlab: Hatua 9
Video: CS50 2015 - Week 8 2024, Julai
Anonim
Image
Image
Mdhibiti wa Roboti ya msingi wa Matlab
Mdhibiti wa Roboti ya msingi wa Matlab

Tangu nilipokuwa mtoto, nimekuwa na ndoto ya kuwa Iron Man na bado ninafanya hivyo. Iron Man ni mmoja wa wahusika ambao kwa kweli inawezekana na kuweka tu ninatamani kuwa Iron Man siku moja hata kama watu watanicheka au wanasema haiwezekani kwa sababu "haiwezekani mpaka mtu afanye hivyo" -Arnold Schwarzenegger.

ROS ni mfumo unaoibuka ambao hutumiwa kutengeneza mifumo tata ya roboti. Matumizi yake ni pamoja na: Mfumo wa Bunge wa Kujiendesha, Ushirikiano, Silaha za bandia na Mashine nzito ya tasnia ya viwanda.

Watafiti na wahandisi huinua ROS kwa kuunda prototypes, wakati wauzaji tofauti hutumia kuunda bidhaa zao. Ina usanifu tata ambao hufanya iwe ngumu kusimamiwa na mtu aliye kilema. Kutumia MATLAB kuunda kiunga cha kiunga na ROS ni njia mpya ambayo inaweza kusaidia watafiti, wahandisi na wachuuzi katika kutengeneza suluhisho kali zaidi.

Kwa hivyo hii inayoweza kufundishwa ni juu ya jinsi ya kutengeneza Mdhibiti wa Roboti wa makao ya Matlab, hii itakuwa moja ya mafunzo machache sana hapa na kati ya mafundisho machache ya ROS. Lengo la mradi huu ni kubuni kidhibiti ambacho kinaweza kudhibiti roboti yoyote ya ROS iliyounganishwa na mtandao wako. Basi wacha tuanze!

mikopo ya kuhariri video: Ammar Akher, kwa [email protected]

Vifaa

Vipengele vifuatavyo vinahitajika kwa mradi huo:

(1) ROS PC / Robot

(2) Router

(3) PC iliyo na MATLAB (toleo: 2014 au hapo juu)

Hatua ya 1: Kupata Usanidi wa Kila kitu

Kupata Kila Usanidi
Kupata Kila Usanidi

Kwa hili kufundisha, ninatumia Ubuntu 16.04 kwa pc yangu ya linux na ros-kinetic, kwa hivyo ili kuepuka mkanganyiko napendekeza kutumia ros kinetic na ubuntu 16.04 kwani ina msaada bora kwa ros-kinetic. Kwa habari zaidi juu ya jinsi ya kusanikisha ros kinetic nenda kwa https://wiki.ros.org/kinetic/Installation/Ubuntu. Kwa MATLAB unaweza kununua leseni au kupakua toleo la uchaguzi kutoka hapa.

Hatua ya 2: Kuelewa Jinsi Mdhibiti Anavyofanya Kazi

Kuelewa Jinsi Mdhibiti Anavyofanya Kazi
Kuelewa Jinsi Mdhibiti Anavyofanya Kazi

Pc inaendesha mdhibiti wa roboti kwenye MATLAB. Mdhibiti huchukua anwani ya IP na bandari ya ros pc / robot.

Mada ya ros hutumiwa kuwasiliana kati ya mtawala na rc pc / robot, ambayo pia inachukuliwa kama pembejeo na mtawala. Modem inahitajika kuunda LAN (mtandao wa eneo la karibu) na ndio inapeana anwani za Ip kwa vifaa vyote vilivyounganishwa kwenye mtandao wake. Kwa hivyo rc pc / robot na pc inayoendesha mdhibiti lazima zote ziunganishwe kwenye mtandao huo (kwa mfano mtandao wa modem). Kwa hivyo sasa kwa kuwa unajua "inavyofanya kazi", wacha tuende kwa "jinsi imejengwa"…

Hatua ya 3: Kuunda kiolesura cha ROS-MATLAB

Kuunda kiolesura cha ROS-MATLAB
Kuunda kiolesura cha ROS-MATLAB
Kuunda kiolesura cha ROS-MATLAB
Kuunda kiolesura cha ROS-MATLAB
Kuunda kiolesura cha ROS-MATLAB
Kuunda kiolesura cha ROS-MATLAB

Kiolesura cha ROS-MATLAB ni kielelezo muhimu kwa watafiti na wanafunzi kwa kuiga algorithms zao za roboti katika MATLAB na kuijaribu kwenye roboti zinazoendana na ROS. Kiunga hiki kinaweza kuundwa na kisanduku cha mfumo wa roboti kwenye matlab na tunaweza kuonyesha algorithm yetu na kuipima roboti inayowezeshwa na ROS au katika simulators za roboti kama vile Gazebo na V-REP.

Ili kusanikisha kisanduku cha zana cha mfumo wa roboti kwenye MATLAB yako, nenda tu kwenye chaguo la Ongeza kwenye upau wa zana na utafute sanduku la vifaa vya roboti katika kigunduzi cha nyongeza. Kutumia kisanduku cha zana cha roboti tunaweza kuchapisha au kujiandikisha kwa mada, kama node ya ROS, na tunaweza kuifanya kuwa bwana wa ROS. Muunganisho wa MATLAB-ROS una kazi nyingi za ROS ambazo unaweza kuhitaji kwa miradi yako.

Hatua ya 4: Kupata Anwani ya IP

Kupata Anwani ya IP
Kupata Anwani ya IP
Kupata Anwani ya IP
Kupata Anwani ya IP

Ili mtawala afanye kazi ni muhimu ujue anwani ya ip ya robot / pc yako ya ROS na pc inayoendesha mtawala kwenye MATLAB.

Ili kupata ip ya pc yako:

Kwenye Windows:

Fungua haraka ya amri na andika amri ya ipconfig na andika anwani ya IPv4

Kwa Linux:

Andika amri ya ifconfig na uangalie anwani ya inet. Sasa kwa kuwa una anwani ya ip, ni wakati wa kujenga GUI…

Hatua ya 5: Unda GUI kwa Mdhibiti

Unda GUI kwa Mdhibiti
Unda GUI kwa Mdhibiti
Unda GUI kwa Mdhibiti
Unda GUI kwa Mdhibiti
Unda GUI kwa Mdhibiti
Unda GUI kwa Mdhibiti

Ili kuunda GUI, fungua MATLAB na andika mwongozo kwenye dirisha la amri. Hii itafungua programu ya mwongozo ingawa ambayo tutatengeneza GUI yetu. Unaweza pia kutumia mbuni wa programu kwenye MATLAB kuunda GUI yako.

Tutatengeneza vifungo 9 kwa jumla (kama inavyoonyeshwa kwenye mtini):

Vifungo 6 vya kushinikiza: Foward, Backward, kushoto, kulia, Unganisha kwa Robot, Tenganisha

Vifungo vinavyoweza kubadilika: Ros pc ip, bandari na jina la Mada.

Vifungo vinavyobadilika ni vifungo ambavyo vitachukua ip ya ROS pc, ni bandari na jina la Mada kama pembejeo. Jina la Mada ni kile mtawala wa MATLAB na ROS robot / pc wanavyowasiliana kupitia. Ili kuhariri kamba kwenye kitufe kinachoweza kuhaririwa, bonyeza-bonyeza kitufe >> nenda kwa mali ya Mkaguzi >> Kamba na uhariri maandishi ya kitufe.

Mara tu GUI yako imekamilika, unaweza kupanga vifungo. Hapa ndipo furaha ya kweli inapoanza…

Hatua ya 6: Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI

Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI
Kupanga Vifungo Vinavyoweza Kubadilishwa kwa GUI

GUI imehifadhiwa kama faili ya.fig lakini kazi za msimbo / upigaji simu zinahifadhiwa katika fomati ya.m. Faili ya.m ina nambari ya vifungo vyako vyote. Ili kuongeza kazi za kurudi nyuma kwa vifungo vyako, bonyeza kitufe cha kulia> > Angalia kurudi nyuma >> kupigwa tena. Hii itafungua faili ya.m kwa GUI yako hadi ambapo kitufe fulani kimefafanuliwa.

Upigaji simu wa kwanza ambao tutafanya nambari ni kwa kitufe cha kuhaririwa cha ROS IP. Chini ya kazi edit1_Callback andika nambari ifuatayo:

kazi edit1_Callback (hObject, eventdata, vipini)

ros_master_ip wa kimataifa

ros_master_ip = pata (hObject, 'String')

Hapa kazi hufafanuliwa kama edit1_Callback, ambayo inahusu kitufe cha kwanza kinachoweza kuhaririwa. Tunapoingiza anwani ya IP kutoka kwa mtandao wa ROS kwenye kitufe hiki kinachoweza kuhaririwa, itahifadhi anwani ya IP kama kamba katika anuwai ya ulimwengu inayoitwa ros_master_ip.

Halafu tu chini ya _OpeningFcn (hObject, eventdata, vipini, varargin) fafanua zifuatazo (tazama mtini):

ros_master_ip wa kimataifa

kimataifa ros_master_port

jina la teleop_topic_name

ros_master_ip = '192.168.1.102';

ros_master_port = '11311';

teleop_topic_name = '/ cmd_vel_mux / pembejeo / teleop';

Umeweka tu nambari ngumu ulimwenguni ros-pc ip (ros_master_ip), bandari (ros_master_port) na jina la Mada ya Teleop. Kinachofanya ni kwamba ukiacha vitufe vinavyoweza kuhaririwa kuwa tupu, maadili haya yaliyotanguliwa hapo awali yatatumika wakati unganisha.

Upigaji simu unaofuata tutakaa nambari ni kwa kitufe kinachoweza kuhaririwa Port.

Chini ya kazi edit2_Callback andika nambari ifuatayo:

kazi edit2_Callback (hObject, eventdata, vipini)

kimataifa ros_master_port

ros_master_port = pata (hObject, 'String')

Hapa kazi hufafanuliwa kama edit2_Callback, ambayo inahusu kitufe cha pili kinachoweza kuhaririwa. Tunapoingiza bandari ya ros pc / robot hapa kutoka kwa mtandao wa ROS kwenye kitufe hiki kinachoweza kuhaririwa, itahifadhi bandari kama kamba katika anuwai ya ulimwengu inayoitwa ros_master_port.

Vivyo hivyo upigaji simu unaofuata tutakao nambari ni kwa kitufe cha kuhariri jina la Mada.

Chini ya kazi edit3_Callback andika nambari ifuatayo:

kazi edit3_Callback (hObject, eventdata, vipini)

jina la teleop_topic_name

teleop_topic_name = pata (hObject, 'String')

Sawa na ros_master_port, hii pia imehifadhiwa kama kamba katika utofauti wa ulimwengu.

Ifuatayo tutaangalia kazi za kurudi nyuma kwa vifungo vya kushinikiza…

Hatua ya 7: Kupangilia vifungo vya kushinikiza vya GUI

Kupangilia vifungo vya kushinikiza vya GUI
Kupangilia vifungo vya kushinikiza vya GUI
Kupangilia vifungo vya kushinikiza vya GUI
Kupangilia vifungo vya kushinikiza vya GUI

Vifungo vya kushinikiza ambavyo tumeunda hapo awali ndio tutakavyotumia kusonga, kuunganisha na kukata roboti kutoka kwa kidhibiti. Vifungo vya kushinikiza vifungo hufafanuliwa kama ifuatavyo:

km. kazi pushbutton6_Callback (hObject, eventdata, vipini)

Kumbuka: kulingana na mpangilio ambao uliunda vifungo vyako vya kushinikiza, zingehesabiwa ipasavyo. Kwa hivyo kazi pushbutton6 katika faili yangu ya.m inaweza kuwa ya Mbele ilhali katika faili yako ya.m inaweza kuwa ya Nyuma kwa hivyo endelea kuzingatia. Ili kujua ni kazi gani inayofaa kwa kitufe chako cha kushinikiza, bonyeza-kulia tu >> Tazama vizuizi >> vizuizi na itafungua kazi kwa kitufe chako cha kushinikiza lakini kwa hii inayofahamika nadhani ni sawa na yangu.

Kwa kitufe cha Unganisha kwa roboti:

Chini ya kazi pushbutton6_Callback (hObject, eventdata, vipini):

kazi pushbutton6_Callback (hObject, eventdata, Hushughulikia) global ros_master_ip

kimataifa ros_master_port

jina la teleop_topic_name

roboti ya ulimwengu

velmsg ya ulimwengu

ros_master_uri = strcat ('https://', ros_master_ip, ':', ros_master_port)

setenv ('ROS_MASTER_URI', ros_master_uri)

siki

robot = rospublisher (teleop_topic_name, 'jiometri_msgs / Twist');

velmsg = rosmessage (roboti);

Upigaji simu huu utaweka ubadilishaji wa ROS_MASTER_URI kwa kushirikisha ros_master_ip na bandari. Kisha amri ya rosinit itaanzisha unganisho. Baada ya kuunganisha, itaunda mchapishaji wa jiometri_msgs / Twist, ambayo itatumika kwa kutuma kasi ya amri. Jina la mada ni jina ambalo tunatoa kwenye kisanduku cha kuhariri. Uunganisho utakapofanikiwa, tutaweza kutumia vifungo vya mbele, nyuma, kushoto, kulia.

Kabla ya kuongeza kurudi nyuma kwa vifungo vya mbele, vya nyuma vya kushinikiza, tunahitaji kuanzisha kasi ya kasi ya mstari na angular.

Kwa hivyo hapa chini _OpeningFcn (hObject, eventdata, vipini, varargin) fafanua zifuatazo (tazama mtini):

ulimwengu kushoto_spinVelocity kimataifa haki_spinVelocity

mbele mbeleVelocity

kurudi nyuma kimataifaVelocity

kushoto_spinVelocity = 2;

kulia_spinVelocity = -2;

mbeleVelocity = 3;

Mzunguko wa nyuma = -3;

Kumbuka: kasi zote ziko kwenye rad / s

Sasa kwa kuwa anuwai za ulimwengu zimefafanuliwa wacha tupange vifungo vya mwendo.

Kwa kifungo cha mbele:

kazi pushbutton4_Callback (hObject, eventdata, Hushughulikia) global velmsg

roboti ya ulimwengu

jina la teleop_topic_name

mbele mbeleVelocity

velmsg. Angular. Z = 0;

velmsg. Linear. X = mbeleVelocity;

tuma (robot, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', kweli);

Vivyo hivyo kwa kifungo cha nyuma:

kazi pushbutton5_Callback (hObject, eventdata, vipini)

velmsg ya ulimwengu

roboti ya ulimwengu

kurudi nyuma kimataifaVelocity

jina la teleop_topic_name

velmsg. Angular. Z = 0;

velmsg. Linear. X = Mzunguko wa nyuma;

tuma (robot, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', kweli);

Vivyo hivyo kwa kifungo cha kushoto cha kushoto: kazi pushbutton3_Callback (hObject, eventdata, vipini)

velmsgglobal robot kimataifa global left_spinVelocity

jina la teleop_topic_name

velmsg. Angular. Z = kushoto_spinVelocity;

velmsg. Linear. X = 0;

tuma (robot, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', kweli);

Vivyo hivyo kwa kifungo cha kulia cha kushinikiza:

velmsgglobal robot ya ulimwengu

kimataifa_spinVelocity

jina la teleop_topic_name

velmsg. Angular. Z = kulia_spinVelocity;

velmsg. Linear. X = 0;

tuma (robot, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', kweli);

Mara tu kazi zote za kupiga simu zimeongezwa na faili zimehifadhiwa, tunaweza kujaribu kidhibiti chetu.

Hatua ya 8: Kuweka Usanidi wa Mtandao kwenye ROS PC (Linux)

Kuweka Usanidi wa Mtandao kwenye ROS PC (Linux)
Kuweka Usanidi wa Mtandao kwenye ROS PC (Linux)
Kuweka Usanidi wa Mtandao kwenye ROS PC (Linux)
Kuweka Usanidi wa Mtandao kwenye ROS PC (Linux)

Tutakuwa tukijaribu mtawala kwenye ros pc (Linux), ambayo itahitaji kuanzisha usanidi wa mtandao. Kama pia unaendesha mdhibiti kwenye pc ya linux, itabidi usanidi usanidi wa mtandao pia.

Usanidi wa Mtandao:

Fungua dirisha la terminal yako na andika gedit.bashrc

Mara faili iko wazi ongeza yafuatayo:

Usanidi wa Mashine ya #Robot

kuuza nje ROS_MASTER_URI = https:// localhost: 11311

Anwani ya #IP ya node kuu ya ROS

kuuza nje ROS_HOSTNAME =

kuuza nje ROS_IP =

unganisha "ROS_HOSTNAME:" $ ROS_HOSTNAME

unganisha "ROS_IP:" $ ROS_IP

unganisha "ROS_MASTER_URI:" $ ROS_MASTER_URI

Lazima ufuate hatua hii kila wakati kwa sababu ya ugawaji wa nguvu wa IP.

Hatua ya 9: Endesha Mdhibiti

Endesha Mdhibiti
Endesha Mdhibiti

Tutajaribu mtawala wetu kwenye bot ya Turtle huko Gazebo.

Ili kusanikisha Gazebo, tafadhali rejelea

Kufunga Turtle bot, tafadhali rejea

Fungua folda ambapo umehifadhi faili zako za.fig na.m kwenye MATLAB na bonyeza Run (kama inavyoonekana kwenye picha). Hii itafungua kidhibiti kwenye PC. Kabla ya kubonyeza unganisha, hakikisha simulator yako ya turtle bot inafanya kazi.

Ili kujaribu uigaji wako wa TurtleBot:

Fungua Kituo kwenye Ros pc na andika: uzinduzi wa turtlebot_gazebo turtlebot_world. $. Hii itafungua masimulizi ya Turtlebot kwenye PC hiyo. Jina la mada ya TurtleBot ni / cmd_vel_mux / input / teleop, ambayo tayari tumetoa katika programu hiyo. Andika kwenye anwani ya ros pc Ip, bandari na jina la mada kwenye vifungo vinavyoweza kuhaririwa na bonyeza kitufe cha Unganisha kwenye Robot. Turtle bot yako inapaswa kuanza kusonga wakati bonyeza mbele, Nyuma nk.

Kuangalia kasi na mstari wa angular:

Fungua kituo kipya na andika amri: $ rostopic echo / cmd_vel_mux / input / teleop

Na hapo unayo, Mdhibiti wako wa Robot wa msingi wa Matlab. Ikiwa ulipenda kufundishwa kwangu tafadhali mpe kura kwenye Mashindano ya Mwandishi wa Mara ya Kwanza na uwashiriki na watu wengi iwezekanavyo. Asante.

Ilipendekeza: