Мазмұны:

Matlab негізіндегі ROS роботтық контроллері: 9 қадам
Matlab негізіндегі ROS роботтық контроллері: 9 қадам

Бейне: Matlab негізіндегі ROS роботтық контроллері: 9 қадам

Бейне: Matlab негізіндегі ROS роботтық контроллері: 9 қадам
Бейне: 美国软件不授权制裁中国高校陷困境,专利世界第二不值钱明星越南抢订单 MATLAB does not authorize universities, patent second worthless. 2024, Шілде
Anonim
Image
Image
Matlab негізіндегі ROS роботтық контроллері
Matlab негізіндегі ROS роботтық контроллері

Мен бала кезімнен темір адам болуды армандадым және солай жасаймын. Темір адам-бұл шын мәнінде мүмкін болатын кейіпкерлердің бірі, мен қарапайым адам болуға ұмтыламын, тіпті егер адамдар маған күлсе немесе бұл мүмкін емес деп айтса да, «егер біреу мұны істемейінше мүмкін емес»-Арнольд Шварценеггер.

ROS - бұл күрделі робототехника жүйесін жасау үшін қолданылатын жаңа құрылым. Оның қосымшаларына мыналар жатады: автоматтандырылған жинақтау жүйесі, телоперация, протездік қару -жарақ және өнеркәсіп секторының ауыр машиналары.

Зерттеушілер мен инженерлер прототиптерді әзірлеу үшін ROS -ты қолданады, ал әр түрлі жеткізушілер оны өз өнімдерін жасау үшін қолданады, бұл ақсақ адамның басқаруын қиындататын күрделі архитектураға ие. MATLAB -ты ROS -пен интерфейс байланысын құру үшін қолдану - бұл зерттеушілерге, инженерлер мен жеткізушілерге сенімді шешімдер әзірлеуге көмектесетін жаңа әдіс.

Бұл нұсқаулықта Matlab негізіндегі ROS роботтық контроллерін қалай жасау керектігі туралы айтылады, бұл бұл жерде және бірнеше ROS нұсқауларының арасында өте аз оқулықтардың бірі болады. Бұл жобаның мақсаты-сіздің желіге қосылған кез келген ROS-роботты басқара алатын контроллерді құрастыру. Ендеше, бастайық!

бейнені өңдеу несиелері: Аммар Ахер, [email protected]

Жабдықтар

Жоба үшін келесі компоненттер қажет:

(1) ROS PC/робот

(2) маршрутизатор

(3) MATLAB бар компьютер (нұсқасы: 2014 немесе одан жоғары)

1 -қадам: Барлығын орнату

Барлығын баптау
Барлығын баптау

Бұл нұсқаулық үшін мен Ubuntu 16.04-ті Linux компьютері мен ros-kinetic үшін қолданамын, сондықтан шатаспау үшін ros kinetic және ubuntu 16.04 пайдалануды ұсынамын, себебі ол ros-kinetic-ке ең жақсы қолдау көрсетеді. Ros kinetic орнату туралы қосымша ақпарат алу үшін https://wiki.ros.org/kinetic/Installation/Ubuntu өтіңіз. MATLAB үшін сіз лицензияны сатып аласыз немесе трейлер нұсқасын осы жерден жүктей аласыз.

2 -қадам: Контроллердің қалай жұмыс істейтінін түсіну

Контроллер қалай жұмыс істейтінін түсіну
Контроллер қалай жұмыс істейтінін түсіну

Компьютер MATLAB -та робот -контроллерді басқарады. Контроллер IP -адрес пен ros pc/robot портын қабылдайды.

Ros-тақырып контроллер мен rc pc/робот арасындағы байланыс үшін пайдаланылады, оны контроллер енгізеді. Модем LAN (жергілікті желі) құру үшін қажет және желіге қосылған барлық құрылғыларға Ip адрестерін береді. Сондықтан ros pc/robot және контроллермен жұмыс істейтін компьютер бір желіге қосылуы керек (яғни, модем желісі). Енді сіз «бұл қалай жұмыс істейтінін» білетін болсаңыз, «қалай салынғанына» көшейік …

3-қадам: ROS-MATLAB интерфейсін құру

ROS-MATLAB интерфейсін құру
ROS-MATLAB интерфейсін құру
ROS-MATLAB интерфейсін құру
ROS-MATLAB интерфейсін құру
ROS-MATLAB интерфейсін құру
ROS-MATLAB интерфейсін құру

