• اولین مرجع آموزش رآس در ایران
  • 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
مفهوم Topic در ROS
گام پنجم : مفهوم تاپیک در ROS
دسامبر 15, 2018
در ROS این امکان وجود دارد که چندین نود را همزمان اجرا نمایید. این مفهوم که همزمان چند نود را اجرا کنید در ROS تحت عنوان Launch فایل شناخته می‌شود.
گام هفتم : مفهوم launch فایل‌ها در ROS
دسامبر 17, 2018

گام ششم : مفهوم service و parameters در ROS

Categories
  • آموزش مقدماتی ROS
Tags
  • parameter
  • rosparam
  • rosservice
  • service
  • پارامتر
  • سرویس
مفهوم service و parameters در ROS

مفهوم service و parameters در ROS

مفهوم service و parameters در ROS : در مبحث تاپیک‌ها گفته شد که  نودها توسط تاپیک‌ها با یکدیگر در ارتباط ‌اند. اما نودها  از طریق دیگری هم می‌توانند با یکدیگر ارتباط برقرار کنند. این راه دوم در واقع همان Services هستند. نودها می‌توانند  درخواستی را به یک سرویس بفرستند و از آن سرویس یک پاسخی را دریافت کنند . برای این منظور در ROS ابزاری به نام rosservice وجود دارد.

این دستور دارای آپشن‌های زیر است:

  • rosservice list: با اجرای این دستور اطلاعاتی در مورد service های فعال چاپ خواهد شد.
  • rosservice call: با استفاده از آرگومان ورودی service فراخوانی می‌شود.
  • rosservice type: نوع سرویس را نمایش می‌دهد.
  • rosservice find: با کمک نوع سرویس، سرویس مورد نظر را پیدا می‌کند.
  • rosservice uri: سرویس ROSRPC uriرا چاپ می‌کند.

دستور rosservice list

دستور rosservice list

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

$ rosservice list

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

/clear 
/kill
 /reset 
/rosout/get_loggers 
/rosout/set_logger_level 
/spawn 
/teleop_turtle/get_loggers 
/teleop_turtle/set_logger_level 
/turtle1/set_pen 
/turtle1/teleport_absolute 
/turtle1/teleport_relative 
/turtlesim/get_loggers
/turtlesim/set_logger_level

از بین سرویس های بالا دو سرویس /rosout/get_loggers و /rosout/set_logger_level مرتبط با نود rosout  است.

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

سرویس‌های مختلفی که در بالا مشاهده می‌کنید هرکدام دارای کار خاصی است. به عنوان نمونه سرویس Clear بک گراند مربوط به پنجره لاکپشت را پاک می‌کند (اگر با اجرای نود turtle_teleop_key بک گراند را خط خطی کرده‌اید از این سرویس استفاده کنید) و یا سرویس Spawn ، به ما این امکان را می‌دهد تا یک ربات دیگر ایجاد نماییم. خب حالا فرض کنید که می‌خواهیم در خواستی برای سرور بفرستیم که با استفاده از سرویس Spawn یک ربات دیگر در پنجره ایجاد نماید.

اولین سوالی که ذهنمان را درگیر می‌کند این است که چگونه در خواست خود را به سرور بفرستیم؟؟؟ در ادامه پاسخ این سوالتان را خواهید یافت.

دستور rosservice call

به منظور ارسال در خواست به سرور باید از این دستور به صورت زیر  استفاده کنیم.

rosservice call [service] [args]

[service] : این در واقع نام سرویسی است که می‌خواهید به سرور درخواست بدهید.

[args] : در واقع آرگومان‌های ورودی سرویس مورد نظر شما است. ( ممکن است برخی سوریس‌ها نیازمند آرگومان ورودی نباشد)

خب اجازه بدهید که در خواستی مبتنی بر ایجاد یک ربات دیگر در کنار ربات موجود در پنجره شبیه‌ساز به سرور بدهیم. همانطور که قبلاً ذکر شد با استفاده از دستور Spawn می‌توان یک ربات دیگر ایجاد نمود. اما این سرویس چه آرگومان‌هایی را به عنوان ورودی می‌گیرد؟

