다음은 ROS 파이썬 패키지 템플릿을 소개합니다.
보통 http://wiki.ros.org/ROS/Tutorials/CreatingPackage 튜토리얼 페이지에서 catkin_create_pkg 명령으로 패키지를 만들어서 코드를 작성하는 방법을 제시하고 있지만 너무 basic 한 부분부터 시작하고 바로 쓸 수 있는 코드를 만들어주지 않기 때문에 이 방법을 소개합니다.
아래의 튜토리얼 패키지를 catkin_ws/src 디렉토리에 git clone 하여 사용하면 됩니다.
https://github.com/kyuhyong/ros_tutorial
이 패키지는 기본적으로 ros_tutorial 이라는 패키지 안에 다음 노드들을 포함하고 있습니다.
각각은 std_msgs.msg 에 정의된 String 메세지를 msg_tx 라는 토픽으로 Publish하고 Subsribe하는 노드를 의미합니다.
ROS 위키 페이지 http://wiki.ros.org/ROS/Tutorials/WritingPublisherSubscriber(python) 에도 동일한 과정을 소개하고 있으나 대부분의 파이썬 노드가 사용하는 방식과 달리 매우 기초적인 것만 포함되어있으므로 참고만 하는 것이 좋습니다.
rospy 패키지 구조
################################################################################
# Set minimum required version of cmake, project name and compile options
################################################################################
cmake_minimum_required(VERSION 3.0.2)
project(ros_tutorials)
################################################################################
# Find catkin packages and libraries for catkin and system dependencies
################################################################################
find_package(catkin REQUIRED COMPONENTS
rospy
std_msgs
move_base_msgs
geometry_msgs
)
################################################################################
# Setup for python modules and scripts
################################################################################
catkin_python_setup()
################################################
## Declare ROS messages, services and actions ##
################################################
## Generate messages in the 'msg' folder
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )
## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )
## Generate actions in the 'action' folder
# add_action_files(
# FILES
# Action1.action
# Action2.action
# )
## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# std_msgs # Or other packages containing msgs
# )
################################################
## Declare ROS dynamic reconfigure parameters ##
################################################
## Generate dynamic reconfigure parameters in the 'cfg' folder
# generate_dynamic_reconfigure_options(
# cfg/DynReconf1.cfg
# cfg/DynReconf2.cfg
# )
catkin_package(
CATKIN_DEPENDS rospy std_msgs
)
catkin_install_python(PROGRAMS
nodes/message_publisher.py
nodes/message_subscriber.py
nodes/move_action_client.py
nodes/nav_commander.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
install(DIRECTORY launch
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)
패키지에 대한 정보