ROS-MATLABInterface-бұл зерттеушілер мен студенттерге MATLAB-та робот алгоритмдерін прототиптеуге және оны ROS-пен үйлесімді роботтарда тестілеуге арналған пайдалы интерфейс. Бұл интерфейсті matlab-те робототехника жүйесінің құралдар қорабының көмегімен жасауға болады, ал біз алгоритміміздің прототипін жасап, оны тексере аламыз. ROS қосылған робот немесе Gazebo және V-REP сияқты робот тренажерлерінде.

MATLAB-та робототехника жүйесінің құралдар тақтасын орнату үшін, құралдар тақтасындағы Қосымша опциясына өтіп, қондырманы зерттеушіден роботтық құралдар қорабын іздеңіз. Робот құралдар тақтасын қолдана отырып, біз ROS түйіні сияқты тақырыпты жариялай аламыз немесе оған жазыла аламыз және оны ROS шебері ете аламыз. MATLAB-ROS интерфейсінде сіздің жобаларыңыз үшін қажет болатын ROS функцияларының көпшілігі бар.

4 -қадам: IP мекенжайын алу

IP мекенжайын алу
IP мекенжайын алу
IP мекенжайын алу
IP мекенжайын алу

Контроллер жұмыс істеуі үшін ROS роботының/компьютерінің және MATLAB -те контроллер жұмыс істейтін компьютердің IP -мекен -жайын білу қажет.

Компьютердің IP -мекенжайын алу үшін:

Windows жүйесінде:

Пәрмен жолын ашып, ipconfig пәрменін теріп, IPv4 мекенжайын жазыңыз

Linux үшін:

Ifconfig пәрменін теріңіз және кіру мекенжайын жазыңыз. Енді сізде IP -адрес бар, GUI құру уақыты келді …

5 -қадам: Контроллер үшін GUI жасаңыз

Контроллер үшін GUI жасаңыз
Контроллер үшін GUI жасаңыз
Контроллер үшін GUI жасаңыз
Контроллер үшін GUI жасаңыз
Контроллер үшін GUI жасаңыз
Контроллер үшін GUI жасаңыз

GUI құру үшін MATLAB ашыңыз және командалық терезеде нұсқаулықты теріңіз. Бұл біздің GUI құратын нұсқаулық қосымшасын ашады. Сондай -ақ, GUI -ді жобалау үшін MATLAB -та бағдарлама дизайнерін пайдалануға болады.

Біз барлығы 9 түймені жасаймыз (суретте көрсетілгендей):

6 түйме: алға, артқа, солға, оңға, роботқа қосылу, ажырату

3 өңделетін түймелер: Ros pc ip, порт және тақырып атауы.

Өңделетін түймелер-бұл ROS компьютерінің IP-ін, оның портын және тақырып атауын кіріс ретінде алатын түймелер. Тақырып атауы MATLAB контроллері мен ROS робот/компьютері арқылы байланысады. Өңделетін батырмадағы жолды өңдеу үшін батырманы тінтуірдің оң жақ түймешігімен нұқыңыз >> Инспектор қасиеттері >> Жолға өтіңіз және түйменің мәтінін өңдеңіз.

GUI аяқталғаннан кейін түймелерді бағдарламалауға болады. Міне нағыз қызық басталады …

6 -қадам: GUI өңделетін түймелерді бағдарламалау

GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау
GUI өңделетін түймелерді бағдарламалау

GUI.fig файлы ретінде сақталады, бірақ код/кері шақыру функциялары.m форматында сақталады.m файлында сіздің барлық түймелеріңіздің коды бар. Қайта шақыру функцияларын түймелеріңізге қосу үшін түймешікті тінтуірдің оң жақ түймешігімен нұқыңыз> > Кері байланыстарды қарау >> кері шақыру. Бұл сіздің GUI үшін.m файлын ашады, онда нақты түйме анықталады.

Біз кодтағымыз келетін бірінші кері байланыс - бұл ROS IP өңдеуге болатын түйме. Edit1_Callback функциясының астына келесі кодты жазыңыз:

edit1_Callback функциясы (hObject, оқиға деректері, өңдегіштер)

жаһандық ros_master_ip

ros_master_ip = алу (hObject, 'String')

Мұнда функция edit1_Callback ретінде анықталады, ол бірінші өңделетін түймені білдіреді. Осы өңделетін батырмада ROS желісінен IP мекенжайын енгізгенде, ол IP мекенжайын ros_master_ip деп аталатын жаһандық айнымалы жол ретінде сақтайды.

Содан кейін _OpeningFcn (hObject, eventdata, handles, varargin) астында келесілерді анықтаңыз (суретті қараңыз):

жаһандық ros_master_ip

жаһандық ros_master_port

жаһандық teleop_topic_name

ros_master_ip = '192.168.1.102';

ros_master_port = '11311';

