• اولین مرجع آموزش رآس در ایران
  • 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
مفاهیم مربوط به آدرس دهی Filesystem در ROS
گام دوم: آدرس دهی در ROS
دسامبر 7, 2018
گام چهارم :مفهوم Node در ROS
دسامبر 11, 2018

گام سوم: ایجاد بسته (package) در ROS

Categories
  • آموزش مقدماتی ROS
Tags
  • catkin
  • package
  • workspace
  • بسته
  • فضای کاری

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

  • نود (Node): برنامه‌های اجراپذیر در رآس که می‌توانند به طور همزمان اجرا شوند و با یکدیگر ارتباط برقرار کنند
  • پیام (Massage): نوع داده‌ای که نودها به عنوان یک تاپیک انتشار می‌دهند یا دریافت می‌کنند.
  • تاپیک (Topic): نودها می‌توانند پیام‌ها را تحت عنوان تاپیک های مختلف انتشار بدهند و همچنین به تاپیکهای منتشر شده از نودهای دیگر اصطلاحا گوش بدهند.
  • مستر (Master): هسته مرکزی رآس را مستر می‌گویند که در واقع کمک می‌کند تا نودها یکدیگر را پیدا کنند.

 

برنامه‌هایی که در ROS نوشته می‌شوند به صورت بسته (package) تنظیم شده‌اند. برای اجرای این بسته‌ها از دستوراتی استفاده می‌شود که بسته را کمپایل می‌کنند و باعث کمپایل شدن تمام نودهای نوشته شده در بسته می‌گردد. کمپایل کردن و اجرای برنامه‌ها در رآس توسط سیستمی به نام کتکین  (catkin) انجام می‌شود. بسته‌هایی که شما می‌نویسید برای اینکه بتوانند توسط کتکین اجرا شوند باید شرایط زیر را داشته باشند.

  • بسته باید حاوی یک فایل xml سازگار با کتکین باشد. (این فایل یک سری وابستگی‌های اولیه را تنظیم می‌کند)
  • بسته باید دارای یک فایل txt باشد که از کتکین استفاده می‌کند.
  • هر بسته باید پوشه مخصوص به خود را داشته باشد.

ساده ترین ساختاری که یک بسته ممکن است داشته باشد به این صورت است:

my_package/
    CMakeLists.txt
    package.xml

البته این نکته را درنظر داشته باشید که، شما که در ابتدای راه هستید نیازی به ایجاد دو فایل package.xml و CMakeLists.txt ندارید و در ادامه توضیح می‌دهیم که این فایل‌ها را می‌توان به صورت خودکار توسط تولید کرد.

بسته ها در یک فضای کاری

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

در زیر شمای کلی یک فضای کاری که شامل n بسته ساده (فاقد هیچ نودی) می‌باشد را مشاهده می‌کنید.

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

قبل از آموزش نحوه ساخت بسته ، ابتدا روش ساخت فضای کاری توضیح داده می‌شود.

ساخت فضای کاری:

در این قسمت نوعی فضای کاری به نام catckin workspace ایجاد می‌شود که مزیتی که این فضای کاری دارد آن است که فایل‌های مورد نیاز برای کامپایل شدن و اجرای بسته را به صورت خودکار تولید می‌کند.

قبل از اجرای دستورات ساخت فضای کاری باید یک سری از متغیرهای محلی سیستم مقداردهی گردند، برای این منظور کد زیر را در ترمینال وارد کنید.  (برای انجام عمل paste در ترمینال از ترکیب کلیدهای cntrl+shift+v استفاده کنید)

source /opt/ros/melodic/setup.bash

توجه داشته باشید که چنانچه توزیع رآسی که شما استفاده می‌کنید چیزی غیر از melodic بود، باید اسم آن جایگذاری کنید. به عنوان مثال برای توزیع kinetic  کد زیر را وارد کنید.

source /opt/ros/kinetic/setup.bash

در ادامه با استفاده از دستور زیر پوشه‌ای به عنوان فضای کاری و درون آن نیز پوشه‌ای با نام src برای نوشتن بسته‌ها ایجاد می‌شود.

mkdir -p ~/catkin_ws/src

به جای عبارت catkin_ws می‌توانید نام دلخواه خودتان را برای فضای کاری انتخاب کنید، اما عبارت src را نباید تغییر دهید.

پس از اینکه پوشه فضای کاری ساخته شد برای ایجاد پوشه ها و فایل های مورد نیاز به مسیر فضای کاری رفته و دستور آماده سازی اولیه catkin workspace که در زیر آمده است را اجرا می‌کنیم.

cd ~/catkin_ws/
catkin_make

اجرای دستور catkin_make برای اولین بار در فضای کاری، فایل CMakeLists.txt را در پوشه src ایجاد می‌کند. علاوه براین اگر شما پس از اجرای این دستور وارد پوشه فضای کاری خود شوید، مشاهده خواهید کرد که دو پوشه به نام‌های build  و devel  در کنار پوشه src ایجاد شده‌اند. اکنون داخل پوشه devel  شما می‌توانید چندین فایل را setup.*sh مشاهده کنید. درون این فایل‌ها یک سری متغیرهای محلی مورد نیاز تعریف شده‌اند که در هر فضای کاری نیاز است تا مقداردهی شوند برای این کار دستور زیر را در ترمینال وارد می‌کنیم.

