سلام و وقت به خیر
به کمک برنامه ی go to goal که در خود سایت راس هست (پایتون) برای لاک پشت هدفی تعیین شده که سه تا دیتا(x,y,theta) میگیره و به آن هدف میرود.ممنون میشم اگر راهنمایی کنید که چطور میشه این برنامرو برای چند لاک پشت اجرا کرد؟
رمز را فراموش کردید ؟ لطفا ایمیل را وارد کنید تا لینک تغییر پسورد به ایمیل شما ارسال شود
elnazshe
سلام
ممنون از پاسخ و راهنماییتون
موردی که الان پیش اومده این هست که وقتی که فایل لانچ ران میشه،برای دادن ورودی ارور میده چون هر لاک پشت داخل کدش سه تا input داره اما متاسفانه نمیشه که وارد کنم.(برنامه وقتی داخل خود کد ورودی داده میشه اکی هست).شما میدونید چطور میشه این را برطرف کرد؟
محمدرضا شاهمیری
با سلام
برای این کار شما در ابتدا نیاز دارید تا به کمک سرویس spawn نود turtlesim یک لاکپشت جدید در موقعیت دلخواه خود قرار دهید و نامی را برای آن ست کنید. برای این کار میتوانید نودی بنویسید که این کار را انجام دهد. در فایل پیوست یک نمونه از این نود به زبان c++ برای شما قرار داده شده است.(دقت داشته باشید که برای اجرای این نود باید مراحل تنظیم این نود به عنوان نود کلاینت انجام دهید. توضیحات کاملتر در این باره را میتوانید در این پروژه مشاهد کنید.)
پس از ایجاد لاکپشت جدید شما باید نود کنترل کننده آن را ایجاد کنید و در آن تاپیک های کنترل موقعیت را با توجه به نام لاکپشت های خودتان تنظیم کنید (به طور مثال turtle1,turtle2). برای این کار کدی که در اختیار دارید را توسعه دهید.
** نام پیشفرض اولین لاکپشت در نود turtlesim ،به صورت turtle1 میباشد**
در ساده ترین حالت شما میتوانید نود gotogoal.py را با نام جدید کپی کرده و در آن تاپیکهای لاکپشت جدید را ست کنیدو در نهایت توسط یک فایل لانچ سه نود (دوتا gotogoal و یک نود برای spawn) را فراخوانی کنید.

//………………… http://www.IRANROS.com ……………………..
//////////////////////////////////////////////////////////////////////
// set initial position of turtle with calling services //
//////////////////////////////////////////////////////////////////////
#include <ros/ros.h>
#include <turtlesim/Spawn.h>
int main(int argc, char **argv) {
ros::init(argc, argv, “initial_pos”);
ros::NodeHandle nh;
// Wait until the clear service is available, which
// indicates that turtlesim has started up, and has
// set the background color parameters.
ros::service::waitForService(“spawn”); //this is optional
// calling spawn service for locate robot in initial position:
ros::ServiceClient spawnClient = nh.serviceClient<turtlesim::Spawn>(“spawn”);
turtlesim::Spawn srv2;
srv2.request.x=5.25; //initial pose.x
srv2.request.y=5.1; //initial pose.y
srv2.request.theta=0.0; //initial orientation
srv2.request.name=”turtle2″;
spawnClient.call(srv2);
ROS_INFO(“spawn”);
return 0;
}