Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

README.md

Write a Node Using Python

ROS2 memungkinkan kita membuat node menggunakan bahasa Python. Di bawah ini adalah panduan lengkapnya.

📁 Struktur Folder

Arahkan terminal ke folder berikut:

cd ~/ros2_ws/src/my_py_pkg/my_py_pkg

Buat file node:

touch my_first_node.py

Minimal Python Node

Buka file my_first_node.py dan masukkan kode berikut:

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node

def main(args=None):
    rclpy.init(args=args)
    node = Node("py_test_node")
    rclpy.spin(node)
    node.get_logger().info("Hello ROS2")
    rclpy.shutdown()

if __name__ == "__main__":
    main()

Buat File Menjadi Executable

chmod +x my_first_node.py

Menjalankannya langsung (tidak disarankan untuk produksi):

./my_first_node.py

Namun, cara terbaik adalah melalui instalasi package.

Instalasi via setup.py

Buka file setup.py, dan cari bagian entry_points lalu ubah seperti ini:

entry_points={
    'console_scripts': [
        'py_node = my_py_pkg.my_first_node:main'
    ],
},

Build Package

Kembali ke folder workspace:

cd ~/ros2_ws
colcon build --packages-select my_py_pkg

Jika berhasil, file Python Anda akan tersedia di:

install/my_py_pkg/lib/my_py_pkg/py_node

Menjalankan Node

source install/setup.bash
ros2 run my_py_pkg py_node

Write Node with OOP (Class)

Contoh Node Python menggunakan class (lebih fleksibel):

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node

class MyNode(Node):
    def __init__(self):
        super().__init__("py_test")
        self.counter_ = 0
        self.get_logger().info("Hello ROS2!!")
        self.create_timer(0.5, self.timer_callback)

    def timer_callback(self):
        self.counter_ += 1
        self.get_logger().info(f"Hello {self.counter_}")

def main(args=None):
    rclpy.init(args=args)
    node = MyNode()
    rclpy.spin(node)
    rclpy.shutdown()

if __name__ == "__main__":
    main()
◀️ Prev: 04 ROS2 Node 🏠 Menu Utama ▶️ Next: 06 CPP Node