• اولین مرجع آموزش رآس در ایران
  • 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
گام سوم: ایجاد بسته (package) در ROS
دسامبر 10, 2018
مفهوم Topic در ROS
گام پنجم : مفهوم تاپیک در ROS
دسامبر 15, 2018

گام چهارم :مفهوم Node در ROS

Categories
  • آموزش جامع ROS
  • آموزش مقدماتی ROS
Tags
  • client
  • node
  • roscore
  • rosnode
  • rosrun
  • نود

مفهوم Node در ROS، برای راه اندازی یک ربات نیاز است تا یکسری قوانین و دستوراتی به منظور هوشمند ساختن ربات تعریف شود. این قوانین (به بیان ساده) به کمک زبان‌های برنامه نویسی عموما  C++، C#، python و … برای ربات‌ها قابل فهم می‌شود. فرض کنید که می‌خواهید یک ربات کاملا هوشمند ایجاد نمایید. برای داشتن این ربات نیاز است تا برنامه نویس برای تمام رفتارهای ربات  دستوراتی را بنویسد. مثلا اگر بخواهیم موقعیت ربات A را با زبان برنامه نویسی C++ کنترل نماییم نیاز است تا یک فایلcpp  ایجاد کنیم تا کد های مربوط به کنترل موقعیت ربات را داخل آن بنویسیم. در سیستم عامل ربات ROS، این فایل تحت عنوان Node شناخته می‌شود.

به صورت خلاصه: برنامه‌هایی که توسط کاربر نوشته می‌شود، برای اجرا باید به عنوان Node به ROS معرفی شود. یک Node در واقع یک فایل قابل اجرا درون یک بسته است.

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

کتابخانه‌ی Client

معمولا نرم افزارها از یک زبان برنامه نویسی برای ارتباط با ربات استفاده می‌کنند. در ROS اما اینگونه نیست!!!

کتابخانه‌ی Client در ROS این امکان را به شما می‌دهد که نودها را در زبان‌های برنامه نویسی مختلفی بنویسید و در عین حال با یکدیگر در ارتباط باشند. مثلا شما برای ربات A می‌توانید یک Node برای کنترل موقعیت با زبان برنامه نویسی سی پلاس پلاس ایجاد نمایید و Node مربوط به کنترل سرعت ربات را به زمان پایتون بنویسید و همزمان این دو نود اجرا و با یکدیگر در ارتباط باشند.

              Rospy = کتابخانه‌ی Client در پایتون + ROS Roscpp =کتابخانه‌ی Client در سی پلاس پلاس + ROS

Roscore

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

 $ roscore

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


... logging to ~/.ros/log/9cf88ce4-b14d-11df-8a75-00251148e8cf/roslaunch-machine_name-13039.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://machine_name:33919/
ros_comm version 1.4.7
SUMMARY
======
PARAMETERS
* /rosversion
* /rosdistro
NODES
auto-starting new master
process[master]: started with pid [13054]
ROS_MASTER_URI=http://machine_name:11311/
setting /run_id to 9cf88ce4-b14d-11df-8a75-00251148e8cf
process[rosout-1]: started with pid [13067]
started core service [/rosout]

توجه: تا زمانی که این ترمینال به این صورت باز است یعنی نرم‌افزار ROS فعال است. با بستن این ترمینال درواقع نرم‌افزار ROS را می‌بندید.

دستور rosnode

rosnode درواقع یکی از ابزارهای موجود در ROS است که این امکان را به شما می‌دهد تا اطلاعاتی در مورد نودها به دست آورید. به‌منظور اجرای این دستور نیاز است تا دستور roscore در ترمینال اجرا شود. سپس یک ترمینال جدید باز نمایید (برای باز کردن ترمینال جدید از ترکیب کلیدهای ctrl+shift+T استفاده کنید). حال دستور زیر را وارد نمایید.

 $ rosnode list

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

 /rosout

