728x90
Pakcage create 를 생성하면 package 폴더가 생성되고 같은 이름의 하위 폴더가 하나 더 생성된다.
Node에 대한 코드는 그 하위 폴더에 작성하면 된다.
1. Python Node 코드 작성
작성되는 파일의 이름은 Node와는 전혀 상관없고 그냥 파일의 이름일 뿐이다.
실제로 Node의 이름과 Node 실행 파일의 이름은 다른 곳에서 정의가 된다.
#my_py_node.py
#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
def main(args=None):
rclpy.init(args=args)
node = Node("py_test") # Node Name
node.get_logger().info("Hello ROS2")
rclpy.shutdown()
if __name__ == '__main__':
main()
2. package.xml 파일 설정
여기에서 수정해야 할 것은 python 코드의 dependencies 를 추가하는 것이다.
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>my_package</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="richard.bang83@gmail.com">richard</maintainer>
<license>TODO: License declaration</license>
<!-- 의존성 package 추가 -->
<depend>rclpy</depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<!-- Build type 확인 -->
<export>
<build_type>ament_python</build_type>
</export>
</package>
3. setup.py 파일 설정
Package 에 대한 meta 정보를 입력할 수 있다. 하지만 가장 중요한 것은 install 을 할 Node의 정보를 기입한다. 여기에서 입력되는 정보가 ROS2에서 검색이 되는 Node의 이름이 된다.
그리고 설치할 Node의 진입 entry point 정보를 명시해 준다.
entry_points={
'console_scripts': [
# Node이름=패키지이름.Node파일이름:main
'py_node = my_package.rosPyFirst:main'
],
},
728x90
728x90