ROS2 시작 파일에서 서비스를 호출하는 방법

2276 단어 tutorialroboticsros2
이것은 꽤 직설적이지만 나 자신을 찾기 위해 적지 않은 양의 검색이 필요했습니다. ros2 실행 파일에서 ros2 서비스를 호출하려면 실행 파일에 다음을 추가합니다(실행 파일에 대한 자세한 내용은 the official docs 참조).

from launch.substitutions import FindExecutable
from launch.actions import ExecuteProcess

...

ld.add_action(
    ExecuteProcess(
        cmd=[[
            FindExecutable(name='ros2'),
            " service call ",
            "/namespace/service_to_call ",
            "example_msgs/srv/ExampleMsg ",
            '"{param_1: True, param_2: 0.0}"',
        ]],
        shell=True
    )
)


다음 사항에 유의하십시오.
  • ld 다음은 LaunchDescription의 인스턴스를 포함하는 변수입니다.
  • /namespace/service_to_call는 호출하려는 서비스로 대체되며(적절한 네임스페이스를 잊지 마세요) ros2 service list에서 찾을 수 있습니다.
  • example_msgs/srv/ExampleMsg는 해당 서비스에서 사용하는 메시지 유형으로 ros2 service info /namespace/service_to_call로 가져올 수 있습니다.
  • "{param_1: True, param_2: 0.0}"는 메시지 데이터를 정의하는 사전입니다. 설정해야 하는 매개변수를 찾으려면 .srv 파일 또는 설명서를 참조해야 할 수 있습니다.
  • shell=True 인수를 포함하는 것을 잊지 마십시오. 이 인수가 없으면 혼란스러운 "파일을 찾을 수 없음"오류와 함께 명령이 실패합니다.

    좋은 웹페이지 즐겨찾기