_rclpy ( rclpy의 내부 C 확장 모듈)

About_work·2023년 11월 16일
0

ros2

목록 보기
11/41

_rclpy.rclpy_wait_set_init

  • 이 함수는 WaitSet 객체를 초기화하는 데 사용
    • from rclpy.executors import _WaitSet : https://velog.io/@jk01019/rclpy
    • WaitSet은 ROS 2의 다양한 엔티티(구독, 타이머, 서비스, 클라이언트 등)의 이벤트를 대기하고 관리하는 데 사용됩니다.

예시

            with _WaitSet() as wait_set, ExitStack() as context_stack:
                """
                context_capsule
                - ROS 2 애플리케이션의 초기화 및 종료 과정에서 리소스 누수를 방지하고, 
                예외 발생 시 안전한 정리를 보장
                """
                context_capsule = context_stack.enter_context(
                    self._context.handle)
                _rclpy.rclpy_wait_set_init(
                    wait_set,
                    # 대기할 구독의 최대 수입니다. 
                    # 이 값은 WaitSet이 추적할 수 있는 구독 엔티티의 최대 개수를 결정합니다.
                    number_of_subscriptions=0, 
                    # 대기할 가드 조건의 최대 수입니다. 
                    # 가드 조건은 특정 조건이 충족될 때 실행되는 콜백을 나타냅니다.
                    number_of_guard_conditions= 0, 
                     # 대기할 타이머의 최대 수입니다. 
                     # 이 값은 WaitSet이 추적할 수 있는 타이머 엔티티의 최대 개수를 결정합니다.
                    number_of_timers= 0,
                    #  대기할 클라이언트의 최대 수입니다. 
                    # 클라이언트는 서비스 요청을 보내는 엔티티입니다.
                    number_of_clients= len(clients), 
                    #  대기할 서비스의 최대 수입니다. 
                    # 서비스는 클라이언트의 요청에 응답하는 엔티티입니다.
                    number_of_services=len(services),
                    # 대기할 이벤트의 최대 수입니다. 
                    # 이벤트는 다양한 ROS 2 엔티티의 상태 변화를 나타냅니다.
                    number_of_events=0, 
                    # # ROS 2 실행 컨텍스트입니다. 
                    # 이 컨텍스트는 WaitSet이 해당 컨텍스트 내에서 작동하도록 합니다.
                    context=context_capsule, 
                )
profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글