• اولین مرجع آموزش رآس در ایران
  • 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
مقدمه‌ای بر شبیه‌ ساز گزبو Gazebo
اکتبر 23, 2019
ارتباط MATLAB و ROS
اکتبر 27, 2019

افزودن مدل انسان به گزبو (Gazebo)

Categories
  • آموزش جامع ROS
  • آموزش سطح متوسط ROS
Tags
  • actor
  • actor_Gazebo
  • gazebo
  • human
  • Make an animated model (actor) - Gazebo
  • Make_animated_Gazebo
  • افزودن_مدل
  • انسان_گزبو
افزودن مدل انسان به گزبو (Gazebo)

افزودن مدل انسان به گزبو (Gazebo)

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

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

مدل متحرک در گزبو (Gazebo) یا آکتور (Actor)

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

دو نوع انیمیشین وجود دارد که می توان به صورت جداگانه و یا با همدیگر از آنها استفاده نمود. در ادامه آنها را بررسی می کنیم.

Skeleton

انیمیشن Skeleton، این انیمیشن در واقع حرکت نسبی بین لینک‌ها در یک مدل است. تصویر روبه رو نمونه ای از این نوع انیمیشین است.

Trajectory

انیمیشین Trajectory، این انیمیشن در واقع حرکت تمام لینک‌های یک انیمیشین در راستای یک مسیر است.

Skeleton & Trajectory

هر دو حرکت نیز می توانند ترکیب شوند، و حرکت عادی یک انسان را ایجاد نمایند.

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

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

ایران رآس

تفاوت اصلی Actors و models

آکتورها در گزبو مشابه مدل های موجود هستند، بنابراین به راحتی می توان برای آنها اتصالات و پیوندها (links and joints) را ایجاد نمود. اما تقاوت اصلی این دو به شرح زیر است.

    1. آکتورها همیشه به صورت استاتیک هستند. (منظور این است که هیچ گونه نیرویی به آنها اعمال نمی شود. به عنوان نمونه نیروی گرانش، برخورد و هر چیز دیگری که فکر کنید.)
    2. آکتورها انیمیشن Skeleton ایمپورت شده از نرم افزار COLLADA و BVH فایل ها را پشتیبانی می کنند.
    3. آکتورها مسیرهایی را که مستقیما در SDF به صورت اسکریپت نوشته شده باشند را می تواند داشته باشند.
    4. در آکتورها مدل های تودرتو وجود ندارد و محدود به مش، لینک و اتصالات هستیم.

نکته: به منظور مشاهده مشخصات کامل یک تگ آکتور (<actor>) به عنوان مدل SDF به اینجا رجوع شود.

تعریف مسیر

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

ایجاد یک actor  ساده

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

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

<?xml version="1.0" ?>
<sdf version="1.6">
   <world name="default">
      <!-- A ground plane -->
      <include>
         <uri>model://ground_plane</uri>
      </include>
      <!-- A global light source -->
      <include>
         <uri>model://sun</uri>
      </include>

حالا نوبت به ایجاد کردن actor است. برای اینکار نیاز است تا به کمک تگ actor یک آکتور با نام دلخواه،  مثلا animated_box ایجاد کنیم. حالا برای اون یک لینک ساده و یک باکس برای نمایش جسم مد نظرمون تنظیم میکنیم. اینکار رو میتونید در دستورات زیر ببینید.

 <!-- An actor -->
<actor name="animated_box">
<link name="link">
<visual name="visual">
<geometry>
<box>
<size>.2 .2 .2</size>
</box>
</geometry>
</visual>
</link>

خب تا اینجا تفاوت زیادی با مدل های قبلی که اضافه می کردید به گزبو نداشت. تفاوت اصلی به کمک تگ script ایجاد میشه. داخل این تگ ما میایم و مسیر و اینکه رفتار آکتور ما چطوری باشه رو مشخص میکنیم. برای این مثال ساده ما، اسکریپت شامل دو بخش اصلی است. بخش اول که در واقع رفتار آکتور در هنگام شروع و اتمام را مشخص میکند. بخش دوم تعیین مسیر برای آکتور هست.

در بخش اول به کمک تگ های loop، delay_start، auto_start، به ترتیب به منظور تکرار وضعیت حرکت آکتور، تاخیر در اجرا آکتور و تنظیم نحوه شروع به حرکت آکتور استفاده می شود. در این مثال مطابق دستورات زیر برای آکتور اینگونه تنظیم شده است که همیشه تکرار بشه و به محض اینکه فراخوانی شد شروع به حرکت کند.

<script>
          <loop>true</loop>
          <delay_start>0.000000</delay_start>
          <auto_start>true</auto_start>

در بخش دوم به کمک تگ های waypoint، time و pose یک مسیر تعریف می شود. هر مسیر در واقع شامل یکسری waypoint است در نهایت مسیر را ایجاد میکند. نقاط مسیر یا همان waypoint شامل یک موقعیت است، که مکان و وضعیت آکتور را در آن نقطه مشخص میکند. همچنین شامل یک زمان است که زمان رسیدن آکتور به آن نقطه را بر حسب ثانیه مشخص می کند. در ادامه مسیر تعیین شده را مشاهده می کنید.

توجه :دقت شود که نقاط راهنما به منظور داشتن یک حرکت یکسان، باید ابتدا و انتهای آنها یکسان باشد.

<trajectory id="0" type="square">
             <waypoint>
                <time>0.0</time>
                <pose>-1 -1 1 0 0 0</pose>
             </waypoint>
             <waypoint>
                <time>1.0</time>
                <pose>-1 1 1 0 0 0</pose>
             </waypoint>
             <waypoint>
                <time>2.0</time>
                <pose>1 1 1 0 0 0</pose>
             </waypoint>
             <waypoint>
                <time>3.0</time>
                <pose>1 -1 1 0 0 0</pose>
             </waypoint>
             <waypoint>
                <time>4.0</time>
                <pose>-1 -1 1 0 0 0</pose>
             </waypoint>
          </trajectory>
        </script>
      </actor>
   </world>
</sdf>

نکته : ممکن است که آکتور از نقاط مسیر تعریف شده توسط شما دقیقا عبور نکند. دلیل آن این است که حرکت روان (Smooth) آکتور مد نظر است.

Share
1

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