teleop_topic_name = '/cmd_vel_mux/input/teleop';

Сіз тек ros-pc ip (ros_master_ip), порт (ros_master_port) және Teleop тақырып атауын қатаң кодтадыңыз. Егер сіз өңдеуге болатын түймелерді бос қалдырсаңыз, бұл алдын ала анықталған мәндер сіз қосылған кезде қолданылады.

Келесі кері байланыс - біз «Портты өңдеу» түймесін басамыз.

Edit2_Callback функциясының астына келесі кодты жазыңыз:

edit2_Callback функциясы (hObject, оқиға деректері, өңдегіштер)

жаһандық ros_master_port

ros_master_port = алу (hObject, 'String')

Мұнда функция edit2_Callback ретінде анықталады, ол екінші өңделетін түймені білдіреді. Біз ros pc/robot портына ROS желісінен осы өңделетін түймені енгізгенде, ол портты ros_master_port деп аталатын жаһандық айнымалы жол ретінде сақтайды.

Дәл осылай біз келесі кодты қайтаратын боламыз - тақырып атауын өзгерту батырмасы.

Edit3_Callback функциясының астына келесі кодты жазыңыз:

edit3_Callback функциясы (hObject, оқиға деректері, өңдегіштер)

жаһандық teleop_topic_name

teleop_topic_name = алу (hObject, 'String')

Ros_master_port сияқты, бұл да жаһандық айнымалы жол ретінде сақталады.

Әрі қарай, біз түймелерді басу үшін кері шақыру функцияларын қарастырамыз …

7 -қадам: GUI батырмаларын бағдарламалау

GUI батырмаларын бағдарламалау
GUI батырмаларын бағдарламалау
GUI батырмаларын бағдарламалау
GUI батырмаларын бағдарламалау

Біз бұрын жасаған түймелер - бұл роботты контроллерден жылжыту, қосу және ажырату үшін қолданылатын түймелер. Түймешікті кері шақыру келесі түрде анықталады:

мысалы pushbutton6_Callback функциясы (hObject, оқиға деректері, тұтқалар)

Ескерту: түймешіктерді құру ретіне қарай, олар сәйкесінше нөмірленеді. Сондықтан.m файлындағы pushbutton6 функциясы Forward үшін болуы мүмкін, ал сіздің.m файлыңызда Backward үшін болуы мүмкін, сондықтан оны есте сақтаңыз. Басу батырмасының нақты қандай функциясын білу үшін, тінтуірдің оң жақ түймешігімен >> Кері шақыруларды қарау >> кері шақыруларын басыңыз, сонда ол сіздің батырманың функциясын ашады, бірақ бұл нұсқаулық үшін бұл менікімен бірдей деп ойлаймын.

Роботқа қосылу түймесі үшін:

Pushbutton6_Callback функциясының астында (hObject, eventdata, handles):

pushbutton6_Callback функциясы (hObject, оқиға деректері, өңдегіштер) жаһандық ros_master_ip

жаһандық ros_master_port

жаһандық teleop_topic_name

жаһандық робот

жаһандық велмсг

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

setenv ('ROS_MASTER_URI', ros_master_uri)

розинит

робот = rospublisher (teleop_topic_name, 'geometry_msgs/Twist');

velmsg = rosmessage (робот);

Бұл кері байланыс ros_master_ip мен портты біріктіру арқылы ROS_MASTER_URI айнымалы мәнін орнатады, содан кейін rosinit пәрмені қосылымды инициализациялайды. Қосылғаннан кейін ол команданың жылдамдығын жіберу үшін қолданылатын geometry_msgs/Twist баспасын жасайды. Тақырып атауы - біз өңдеу өрісінде беретін атау. Байланыс сәтті аяқталғаннан кейін біз алға, артқа, солға, оңға басу түймелерін басқара аламыз.

Forward, Backward басу түймелеріне кері шақыруды қоспас бұрын, біз сызықтық және бұрыштық жылдамдықтарды инициализациялауымыз керек.

Сондықтан _OpeningFcn (hObject, eventdata, handles, varargin) төмендегілерді анықтайды (суретті қараңыз):

жаһандық left_spinVelocity жаһандық оң_ айналдыру жылдамдығы

жаһандық форвард жылдамдығы

жаһандық артта қалу жылдамдығы

left_spinVelocity = 2;

right_spinVelocity = -2;

forwardVelocity = 3;

backwardVelocity = -3;

Ескерту: барлық жылдамдықтар рад/с

Енді жаһандық айнымалылар анықталған соң, қозғалыс түймелерін бағдарламалайық.

Алға батырмасы үшін:

pushbutton4_Callback функциясы (hObject, eventdata, handles) жаһандық velmsg