source devel/setup.bash

تا اینجای کار ساخت فضای کاری به اتمام رسید و حالا نوبت به ایجاد بسته می‌رسد.

نکته: شاید برایتان این سوال ایجاد شده باشد که آیا می‌شود تمامی بسته‌ها را درون یک فضای کاری قرارداد؟ و آیا نیازی به ایجاد فضاهای کاری متعدد هست؟ در جواب باید بگوییم که وجود یک فضای کاری به تنهایی مشکلی ایجاد نمی‌کند اما بهتر است برای پروژه‌های مستقل فضاهای کاری جداگانه‌ای تعریف شود.

ساخت بسته:

برای ساخت بسته ابتدا باید به مسیر پوشه src فضای کاری که قبلا ساخته‌ایم برویم؛ برای این کار از دستور زیر استفاده می‌شود.

cd ~/catkin_ws/src

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

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

این کد یک پوشه به نام beginner_tutorials شامل دو فایل package.xml  و  CMakeLists.txt ایجاد می‌کند که تا اندازه‌ای با اطلاعاتی که شما پس از دستور catkin_create_pkg وارد کرده‌اید پر شده است.

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

# This is an example, do not try to run this
# catkin_create_pkg  [depend1] [depend2] [depend3]

که در مورد مثال ما، <package_name> برابر beginner_tutorials و [depend1] [depend2] [depend3] به ترتیب std_msgs rospy roscpp قرار گرفت. این وابستگی‌ها به صورت عمومی برای بسته ها تعریف می‌شوند و در اجرای کد نتیجه‌ای ندارد ولی هنگام خروجی گرفتن از برنامه مورد نیاز خواهند بود و وابستگی هایی را معرفی می‌کنند که برنامه توسعه داده شده به آنها وابسته می‌باشد و براساس آنها نوشته شده و هنگام اجرا در سیستم دیگر به وجود آنها نیاز است. که در اینجا به اولی و سومی حتما نیاز است ولی دومی به طور مثال قرار داده شده است. این وابستگی‌ها همچنین در فایل package.xml ذخیره شده است و از آنجا نیز قابل تغییر است.

اکنون باید بسته ها را در فضای کاری کمپایل کنیم که اصطلاحا به این کار build کردن می‌گویند.

cd ~/catkin_ws
 catkin_make
 source devel/setup.bash

بعد از این بسته شما ساخته شده است و می‌توانید آن را توسعه دهید.

برای اعمال تغییراتی که بر روی فایل‌های درون بسته انجام می‌دهید (چه تغییر در فایلهای package.xml و … و یا ایجاد نود) باید عملیات کمپایل کردن را انجام دهید، یعنی باید مسیر فعلی را در فضای کاری تنظیم کنید و سپس از دستور catkin_make  استفاده کنید.

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

Base path: /home/user/catkin_ws
Source space: /home/user/catkin_ws/src
Build space: /home/user/catkin_ws/build
Devel space: /home/user/catkin_ws/devel
Install space: /home/user/catkin_ws/install
####
#### Running command: &quot;cmake /home/user/catkin_ws/src
-DCATKIN_DEVEL_PREFIX=/home/user/catkin_ws/devel
-DCMAKE_INSTALL_PREFIX=/home/user/catkin_ws/install&quot; in &quot;/home/user/catkin_ws/build&quot;
####
-- The C compiler identification is GNU 4.2.1
-- The CXX compiler identification is Clang 4.0.0
-- Checking whether C compiler has -isysroot
-- Checking whether C compiler has -isysroot - yes
-- Checking whether C compiler supports OSX deployment target flag
-- Checking whether C compiler supports OSX deployment target flag - yes
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using CATKIN_DEVEL_PREFIX: /tmp/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/kinetic
-- This workspace overlays: /opt/ros/kinetic
-- Found PythonInterp: /usr/bin/python (found version &quot;2.7.1&quot;)
-- Found PY_em: /usr/lib/python2.7/dist-packages/em.pyc
-- Found gtest: gtests will be built
-- catkin 0.5.51
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing packages in topological order:
-- ~~- beginner_tutorials
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ add_subdirectory(beginner_tutorials)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/catkin_ws/build
####
#### Running command: &quot;make -j4&quot; in &quot;/home/user/catkin_ws/build&quot;
####

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

Share
8

Related posts

مارس 16, 2020

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


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

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


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

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


Read more

2 دیدگاه

  1. مهدی گفت:
    فوریه 11, 2019 در 1:47 ق.ظ

    سلام
    خیلی خوب بود مرسسسسسسسسسسسسسسسسسی
    ولی تو یکی از کد مشکل هست لطفا درستش کنید
    http://s9.picofile.com/file/8351861826/Screenshot_from_2019_02_11_00_41_40.png

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

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

      موفق باشید
      تیم ایران رآس

      پاسخ

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

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

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