این پیام که در ترمینال مشاهده نمودید درواقع بیان می‌کند که تنها یک نود در حال اجرا، با نام rosout وجود دارد. این Node همیشه با اجرای مستر در رآس اجرا می‌شود.

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

$ source /opt/ros/kinetic/setup.bash

این پیام که در ترمینال مشاهده نمودید درواقع بیان می‌کند که تنها یک نود در حال اجرا، با نام rosout وجود دارد. این Node همیشه با اجرای مستر در رآس اجرا می‌شود.

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

$ rosnode info /rosout

بعد از وارد کردن این دستور در ترمینال اطلاعات نود rosout را مشاهده می‌کنید.

Node [/rosout] 
Publications: * /rosout_agg [rosgraph_msgs/Log] 
Subscriptions:
* /rosout [unknown type]
Services: * /rosout/get_loggers
 * /rosout/set_logger_level
contacting node http://machine_name:54614/ ...
Pid: 5092

دستور rosrun

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

$ rosrun [package_name] [node_name]

حال می‌خواهیم نود turtlesim_node را در بسته turtlesim اجرا نماییم؛ بنابراین دستور زیر را در یک ترمینال جدید باز می‌کنیم.

$ rosrun turtlesim turtlesim_node

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

turtle1

این لاک‌پشت مشاهده‌شده در پنجره بالا ممکن است که در سیستم‌عامل شما متفاوت باشد که وابسته به نسخه‌ی نصب‌شده شما هست.

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

$ rosrun turtlesim turtle_teleop_key

توجه: به منظور حرکت لاکپشت حتما دقت نمایید که پنجره ترمینال جدیدی که دستور بالا را وارد کردید، فعال باشد و سپس دکمه های مربوط به حرکت را بزنید تا ربات حرکت نماید.( به عبارتی دیگر اگر بعد از وارد کردن دستور بالا بر روی پنجره دیگری کلیک کردید، لازم است تا دوباره با موس بر روی ترمینالی که ئستور بالا را وارد کردید، کلیک نمایید تا پنجره مورد نظر فعال شود.)

turtle2

حال دستور زیر را در یک ترمینال جدید وارد نمایید:

$ rosnode list

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

/rosout/teleop_turtle/turtlesim

یکی از ویژگی‌های قدرتمند در ROS تغییر نام نودها است. با استفاده از این ویژگی شما می‌توانید نام نود را برای خودتان شخصی‌سازی کنید.

$ rosrun turtlesim turtlesim_node __name:=my_turtle

حال دوباره دستور rosnode list را در یک ترمینال جدید وارد کنید. خروجی این دستور لیست نودهای موجود را نشان می‌دهد؛ که نود شخصی‌سازی‌شده شما را نشان می‌دهد.

/my_turtle
rosout
Share
9

Related posts

مارس 25, 2021

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


Read more
مارس 16, 2020

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


Read more
استاندارد نامگذاری منابع در ROS

یکی دیگر از استانداردهای ROS نحوه نامگذاری منابع در رآس است

فوریه 25, 2020

بررسی استاندارد نامگذاری منابع در ROS


Read more

4 دیدگاه

  1. sina گفت:
    نوامبر 22, 2019 در 9:22 ب.ظ

    Thank you for your great website.
    One minor comment: HTML tags is mixed with the console comment in one of the console commands
    above.

    پاسخ
  2. IRANROS گفت:
    نوامبر 23, 2019 در 10:12 ق.ظ

    Thanks for your attention
    We fixed the issue

    پاسخ
  3. safari گفت:
    می 26, 2021 در 10:25 ق.ظ

    بسیار عالی ؛ با این همه مشکلات در ایران ؛ شما عالی پیشرفت کرده اید ؛ برایتان از صمیم قلب آرزوی سلامتی و موفقیت دارم.

    پاسخ
    • IRANROS گفت:
      ژوئن 7, 2021 در 6:38 ب.ظ

      سلام
      ممنون از لطف شما

      پاسخ

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

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

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