• اولین مرجع آموزش رآس در ایران
  • 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
کتابخانه tf در ROS
مارس 25, 2021

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

Categories
  • آموزش سطح متوسط ROS
Tags
  • gazebo
  • gazebo_plugin
  • plugins
  • آموزش ROS
  • افزونه
  • پلاگین
  • گزبو

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

در این مقاله قصد داریم تا با افزونه‌ها یا پلاگین‌ها در گزبو آشنا شویم.

نوشتن  افزونه

افزونه ها به شما امکان می دهند مدل ها ، حسگرها ، خصوصیات جهان و حتی نحوه اجرای Gazebo را کنترل کنید. در آموزش های زیر نحوه ایجاد و بارگذاری افزونه ها برای اهداف مختلف توضیح داده شده است.

  • نمای کلی افزونه های Gazebo

افزونه یک قطعه کد است که به عنوان یک کتابخانه اشتراکی کامپایل شده و  در شبیه سازی وارد می شود. این افزونه از طریق کلاسهای استاندارد ++ C به کلیه قابلیتهای Gazebo دسترسی مستقیم دارد.

افزونه ها دارای ویژگی های مفید زیر هستند:

  • به توسعه دهندگان اجازه می دهد تقریباً هر جنبه Gazebo را کنترل کنند
  • روالهای جامعی هستند که به راحتی به اشتراک گذاشته می شوند
  • می توان آنها را به یک سیستم در حال اجرا وارد یا حذف کرد

نسخه های قبلی Gazebo از کنترلرها استفاده می کردند. رفتار این موارد کاملاً مشابه پلاگین ها بود اما به صورت استاتیک در Gazebo کامپایل می شدند. افزونه ها از انعطاف پذیری بیشتری برخوردار هستند و به کاربران امکان انتخاب و انتخاب ویژگی های شبیه سازی خود را می دهند.

در موارد زیرباید از یک افزونه استفاده کنید:

  • شما می خواهید به صورت برنامه ریزی شده یک شبیه سازی را تغییر دهید.

مثال: انتقال مدل ها ، عکس العمل مناسب در قبال رویدادها ، قرار دادن مدل های جدید با توجه به مجموعه ای از پیش شرط ها

  • شما می خواهید یک رابط سریع برای gazebo ، بدون سربارگذاری لایه انتقال داشته باشید
  • شما کدهایی دارید که می تواند برای دیگران مفید باشد و می خواهید آن را به اشتراک بگذارید

انواع پلاگین ها

در حال حاضر ۶ نوع پلاگین وجود دارد

      1. World
      2. Model
      3. Sensor
      4. System
      5. Visual
      6. GUI

هر نوع پلاگین توسط یک بخش متفاوت از Gazebo مدیریت می شود. به عنوان مثال ، یک پلاگین Model به یک مدل خاص در Gazebo متصل شده و آن را کنترل می کند. به همین ترتیب ، یک پلاگین World به یک محیط و یک پلاگین Sensor به یک سنسور خاص متصل است. افزونه System  در خط فرمان مشخص شده است و ابتدا در هنگام راه اندازی Gazebo بارگیری می شود. این پلاگین به کاربر امکان کنترل مراحل راه اندازی را می دهد.

نوع پلاگین باید براساس عملکرد دلخواه انتخاب شود. از یک افزونه World برای کنترل خصوصیات جهان مانند موتور فیزیک ، روشنایی محیط و غیره استفاده کنید. برای کنترل مفاصل و حالت های یک مدل از پلاگین Model  استفاده کنید. برای به دست آوردن اطلاعات سنسور و کنترل خصوصیات سنسور از یک افزونه Sensor  استفاده کنید.

اجرای یک پلاگین ساده

پلاگین ها به صورت ساده طراحی شده اند. یک پلاگین اولیه شامل یک کلاس با چند تابع است. ابتدا ، اگر Gazebo را از طریق debians نصب کرده اید ، مطمئن شوید که پرونده های توسعه Gazebo را نصب کرده اید. اگر Gazebo را از سورس  نصب کرده اید ، می توانید این مرحله را نادیده بگیرید. اگر نسخه دیگری به غیر از gazebo6 دارید ، در دستور زیر شماره ۶ را با شماره نسخه خودتان جایگزین کنید.

اگر Gazebo را از سورس  نصب کرده اید ، می توانید این مرحله را نادیده بگیرید

sudo apt-get install libgazebo6-dev

سپس ، یک پوشه و یک پرونده .cc برای افزونه جدید ایجاد کنید:

 mkdir ~/gazebo_plugin_tutorial
 cd ~/gazebo_plugin_tutorial
 gedit hello_world.cc

موارد زیر را در hello_world.cc کپی کنید:

#include <gazebo/gazebo.hh>

namespace gazebo
{
  class WorldPluginTutorial : public WorldPlugin
  {
    public: WorldPluginTutorial() : WorldPlugin()
            {
              printf(&quot;Hello World!\n&quot;);
            }

    public: void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf)
            {
            }
  };
  GZ_REGISTER_WORLD_PLUGIN(WorldPluginTutorial)
}