برای پاسخ به این سوال نیاز است تا دستوری به فرمت زیر را در ترمینال وارد نمایید:

$ rosservice info [service]

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

 $ rosservice info /spawn

در ترمینال این اطلاعات را مشاهده می‌کنید:

Node: /turtlesim 
URI: rosrpc://localhost:60245 
Type: turtlesim/Spawn 
Args: x y theta name 

که آخرین پارامتر آن همان آرگومان‌های ورودی است.  که به ترتیب موقعیت، زاویه و نام رباتی که می‌خواهید توسط سرور ایجاد نمایید را مشخص می‌کند.

حالا که نوع آرگومان‌های موردنیاز را فهمیدیم، می‌توانیم با دستور زیر یک لاکپشت دیگر رو به صفحه نمایشمون اضافه کنیم.

rosservice call /spawn 2 3 0.3 "my_turtle" 

با اجرای این دستور یک لاکپشت با نام my_turtle و در مختصات [۳ ،۲]  و با زاویه ۰٫۳ رادیان ایجاد می‌شود. توجه کنید که اگر داخل ” ” نامی را وارد نکنید به صورت پیشفرض turtle1 برای آن انتخاب می‌شود.

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

شما می‌توانید به همین منوال نحوه عملکرد سایر سرویس‌ها را نیز مشاهده کنید. (به شرطی که آرگومان‌های ورودی هر سرویس را مطابق اطلاعات داده شده در rosservice info  مربوط به هر یک از آنها وارد کنید).

دستور rosservice type

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

rosservice type [service]

به عنوان مثال بیایید تا نوع سرویس clear که در لیست فوق بود را ببینیم.

$ rosservice type /clear
std_srvs/Empty

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

دستور rosparam

این دستور به شما اجازه می‌دهد تا اطلاعات موجود روی پارامترسرور ROS را ذخیره و یا دستکاری کنید.

برای مشاهده پارامترهایی که هم‌اکنون در پارامتر سرور هستند از دستور زیر استفاده کنید.

$ rosparam list

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

/background_b 
/background_g 
/background_r
 /rosdistro 
/roslaunch/uris/host_57aea0986fef__34309 
/rosversion
/run_id

در ادامه می‌خواهیم یکی از این پارامترها را با دستور rosparam set  تغییر دهیم.

دستورهای rosparam set و rosparam get

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

ابتدا شما می‌توانید با استفاده از دستور زیر به عنوان مثال مقدار عددی رنگ قرمز را ببینید.

$ rosparam get /background_r

برای تغییر هر کدام از پارامترها (به دلخواه خودتان) به صورت زیر عمل کنید.

$ rosparam set /background_r 150

برای مشاهده تغییرات ایجاد شده لازم است تا ابتدا سرویس clear  را فراخوانی کنیم.

$ rosservice call /clear

مشاهده خواهید کرد که رنگ پس‌زمینه تغییر می‌کند.

Share
7

Related posts

مارس 16, 2020

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


Read more
سپتامبر 20, 2019

گام سیزدهم: نوشتن یک service و client ساده (Python)


Read more
سپتامبر 19, 2019

گام دوازدهم: نوشتن یک service و client ساده (C++)


Read more

2 دیدگاه

  1. delaram گفت:
    مارس 28, 2019 در 7:33 ب.ظ

    rosservice call /spawn 2 3 0.3 "my_turtle"
    برای من با این دستور اررو داد و وقتی دستور خود سایت مرجع را نوشتم لاکپشت اضافه شد
    $ rosservice call /spawn 2 2 0.2 “”

    پاسخ
    • IRANROS گفت:
      مارس 30, 2019 در 3:40 ب.ظ

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

      پاسخ

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

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

آموزش سیستم عامل رباتیک 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