Агуулгын хүснэгт:

Matlab-д суурилсан ROS робот хянагч: 9 алхам
Matlab-д суурилсан ROS робот хянагч: 9 алхам

Видео: Matlab-д суурилсан ROS робот хянагч: 9 алхам

Видео: Matlab-д суурилсан ROS робот хянагч: 9 алхам
Видео: Публичное собеседование: Junior Java Developer. Пример, как происходит защита проекта после курсов. 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-ийг линукс компьютер болон ros-kinetic-д зориулж ашиглаж байгаа тул төөрөгдөл гаргахгүйн тулд ros kinetic болон ubuntu 16.04-ийг ашиглахыг зөвлөж байна, учир нь ros-kinetic-ийг хамгийн сайн дэмждэг. Ros kinetic хэрхэн суулгах талаар нэмэлт мэдээлэл авахыг хүсвэл https://wiki.ros.org/kinetic/Installation/Ubuntu руу орно уу. MATLAB -ийн хувьд та эндээс лиценз худалдаж авах эсвэл ул мөрийн хувилбарыг татаж авах боломжтой.

Алхам 2: Хянагч хэрхэн ажилладаг талаар ойлгох

Хянагч хэрхэн ажилладаг талаар ойлгох
Хянагч хэрхэн ажилладаг талаар ойлгох

Компьютер нь робот хянагчийг MATLAB дээр ажиллуулдаг. Хянагч нь IP хаяг болон rc 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 робот/компьютерийнхаа IP хаягийг болон MATLAB дээрх хянагчийг ажиллуулж буй компьютерийг мэдэх нь чухал юм.

Компьютерийнхээ 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, порт ба Сэдвийн нэр.

Editable-товчлуурууд нь ROS pc-ийн IP, түүний порт болон Сэдвийн нэрийг оролтын хэлбэрээр авах товчлуурууд юм. Сэдвийн нэр нь MATLAB хянагч ба ROS робот/компьютер хоорондоо харилцдаг зүйл юм. Засах боломжтой товчлуур дээрх мөрийг засахын тулд товчлуур дээр хулганы баруун товчийг дарна уу >> Inspector properties >> String руу очоод товчлуурын текстийг засварлана уу.

Таны 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, бариул)

дэлхийн 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/оролт/телеоп';

Та дэлхий даяар ros-pc ip (ros_master_ip), порт (ros_master_port) болон Teleop Сэдвийн нэрийг хатуу кодчилсон байна. Энэ нь юу хийх вэ гэвэл хэрэв та засварлах товчлууруудыг хоосон орхих юм бол эдгээр урьдчилан тодорхойлсон утгуудыг холбогдох үед ашиглах болно.

Дараагийн дуудлага хийх код бол порт засварлах товчлуур юм.

Edit2_Callback функцын доор дараах кодыг бичнэ үү.

edit2_Callback функц (hObject, eventdata, бариул)

дэлхийн ros_master_port

ros_master_port = авах (hObject, 'String')

Энд функцийг edit2_Callback гэж тодорхойлсон бөгөөд энэ нь хоёр дахь засварлах товчлууртай холбоотой юм. Бид ros pc/robot -ийн порт руу ROS сүлжээнээс энэ засварлах товчлуурт ороход энэ нь портыг ros_master_port глобал хувьсагчийн мөр болгон хадгалах болно.

Үүний нэгэн адил, бид кодлох гэж буй дараагийн дуудлага нь Сэдвийн нэрийг засах товчлуур юм.

Edit3_Callback функцын доор дараах кодыг бичнэ үү.

edit3_Callback функц (hObject, eventdata, бариул)

дэлхийн teleop_topic_name

teleop_topic_name = авах (hObject, 'String')

Ros_master_port -ийн нэгэн адил энэ нь дэлхийн хувьсагчийн мөр хэлбэрээр хадгалагддаг.

Дараа нь бид товчлууруудыг буцааж залгах функцийг авч үзэх болно …

Алхам 7: GUI товчлуурыг програмчлах

GUI түлхэх товчлууруудыг програмчлах
GUI түлхэх товчлууруудыг програмчлах
GUI түлхэх товчлууруудыг програмчлах
GUI түлхэх товчлууруудыг програмчлах

Бидний өмнө үүсгэсэн товчлуурууд нь роботыг хянагчаас зөөх, холбох, салгахад ашиглах товчлуурууд юм. Товчлуурын товчлуурын дуудлагыг дараах байдлаар тодорхойлно.

жишээ нь. pushbutton6_Callback функц (hObject, eventdata, бариул)

Анхаарна уу: товчлууруудыг үүсгэх дарааллаас хамааран тэдгээрийг дугаарлана. Тиймээс миний.m файл дахь pushbutton6 функц нь Forward байж болох бөгөөд таны.m файлд энэ нь Backward байж болох тул үүнийг санаарай. Таны товчлуур яг ямар функцтэй болохыг мэдэхийн тулд >> дуудлага буцааж харах >> дуудлагыг буцааж хулганы баруун товчлуур дээр дарахад таны товчлуурын функц нээгдэх болно, гэхдээ энэ зааварчилгааны хувьд энэ нь минийхтэй адил гэж бодож байна.

