Мазмуну:

Matlab негизделген ROS робот көзөмөлдөөчүсү: 9 кадам
Matlab негизделген ROS робот көзөмөлдөөчүсү: 9 кадам

Video: Matlab негизделген ROS робот көзөмөлдөөчүсү: 9 кадам

Video: Matlab негизделген ROS робот көзөмөлдөөчүсү: 9 кадам
Video: DIMASH new wave 2021 analysis | ДИМАШ анализ триптиха 2024, Ноябрь
Anonim
Image
Image
Matlab негизделген ROS робот контроллери
Matlab негизделген ROS робот контроллери

Мен кичинекей кезимден бери темир адам болууну кыялданчумун жана азыр да ошондоймун. Темир адам-бул реалдуу түрдө мүмкүн болгон жана качандыр бир убакта адамдар мага күлсө же бул мүмкүн эмес деп айтса да, темир адам болууну эңсеп жүргөн каармандардын бири, анткени "бирөө кылмайынча бул мүмкүн эмес"-Арнольд Шварценеггер.

ROS татаал робототехника системаларын иштеп чыгуу үчүн колдонулган жаңы негиз болуп саналат. Анын колдонмолору төмөнкүлөрдү камтыйт: Автоматташтырылган жыйноо системасы, телоперация, протездик курал -жарактар жана өнөр жай секторунун оор техникасы.

Изилдөөчүлөр жана инженерлер ROSту прототиптерди иштеп чыгуу үчүн колдонушат, ал эми ар кандай сатуучулар өз продуктыларын түзүү үчүн колдонушат, ал комплекстүү архитектурага ээ, бул аксагы менен башкарууну кыйындатат. ROS менен интерфейстин шилтемесин түзүү үчүн MATLABты колдонуу - изилдөөчүлөргө, инженерлерге жана сатуучуларга чечкиндүү чечимдерди иштеп чыгууга жардам бере турган жаңы ыкма.

Ошентип, бул көрсөтмө Matlabке негизделген ROS роботтук контроллерин кантип жасоо керектиги жөнүндө, бул жерде жана бир нече ROS инструкторлорунун арасында өтө аз үйрөткүчтөрдүн бири болуп калат. Бул долбоордун максаты-сиздин тармагыңызга туташкан каалаган ROS-роботту башкара турган контроллерди иштеп чыгуу. Ошентип, баштайлы!

видео түзөтүүчү кредиттер: Ammar Akher, [email protected]

Жабдуулар

Долбоор үчүн төмөнкү компоненттер талап кылынат:

(1) ROS PC/Робот

(2) роутер

(3) MATLAB менен PC (версиясы: 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/роботтун портун алат.

Ros-темасы контроллер менен ros pc/роботтун ортосунда байланыш үчүн колдонулат, ал дагы контролер тарабынан киргизилет. Модем LAN (локалдык тармак) түзүү үчүн талап кылынат жана анын тармагына туташкан бардык түзмөктөргө Ip даректерин ыйгарат. Ошондуктан ros pc/робот жана контроллерди иштетүүчү компьютер экөө тең бир тармакка туташышы керек (б.а. модемдин тармагы). Эми "кантип иштээрин" билгенден кийин, "кантип курулганына" келели …

3-кадам: ROS-MATLAB интерфейсин түзүү

ROS-MATLAB интерфейсин түзүү
ROS-MATLAB интерфейсин түзүү
ROS-MATLAB интерфейсин түзүү
ROS-MATLAB интерфейсин түзүү
ROS-MATLAB интерфейсин түзүү
ROS-MATLAB интерфейсин түзүү

ROS-MATLABInterface изилдөөчүлөр жана студенттер үчүн роботтордун алгоритмдерин MATLABда прототиптөө жана аны ROS менен шайкеш роботтордо тестирлөө үчүн пайдалуу интерфейс болуп саналат. 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, eventdata, handles)

глобалдык ros_master_ip

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

