Мазмұны:
- Жабдықтар
- 1 -қадам: Барлығын орнату
- 2 -қадам: Контроллердің қалай жұмыс істейтінін түсіну
- 3-қадам: ROS-MATLAB интерфейсін құру
- 4 -қадам: IP мекенжайын алу
- 5 -қадам: Контроллер үшін GUI жасаңыз
- 6 -қадам: GUI өңделетін түймелерді бағдарламалау
- 7 -қадам: GUI батырмаларын бағдарламалау
- 8 -қадам: ROS PC (Linux) жүйесінде желі конфигурациясын орнату
- 9 -қадам: Контроллерді іске қосыңыз
Бейне: Matlab негізіндегі ROS роботтық контроллері: 9 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Мен бала кезімнен темір адам болуды армандадым және солай жасаймын. Темір адам-бұл шын мәнінде мүмкін болатын кейіпкерлердің бірі, мен қарапайым адам болуға ұмтыламын, тіпті егер адамдар маған күлсе немесе бұл мүмкін емес деп айтса да, «егер біреу мұны істемейінше мүмкін емес»-Арнольд Шварценеггер.
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-MATLABInterface-бұл зерттеушілер мен студенттерге MATLAB-та робот алгоритмдерін прототиптеуге және оны ROS-пен үйлесімді роботтарда тестілеуге арналған пайдалы интерфейс. Бұл интерфейсті matlab-те робототехника жүйесінің құралдар қорабының көмегімен жасауға болады, ал біз алгоритміміздің прототипін жасап, оны тексере аламыз. ROS қосылған робот немесе Gazebo және V-REP сияқты робот тренажерлерінде.
MATLAB-та робототехника жүйесінің құралдар тақтасын орнату үшін, құралдар тақтасындағы Қосымша опциясына өтіп, қондырманы зерттеушіден роботтық құралдар қорабын іздеңіз. Робот құралдар тақтасын қолдана отырып, біз ROS түйіні сияқты тақырыпты жариялай аламыз немесе оған жазыла аламыз және оны ROS шебері ете аламыз. MATLAB-ROS интерфейсінде сіздің жобаларыңыз үшін қажет болатын ROS функцияларының көпшілігі бар.
4 -қадам: IP мекенжайын алу
Контроллер жұмыс істеуі үшін ROS роботының/компьютерінің және MATLAB -те контроллер жұмыс істейтін компьютердің IP -мекен -жайын білу қажет.
Компьютердің IP -мекенжайын алу үшін:
Windows жүйесінде:
Пәрмен жолын ашып, ipconfig пәрменін теріп, IPv4 мекенжайын жазыңыз
Linux үшін:
Ifconfig пәрменін теріңіз және кіру мекенжайын жазыңыз. Енді сізде IP -адрес бар, GUI құру уақыты келді …
5 -қадам: Контроллер үшін GUI жасаңыз
GUI құру үшін MATLAB ашыңыз және командалық терезеде нұсқаулықты теріңіз. Бұл біздің GUI құратын нұсқаулық қосымшасын ашады. Сондай -ақ, GUI -ді жобалау үшін MATLAB -та бағдарлама дизайнерін пайдалануға болады.
Біз барлығы 9 түймені жасаймыз (суретте көрсетілгендей):
6 түйме: алға, артқа, солға, оңға, роботқа қосылу, ажырату
3 өңделетін түймелер: Ros pc ip, порт және тақырып атауы.
Өңделетін түймелер-бұл ROS компьютерінің IP-ін, оның портын және тақырып атауын кіріс ретінде алатын түймелер. Тақырып атауы MATLAB контроллері мен ROS робот/компьютері арқылы байланысады. Өңделетін батырмадағы жолды өңдеу үшін батырманы тінтуірдің оң жақ түймешігімен нұқыңыз >> Инспектор қасиеттері >> Жолға өтіңіз және түйменің мәтінін өңдеңіз.
GUI аяқталғаннан кейін түймелерді бағдарламалауға болады. Міне нағыз қызық басталады …
6 -қадам: 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 батырмаларын бағдарламалау
Біз бұрын жасаған түймелер - бұл роботты контроллерден жылжыту, қосу және ажырату үшін қолданылатын түймелер. Түймешікті кері шақыру келесі түрде анықталады:
мысалы 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) бойынша тексеретін боламыз, ол үшін желі конфигурациясы қажет болады, егер сіз контроллерді 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 роботтық контроллері бар. Егер сізге менің нұсқауым ұнаған болса, оған авторлардың бірінші байқауына дауыс беріңіз және мүмкіндігінше көп адамдармен бөлісіңіз. Рақмет сізге.
Ұсынылған:
[Wearable Mouse] Windows 10 мен Linux үшін Bluetooth негізіндегі киюге болатын тышқан контроллері: 5 қадам
[Wearable Mouse] Windows 10 және Linux үшін Bluetooth негізіндегі киюге болатын тышқан контроллері: Мен тышқанның көрсеткішін басқаруға және компьютерге тышқанмен байланысты операцияларды ешбір бетке тигізбестен орындауға болатын Bluetooth негізіндегі тышқан контроллерін жасадым. Қолғапқа салынған электронды схеманы бақылау үшін қолдануға болады
Роботтық қол ойыны - смартфон контроллері: 6 қадам
Робот қолы ойыны - Смартфон контроллері: Сәлеметсіз бе! Міне жазғы көңілді ойын: Смартфон басқаратын робот қолы !! Бейнеде көріп тұрғандай, смартфондағы бірнеше джойстиктердің көмегімен қолды басқаруға болады. робот цикл бойынша көбейеді, ол үшін
Arduino негізіндегі DIY ойын контроллері - Arduino PS2 ойын контроллері - DIY Arduino Gamepad көмегімен Tekken ойнау: 7 қадам
Arduino негізіндегі DIY ойын контроллері | Arduino PS2 ойын контроллері | DIY Arduino Gamepad көмегімен Tekken ойнау: Сәлеметсіздер ме, балалар, ойындарды ойнау әрқашан қызықты, бірақ өзіңіздің жеке DIY контроллеріңізбен ойнау қызықты, сондықтан біз осы нұсқаулықта arduino pro micro көмегімен ойын контроллерін жасаймыз
Суару сорғысына арналған IOT негізіндегі DOL стартер контроллері: 6 қадам
IOT негізіндегі суару сорғысына арналған DOL стартерлік контроллері: Сәлем достар Бұл нұсқаулықта интернет арқылы суару насосының қондырғысын қашықтан бақылау және басқару туралы айтылады. Әңгіме: Менің фермамда мен жергілікті желіден күніне 6 сағаттай ғана қуат аламын. Уақыт тұрақты емес, қол жетімділік
Arduino негізіндегі роботтық қолмен қолжетімді баға шешімі: 19 қадам (суреттермен)
Arduino негізіндегі роботтық қолмен қол жетімді көзқарас шешімі: Біз машинаны көру туралы айтатын болсақ, ол бізге әрқашан қол жетімсіз болып көрінеді. Біз ашық көзбен демонстрация жасадық, оны бәріне оңай жасауға болады. Бұл бейнеде OpenMV камерасы бар, қызыл текше қай жерде болмасын, робот