當我們執行完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...