반응형
ROS2 FOXY Fitzroy
ROS2에서 패키지를 만들기 위한 방법
1) 패키지 생성
cd ~/robot_ws/src
ros2 pkg create [패키지명] --build-type ament_python
- 이전에 만들어 놓은 ROS2 워크스페이스 src에 [패키지명]으로 패키지를 생성
- '--build-type ament_python'
- 파이썬으로 패키지를 생성할것이기에 ament_python으로 빌드하도록 설정
- src 폴더내에 [패키지명]으로 된 폴더가 생성됨
- ros2 pkg create [패키지명] --build-type ament_python --dependencies rclpy std_msgs
- 패키지 생성시 의존성을 한번에 설정하는 방법
- 현재 rclpy와 std_msgs가 추가됨
- 아래 package.xml에서 설명
- 패키지 생성시 의존성을 한번에 설정하는 방법
2) package.xml 설정
# 기본 생성 파일
<?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>test1234</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="lee@todo.todo">lee</maintainer>
<license>TODO: License declaration</license>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<export>
<build_type>ament_python</build_type>
</export>
</package>
- 의존 패키지
- 의존 패키지 내용을 적는 부분
- 실행시킬 패키지가 사용하는 라이브러리라 생각하면 됨
- 위의 패키지 생성에서 뒤에 '--dependencies rclpy std_msgs'를 붙인 경우 이미 의존 패키지 설정이 되어 있음
- 빌드 타입
- 우린 파이썬으로 만들것이기에 빌드 타입이 'ament_python'으로 설정되어 있음
- 위에서 '--build-type ament_python'으로 설정되었기에 건드릴것 없음
- 우린 파이썬으로 만들것이기에 빌드 타입이 'ament_python'으로 설정되어 있음
- 포인트
- 의존 패키지 내용 잘 확인 할것
- 위에 패키지 생성시 안적었으면 여기다 적으면 됨
- 빌드 타입 확인 할 것
- 파이썬인지 cpp(ament_cmake)인지 확인 할 것
- 의존 패키지 내용 잘 확인 할것
3) setup.py
# 기본 내용
from setuptools import setup
package_name = 'test1234'
setup(
name=package_name,
version='0.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='lee',
maintainer_email='lee@todo.todo',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
],
},
)
- entry_points
- 여기에 패키지 노드 이름 작성
- 나중에 실행시 ros2 run test1234 hello_pub 또는 ros2 run test1234 hello_sub 로 실행
- 노드 이름과 파이썬 파일을 연결
- 여기에 패키지 노드 이름 작성
4) 결론
- 패키지 생성
- 어려울것 없음
- 실수로 옵션 빼먹어도 package.xml에서 수정 가능
- 단 '--build-type ament_python'빼먹으면 패키지 폴더내에 생성되는 파일이 다름
- 잘 확인해서 생성할것
- package.xml
- 의존 패키지 확인이 매우 중요
- 나머지 내용은 저작자, 라이센스 등 부수적 내용
- 추후에 찾아서 배포판을 만들시 자세히 작성
- setup.py
- 'entry_points'에 사용할 노드명, 경로 잘 입력할 것
아래 출처의 내용을 수정 변경하였습니다.
개인적 공부를 위해 올린 글로 공부하실분은 아래 링크의 글을 참고하시기 바랍니다.
출처 : 오로카 카페 (cafe.naver.com/openrt/24450)
반응형
'ROS2' 카테고리의 다른 글
ROS2 <토픽> 2개의 정수를 퍼블리시하기 (int multiarray) (0) | 2021.05.22 |
---|---|
ROS2 패키지 만들기 - 4 (확인 및 실행) (0) | 2021.04.21 |
ROS2 패키지 만들기 - 3 (노드 생성 - subscribe) (0) | 2021.04.21 |
ROS2 패키지 만들기 - 2 (노드 생성 - publisher) (0) | 2021.04.21 |