Робот руу холбогдох товчлуурын хувьд:

Pushbutton6_Callback (hObject, eventdata, бариул) функцын дор:

pushbutton6_Callback функц (hObject, eventdata, handles) global 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)

розинит

робот = 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 = 2;

right_spinVelocity = -2;

forwardVelocity = 3;

backwardVelocity = -3;

Тэмдэглэл: бүх хурд нь рад/с байна

Глобал хувьсагчдыг тодорхойлсны дараа хөдөлгөөний товчлууруудыг програмчилж үзье.

Forward товчлуурын хувьд:

pushbutton4_Callback функц (hObject, eventdata, handles) global velmsg

дэлхийн робот

дэлхийн teleop_topic_name

дэлхийн урагшлах хурд

velmsg. Angular. Z = 0;

velmsg. Linear. X = forwardVelocity;

илгээх (робот, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', үнэн);

Үүнтэй адилаар Backward товчлуурын хувьд:

pushbutton5_Callback функц (hObject, eventdata, бариул)

дэлхийн velmsg

дэлхийн робот

дэлхийн хоцрогдсон хурд

дэлхийн teleop_topic_name

velmsg. Angular. Z = 0;

velmsg. Linear. X = backwardVelocity;

илгээх (робот, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', үнэн);

Зүүн товчлуурын хувьд мөн адил: function pushbutton3_Callback (hObject, eventdata, handles)

дэлхийн velmsgglobal робот дэлхийн зүүн_спинVelocity

дэлхийн teleop_topic_name

velmsg. Angular. Z = left_spinVelocity;

velmsg. Linear. X = 0;

илгээх (робот, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', үнэн);

Баруун товчлуурын хувьд мөн адил:

дэлхийн velmsgglobal робот

дэлхийн баруун_ эргэх хурд

дэлхийн teleop_topic_name

velmsg. Angular. Z = right_spinVelocity;

velmsg. Linear. X = 0;

илгээх (робот, velmsg);

latchpub = rospublisher (teleop_topic_name, 'IsLatching', үнэн);

Дуудлага хийх бүх функцийг нэмж, файлуудыг хадгалсны дараа бид хянагчаа туршиж үзэх боломжтой болно.

Алхам 8: ROS PC (Linux) дээр сүлжээний тохиргоог тохируулах

ROS PC (Linux) дээр сүлжээний тохиргоог тохируулах нь
ROS PC (Linux) дээр сүлжээний тохиргоог тохируулах нь
ROS PC (Linux) дээр сүлжээний тохиргоог тохируулах нь
ROS PC (Linux) дээр сүлжээний тохиргоог тохируулах нь

Бид хянагчийг ros pc (Линукс) дээр туршиж үзэх бөгөөд энэ нь сүлжээний тохиргоог хийх шаардлагатай бөгөөд хэрэв та хянагчийг линк компьютер дээр ажиллуулж байгаа бол сүлжээний тохиргоог тэнд бас тохируулах шаардлагатай болно.

Сүлжээний тохиргоо:

Терминал цонхоо нээгээд 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 bot-ийг суулгахын тулд https://yainnoware.blogspot.com/2018/09/install-turtlebot-on-ros-kinetic-ubuntu.html хаягаар орж үзнэ үү.

MATLAB дээр.fig болон.m файлуудаа хадгалсан фолдерыг нээгээд Run дээр дарна уу (зураг дээр үзүүлсэн шиг). Холболтыг дарахаасаа өмнө яст мэлхийн бот симулятор ажиллаж байгаа эсэхийг шалгаарай.

TurtleBot -ийн симуляцийг туршихын тулд:

Terminal -ийг Рос компьютер дээр нээгээд: $ roslaunch turtlebot_gazebo turtlebot_world.launch гэж бичнэ үү. Энэ нь тэр компьютер дээр Turtlebot -ийн симуляцийг нээх болно. TurtleBot -ийн сэдвийн нэр нь/cmd_vel_mux/input/teleop бөгөөд бид үүнийг аль хэдийн програмд оруулсан болно. Rc pc Ip хаяг, порт, сэдвийн нэрийг засварлах товчлууруудад бичээд "Робот руу холбогдох" товчийг дарна уу. Таны яст мэлхий урагш, арагш гэх мэтийг дарахад хөдөлж эхлэх ёстой.

Шугаман ба өнцгийн хурдыг харахын тулд:

Шинэ терминал нээгээд тушаалыг бичнэ үү: $ rostopic echo/cmd_vel_mux/input/teleop

Танд өөрийн гэсэн Matlab-д суурилсан ROS робот хянагч байна. Хэрэв танд миний заавар таалагдсан бол зохиогчдын анхдугаар уралдаанд саналаа өгч, аль болох олон хүмүүстэй хуваалцаарай. Баярлалаа.

Зөвлөмж болгож буй: