• اولین مرجع آموزش رآس در ایران
  • info@iranros.com
wikiros-minwikiros-minwikiros-minwikiros-min
  • ایران رآس
  • ROS
    • پیش نیازهای شروع ROS
      • بررسی مفاهیم، اطلاعات فنی
      • نصب ROS برای تمام توزیع‌ها
      • برای آموزش ROS از کجا شروع کنیم؟
      • آموزش ROS
      • واژه‌نامه ROS
    • آموزش گام به گام
      • پیش‌نیازهای ROS
      • آموزش مقدماتی ROS
      • آموزش سطح متوسط
    • .
    • .
  • Software
    • نمایشگر سه‌بعدی (Rviz)
    • شبیه‌ساز گزبو Gazebo
    • نرم افزار moveit
  • Robots
    • Robots
      • ربات‌های پرکاربرد در ROS
        • ربات‌های زمینی
      • حسگرهای پرکاربرد در ROS
      • موتورهای پرکاربرد در ROS
  • publications
  • ایران رآس
  • ROS
    • پیش نیازهای شروع ROS
    • آموزش گام به گام
    • .
    • .
  • Software
    • نمایشگر سه‌بعدی (Rviz)
    • شبیه‌ساز گزبو Gazebo
    • نرم افزار moveit
  • Robots
    • Robots
  • publications
TurtleBot که به ربات لاکپشتی معروف است.
TurtleBot
اکتبر 11, 2019
افزودن مدل انسان به گزبو (Gazebo)
افزودن مدل انسان به گزبو (Gazebo)
اکتبر 26, 2019

مقدمه‌ای بر شبیه‌ ساز گزبو Gazebo

Categories
  • آموزش جامع ROS
  • آموزش سطح متوسط ROS
Tags
  • gazebo
  • ros
  • آموزش Gazebo
  • رآس
  • راس
  • راس گزبو
  • شبیه ساز گزبو
  • شبیه‌سازی ربات
  • فیلم گزبو
  • گزبو
  • یادگیری گزبو

معرفی شبیه‌ ساز گزبو Gazebo

شبیه‌ ساز گزبو Gazebo : گزبو نرم‌افزار شبیه‌سازی در ROS است. شبیه‌سازی ربات ابزاری اساسی در هر نرم‌افزار رباتیک است. یک شبیه‌ساز خوب، امکان آزمایش سریع الگوریتم‌ها ، طراحی ربات‌ها ، انجام تست رگرسیون و آموزش هوش‌مصنوعی را با استفاده از سناریوهای واقع‌گرایانه فراهم می‌آورد. Gazebo با دراختیار داشتن این قابلیت‌ها، امکان شبیه‌سازی دقیق و کارآمد انواع ربات‌ها در محیط‌های پیچیده داخلی و خارجی را فراهم می‌کند.

خلاصه این‌که یک موتور فیزیک قوی ، گرافیک باکیفیت بالا و رابط‌های مناسب برنامه‌نویسی و گرافیکی در شبیه‌ ساز گزبو Gazebo در اختیار شما قرار دارد. تا ربات خودتان را با شرایطی نزدیک به واقعیت مدلسازی و تست کنید. از همه بهتر این‌که، شبیه‌ ساز گزبو Gazebo کاملاً رایگان بوده است. Gazebo یک جامعه از کاربران پرجنب‌وجوش را در اختیار دارد که همواره در تلاشند تا آن را ارتقا دهند. همچنین مشکلات احتمالی آن را رفع کنند. (برگرفته از سایت رسمی گزبو )

شبیه‌ ساز گزبو Gazebo امکانات متنوعی برای رفتارهای فیزیکی گوناگون دارد. گزبو از دو بخش تشکیل شده است: یک سرور (که با عنوان gzserver اجرا می­شود) و یک کلاینت (client) (که با عنوان gzclient اجرا می­شود).

gzserver در واقع هسته مرکزی گزبو بوده و محاسبات فیزیکی و تولید داده‌های سنسورها را برعهده دارد. در مواردی که نیاز به رابط کاربری نیست می‌تواند به صورت مستقل اجرا شود. عملکرد بخش کلاینت نیز به‌صورت ارائه یک نمایش گرافیکی رابط کاربری است که می‌تواند تجسم خوبی از شبیه‌سازی و کنترل راحت بر روی خواص مختلف شبیه سازی را فراهم کند.

یک قابلیت مؤثر و باارزش شبیه‌ ساز گزبو Gazebo به صورت است. می‌تواند سنسورهایی نظیر سنسورهای نیرو، شتاب سنج، سونار، LIDARs، دوربین‌های رنگی، و سنسورهای ابر نقاط را شبیه‌سازی کند، در نتیجه شما قادر خواهید بود تا در شبیه‌سازی خودتان به راحتی سنسورهای مورد نیاز را به مدلتان اضافه کنید. با این کار خروجی‌هایی نزدیک به خروجی سنسورهای واقعی را از آن انتظار داشته باشید.

نصب شبیه‌ ساز گزبو Gazebo

در صورتی‌که شما طبق آموزش نصب رآس، از گزینه نصب کامل استفاده کرده باشید، ورژن۷ گزبو به صورت خودکار بر روی سیستم شما نصب شده است. در غیر اینصورت می‌توانید تنها با یک دستور آخرین ورژن گزبو را نصب کنید.

curl -sSL http://get.gazebosim.org | sh

در صورتی که در ترمینال دستور زیر را وارد کنید گزبو فرارخوانی می‌شود و اگر درست نصب شده باشد محیط کاری آن را مشاهده خواهید کرد.

gazebo

تذکر: توجه داشته باشید که اولین باری که گزبو را اجرا می‌کنید، (در صورتی که به اینترنت متصل باشید) گزبو تلاش می‌کند تا مجموعه‌ای از مدلهای متداول را دانلود کند، لذا ممکن است راه‌اندازی اولیه آن کمی طول بکشد.

اجرای شبیه‌ساز گزبو Gazebo

برای اضافه شدن یک یا چند ربات به گزبو به یک محیط نیاز داریم، این محیط ممکن است شامل جزئیات و عوارض زمین، ساختمان‌ها ، دیوار، میز و … و همچنین شامل یک دسته از ربات‌های گروهی باشد. یک مدل مرسوم پیش‌فرض در گزبو شامل فقط یک سطح صاف از زمین با یک‌جهت عمودی برای بردار جاذبه است.

برای شروع کار با گزبو با این محیط می‌توانید از دستور زیر استفاده کنید

roslaunch gazebo_ros empty_world.launch

نتیجه اجرای این دستور به‌صورت شکل زیر خواهد بود.

در نوار پایینی محیط شبیه‌سازی گزبو، چند  رابط کنترلی و نمایشگر وجود دارد.

  • ابتدا دکمه توقف و اجرای شبیه‌سازی که به کاربر اجازه می‌دهد تا یک شبیه‌سازی را متوقف و یا ازسرگیری کند.
  • نمایشگر فاکتور زمان حقیقی (Real Time Factor) که بیانگر کارایی شبیه‌سازی است. گزبو به‌صورت پیش‌فرض سعی می‌کند تا در محیط مجازی خود، ربات‌ها را در زمان حقیقی شبیه‌سازی کند. اما اگر چنانچه کامپیوتر شما قادر به اجرای محاسبات مربوطه در زمان حقیقی نباشد، سرعت شبیه‌ساز کاهش خواهد یافت، درنتیجه در خروجی شبیه‌سازی به‌صورت اسلوموشن دیده خواهد شد. اگر فاکتور زمان حقیقی ۱ بود، شبیه‌سازی دقیقاً برابر دینامیک زمان حقیقی خواهد بود و چنانچه این فاکتور به‌طور مثال ۰/۵ باشد به این مفهوم است که شبیه‌سازی دو برابر واقعیت طول خواهد کشید.

در سمت چپ صفحه‌نمایش گزبو ، دو تب به نام‌های “World” و “Insert” وجود دارد. تب World شامل ویژگی‌های فیزیکی می‌باشد. این بخش دربرگیرنده خواص مختلفی ازجمله آیتم جاذبه است. با باز کردن زیر منوی جاذبه مقادیر عددی اجزای آن (x,y,z) مشخص می‌شود. این مقادیر را می‌توان با کلیک کردن بر روی هرکدام تغییر داد.

همچنین توسط تب World می‌توان به خصوصیات دینامیکی مدل واردشده نیز دست‌یافت که در اینجا تنها مدل یک صفحه از زمین در شبیه‌سازی است.

اضافه کردن مدل به شبیه‌ ساز گزبو 

ما می‌توانیم به روش‌های گوناگونی مدل‌های دیگر را وارد شبیه‌ساز بکنیم. با استفاده از تب Insert می‌توان هر مدل از قبل تعریف‌شده‌ای در لیست مدل‌ها را اضافه کرد. لیست مدل‌های قابل‌دسترس، شامل مدل‌های آنلاین موجود در پایگاه داده‌های گزبو و همچنین مدل‌های محلی تعریف‌شده که در مسیر (مخفی) ~/.gazebo  می‌باشد.

*** مسیر ~/.gazebo به‌صورت پیش‌فرض مخفی (Hidden) است، برای نمایش آن از کلیدهای ctrl+H در صفحه Home استفاده کنید.*****

علاوه براین می‌توان یک مدل را به‌صورت دستی با فراخوانی یک نود گزبو به همراه مسیری که مدل مربوطه در آن قرار دارد را فراخوانی کرد. در ادامه نحوه وارد کردن یک مدل در گزبو را آموزش می‌دهیم.

فراخوانی یک ربات در Gazebo

همانطور که گفته شد شبیه‌ ساز گزبو Gazebo برای راه‌اندازی یک ربات نیاز به یک محیط و مدل آن ربات دارد. بیایید به عنوان مثال یک ربات را در گزبو فراخوانی کنیم.

یک ترمینال جدید باز کنید و دستور زیر را در آن واردکنید.

gazebo worlds/pioneer2dx.world

با اجرای دستور فوق شما محیط مربوط به ربات pioneer2dx  را فراخوانی می‌کنید. از آنجایی که احتمالاً شما مدل مربوط به این ربات را به صورت محلی در سیستم خودتان ندارید گزبو مدل آن را از دیتابیس آنلاین خود دانلود می‌کند (بسته به سرعت اینترنت شما، ممکن است این کار کمی طول بکشد). در نهایت مدل مربوطه را مطابق شکل زیر مشاهده خواهید کرد.

خب حالا شما یک ربات را در صفحه گزبو خودتون مشاهده می‌کنید که بی حرکت ایستاده!

اگه به اندازه کافی از مشاهده اولین رباتتون در گزبو لذت بردید، گزبو رو ببندید تا به ادامه مبحث بپردازیم.

خب شاید براتون این سوال پیش اومده باشه که فایل‌های مربوط به این محیطی که ما فراخوانی کردیم، کجا قرار داره؟

در جواب باید شما رو به مسیر زیر راهنمایی کنم: میتونید به مسیر /usr/share/gazebo-7/worlds برید و فایل‌های world رو اونجا مشاهده کنید. همچنین میتونید با زدن دستور زیر در ترمینال محتویات این پوشه رو مشاهده کنید. توجه داشته باشید که با توجه به ورژن گزبو شما، ” gazebo-7″می‌تونه متفاوت باشه.

ls /usr/share/gazebo-7/worlds

خب حالا می‌تونید هر کدوم از این محیط‌ها رو اجرا کنید و اونها رو در گزبو مشاهده کنید، البته باز هم باید یادآوری کنم که چون شما مدلها رو به صورت محلی ندارید گزبو اونها رو از مخازن آنلاین خودش دانلود می‌کنه.

البته نگران نباشید در ادامه نحوه اجرای مدلهای محلی رو هم توضیح می‌دهیم.

یه نمونه جالب دیگه از مدل‌های موجود رو می‌تونید با این دستور ببینید.

gazebo worlds/mud.world

اجرای مدلهای محلی

همونطور که اشاره شد شما می‌توانید مدلهای دلخواه خودتان را در گزبو فراخوانی کنید. برای این کار باید ابتدا فایل‌‌های مربوط به مدل را مطابق استاندارد ایجاد و یا مدل مورد نظر را از دیتابیس گزبو دانلود کنید.

ابتدا یک توضیحی از ساختار پوشه مدل ارائه می‌کنیم. در حالت کلی یک مدل شامل فایل‌ها و پوشه‌هایی به صورت زیر است:

model :پوشه با نام  model

  • model.config : داده های متا مربوط به مدل
  • model.sdf : توصیف مدل به فرمت sdf(Simulation Description Format)
  • meshes : پوشه شامل فایل‌های CAD مربوط به مدل

برای اجرای یک مدل در گزبو به حداقل دو فایل model.config و model.sdf نیاز داریم. به عنوان نمونه کدهای مربوط به ایجاد یک مکعب به صورت زیر است.

۱-model.config:

<?xml version="1.0"?>
<model>
  <name>box</name>
  <version>1.0</version>
  <sdf version="1.4">model.sdf</sdf>
  <author>
    <name>IRANROS.COM</name>
  </author>
  <description>
    A box 
  </description>
</model

۲-model.sdf:

<?xml version='1.0'?>
<sdf version='1.4'>
  <model name="box">
    <link name='link'>
      <inertial>
      <mass>2000</mass>
      <inertia>
          <ixx>3000</ixx>
          <ixy>0</ixy>
          <ixz>0</ixz>
          <iyy>3000</iyy>
          <iyz>0</iyz>
          <izz>1000</izz>
       </inertia>
      </inertial>
     <collision name='collision'>
        <geometry>
             <box>
               <size> 2 2 4 </size> 
             </box>
       </geometry>
      </collision>
 
      <visual name='visual'>
        <geometry>
             <box>
               <size> 2 2 4 </size> 
             </box>
       </geometry>
      </visual>
    </link>     
  </model>
</sdf>

کدهای بالا بیانگر خصوصیات فیزیکی و هندسی مکعب است که می‌توانید به راحتی آنها را تغییر دهید. دقت کنید که در تگ <pose> شش مولفه وضعیت فضایی اولیه مکعب در اختیار شماست.

برای اجرای این مدل در گزبو ابتدا یک پوشه به نام box ایجاد کنید، سپس درون این پوشه یک فایل با نام model.config ایجاد کرده و کدهای قسمت ۱ را درآن قرار دهید، به همین ترتیب یک فایل با نام model.sdf ایجاد کرده و کدهای قسمت ۲ را در آن قرار دهید.

حالا به مسیر ~/.gazebo/models رفته و پوشه خودتان را در آن قرار دهید.

حالا گزبو را باز کنید و از تب insert مدل box را انتخاب کنید، با کلیک موس در محیط گزبو، مکعب شما بارگذاری می‌شود.

همچنین شما می‌توانستید با ایجاد یک پکیج و  قرار دادن فایل‎های مدل خودتان در آن و با فراخوانی نود spawn_model  پکیج گزبو  نیز مدل خودتان را فراخوانی کنید. در ادامه این فرآیند را توضیح می‌دهیم.

ایجاد پکیج

ابتدا در پوشه src فضای کاری موردنظر خودتان یک پکیج ایجاد کنید.( برای اطلاعات بیشتر به ایجاد فضای کاری و ساخت پکیج مراجعه کنید.)

در اینجا ما یک بسته به نام add_model ایجاد می‌کنیم.

cd ~/catkin_ws/src
catkin_create_pkg add_model
cd ..
catkin_make
source devel/setup.bash	

سپس پوشه مدل خودتان را در این بسته قرار دهید.

ساخت فایل launch

حالا می‌خواهیم یک فایل لانچ ایجاد کنیم (اطلاعات بیشتر) و در آن gazebo و مدل خودمان را همزمان فراخوانی کنیم. برای این کار یک فایل با نام add_box.launch درون بسته‌ای که ساختید ایجاد کنید و کدهای زیر را درآن قرار دهید.

<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch"/>
<node name="spawn_sdf" pkg="gazebo_ros" type="spawn_model" args="-file $(find add_model)/box/model.sdf -sdf -model box -x 0 -y 0 -z 4" />   
</launch>

پس از ساخت فایل لانچ با دستور زیر می‌توانید مدل مربوطه را از هر مسیری به‌صورت زیر فراخوانی کنید. دقت کنید که در این روش نیازی به قرار دادن فایل مدل در مسیر پوشه .gazebo/models نیست.

roslaunch add_modell add_box.launch	

ایران رآس اولین مرجع تخصصی آموزش و توسعه ROS در ایران

جهت آموزش و یادگیری سیستم عامل ربات ROS به بخش آموزش ROS مراجعه نمایید.

ایران رآس

Share
4

Related posts

ژوئن 10, 2021

آشنایی با افزونه‌ها در Gazebo


Read more
مارس 25, 2021

کتابخانه tf در ROS


Read more
مارس 16, 2020

نصب ROS بر روی ویندوز ۱۰


Read more

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آموزش سیستم عامل رباتیک ROS

  • پیش‌نیازهای شروع ROS
    • نصب Ubuntu در کنار ویندوز به صورت Dual Boot
    • نحوه نصب اوبونتو بر روی VMware در ویندوز ۱۰
    • اشتراک اطلاعات بین ویندوز و ماشین مجازی(VMware)
    • راه اندازی و تنظیمات اولیه Ubuntu جهت کار با ROS
    • نصب ROS
  • آموزش مقدماتی ROS
    • گام اول: نصب و پیکربندی محیط ROS
    • گام دوم: آدرس دهی در ROS
    • گام سوم: ایجاد بسته در ROS
    • گام چهارم :مفهوم Node در ROS
    • گام پنجم : مفهوم تاپیک در ROS
    • گام ششم : مفهوم service و parameters در ROS
    • گام هفتم : مفهوم launch فایل‌ها در ROS
    • گام هشتم : ایجاد فایل‌های msg و srv در ROS
    • گام نهم: مفهوم Publisher-Subscriber در ROS به زبان ++C
    • گام دهم: مفهوم Publisher-Subscriber در ROS به زبان python
    • گام یازدهم: ضبط و بازپخش داده‌ها در ROS
    • گام دوازدهم: نوشتن یک service و client ساده (C++)
    • گام سیزدهم: نوشتن یک service و client ساده (Python)
  • آموزش سطح متوسط ROS
    • ساخت یک پکیج به صورت دستی
    • مدیریت وابستگی‌های سیستم
    • تعریف پیام های سفارشی در ROS
    • مقدمه‌ای بر شبیه‌ ساز گزبو Gazebo
    • مقدمه‌ای بر RVIZ نمایشگر سه‌بعدی

ربات‌ها

  • ربات‌های زمینی
    • ربات TIAGo
    • TurtleBot
  • ربات‌های هوایی
  • بازوهای رباتیک
  • ربات‌های دریایی

برچسب‌ها

  • ;hvhdd fhgh
  • A Gentle Introduction to ROS
  • actor
  • actor_Gazebo
  • ajk nv vhs
  • bash
  • C++
  • ca tvhsd v
  • catkin
  • chmode

Google-fomrs

ایران رآس، اولین مرجع آموزش و توسعه ROS در ایران

سایت ایران رآس با بهره گیری از متخصصین حوزه رباتیک به تولید محتوای آموزشی پرداخته و آنها را در اختیار کاربران قرار می­دهد . همچنین متخصصین ما این آمادگی را دارند تا به موسسات و مراکزی که قصد ورود به دنیای رآس را دارند مشاوره های تخصصی داده و برای آنها دوره های آموزشی خصوصی برگزار کند.


درباره ما تماس با ما قوانین و مقررات ثبت شکایات
  • پیش نیازهای ROS
  • آموزش مقدماتی ROS
  • آموزش سطح متوسط ROS
  • کتاب آموزش ROS
  • نرم افزارها
  • ربات‌ها
© تمام حقوق مادی و معنوی برای ایران رآس محفوظ است.
  • No translations available for this page