문제 식별에 ros2doctor 사용하기
저작권: 쿼드(QUAD) 드론연구소 https://www.youtube.com/@quad-robotics
개요
ROS2 설정이 예상대로 실행되지 않는 경우 ros2doctor
도구를 사용하여 해당 설정을 확인할 수 있습니다.
ros2doctor는
플랫폼, 버전, 네트워크, 환경, 실행 중인 시스템 등 ROS2의 모든 측면을 확인하고 가능한 오류와 문제의 원인에 대해 경고합니다.
실습
먼저 새 터미널에서 ROS 2를 소싱한 다음 다음 명령을 입력합니다.
ros2 doctor
이렇게 하면 모든 설정 모듈을 검사하고 경고 및 오류를 반환합니다.
ROS2 설정이 완벽한 상태이면 다음과 유사한 메시지가 표시됩니다.
All <n> checks passed
그러나 몇 가지 경고가 반환되는 것은 드문 일이 아닙니다. 설정을 사용할 수 없다는 의미가 아닙니다. 이상적이지 않은 방식으로 구성되었다는 표시일 가능성이 더 큽니다.
경고를 받으면 다음과 같이 표시됩니다.
<path>: <line>: UserWarning: <message>
예를 들어 불안정한 ROS2 배포를 사용하는 경우 다음 경고가 표시됩니다.
UserWarning: Distribution <distro> is not fully supported or tested. To get more consistent features, download a stable version at https://index.ros.org/doc/ros2/Installation/
ros2doctor
시스템에서 경고만 발견된 경우에도 All <n> checks passed
메시지는 계속 수신됩니다.
대부분의 검사는 오류가 아닌 경고로 분류됩니다. 피드백 반환의 중요성을 결정하는 것은 대부분 ros2doctor
사용자에게 달려 있습니다. 설정에서 드문 오류(UserWarning: ERROR:
로 표시됨)가 발견되면 확인이 실패한 것으로 간주됩니다.
다음 문제 피드백 목록과 유사한 메시지가 표시됩니다.
1/3 checks failed
Failed modules: network
오류는 시스템에 ROS2에 중요한 중요한 설정이나 기능이 없음을 나타냅니다. 시스템이 제대로 작동하려면 오류를 해결해야 합니다.
2. 시스템 확인
실행 중인 ROS 2 시스템을 검사하여 문제의 가능한 원인을 식별할 수도 있습니다. 실행 중인 시스템에서 작동하는 것을 보려면 서로 활발하게 통신하는 노드가 있는 turtlesim을 실행해 봅시다.
새 터미널을 열고 ROS 2를 소싱하고 다음 명령을 입력하여 시스템을 시작합니다.
ros2 run turtlesim turtlesim_node
다른 터미널과 소스 ROS 2를 열어 텔레옵 컨트롤을 실행합니다.
ros2 run turtlesim turtle_teleop_key
이제 ros2doctor를
자체 터미널에서 다시 실행하십시오. 설정에서 마지막으로 실행했을 때 발생한 경고 및 오류가 있는 경우 해당 경고 및 오류가 표시됩니다 . 다음은 시스템 자체와 관련된 몇 가지 새로운 경고입니다.
UserWarning: Publisher without subscriber detected on /turtle1/color_sensor.
UserWarning: Publisher without subscriber detected on /turtle1/pose.
/turtlesim
노드가 구독하지 않는 두 주제에 데이터를 게시하는 것으로 보이며 ros2doctor는
이로 인해 문제가 발생할 수 있다고 생각합니다.
/color_sensor
및 /pose 토픽을
에코하는 명령을 실행하면 게시자에 구독자가 있으므로 해당 경고가 사라집니다.
Turtlesim이 실행되는 동안 두 개의 새 터미널을 열고 각각에서 ROS2를 소싱하고 자체 터미널에서 다음 각 명령을 실행하여 이를 시도할 수 있습니다.
ros2 topic echo /turtle1/color_sensor
ros2 topic echo /turtle1/pose
그런 다음 터미널에서 ros2doctor를
다시 실행하십시오. publisher without subscriber
경고 가 사라집니다. ( echo를
실행한 터미널에 반드시 입력하세요Ctrl+C
).
이제 Turtlesim 창을 종료하거나 Teleop을 종료하고 ros2doctor를
다시 실행해 보십시오. 이제 시스템의 한 노드를 사용할 수 없음을 나타내는 또는 다른 주제에 대한 더 많은 경고(publisher without subscriber, subscriber without publisher)
가 표시됩니다.
노드가 많은 복잡한 시스템에서 ros2doctor는
통신 문제의 가능한 원인을 식별하는 데 매우 중요합니다.
3. 전체 보고서 받기
ros2doctor는
네트워크, 시스템 등에 대한 경고를 알려주지만 --report
인수 와 함께 실행하면 문제를 분석하는 데 도움이 되는 훨씬 더 자세한 정보를 얻을 수 있습니다.
네트워크 설정에 대한 경고가 표시되고 구성의 어떤 부분이 경고를 일으키는지 정확히 알고 싶을 때 사용할 수 있습니다 .
또한 ROS2에 대한 도움을 받기 위해 지원 티켓을 열어야 할 때 매우 유용합니다. 보고서의 관련 부분을 티켓에 복사하여 붙여넣어 사람들이 환경을 더 잘 이해하고 더 나은 지원을 제공할 수 있도록 할 수 있습니다.
전체 보고서를 얻으려면 터미널에 다음 명령을 입력하십시오.
ros2 doctor --report
5개 그룹으로 분류된 정보 목록이 반환됩니다.
NETWORK CONFIGURATION
...
PLATFORM INFORMATION
...
RMW MIDDLEWARE
...
ROS 2 INFORMATION
...
TOPIC LIST
...
를 실행할 때 표시되는 경고와 비교하여 여기에서 정보를 교차 확인할 수 있습니다 . 예를 들어 배포판이 "완전히 지원되거나 테스트되지 않았다"는 경고가 반환된 경우 보고서 섹션을 살펴볼 수 있습니다.
distribution name : <distro>
distribution type : ros2
distribution status : prerelease
release platforms : {'<platform>': ['<version>']}
여기에서 완전히 지원되지 않는 이유를 설명하는 distribution status: prerelease
를 볼 수 있습니다.
이상으로 ROS2 기본 교육을 마칩니다. 수고 하셨습니다~~~
Last updated
Was this helpful?