다음은 ROS 파이썬 패키지 템플릿을 소개합니다.

보통 http://wiki.ros.org/ROS/Tutorials/CreatingPackage 튜토리얼 페이지에서 catkin_create_pkg 명령으로 패키지를 만들어서 코드를 작성하는 방법을 제시하고 있지만 너무 basic 한 부분부터 시작하고 바로 쓸 수 있는 코드를 만들어주지 않기 때문에 이 방법을 소개합니다.

git repository

아래의 튜토리얼 패키지를 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 패키지 구조

CMakeLists.txt 파일

################################################################################
# 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}
)

pakcage.xml

패키지에 대한 정보