09.ROS入門學(xué)習(xí) - 用 Python 寫 Server 和 Client

本文主要參考來自于:

ROS官方wiki教程:

wiki索引頁面

Writing a Simple Service and Client (Python)


一谱轨、寫一個Server Node

這里我們創(chuàng)建一個接收兩個int數(shù)據(jù)返回一個int sum的Server ("AddTwoIntsServer") node刘莹。 要實驗成功這一個章節(jié)必須把之前的章節(jié)中創(chuàng)建("AddTwoInts.srv")一并做了才可以鼓蜒。
這里看了一個ROS官方wiki的視頻發(fā)現(xiàn)用的是vscode編輯的python的代碼呼股,這里試了下溉卓,效果巨好懂从。不知道是不是我環(huán)境配置的原因,pycharm有時候不認很多import艰垂。導(dǎo)致提示也沒有了。這里直接上vscode就沒啥毛病了埋虹,提示的很好猜憎。

#!/usr/bin/env python
#coding:utf-8

import rospy
from beginner_tutorials.srv import *

def HandleAddTwoInts(req):
    print "Returning [%s + %s = %s]" % (req.a, req.b, (req.a + req.b))
    return AddTwoIntsResponse(req.a + req.b)

def AddTwoIntsServer():
    rospy.init_node("AddTwoIntsServer")
    # 下面聲明了一個名為 "AddTwoInts" 的新的服務(wù),其服務(wù)類型是"AddTwoInts"搔课。對于所有的請求都將通過 HandleAddTwoInts 函數(shù)進行處理胰柑。
    s = rospy.Service("AddTwoInts", AddTwoInts, HandleAddTwoInts)
    print "ready to add two ints."
    rospy.spin()

if __name__ == "__main__":
    AddTwoIntsServer()

二、寫一個 Client Node

#!/usr/bin/env python
#coding:utf-8

import sys
import rospy
from beginner_tutorials.srv import *

def AddTwoIntsClient(x, y):
    # 阻塞直到名為 “AddTwoInts” 的服務(wù)可用爬泥。
    rospy.wait_for_service("AddTwoInts")
    try:
        # 創(chuàng)建一個調(diào)用服務(wù)的句柄柬讨,之后的調(diào)用都可以直接使用resp1來。
        add_two_ints = rospy.ServiceProxy('AddTwoInts', AddTwoInts)
        resp1 = add_two_ints(x, y)
        return resp1.sum
    except rospy.ServiceException, e:
        print "Service call failed: %s" %e


def usage():
    return "%s [x y]" %sys.argv[0]

    
if __name__ == "__main__":
    if len(sys.argv) == 3:
        x = int(sys.argv[1])
        y = int(sys.argv[2])
    else:
        print usage()
        sys.exit(1)
    print "Requesting %s+%s" % (x, y)
    print "%s + %s = %s"%(x, y, AddTwoIntsClient(x,y))

三袍啡、編譯和運行

# 記得使用下如下命令把script都添加執(zhí)行權(quán)限:
$ chmod +x script/AddTwoIntsClient.py script/AddTwoIntsServer.py

# 在一個終端中運行
$ rosrun beginner_tutorials AddTwoIntsServer.py  

# 在另外一個終端中運行
$ rosrun beginner_tutorials AddTwoIntsClient.py 1 3

注意踩官,樓主在這里爬過的坑:

  1. AddTwoClient.py 的編寫過程中下面兩句曾犯過同名的錯誤:

    # 正確如下:
    add_two_ints = rospy.ServiceProxy('AddTwoInts', AddTwoInts)
            resp1 = add_two_ints(x, y)
    # 錯誤如下:
    AddTwoInts = rospy.ServiceProxy('AddTwoInts', AddTwoInts)
            resp1 = AddTwoInts(x, y)
    

    原因就是這里不能和括號里面的AddTwoInts重名。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末境输,一起剝皮案震驚了整個濱河市蔗牡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗅剖,老刑警劉巖辩越,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異信粮,居然都是意外死亡黔攒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門强缘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來督惰,“玉大人,你說我怎么就攤上這事欺旧」贸螅” “怎么了蛤签?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵辞友,是天一觀的道長。 經(jīng)常有香客問我震肮,道長称龙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任戳晌,我火速辦了婚禮鲫尊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘沦偎。我一直安慰自己疫向,他們只是感情好咳蔚,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著搔驼,像睡著了一般谈火。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舌涨,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天糯耍,我揣著相機與錄音,去河邊找鬼囊嘉。 笑死温技,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的扭粱。 我是一名探鬼主播舵鳞,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼琢蛤!你這毒婦竟也來了系任?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤虐块,失蹤者是張志新(化名)和其女友劉穎俩滥,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贺奠,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡霜旧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了儡率。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挂据。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖儿普,靈堂內(nèi)的尸體忽然破棺而出崎逃,到底是詐尸還是另有隱情,我是刑警寧澤眉孩,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布个绍,位于F島的核電站,受9級特大地震影響浪汪,放射性物質(zhì)發(fā)生泄漏巴柿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一死遭、第九天 我趴在偏房一處隱蔽的房頂上張望广恢。 院中可真熱鬧,春花似錦呀潭、人聲如沸钉迷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糠聪。三九已至睡蟋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枷颊,已是汗流浹背戳杀。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夭苗,地道東北人信卡。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像题造,于是被迫代替她去往敵國和親傍菇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容