Бул жерде функция edit1_Callback катары аныкталат, ал биринчи түзөтүлүүчү баскычка тиешелүү. Бул түзөтүлүүчү баскычка ROS тармагынан IP дарегин киргизгенибизде, ал IP-даректи ros_master_ip деп аталган глобалдык өзгөрмөдө сап катары сактайт.

Анан эле _OpeningFcn астында (hObject, eventdata, туткалары, 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, eventdata, handles)

глобалдык ros_master_port

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

Бул жерде функция edit2_Callback катары аныкталат, ал экинчи түзөтүлүүчү баскычка тиешелүү. Биз ros pc/роботтун портуна ROS тармагынан бул түзөтүүчү баскычка киргенибизде, ал портту ros_master_port деп аталган глобалдык өзгөрмөдө сап катары сактайт.

Ошо сыяктуу эле, биз коддоону каалаган кийинки кайра чалуу Теманын атын өзгөртүү баскычы үчүн.

Edit3_Callback функциясынын астына төмөнкү кодду жазыңыз:

edit3_Callback функциясы (hObject, eventdata, handles)

глобалдык teleop_topic_name

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

Ros_master_portго окшош, бул дагы глобалдык өзгөрмөдө сап катары сакталат.

Андан кийин биз баскычтарды басуу үчүн кайра чалуу функцияларын карайбыз …

7 -кадам: GUI баскычтарын программалоо

GUI баскычтарын программалоо
GUI баскычтарын программалоо
GUI баскычтарын программалоо
GUI баскычтарын программалоо

Биз мурда жараткан баскычтар роботту контроллерден жылдыруу, туташтыруу жана ажыратуу үчүн колдонула турган нерселер. Баскыч баскычка чалуулар төмөнкүчө аныкталат:

мис. pushbutton6_Callback функциясы (hObject, eventdata, handles)

Эскертүү: баскычтарыңызды түзүү тартибине жараша, алар ошого жараша номерленет. Ошондуктан.m файлымдагы pushbutton6 функциясы Forward үчүн болушу мүмкүн, ал эми.m файлыңызда Backward үчүн болушу мүмкүн, муну эске алыңыз. Баскычыңыздын так функциясын билүү үчүн, оң баскыч менен чыкылдатыңыз >> Чалууларды кароо >> чалуу жана бул сиздин баскыч үчүн функцияны ачат, бирок бул көрсөтмө үчүн меники менен бирдей деп ойлойм.

Роботко туташуу баскычы үчүн:

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

pushbutton6_Callback функциясы (hObject, eventdata, handles) глобалдык ros_master_ip

глобалдык ros_master_port

глобалдык teleop_topic_name

дүйнөлүк робот

дүйнөлүк velmsg

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

setenv ('ROS_MASTER_URI', ros_master_uri)

rosinit

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

velmsg = rosmessage (робот);

Бул кайра чалуу ros_master_ip менен портту бириктирүү аркылуу ROS_MASTER_URI өзгөрмөсүн орнотот. Андан кийин rosinit буйругу туташууну баштайт. Туташкандан кийин, ал буйрук ылдамдыгын жөнөтүү үчүн колдонула турган geometry_msgs/Twist басмасын түзөт. Теманын аты - бул биз түзөтүү кутучасына берген ат. Байланыш ийгиликтүү болгондон кийин, биз Алга, Артка, Солго, Оңго баскычтарын иштете алабыз.

Forward, Backward push buttoinsке чалууларды кошуудан мурун, биз сызыктуу жана бурчтук ылдамдыкты баштообуз керек.

Ошондуктан төмөндө _OpeningFcn (hObject, eventdata, туткалары, varargin) төмөнкүлөрдү аныктайт (сүрөттү караңыз):

глобалдык left_spinVelocity глобалдык оңго_айналуу ылдамдыгы

дүйнөлүк алдыга ылдамдык

глобалдык артка ылдамдык

left_spinVelocity = 2;

right_spinVelocity = -2;

forwardVelocity = 3;

