ROS 好多小烏龜

2021-10-02 00:04:26 字數 1987 閱讀 6637

當我們執行完rosrun turtlesim turtlesim_node後在桌面上出現乙隻小烏龜,顯得那麼孤單和寂寞,所以我們就來殺死這個單身龜,再建立一群小烏龜。

之前烏龜的控制是通過topic的發布和訂閱來實現,此處的烏龜的死亡和新生是通過service來實現。

啟動小烏龜,然後rosservice list看一下,有哪些服務被啟動。可以看到乙個/clear、/kill、/spawn、/turtle1/set_pen,從字面理解,kill極有可能就是殺死小烏龜的。所以迫不及待試一下。rosservice info /kill

node:

/turtlesim

uri: rosrpc:

//dynamicw-inspiron-

3442

:44027

type: turtlesim/kill

args: name

需要傳入乙個引數,也就時殺死的小烏龜的名字,根據名字從生死薄上劃去。

rosservie call /kill turtle1
孤獨的小烏龜真的沒有了。證明猜想正確。

根據/turtle1/set_pen來得到小烏龜的名字為turtle1。

使用同樣的方法,檢視服務的資訊:rosservice info /spawn

node:

/turtlesim

uri: rosrpc:

//dynamicw-inspiron-

3442

:44027

type: turtlesim/spawn

args: x y theta name

/spawn需要四個引數,看著樣子很像是建立烏龜的,有座標,有角度還有名字。

試一下rosservice call /spawn "x:3.0 y:3.0 theta: 3.14 name:'nihao'"

果然在螢幕上出現了乙個烏龜,猜想正確。接下來就在**中建立乙個烏龜大家族吧!

#include 

#include

#include

#include

#include

using namespace std;

int main(

int argc,char** ar**)

; ros:

:init(argc, ar**,

"moreturtle");

ros:

:nodehandle n;

ros:

:service:

:waitforservice(

"spawn");

//等待/spawn服務啟動

ros:

:serviceclient client_kill = n.serviceclient:kill>

("kill");

//定義乙個/kill服務的客戶端

turtlesim:

:kill kill_name;

kill_name.request.name=

"turtle1"

; client_kill.call(kill_name)

;//呼叫/kill服務殺死孤獨的小烏龜

ros:

:serviceclient client = n.serviceclient:spawn>

("spawn");

//定義乙個/spawn服務的客戶端

turtlesim:

:spawn turtle;

for(

int i =

0; i <

10;i++)

for(

int i =

0;i <

10;i++)

}

ROS小烏龜建立

ros啟動小烏龜 雖然過程還有很多failed沒完全看懂解決,但是還是記錄下來好好修正。以下逐條 實驗 建立ros工作環境 catkin 執行 mkdir p catkin ws src cd catkin ws src catkin init workspace cd catkin ws catk...

ROS 小烏龜測試

教程 1.維基 2.創客智造 1安裝環境配置 桌面進入命令列 echo source opt ros indigo setup.bash bashrc source bashrc2.1建立工作環境並編譯 生成的在home資料夾下 mkdir p catkin ws src cd catkin ws ...

ROS小烏龜測試

echo export display 0.0 bashrc source bashrc5 啟動ros master roscore6 另外開啟bash或cmder,輸入 rosrun turtlesim turtlesim node即可開啟乙個圖形視窗,並看到乙隻小烏龜。提示qstandardpa...