کد فوق نیز در منابع Gazebo همراه با یک پرونده CMakeLists.txt نیز قرار دارد

توضیح کد

#include <gazebo/gazebo.hh>

namespace gazebo
{

فایل  gazebo/gazebo.hh شامل یک مجموعه اصلی از توابع اساسی gazebo است. البته این شامل  gazebo/physics/physics.hh, gazebo/rendering/rendering.hh, یا gazebo/sensors/sensors.hh   نمی شود، زیرا آنها باید مورد به مورد اضافه شوند. همه افزونه ها باید در فضای نام gazebo باشند.

class WorldPluginTutorial : public WorldPlugin
  {
    public: WorldPluginTutorial() : WorldPlugin()
            {
              printf(&quot;Hello World!\n&quot;);
            }

هر پلاگین باید از یک نوع پلاگین ارثبری کند ، که در این مورد کلاس WorldPlugin است.

   public: void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf)
            {
            }

تنها تابع الزامی دیگر Load است که یک عنصر SDF دریافت می کند که شامل عناصر و ویژگی های مشخص شده در پرونده SDF بارگذاری شده است.

  GZ_REGISTER_WORLD_PLUGIN(WorldPluginTutorial)

در آخر ، پلاگین باید با استفاده از ماکرو GZ_REGISTER_WORLD_PLUGIN در شبیه ساز ثبت شود.

تنها پارامتر این ماکرو ، نام کلاس پلاگین است. برای هر نوع پلاگین ماکرو ثبت کننده منطبق به صورت زیر وجود دارد:

GZ_REGISTER_MODEL_PLUGIN,

GZ_REGISTER_SENSOR_PLUGIN

GZ_REGISTER_GUI_PLUGIN

GZ_REGISTER_SYSTEM_PLUGIN

GZ_REGISTER_VISUAL_PLUGIN

بخش زیر شامل دستورالعمل هایی در مورد نحوه کامپایل این افزونه است.

کامپایل افزونه

لطفاً در ابتدا اطمینان حاصل کنید که gazebo به درستی نصب شده است.

برای کامپایل پلاگین فوق فایل CMakeLists.txt را به صورت زیر ایجاد کنید

gedit ~/gazebo_plugin_tutorial/CMakeLists.txt

موارد زیر را در CMakeLists.txt کپی کنید:

cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
set(CMAKE_CXX_FLAGS &quot;${CMAKE_CXX_FLAGS} ${GAZEBO_CXX_FLAGS}&quot;)
find_package(gazebo REQUIRED)
include_directories(${GAZEBO_INCLUDE_DIRS})
link_directories(${GAZEBO_LIBRARY_DIRS})
list(APPEND CMAKE_CXX_FLAGS &quot;${GAZEBO_CXX_FLAGS}&quot;)

add_library(hello_world SHARED hello_world.cc)
target_link_libraries(hello_world ${GAZEBO_LIBRARIES})

یک دایرکتوری برای بیلد کردن ایجادکنید

mkdir ~/gazebo_plugin_tutorial/build
cd ~/gazebo_plugin_tutorial/build

سپس با دستور زیر کدها را کامپایل کنید.

cmake ../
 make

کامپایل منجر به ایجاد یک کتابخانه اشتراکی در مسیر~/gazebo_plugin_tutorial/build/libhello_world.so می شود که می تواند به یک شبیه سازی Gazebo اضافه شود.

در آخر ، مسیر کتابخانه خود را به GAZEBO_PLUGIN_PATH اضافه کنید:

export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:~/gazebo_plugin_tutorial/build

توجه: این دستور، مسیر را فقط برای shell فعلی تغییر می دهد. اگر می خواهید از افزونه خود برای هر تب جدیدی که باز می کنید استفاده کنید ، خط بالا را به فایل ~ / .bashrc اضافه کنید.

 

استفاده از یک پلاگین

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

 

یک فایل world ایجاد کنید

gedit ~/gazebo_plugin_tutorial/hello.world

کد زیر را در آن کپی کنید.

<?xml version=&quot;1.0&quot;?>
<sdf version=&quot;1.4&quot;>
  <world name=&quot;default&quot;>
    <plugin name=&quot;hello_world&quot; filename=&quot;libhello_world.so&quot;/>
  </world>
</sdf>

اکنون آن را با gzserver باز کنید:

 gzserver ~/gazebo_plugin_tutorial/hello.world --verbose

شما باید خروجی مشابه زیر را ببینید:

Gazebo multi-robot simulator, version 6.1.0
Copyright (C) 2012-2015 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

[Msg] Waiting for master.
[Msg] Connected to gazebo master @ http://127.0.0.1:11345
[Msg] Publicized address: 172.23.1.52
Hello World!

Share
0

Related posts

فوریه 19, 2020

مدلسازی ربات به کمک Xacro


Read more
نوامبر 3, 2019

مدلسازی سه بعدی ربات در ROS


Read more
اکتبر 27, 2019

ارتباط MATLAB و 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