תוכן עניינים:
- אספקה
- שלב 1: הגדרת הכל
- שלב 2: הבנת אופן הפעולה של הבקר
- שלב 3: יצירת ממשק ROS-MATLAB
- שלב 4: קבלת כתובת ה- IP
- שלב 5: צור GUI לבקר
- שלב 6: תכנות כפתורי העריכה של GUI
- שלב 7: תכנות לחצני ה- Push של ה- GUI
- שלב 8: הגדרת תצורת רשת במחשב ROS (Linux)
- שלב 9: הפעל את הבקר
וִידֵאוֹ: בקר רובוטי ROS מבוסס Matlab: 9 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
מאז שהייתי ילד, תמיד חלמתי להיות איירון מן ועדיין עושה זאת. איירון מן היא אחת מאותן דמויות שזה אפשרי בפשטות ובפשטות אני שואף להפוך לאיירון מן מתישהו גם אם אנשים צוחקים עלי או אומרים שזה בלתי אפשרי כי "זה בלתי אפשרי עד שמישהו יעשה את זה"-ארנולד שוורצנגר.
ROS היא מסגרת מתפתחת המשמשת לפיתוח מערכות רובוטיקה מורכבות. יישומיו כוללים: מערכת הרכבה אוטומטית, טלופרציה, נשק תותב ומכונות כבדות של המגזר התעשייתי.
חוקרים ומהנדסים ממנפים את ROS לפיתוח אב הטיפוס, בעוד שספקים שונים משתמשים בו ליצירת המוצרים שלהם. יש לו ארכיטקטורה מורכבת שמקשה על ניהולו של אדם צולע. שימוש ב- MATLAB ליצירת קישור הממשק עם ROS הוא גישה חדשה שיכולה לסייע לחוקרים, מהנדסים וספקים בפיתוח פתרונות חזקים יותר.
אז ההוראה הזו עוסקת כיצד להכין בקר רובוטי מבוסס ROS מבוסס Matlab, זו תהיה אחת ממדריכות הלימוד הבודדות ביותר בנושא ובין כמה מדריכי ROS הבודדים. מטרת הפרויקט היא לעצב בקר שיכול לשלוט בכל רובוט ROS המחובר לרשת שלך. אז בואו נתחיל!
זיכויים לעריכת וידאו: עמאר אחר, בכתובת [email protected]
אספקה
לפרויקט יש צורך ברכיבים הבאים:
(1) מחשב/רובוט ROS
(2) נתב
(3) מחשב עם MATLAB (גרסה: 2014 ומעלה)
שלב 1: הגדרת הכל
לשם ההנחיה הזו, אני משתמש באובונטו 16.04 עבור מחשב לינוקס שלי ורוז-קינטית, אז כדי להימנע מבלבול אני ממליץ להשתמש ב- ros kinetic וב- ubuntu 16.04 מכיוון שיש לו את התמיכה הטובה ביותר ל- ros-kinetic. למידע נוסף על התקנת ros kinetic היכנס לאתר https://wiki.ros.org/kinetic/Installation/Ubuntu. עבור MATLAB אתה גם רוכש רישיון או מוריד גרסת שבילים מכאן.
שלב 2: הבנת אופן הפעולה של הבקר
מחשב מפעיל את הבקר הרובוטי ב- MATLAB. הבקר לוקח את כתובת ה- IP ואת היציאה של ה- pc/רובוט ros.
נושא ros משמש לתקשורת בין הבקר לבין ה- pc/רובוט ros, אשר נלקח גם כקלט על ידי הבקר. המודם נדרש ליצירת LAN (רשת מקומית) והוא מה שמקצה את כתובות ה- IP לכל המכשירים המחוברים לרשת שלו. לכן יש לחבר את ה- pc/רובוט ros והמחשב המפעיל את הבקר לאותה רשת (כלומר, הרשת של המודם). אז עכשיו שאתה יודע "איך זה עובד", בואו נגיע ל"איך זה בנוי "…
שלב 3: יצירת ממשק ROS-MATLAB
ממשק ה- ROS-MATLAB הוא ממשק שימושי לחוקרים ולסטודנטים לאב-טיפוס של האלגוריתמים הרובוטיים שלהם ב- MATLAB ולבדיקתו על רובוטים תואמי ROS. ניתן ליצור ממשק זה על ידי ארגז הכלים של מערכת הרובוטיקה ב- Matlab ונוכל לאבחר אב-טיפוס לאלגוריתם שלנו ולבדוק אותו רובוט המותאם ל- ROS או בסימולטורים של רובוטים כגון Gazebo ו- V-REP.
כדי להתקין את ארגז הכלים של מערכת הרובוטיקה ב- MATLAB שלך, פשוט עבור לאפשרות ההרחבה בסרגל הכלים וחפש את ארגז הכלים הרובוטיים בסייר התוספות. באמצעות ארגז הכלים הרובוטי אנו יכולים לפרסם או להירשם כמנוי לנושא, כגון צומת ROS, ונוכל להפוך אותו למאסטר של ROS. לממשק MATLAB-ROS יש את רוב פונקציות ה- ROS שתוכל לדרוש לפרויקטים שלך.
שלב 4: קבלת כתובת ה- IP
כדי שהבקר יפעל, עליך לדעת את כתובת ה- ip של הרובוט/מחשב ה- ROS שלך ושל המחשב המפעיל את הבקר ב- MATLAB.
כדי לקבל את ה- ip של המחשב האישי שלך:
ב- Windows:
פתח את שורת הפקודה והקלד את הפקודה ipconfig ורשום את כתובת ה- IPv4
עבור לינוקס:
הקלד פקודה ifconfig ורשום את כתובת inet. עכשיו כשיש לך את כתובת ה- ip, הגיע הזמן לבנות את GUI …
שלב 5: צור GUI לבקר
כדי ליצור את GUI, פתח את MATLAB והקלד מדריך בחלון הפקודה. זה יפתח את אפליקציית המדריך שאנו ניצור את GUI שלנו. תוכל גם להשתמש במעצב האפליקציות ב- MATLAB לעיצוב ה- GUI שלך.
ניצור 9 כפתורים בסך הכל (כפי שמוצג באיור):
6 כפתורי לחיצה: קדימה, אחורה, שמאל, ימין, התחבר לרובוט, נתק
3 כפתורים הניתנים לעריכה: ip pc, יציאה ושם הנושא.
הלחצנים הניתנים לעריכה הם הלחצנים שייקחו את ה- ip של מחשב ה- ROS, היציאה שלו ושם הנושא כקלט. שם הנושא הוא מה שבקר MATLAB ורובוט/מחשב ה- ROS מתקשרים באמצעותו. כדי לערוך את המחרוזת בכפתור העריכה, לחץ באמצעות לחצן העכבר הימני על הלחצן >> עבור אל מאפייני מפקח >> מחרוזת וערוך את טקסט הכפתור.
לאחר השלמת GUI שלך, תוכל לתכנת את הכפתורים. כאן מתחיל הכיף האמיתי…
שלב 6: תכנות כפתורי העריכה של GUI
ה- GUI נשמר כקובץ.fig אך פונקציות הקוד/החזרה חוזרות נשמרות בפורמט m. קובץ ה- m מכיל את הקוד לכל הלחצנים שלך. כדי להוסיף פונקציות להתקשרות לחצנים, לחץ לחיצה ימנית על הכפתור> > הצג התקשרות חוזרות >> התקשרות חוזרת. פעולה זו תפתח את קובץ ה- m עבור ממשק המשתמש שלך למקום בו מוגדר הכפתור המסוים הזה.
החזרה הראשונה שאנו הולכים לקודד היא ללחצן העריכה של ROS IP. תחת פונקציה edit1_Callback כתוב את הקוד הבא:
עריכת פונקציה1_Callback (hObject, נתוני אירועים, ידיות)
עולמי ros_master_ip
ros_master_ip = get (hObject, 'String')
כאן הפונקציה מוגדרת כ- edit1_Callback, הכוונה לכפתור העריכה הראשון. כאשר אנו מזינים כתובת IP מרשת ה- ROS בכפתור הניתן לעריכה זה, היא תאחסן את כתובת ה- IP כמחרוזת במשתנה גלובלי בשם ros_master_ip.
אז מתחת _OpeningFcn (hObject, eventdata, handles, varargin) הגדירו את הדברים הבאים (ראו איור):
עולמי ros_master_ip
עולמי ros_master_port
שם טלופי_טופיק גלובלי
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. מה שזה עושה הוא שאם תשאיר את הכפתורים הניתנים לעריכה ריקים, הערכים שהוגדרו מראש ישמשו אותך כשאתה מתחבר.
החזרה הבאה שאנו הולכים לקודד היא לכפתור העריכה של Port.
תחת הפונקציה edit2_Callback כתוב את הקוד הבא:
function edit2_Callback (hObject, נתוני אירועים, ידיות)
עולמי ros_master_port
ros_master_port = get (hObject, 'String')
כאן הפונקציה מוגדרת כ- edit2_Callback, המתייחסת לכפתור העריכה השני. כאשר ניכנס ליציאת ה- ros pc/רובוט כאן מרשת ה- ROS בכפתור הניתן לעריכה, הוא יאחסן את היציאה כמחרוזת במשתנה עולמי הנקרא ros_master_port.
באופן דומה החזרה הבאה שאנו הולכים לקוד היא לכפתור העריכה של שם הנושא.
תחת הפונקציה edit3_Callback כתוב את הקוד הבא:
function edit3_Callback (hObject, נתוני אירועים, ידיות)
שם טלופי_טופיק גלובלי
teleop_topic_name = get (hObject, 'String')
בדומה ל- ros_master_port, גם זה מאוחסן כמחרוזת במשתנה גלובלי.
בשלב הבא נבחן את פונקציות החזרה להתקשרות ללחצני הלחיצה …
שלב 7: תכנות לחצני ה- Push של ה- GUI
כפתורי הלחיצה שיצרנו בעבר הם אלה שבהם נשתמש כדי להזיז, לחבר ולנתק את הרובוט מהבקר. שיחות לחיצה על כפתור הלחיצה מוגדרות כדלקמן:
לְמָשָׁל. פונקציה pushbutton6_Callback (hObject, נתוני אירועים, ידיות)
הערה: בהתאם לסדר בו יצרת את כפתורי הלחיצה שלך, הם יסומנו בהתאם. לכן הפונקציה pushbutton6 בקובץ ה- m שלי יכולה להיות קדימה ואילו בקובץ ה- m שלך זה יכול להיות לאחור, אז זכור זאת. כדי לדעת מהי הפונקציה המדויקת של כפתור הלחיצה שלך, פשוט לחץ לחיצה ימנית >> הצג התקשרות >> התקשרות חוזרות וזה יפתח את הפונקציה לכפתור הלחיצה שלך, אך עבור ההנחיה הזו אני מניח שהיא זהה לשלי.
לכפתור התחבר לרובוט:
תחת הפונקציה pushbutton6_Callback (hObject, נתוני אירועים, ידיות):
function pushbutton6_Callback (hObject, eventdata, handles) global ros_master_ip
עולמי ros_master_port
שם טלופי_טופיק גלובלי
רובוט גלובלי
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_URI על ידי חיבור ros_master_ip והיציאה. ואז הפקודה rosinit תאתחל את החיבור. לאחר החיבור, הוא ייצור מוציא לאור של geometry_msgs/Twist, שישמש לשליחת מהירות הפקודה. שם הנושא הוא השם שאנו נותנים בתיבת העריכה. ברגע שהחיבור יצליח, נוכל להפעיל את לחצני הלחיצה קדימה, אחורה, שמאלה וימינה.
לפני הוספת שיחות לחיצה על הלחצנים קדימה ואחורה, עלינו לאתחל את מהירות המהירות הלינארית והזוויתית.
לכן להלן _OpeningFcn (hObject, eventdata, handles, varargin) מגדירים את הדברים הבאים (ראו איור):
global left_spinVelocity גלובלי right_spinVelocity
קדימה גלובלית קדימה
אחורית עולמית מהירות
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
backwardVelocity = -3;
הערה: כל המהירויות הן ברדיסים/שניות
כעת, כשהמשתנים הגלובליים מוגדרים בואו לתכנת את לחצני התנועה.
ללחצן הלחיצה קדימה:
פונקציה pushbutton4_Callback (hObject, נתוני אירועים, ידיות) velmsg
רובוט גלובלי
שם טלופי_טופיק גלובלי
קדימה גלובלית קדימה
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
לשלוח (רובוט, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
באופן דומה ללחצן הלחץ לאחור:
לחץ על הפונקציה pushbutton5_Callback (hObject, נתוני אירועים, ידיות)
velmsg
רובוט גלובלי
אחורית עולמית מהירות
שם טלופי_טופיק גלובלי
velmsg. Angular. Z = 0;
velmsg. Linear. X = backwardVelocity;
לשלוח (רובוט, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
באופן דומה ללחצן הלחיצה השמאלי: function pushbutton3_Callback (hObject, eventdata, handles)
גלובס גלובלי גלובלי גלובאלי שמאל_ספין גלובלי
שם טלופי_טופיק גלובלי
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
לשלוח (רובוט, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
באופן דומה ללחצן הימני:
רובוט גלובלי גלובלי
גלובלי right_spinVelocity
שם טלופי_טופיק גלובלי
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
לשלוח (רובוט, velmsg);
latchpub = rospublisher (teleop_topic_name, 'IsLatching', true);
לאחר שנוספו כל פונקציות החזרה והקבצים נשמרו, נוכל לבדוק את הבקר שלנו.
שלב 8: הגדרת תצורת רשת במחשב ROS (Linux)
אנו נבדוק את הבקר במחשב ros (Linux), אשר ידרוש הגדרת תצורת הרשת. אם אתה מפעיל גם את הבקר במחשב לינוקס, יהיה עליך להגדיר את תצורת הרשת גם שם.
תצורת רשת:
פתח את חלון הטרמינל והקלד gedit.bashrc
לאחר הקובץ פתוח הוסף את הדברים הבאים:
#תצורת מכונת רובוט
ייצא ROS_MASTER_URI = https:// localhost: 11311
כתובת #IP של צומת המאסטר של ROS
ייצא ROS_HOSTNAME =
ייצוא ROS_IP =
הד "ROS_HOSTNAME:" $ ROS_HOSTNAME
הד "ROS_IP:" $ ROS_IP
הד "ROS_MASTER_URI:" $ ROS_MASTER_URI
עליך לבצע שלב זה בכל פעם בשל הקצאת IP דינאמית.
שלב 9: הפעל את הבקר
אנו הולכים לבדוק את הבקר שלנו על בוט צב בגזיבו.
להתקנת Gazebo, עיין ב
להתקנת בוט הצב, עיין ב
פתח את התיקייה שבה שמרת את קבצי.fig ו-.m ב- MATLAB ולחץ על הפעלה (כפי שמוצג בתמונה). זה יפתח את הבקר במחשב האישי. לפני לחיצה על התחבר, ודא שסימולטור בוט הצבים שלך פועל.
לבדיקת סימולציית TurtleBot שלך:
פתח את הטרמינל ב- Ros pc והקלד: $ roslaunch turtlebot_gazebo turtlebot_world.launch. זה יפתח סימולציה של Turtlebot במחשב האישי הזה. שם הנושא של TurtleBot הוא/cmd_vel_mux/input/teleop, שכבר סיפקנו ביישום. הקלד את כתובת ה- Ip של ros pc, שם היציאה והנושא בכפתורים הניתנים לעריכה ולחץ על הלחצן. התחבר לרובוט. בוט הצבים שלך צריך להתחיל לנוע כאשר אתה לוחץ קדימה, אחורה וכו '.
לצפייה במהירויות הלינאריות והזוויתיות:
פתח מסוף חדש והקלד את הפקודה: $ rostopic echo/cmd_vel_mux/input/teleop
ושם יש לך, בקר רובוטי ROS מבוסס Matlab משלך. אם אהבתם את ההנחיה שלי, אנא תנו לה הצבעה על תחרות המחברים בפעם הראשונה ושתפו אותה עם כמה שיותר אנשים. תודה.
מוּמלָץ:
משחק זרוע רובוטי - בקר סמארטפון: 6 שלבים
משחק זרוע רובוטית - בקר סמארטפון: שלום! הנה משחק קיץ מהנה: הזרוע הרובוטית הנשלטת על ידי סמארטפון !! כפי שאתה יכול לראות בסרטון, אתה יכול לשלוט בזרוע עם כמה ג'ויסטיקים בסמארטפון שלך. אתה יכול גם לשמור תבנית, שהרובוט ישחזר בלולאה, על מנת
בקר משחק DIY מבוסס Arduino - בקר משחקים Arduino PS2 - משחק Tekken עם לוח המשחקים Arduino DIY: 7 שלבים
בקר משחק DIY מבוסס Arduino | בקר משחקים Arduino PS2 | משחק Tekken עם DIY Arduino Gamepad: שלום חבר'ה, משחקים זה תמיד כיף, אבל משחק עם בקר DIY מותאם אישית משלך הוא יותר כיף. אז נכין בקר משחק באמצעות arduino pro micro במדריך זה
מד חום אינפרא אדום מבוסס Arduino - מד חום מבוסס IR באמצעות Arduino: 4 שלבים
מד חום אינפרא אדום מבוסס Arduino | מד חום מבוסס IR באמצעות Arduino: היי חברים במדריך זה נכין מדחום ללא מגע באמצעות arduino. מכיוון שלפעמים הטמפרטורה של הנוזל/מוצק גבוהה מדי או נמוכה ואז קשה ליצור איתו קשר ולקרוא אותו הטמפרטורה אז בתרחיש זה
חיישן תנועה מבוסס PIR מבוסס Arduino: 4 שלבים
חיישן תנועה מבוסס PIR מבוסס Arduino: בעזרת פרויקט זה, אתה יכול לשלוט על המצב הגבוה והרגישות של PIR
מיקסולוג רובוטי MATLAB: 4 שלבים (עם תמונות)
מיקסולוג רובוטי MATLAB: האם אי פעם רצית לערבב את המשקאות שלך בצורה מושלמת עבורך תוך שניות ספורות? ובכן, אל תתרחק יותר, המיקסולוג הרובוטי כאן כדי לקחת את הזמן שלוקח לערבב את המשקאות שלך. פרויקט זה משתמש בזרוע החטף של RobotGeek כדי לתפקד כ