ROS: 매개변수 서버의 동적 디버깅(dynamic_reconfigure)

5527 단어 ROS
파라미터 서버가 실현하는 기능: 파라미터를 수정한 후 다시 컴파일할 필요가 없고 노드가 시작될 때 효력이 발생합니다.
동적 디버깅 실현 기능: 매개 변수를 수정한 후 다시 컴파일할 필요가 없고 노드를 다시 시작할 필요가 없습니다.
이 일원 창고는dynamic_를 포함한다reconfigure 패키지는 노드를 다시 시작하지 않고 언제든지 노드 파라미터를 변경할 수 있는 방법을 제공합니다.
현재,dynamic_reconfigure의 중점은 노드 파라미터의 서브집합을 외부에 공개하고 다시 설정하는 표준 방법을 제공하는 것이다.GUI와 같은 클라이언트 프로그램은 노드의 이름, 유형, 범위를 포함하여 재구성 가능한 매개 변수 집합을 조회하고 사용자에게 맞춤형 인터페이스를 제공할 수 있다.이것은 하드웨어 드라이버에 특히 유용하지만 더욱 광범위한 적용성을 가지고 있다.
 
소스 코드:githttps://github.com/ros/dynamic_reconfigure.git (branch: master)
 
제1부분: 동적 디버깅의 응용
1.dynparam 명령행 도구
dynparam 도구는 노드의 명령줄을 다시 설정하고 그 설정을 파일에 불러오고 저장합니다.dynparam을 실행하려면 다음을 입력합니다.
$ rosrun dynamic_reconfigure dynparam COMMAND

현재 지원되는 명령은 다음과 같습니다.
  • dynparam list : list configurable nodes
  • dynparam get : get node configuration
  • dynparam set : configure node
  • dynparam set_from_parameters : copy configuration from parameter server
  • dynparam dump : dump configuration to file
  • dynparam load : load configuration from file

  • 구체적인 지령은 다음과 같다.
    1. 동적으로 조정할 수 있는 모든 노드를 나열한다
    $ rosrun dynamic_reconfigure dynparam list

    예:
    ​firefly@firefly:~$ rosrun dynamic_reconfigure dynparam list
    /amcl
    /move_base
    /move_base/TrajectoryPlannerROS
    /move_base/global_costmap
    /move_base/global_costmap/inflation_layer
    /move_base/global_costmap/obstacle_layer
    /move_base/local_costmap
    /move_base/local_costmap/inflation_layer
    /move_base/local_costmap/obstacle_layer
    /velocity_smoother
    

    2. 동적 디버깅이 가능한 노드의 동적 매개 변수 설정 가져오기
    $ rosrun dynamic_reconfigure dynparam get /node

    예:
    firefly@firefly:~$ rosrun dynamic_reconfigure dynparam get /move_base/local_costmap/inflation_layer
    {'inflate_unknown': False, 'cost_scaling_factor': 20.0, 'inflation_radius': 0.28, 'enabled': True, 'groups': {'cost_scaling_factor': 20.0, 'parent': 0, 'inflation_radius': 0.28, 'groups': {}, 'id': 0, 'name': 'Default', 'parameters': {}, 'enabled': True, 'state': True, 'inflate_unknown': False, 'type': ''}}
    firefly@firefly:~$ rosrun dynamic_reconfigure dynparam get /move_base/TrajectoryPlannerROS
    {'max_vel_theta': 1.0, 'vtheta_samples': 20, 'min_vel_x': 0.0, 'heading_lookahead': 0.325, 'restore_defaults': False, 'heading_scoring': False, 'min_vel_theta': -1.0, 'angular_sim_granularity': 0.025, 'holonomic_robot': False, 'acc_lim_x': 0.2, 'acc_lim_y': 0.0, 'heading_scoring_timestep': 0.8, 'dwa': True, 'oscillation_reset_dist': 0.1, 'escape_vel': -0.1, 'sim_time': 2.5, 'y_vels': '-0.3,-0.1,0.1,-0.3', 'simple_attractor': False, 'acc_lim_theta': 1.8, 'min_in_place_vel_theta': 0.05, 'gdist_scale': 0.3, 'groups': {'max_vel_theta': 1.0, 'simple_attractor': False, 'y_vels': '-0.3,-0.1,0.1,-0.3', 'parent': 0, 'acc_lim_theta': 1.8, 'min_in_place_vel_theta': 0.05, 'dwa': True, 'vtheta_samples': 20, 'min_vel_theta': -1.0, 'heading_lookahead': 0.325, 'gdist_scale': 0.3, 'groups': {}, 'heading_scoring': False, 'min_vel_x': 0.0, 'id': 0, 'angular_sim_granularity': 0.025, 'holonomic_robot': False, 'name': 'Default', 'parameters': {}, 'acc_lim_x': 0.2, 'acc_lim_y': 0.0, 'escape_reset_theta': 1.57079632679, 'restore_defaults': False, 'occdist_scale': 0.8, 'vx_samples': 8, 'heading_scoring_timestep': 0.8, 'state': True, 'sim_time': 2.5, 'pdist_scale': 0.8, 'max_vel_x': 0.2, 'sim_granularity': 0.025, 'type': '', 'escape_reset_dist': 0.1, 'oscillation_reset_dist': 0.1, 'escape_vel': -0.1}, 'escape_reset_theta': 1.57079632679, 'occdist_scale': 0.8, 'vx_samples': 8, 'pdist_scale': 0.8, 'max_vel_x': 0.2, 'sim_granularity': 0.025, 'escape_reset_dist': 0.1}

    3. 한 노드의 동적 매개 변수에 값value 부여
     
    단일 매개변수
    $ rosrun dynamic_reconfigure dynparam set /node parameter_name value

    or 여러 매개변수(set node_name yaml_dictionary)
    $ rosrun dynamic_reconfigure dynparam set wge100_camera "{'camera_url':'foo', 'brightness':58}" 

    예:
    rosrun dynamic_reconfigure dynparam set /move_base/local_costmap/inflation_layer  inflation_radius 0.01

    4. 매개변수 서버에서 데이터 로드
    rosrun dynamic_reconfigure dynparam set_from_parameters /node

    5. yaml 프로필에 동적 매개 변수 설정 저장
    rosrun dynamic_reconfigure dynparam set_from_parameters /node

    6. yaml 프로필에서 동적 매개 변수 설정 로드
    $ rosrun dynamic_reconfigure dynparam load /node dump.yaml

     
    두 번째 부분: 동적 매개 변수 서비스의 구축
    2. C++ 프로그램에서 dynamic_ 적용reconfigure
  • 설치 dynamic_재구성 패키지
  • sudo apt-get install -y ros-kinetic-dynamic-reconfigure
  • 파라미터 서버에 파라미터를 추가합니다

  •  
  • dynamic_ 사용하기reconfigure 동적 조절 노드 매개 변수

  • 좋은 웹페이지 즐겨찾기