Загружаем каталог…
Загружаем каталог…
이번 실습에서는 ROS 2의 실행 인자 프로그래밍(Python)을 진행했다. argparse 를 이용해 실행 인자를 설정하고, checker 노드 실행 시 목표 합계값을 직접 전달하는 과정을 실습했다. 1. 실행 인자란? 실행 인자는 프로그램을 실행할 때 명령어와 함께 전달하는 값이다. 이전에 checker 노드를 실행하면서 다음과 같은 명령어를 사용했었다. ros2 run topic_service_action_rclpy_example checker -g 100 여기서 -g 100 이 실행 인자다. ros2 run ↓ checker 실행 ↓ -g 100 ↓ goal_total_sum = 100 PPT에서는 Parameter는 매개 변수, Argument는 실행 인자로 구분해서 설명하고 있다. 2. Python에서 실행 인자 처리 Python에서는 argparse 모듈을 이용해 실행 인자를 처리한다. 실행 인자를 처리하는 과정은 다음과 같다. 1. parser 만들기 ↓ 2. 인자 추가하기 ↓ 3. 인자 파싱하기 ↓ 4. args.xxx로 사용하기 checker/main.py 에서는 sys.argv[1:] 를 이용해 실행 인자를 전달받도록 작성되어 있다. def main(argv=sys.argv[1:]): 그리고 ArgumentParser 를 생성한다. parser = argparse.ArgumentParser( formatter_class=argparse.ArgumentDefaultsHelpFormatter) 3. 실행 인자 추가하기 -g 와 --goal_total_sum 을 실행 인자로 등록했다. parser.add_argument( '-g', '--goal_total_sum', type=int, default=50, help='Target goal value of total sum') 여기서 -g : 짧은 형태 --goal_total_sum : 긴 형태 type=int : 정수형으로 처리 default=50 : 기본값 50 help : 도움말에 표시할 설명 으로 설정되어 있다. 4. 실행 인자 파싱 등록한 실행 인자는 parse_args() 를 통해 분석한다. args = parser.parse_args() 그다음 args.goal_total_sum 을 이용해 실제 값을 사용할 수 있다. checker.send_goal_total_sum(args.goal_total_sum) 즉 실행 인자로 입력한 값이 Checker 의 Goal 값으로 전달된다. 전체적인 흐름은 다음과 같다. 실행 인자 입력 ↓ argparse ↓ parse_args() ↓ args.goal_total_sum ↓ send_goal_total_sum() 5. 기본값으로 실행 먼저 실행 인자를 입력하지 않고 checker 를 실행했다. ros2 run topic_service_action_rclpy_example checker 이 경우 별도의 -g 값을 입력하지 않았기 때문에 goal_total_sum 의 기본값인 50 이 사용된다. 6. -g 를 이용해 실행 이번에는 목표값을 100 으로 지정해서 실행했다. ros2 run topic_service_action_rclpy_example checker -g 100 -g 100 이 실행 인자로 전달되는 것을 확인했다. 즉, -g 100 ↓ args.goal_total_sum = 100 의 형태로 값이 전달된다. 7. -h 로 도움말 확인 실행 인자의 사용 방법을 확인하기 위해 -h 옵션도 사용했다. ros2 run topic_service_action_rclpy_example checker -h 실행 결과: usage: checker [-h] [-g GOAL_TOTAL_SUM] ... positional arguments: argv Pass arbitrary arguments to the executable options: -h, --help show this help message and exit -g GOAL_TOTAL_SUM, --goal_total_sum GOAL_TOTAL_SUM Target goal value of total sum (default: 50) -g 와 --goal_total_sum 을 사용할 수 있고, 기본값이 50 이라는 것을 확인할 수 있었다. 8. 긴 형태의 실행 인자 사용 짧은 형태인 -g 뿐만 아니라 긴 형태인 --goal_total_sum 도 사용할 수 있는지 확인했다. ros2 run topic_service_action_rclpy_example checker --goal_total_sum 100 실행 결과에서 Arithmetic action server is not available. 경고가 출력됐지만, 이는 실행 인자 오류가 아니라 당시 calculator 의 Action Server가 실행되고 있지 않았기 때문에 발생한 메시지였다. 실행 인자 자체는 정상적으로 인식되는 것을 확인했다. 9. 실행 인자가 실제로 사용되는 부분 확인 마지막으로 args.goal_total_sum 이 실제 코드에서 어디에 사용되는지 확인했다. checker.send_goal_total_sum(args.goal_total_sum) 즉 argparse 로 분석한 실행 인자를 send_goal_total_sum() 에 전달하고, 해당 값이 Action의 Goal 값으로 사용되는 구조다. 마무리 이번 실습을 통해 ROS 2 Python에서 실행 인자를 처리하는 방법을 확인했다. sys.argv[1:] 로 실행 인자 전달 argparse.ArgumentParser() 로 parser 생성 add_argument() 로 실행 인자 등록 parse_args() 로 실행 인자 분석 args.goal_total_sum 으로 값 사용 -g 100 으로 실행 인자 전달 --goal_total_sum 100 으로 긴 형태의 실행 인자 전달 -h 를 이용한 실행 인자 도움말 확인
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
Ubuntu ROS 실습(36). 이번 실습에서는 ROS 2의 실행 인자 프로그래밍(Python)을 진행했다. argparse 를 이용해 실행 인자를 설정하고, checker 노드 실행 시 목표 합계값을 직접 전달하는 과정을 실습했다. 1. 실행 인자란? 실행 인자는 프로그램을 실행할 때 명령어와 함께 전달하는 값이다. 이전에 checker 노드를 실행하면서 다음과 같은 명령어를 사용했었다. ros2 run topic_service_action_rclpy_example checker -g 100 여기서 -g 100 이 실행 인자다. ros2 run ↓ checker 실행 ↓ -g 100 ↓ goal_total_sum = 100 PPT에서는 Parameter는 매개 변수, Argument는 실행 인자로…
Открыть источник