ROS 用Python寫乙個簡單服務

2021-09-24 04:28:56 字數 2088 閱讀 7512

一.編寫服務資料:

在功能包的頂級目錄中,建立srv資料夾,並在裡面建立.srv檔案(先成為a.srv)

在srv檔案中,填入服務資料,如:

int64 a

int64 b

---int64 sum

其中,---上方是請求資料,下方是答應資料

二.修改cmakelist和package.xml:

cmakelist:

catkin_package(

...catkin_depends message_runtime ...

...)

add_service_files(

files

a.srv

)

generate_messages(

dependencies

std_msgs

)

package.xml:

message_generation

message_runtime

三.返回工作空間頂級目錄,catkin_make編譯(記得要source,ide的路徑要設定好,我的是

/home/ch/fortest/devel/lib/python2.7/dist-packages)

四.編寫服務py檔案:

from beginner_tutorials(功能包名).srv import *

import rospy

def handle_add_two_ints(req): # 請求處理函式,req是請求資料報

print "returning [%s + %s = %s]"%(req.a, req.b, (req.a + req.b))

return addtwointsresponse(req.a + req.b) #返回應答資料報(這裡傳進去的引數按.srv檔案的順序填寫)

def add_two_ints_server():

rospy.init_node('add_two_ints_server(服務節點名)')

s = rospy.service('add_two_ints(服務名)', addtwoints(srv檔名), handle_add_two_ints)

print "ready to add two ints."

rospy.spin()

if __name__ == "__main__":

add_two_ints_server()

五.編寫請求py檔案:

#!/usr/bin/env python

import sys

import rospy

from beginner_tutorials.srv import *

def add_two_ints_client(x, y):

rospy.wait_for_service('add_two_ints')

try:

add_two_ints = rospy.serviceproxy('add_two_ints', addtwoints) #獲得乙個請求處理函式的控制代碼,在下面會用到

resp1 = add_two_ints(x, y) # 直接將引數按.srv檔案中的順序填好,傳入控制代碼,即可得到結果

return resp1.sum

except rospy.serviceexception, e:

print "service call failed: %s"%e

def usage():

return "%s [x y]"%sys.ar**[0]

if __name__ == "__main__":

if len(sys.ar**) == 3:

x = int(sys.ar**[1])

y = int(sys.ar**[2])

else:

print usage()

sys.exit(1)

print "requesting %s+%s"%(x, y)

print "%s + %s = %s"%(x, y, add_two_ints_client(x, y))

用python寫乙個簡單的視窗

import sys if name main 建立乙個視窗 w qwidget 設定視窗的尺寸 w.resize 400,200 移動視窗 w.move 300,300 設定視窗的標題 w.setwindowtitle 第乙個基於pyqt5的桌面應用 顯示視窗 w.show 進入程式的主迴圈 並通...

用python寫乙個簡單的彈球遊戲

用python寫乙個簡單的彈球遊戲,可以使用球拍接住球讓球在邊框內不停的彈動,如果球拍沒有接住則遊戲結束 我們需要匯入tkinter模組來建立畫布 匯入時間模組來控制球的速度,就是控制球移動的間隔時間 匯入隨機模組使球彈的方向是隨機的。fromtkinterimport importtime imp...

用python寫乙個簡單的推薦系統

在上篇文章豆瓣電影,電視劇集dm實戰中提及到,我和室友們產生了劇荒,萌生出要做乙個個人用的推薦系統,解決劇荒的問題的想法,經過一輪的死纏爛打,這個個人推薦系統終於成型了。今天來分享一下心得,對此感興趣的朋友可以自己對著寫乙個。首先介紹一下傳統的推薦系統方法,之所以叫它傳統,是因為大部分學習資料上都是...