해결됨: setup.py ROS2에 서비스 파일 추가

최근 몇 년 동안 로봇공학 분야에서는 기술의 발전과 채택이 급증했습니다. 그 중 하나는 로봇 애플리케이션을 개발, 테스트 및 유지 관리하기 위한 도구, 라이브러리 및 규칙을 제공하는 오픈 소스 미들웨어 프레임워크인 ROS2(Robot Operating System 2)입니다. 이 기사에서는 이 플랫폼을 사용하는 개발자에게 필수적인 기술인 setup.py를 사용하여 ROS2 패키지에 서비스 파일을 추가하는 방법을 살펴봅니다. 간단한 소개부터 시작하여 문제에 대한 해결책을 제시하고 단계별 가이드를 안내하며 더 깊은 이해를 위해 관련 주제에 대해 논의합니다.

ROS2 패키지에서 서비스 파일을 설정하려면 서비스 메시지 정의 파일(.srv)을 생성하고 package.xml 및 setup.py 파일에 필요한 구성을 추가하는 두 가지 주요 단계가 필요합니다. 이 자습서에서는 입력 문자열을 가져와 제공된 입력 길이를 반환하는 간단한 서비스를 만듭니다.

먼저 작업 공간을 준비합시다. 다음 명령을 사용하여 "string_length_service"라는 ROS2 패키지를 생성합니다:

"
ros2 pkg create –build-type ament_python string_length_service
"

이제 "string_length_service" 패키지 내에 "srv"라는 디렉터리를 생성하여 서비스 메시지 정의 파일을 저장합니다.

"
mkdir srv
"

"srv" 디렉터리 내에 다음 내용이 포함된 "StringLength.srv"라는 파일을 만듭니다.

"
문자열 입력_문자열
-
int64 길이
"

package.xml 파일에서 필요한 종속성을 추가했는지 확인하세요.

“`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
매트플롯립
"

이제 이 기사의 핵심 부분인 setup.py에 서비스 파일을 추가해 보겠습니다. "setup.py" 파일을 열고 다음 코드를 포함합니다.

"`파이썬
setuptools 가져 오기 설정에서
glob import glob에서

package_name = 'string_length_service'

설정(
이름=패키지_이름,
버전='0.0.0′,
패키지=[패키지_이름],
데이터_파일=[
('공유/ament_index/resource_index/패키지',
['리소스/' + 패키지_이름]),
('share/' + 패키지_이름, ['package.xml']),
('공유/' + 패키지_이름, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=사실,
유지관리자='developer_name_here',
maintainer_email='developer_email_here',
Description='문자열 길이 계산 서비스',
라이센스='MIT',
테스트_require=['pytest'],
진입점={
'콘솔_스크립트': [
'string_length_server = ' + 패키지_이름 + '.string_length_server:main',
'string_length_client = ' + 패키지_이름 + '.string_length_client:main',
],
},
)
"

이제 이 코드가 수행하는 작업에 대해 논의해 보겠습니다. setup.py 파일은 setuptools를 사용하여 패키지를 배포하고 관리합니다. package_name 변수는 패키지 이름을 보유합니다. data_files 목록은 패키지와 함께 배포될 필수 ​​리소스, package.xml 및 서비스 파일을 지정합니다. install_requires는 필수 패키지를 나열하고, Entry_points는 서비스 실행 파일을 정의합니다. 'developer_name_here' 및 'developer_email_here'를 적절한 값으로 바꾸십시오.

rclpy 및 std_srvs 사용

setup.py에서 서비스 파일을 설정한 후에는 표준 서비스 유형에 대해 ROS2 Python 클라이언트 라이브러리, rclpy 및 std_srvs를 사용하여 서버 및 클라이언트 코드를 구현해야 합니다.

패키지 디렉터리 내에 "string_length_server.py" 및 "string_length_client.py" 파일을 만들고 서버 및 클라이언트 코드를 구현합니다. ROS2 문서에서 서버 및 클라이언트 코드를 작성하는 방법에 대한 자세한 내용을 확인할 수 있습니다.

서비스 구축 및 테스트

마지막으로 다음 명령을 사용하여 패키지를 빌드하고 테스트합니다.

"
소스 /opt/ros/foxy/setup.bash
colcon 빌드 -패키지-string_length_service 선택
소스 설치/setup.bash
"

빌드가 성공적으로 완료되면 두 개의 별도 터미널을 사용하여 서버와 클라이언트를 실행합니다.

"
ros2는 string_length_service string_length_server를 실행합니다.
"

"
ros2는 string_length_service string_length_client를 실행합니다.
"

이 가이드에서는 rclpy 및 std_srvs와 같은 관련 주제를 다루면서 ROS2 패키지용 setup.py에 서비스 파일을 추가하는 방법에 대한 심층적인 설명을 제시했습니다. 이러한 단계를 따르면 효율적이고 체계적인 방식으로 ROS2 서비스를 생성 및 배포하여 로봇 애플리케이션 내에서 상호 작용을 촉진할 수 있습니다. 행운을 빌며 행복한 코딩을 하세요!

관련 게시물:

코멘트 남김