در بخش آموزش مقدماتی نحوه ساخت پکیج با استفاده از دستور catkin_create_pkg را یاد گرفتید. اما خوب است بدانید که امکان ساخت پکیج به صورتی دستی هم وجود دارد و کار دشواری نیست. اگر چه استفاده از دستور catkin_create_pkg مانع از ایجاد اشتباهات احتمالی میشود و همچنین سریعتر به نتیجه میرسید اما بد نیست که با نحوه ساخت یک پکیج آشنا شوید.
در ادامه این آموزش فرض میشود که مسیر دایرکتوری شما در فضای کاری به نام catkin_ws قرار دارد و همچنین فرآیند سورس کردن را با استفاده از دستور source/devel/setup.bash
را به درستی انجام داده و یا اینکه دستور سورس را با توجه به فضای کاری خودتان در فایل bashrc قرار دادهاید.(برای اطلاعات بیشتر به گام اول آموزش مقدماتی مراجعه کنید.)
اکنون میخواهیم یک پکیج با نام foobar ایجاد کنیم. ابتدا دستورات زیر را وارد کنید تا در مسیر src پوشهای به نام foobar ایجاد شود.
mkdir -p src/foobar
cd src/foobar
همانطور که در بخش مقدماتی نیز توضیح داده شد، هر پکیج به یک فایل مانیفست به نام package.xml نیاز دارد تا یک سری از وابستگیهای اولیه را ایجاد کند و به ابزارهایی مانند rospack اجازه دهد تا اطلاعاتی را درباره آنچه به پکیج شما بستگی دارد، تعیین کند.
در پوشه foobar فایلی با نام package.xml ایجاد کنید و کدها زیر را در آن قرار دهید.
<package format="2">
<name>foobar</name>
<version>1.2.4</version>
<description>
This package provides foo capability.
</description>
<maintainer email="foobar@foo.bar.willowgarage.com">PR-foobar</maintainer>
<license>BSD</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>std_msgs</exec_depend>
</package>
اکنون پکیج شما دارای یک مانیفست است و ROS میتواند آن را پیدا کند. برای این کار دستور زیر را اجرا کنید.
اگر ROS به درستی تنظیم شده باشد شما پس از اجرای این دستور باید چیزی شبیه به این را در خروجی مشاهده کنید:
/home/user/ros/catkin_ws/src/foobar.
توجه داشته باشید که برای بسته شما هماکنون وابستگیهای roscpp و std_msg تعریف شده است. این قبیل وابستگیها برای پیکربندی صحیح بسته ها توسط catkin استفاده می شود. شما میتوانید وابستگیهای بیشتر را در این صفحه مشاهد کنید. (همچنین اگر مانیفستهایی به صورت خودکار توسط دستور catkin_create_pkg
ایجاد شدهاند را نگاه کنید، وابستگیهای بیشتر در آن به صورت کامنت شده وجود دارد.)
اکنون باید فایل CMakeLists.txt را ایجاد کنیم. زمانی که از دستور catkin_make برای کامپایل کردن بسته استفاده میکنیم از این فایل استفاده میشود تا انعطاف بیشتری بین سیستمها ایجاد شود.
در پوشه foobar فایلی با نام CMakeLists.txt ایجاد کنید و دستورات زیر را در آن قرار دهید. (این حداقل دستوراتی است که باید در این فایل وجود داشته باشد.)
cmake_minimum_required(VERSION 2.8.3)
project(foobar)
find_package(catkin REQUIRED roscpp std_msgs)
catkin_package()
به این صورت شما بسته اختصاصی خودتان را ایجاد کردید. برای اطلاعات بیشتر در رابطه با CMakeLists.txt به این صفحه مراجعه کنید. همچنین شما میتوانید فایلهای package.xml و CMakeLists.txt ساخته شده توسط catkin_create_pkg را برای خودتان سفارشی کنید.