Sekarang kita akan membuat node service server pertama Anda menggunakan Python di ROS2. Node ini akan menerima dua angka dari klien, lalu mengembalikan hasil penjumlahannya menggunakan ROS2 Services.
Arahkan ke folder:
ros2_ws/src/my_py_pkg/my_py_pkg/Kemudian buat file Python baru, misalnya:
touch add_two_ints_server.py
chmod +x add_two_ints_server.py#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from example_interfaces.srv import AddTwoInts
class AddTwoIntsServerNode(Node):
def __init__(self):
super().__init__("add_two_ints_server")
self.server = self.create_service(
AddTwoInts, # Menentukan tipe service (AddTwoInts)
"add_two_ints", # Nama service (harus cocok dengan client)
self.callback_add_two_ints # Fungsi callback yang akan dijalankan saat ada request
)
self.get_logger().info("Service 'add_two_ints' is ready to be called")
def callback_add_two_ints(self, request: AddTwoInts.Request, response: AddTwoInts.Response):
response.sum = request.a + request.b
self.get_logger().info(f"{request.a} + {request.b} = {response.sum}")
return response # Kembalikan response ke client
def main(args=None):
rclpy.init(args=args)
node = AddTwoIntsServerNode() # Buat objek dari node
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
main()Penjelasan Code
- Node dibuat dengan nama
"add_two_ints_server". - Service didefinisikan menggunakan
example_interfaces/srv/AddTwoInts. - Nama service yang digunakan adalah
"add_two_ints". - Fungsi
callback_add_two_ints()akan dijalankan setiap kali ada request service masuk. - Node akan menjumlahkan dua bilangan
adanbdari request, lalu mengembalikan hasilnya (sum) melalui response.
Tambahkan ke bagian entry_points:
'console_scripts': [
"add_two_ints_server = my_py_pkg.add_two_ints_server:main"
]Tambahkan dependensi berikut jika belum:
<depend>example_interfaces</depend>Arahkan ke folder utama workspace:
cd ~/ros2_ws
colcon build --packages-select my_py_pkgKemudian jalankan node:
ros2 run my_py_pkg add_two_ints_serverKita bisa memanggil service secara manual dengan perintah berikut:
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 4, b: 7}"Jika berhasil, Anda akan melihat pesan seperti ini di terminal:

| 🏠 Menu Utama |
|---|