backwardVelocity = -3;

Эскертүү: бардык ылдамдыктар рад/с

Эми глобалдык өзгөрмөлөр аныкталгандан кийин, кыймылдын баскычтарын программалайлы.

Алга баскыч үчүн:

pushbutton4_Callback функциясы (hObject, eventdata, handles) глобалдык өчүрүү

дүйнөлүк робот

глобалдык teleop_topic_name

дүйнөлүк алдыга ылдамдык

velmsg. Angular. Z = 0;

velmsg. Linear. X = forwardVelocity;

жөнөтүү (робот, velmsg);

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

Окшош Артка баскычтары үчүн:

pushbutton5_Callback функциясы (hObject, eventdata, handles)

дүйнөлүк velmsg

дүйнөлүк робот

глобалдык артка ылдамдык

глобалдык teleop_topic_name

velmsg. Angular. Z = 0;

velmsg. Linear. X = backwardVelocity;

жөнөтүү (робот, velmsg);

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

Сол сыяктуу баскычтар үчүн: functionbutton3_Callback (hObject, eventdata, handles)

глобалдык робот глобалдык left_spinVelocity

глобалдык teleop_topic_name

velmsg. Angular. Z = left_spinVelocity;

velmsg. Linear. X = 0;

жөнөтүү (робот, velmsg);

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

Окшош оң баскыч үчүн:

глобалдык робот

глобалдык right_spinVelocity

глобалдык teleop_topic_name

velmsg. Angular. Z = right_spinVelocity;

velmsg. Linear. X = 0;

жөнөтүү (робот, velmsg);

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

Бардык кайра чалуу функциялары кошулганда жана файлдар сакталганда, биз контроллерибизди сынап көрө алабыз.

8 -кадам: ROS PCде Network Configuration орнотуу (Linux)

Тармак конфигурациясын ROS PCде орнотуу (Linux)
Тармак конфигурациясын ROS PCде орнотуу (Linux)
Тармак конфигурациясын ROS PCде орнотуу (Linux)
Тармак конфигурациясын ROS PCде орнотуу (Linux)

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

Тармак конфигурациясы:

Терминал терезеңизди ачыңыз жана gedit.bashrc деп териңиз

Файл ачылгандан кийин төмөнкүлөрдү кошуңуз:

#Robot Machine конфигурациясы

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

ROS башкы түйүнүнүн #IP дареги

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

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

echo "ROS_HOSTNAME:" $ ROS_HOSTNAME

echo "ROS_IP:" $ ROS_IP

echo "ROS_MASTER_URI:" $ ROS_MASTER_URI

Динамикалык IP дайындоосуна байланыштуу бул кадамды ар дайым аткарышыңыз керек.

9 -кадам: Контроллерди иштетүү

Контроллерди иштетүү
Контроллерди иштетүү

Биз контроллерибизди Gazeboдогу Turtle ботунда сынап көрөбүз.

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 PCде Терминалды ачыңыз жана териңиз: $ roslaunch turtlebot_gazebo turtlebot_world.launch. Бул ошол компьютерде Turtlebotтун симуляциясын ачат. TurtleBotтун темасынын аталышы/cmd_vel_mux/input/teleop, биз буга чейин колдонмодо бергенбиз. Рос PC Ip дарегин, портун жана теманын атын түзөтүлүүчү баскычтарга терип, басыңыз. Сиздин ташбака ботуңуз Алга, Артка ж.

Сызыктуу жана бурчтук ылдамдыктарды көрүү үчүн:

Жаңы терминалды ачыңыз жана төмөнкү буйрукту териңиз: $ rostopic echo/cmd_vel_mux/input/teleop

Ал жерде сизде Matlabке негизделген ROS робот башкаруучусу бар. Эгерде менин көрсөтмөм сизге жакса, аны биринчи жолу автордук сынакка добуш бериңиз жана мүмкүн болушунча көп адамдар менен бөлүшүңүз. Рахмат.

Сунушталууда: