본문 바로가기
ROS2

6.doosan-robot2 controller_manager분석 - 1

by justhash 2025. 3. 17.

hardware_interface가 어디서 어떻게 실행되는가?

 

정리필요

- dsr_bringup2_rviz.launch.py 실행 순서

  1. controller_manager pkg의 spawner실행
    • dsr_controller
    • joint_state_broadcaster
    • 그러나 controller_manager pkg의 ros2_control_node가 실행되지 않아 wait중
  2. controller_manager pkg의 ros2_control_node 실행
    • 실제 실행은 set_config_node가 제대로 실행 되어야 실행됨(emulator와 연결)
    • 실행시 2개의 파라미터 받음
      • dsr_controller.yaml : controller_manager에서 사용할 controller들 미리 정의
      • robot description(urdf/xacro) : dsr_description2에 있는 robot_model.urdf.xacro확인
        • 'm1013.urdf.xacro' 안에 'm1013.ros2_control.xacro'파일 include
          • 'm1013.ros2_contro.xacro'파일 내부에서 'dsr_hardware2/DRHWInterface' plugin 
          • 이 plugin은 doosan-robot2 build과정에서 dsr_hardware2/src/dsr_hw_interface2.cpp에 작성된 내용에 따라 정의되고 plugin 수행됨
            dsr_hardware2/src/dsr_hw_interface2.cpp 마지막 plugin수행 코드
          • 이 내용은 해당 소스코드 뿐만 아니라 'CMakeLists.txt'와 그 안에 존재하는 'dsr_hardware2.xml'을 plugin참조한다는 내용으로 ros ws의 install/dsr_hardware2/lib/libdsr_hardware2.so 파일이 작성되는 것.
          • 즉 실제 실행시 ros2_control_node가 xacro를 찾아 plugin하는 과정에서 DRHWInterface를 plugin하고 해당 내용은 dsr_hw_interface2.cpp 내부에 작성된 DRHWInterface class가 plugin되는 것.
  3. ros2_control_node가 여러 controller들 + hardware_interface를 실행하게 되는 것이다.