iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 16
0
自我挑戰組

ROS自學筆記系列 第 16

Day 16 - 使用Python撰寫Server Node

  • 分享至 

  • xImage
  •  

今天好晚才回到家,差點來不及寫鐵人賽 QQQQQQQQ
好吧今天就是進行server node in python的部分,首先就是不免俗的建立python檔啦!

$ roscd beginner_tutorials/src
$ vim add_two_ints_server.py
$ chmod +x add_two_ints_server.py

然後程式碼如下:

   1 #!/usr/bin/env python
   2 
   3 from rospy_tutorials.srv import *
   4 import rospy
   5 
   6 def handle_add_two_ints(req):
   7     print "Returning [%s + %s = %s]"%(req.a, req.b, (req.a + req.b))
   8     return AddTwoIntsResponse(req.a + req.b)
   9 
  10 def add_two_ints_server():
  11     rospy.init_node('add_two_ints_server')
  12     s = rospy.Service('add_two_ints', AddTwoInts, handle_add_two_ints)
  13     print "Ready to add two ints."
  14     rospy.spin()
  15 
  16 if __name__ == "__main__":
  17     add_two_ints_server()

裡面比較需要注意的部分就是第12行啦,Service的函式定義如下:

rospy.Service(name, service_class, handler, buff_size=65536)

第一個參數就是service的名稱囉,接著是service的格式,這邊我們先用官方幫我們定義好的service格式,也就是AddTwoInts。第三個參數是呼叫這個service的時候的callback function,那第四個buff_size就是用來放接收到的request。

寫完以後要執行catkin_make進行建置,這是為了確定service已經被建立起來了。
server執行畫面
建完之後就可以執行這個node啦,然後就可以用service call 這個指令去打API囉!

參考資料

ROS tutorials - writing service in python
ROS wiki - rospy Services


上一篇
Day 15 - ROS Services
下一篇
Day 17 - 使用Python撰寫Client Node
系列文
ROS自學筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言