2-13- ابزارهای فرمان رآس

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

دستور roscore ابزاری بسیار مهم در رآس است. هنگامیکه این دستور را در ترمینال اجرا میکنیم، این دستور مستر رآس، سرور پارامتر و گره­ی ورود به سیستم[96] را راه­اندازی می کند. بعد از اجرای این دستور می‌توانیم هر برنامه/گره رآس دیگری را اجرا کنیم. بنابراین در یک پنجره ترمینال roscore را اجرا کنید و برای وارد کردن دستور بعدی برای اجرای یک گره رآس از ترمینال دیگری استفاده کنید. اگر roscore را در ترمینال اجرا کنید، ممکن است پیام‌هایی مانند شکل 4-14 دریافت کنید.

شکل ‏4‑14: پیام­های roscore

پیام‌های مربوط به شروع مستر رآس را در ترمینال مشاهده می­کنید. همچنین آدرس مستر رآس نیز آورده شده است.

به کمک دستور rosnode می­توان به تمام جنبه‌های گره رآس دست یافت. برای مثال، می‌توانیم تعداد گره‌های رآس در حال اجرا روی سیستم­مان را فهرست کنیم. اگر هر کدام از دستورات را تایپ کنید، به کمک کامل برای این ابزار میروید.

در زیر استفاده معمول از rosnode را می­بینید.

$ rosnode list

شکل 4-15 فهرستی از گره‌های در حال اجرا در سیستم را نشان می‌دهد. این یک خروجی معمول دستور rosnode list است.

شکل ‏4‑15: خروجی دستور list rosnode

دستور rostopic اطلاعاتی در مورد انتشار/ اشتراک تاپیک­ها در سیستم ارائه می‌دهد. این دستور برای فهرست کردن تاپیک­ها، چاپ داده‌های تاپیک و انتشار داده‌ها بسیار مفید است.

$ rostopic list

اگر تاپیکی به‌نام /chatter وجود داشته باشد، می‌توانیم داده‌های تاپیک را با استفاده از دستور زیر چاپ کنیم

$ rostopic echo /chatter

اگر بخواهیم داده­ای را روی یک تاپیک منتشر کنیم، می‌توانیم به راحتی اینکار را با دستور زیر انجام دهیم.

$ rostopic pub topic_name msg_type data

مثالی از دستور فوق را در زیر می­بینید:

$ rostopic pub /hello std_msgs/String “Hello”

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

شکل 4-16 تصویری از rostopic echo و rostopic pub را نشان می­دهد.

شکل ‏4‑16: خروجی rostopic echo  و publish

شکل 4-16 نمایی از برنامه­ی Terminator[97] است. این برنامه کار با ترمینال­ها را آسان می کند مخصوصا وقتی که نیاز باشد چند دستور را همزمان در چند ترمینال مختلف اجرا کنیم. صفحه این برنامه به ترمینال­های جداگانه تقسیم می شود. در شکل 4-16 در یک ترمینال roscore در حال اجرا است. در ترمینال دوم یک تاپیک انتشار می­یابد. در ترمینال سوم همان تاپیک echo می­شود.

دستور rosversion نسخه رآس را بررسی می‌کند.

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

$ rosversion -d

Output: kinetic

دستور rosparam فهرستی از پارامترهای بارگذاری شده در سرور پارامتر را ارائه می‌دهد.

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

$ rosparam list

شکل 4-17 چگونگی تنظیم و دریافت یک پارامتر را نشان می‌دهد.

شکل ‏4‑17: خروجی rosservice set/get

دستورات تنظیم و گرفتن پارامتر با استفاده از گزاره set و get دستور rosparam را در زیر می بینید:

Setting parameter

$ rosparam set parameter_name value

Eg. $ rosparam set hello “Hello”

Getting a parameter

$ rosparam get parameter_name

$ rosparam get hello

Output: “Hello”

دستور roslaunch نیز در رآس مفید است. اگر بخواهید بیش از ده گره رآس را همزمان اجرا کنید، اجرای یک به یک آنها بسیار مشکل است. در این حالت برای رفع این دشواری، از فایل‌های roslaunch استفاده می­کنیم. فایل‌های roslaunch یا فایل­های راه­اندازی رآس فایل‌های XML هستند که می‌توانید هر گره‌ایی که می‌خواهید اجرا کنید را در آن وارد کنید. یکی دیگر از مزیت­های دستور roslaunch این است که دستور roscore با آن اجرا می‌شود، بنابراین نیازی به اجرای دستور roscore اضافی برای اجرای گره‌ها نداریم.

زیر نحو عملکرد یک فایل roslaunch آمده است. roslaunch دستوری برای اجرای یک فایل راه­انداز[98] است و باید نام بسته و نام فایل راه­انداز را در آن ذکر کنیم.

$ roslaunch ros_pkg_name launch_file_name

roslaunch roscpp_tutorials talker_listener.launch مثالی از آن است.

برای اجرای یک گره رآس، باید از دستور rosrun استفاده کنید. استفاده از آن بسیار ساده است.

$ rosrun ros_pkg_name node_name

rosrun roscpp_tutorials talker مثالی از آن است.

[96] Logging node

[97] https://launchpad.net/terminator

[98] launch