жаһандық робот

жаһандық teleop_topic_name

жаһандық форвард жылдамдығы

velmsg. Angular. Z = 0;

velmsg. Linear. X = forwardVelocity;

жіберу (робот, velmsg);

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

Сол сияқты Артқа түймесі үшін:

pushbutton5_Callback функциясы (hObject, оқиға деректері, тұтқалар)

жаһандық велмсг

жаһандық робот

жаһандық артта қалу жылдамдығы

жаһандық teleop_topic_name

velmsg. Angular. Z = 0;

velmsg. Linear. X = артқа Жылдамдық;

жіберу (робот, velmsg);

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

Сол жақ түймешік үшін де: функция pushbutton3_Callback (hObject, оқиға деректері, тұтқалар)

жаһандық velmsgglobal робот жаһандық left_spinVelocity

жаһандық teleop_topic_name

velmsg. Angular. Z = left_spinVellocity;

velmsg. Linear. X = 0;

жіберу (робот, velmsg);

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

Сол сияқты оң жақ түймешік үшін:

жаһандық velmsgglobal робот

жаһандық right_spinVelocity

жаһандық teleop_topic_name

velmsg. Angular. Z = right_spinVellocity;

velmsg. Linear. X = 0;

жіберу (робот, velmsg);

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

Қайта шақырудың барлық функциялары қосылып, файлдар сақталғаннан кейін біз контроллерді тексере аламыз.

8 -қадам: ROS PC (Linux) жүйесінде желі конфигурациясын орнату

ROS PC (Linux) жүйесінде желі конфигурациясын орнату
ROS PC (Linux) жүйесінде желі конфигурациясын орнату
ROS PC (Linux) жүйесінде желі конфигурациясын орнату
ROS PC (Linux) жүйесінде желі конфигурациясын орнату

Біз контроллерді ros pc (Linux) бойынша тексеретін боламыз, ол үшін желі конфигурациясы қажет болады, егер сіз контроллерді Linux компьютерінде де іске қоссаңыз, онда желі конфигурациясын да сол жерде орнату қажет болады.

Желі конфигурациясы:

Терминал терезесін ашып, gedit.bashrc теріңіз

Файл ашылғаннан кейін мыналарды қосыңыз:

#Робот машинасының конфигурациясы

экспорттау ROS_MASTER_URI = https:// localhost: 11311

#ROS негізгі түйінінің IP мекенжайы

экспорттау ROS_HOSTNAME =

экспорттау ROS_IP =

жаңғырық «ROS_HOSTNAME:» $ ROS_HOSTNAME

жаңғырық «ROS_IP:» $ ROS_IP

жаңғырық «ROS_MASTER_URI:» $ ROS_MASTER_URI

Бұл қадамды динамикалық IP тағайындауға байланысты әр уақытта орындау керек.

9 -қадам: Контроллерді іске қосыңыз

Контроллерді іске қосыңыз
Контроллерді іске қосыңыз

Біз контроллерімізді Gazebo -дағы тасбақа ботында тексереміз.

Gazebo орнату үшін https://gazebosim.org/tutorials?tut=install_ubuntu&cat=install сілтемесіне өтіңіз.

Turtle ботын орнату үшін https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html сілтемесін қараңыз.

MATLAB -те.fig және.m файлдарын сақтаған қалтаны ашып, Run түймесін басыңыз (суретте көрсетілгендей), бұл компьютердегі контроллерді ашады. Қосылымды баспас бұрын, тасбақа тренажерінің жұмыс істеп тұрғанын тексеріңіз.

TurtleBot модельдеуін тексеру үшін:

Компьютерде Ros терминалын ашыңыз және теріңіз: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Бұл компьютерде Turtlebot модельдеуін ашады. TurtleBot тақырыбының атауы - бұл/cmd_vel_mux/input/teleop, біз оны қосымшада ұсындық. Ros pc Ip мекенжайын, порт пен тақырып атауын өңделетін түймелерге енгізіп, «Роботқа қосылу» түймесін басыңыз. Сіздің тасбақа ботыңыз алға, артқа т.с.с басқан кезде қозғала бастайды.

Сызықтық және бұрыштық жылдамдықтарды көру үшін:

Жаңа терминал ашып, пәрменді теріңіз: $ rostopic echo/cmd_vel_mux/input/teleop

Міне, сізде Matlab негізіндегі ROS роботтық контроллері бар. Егер сізге менің нұсқауым ұнаған болса, оған авторлардың бірінші байқауына дауыс беріңіз және мүмкіндігінше көп адамдармен бөлісіңіз. Рақмет сізге.

Ұсынылған: