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
현재 지원되는 명령은 다음과 같습니다.
구체적인 지령은 다음과 같다.
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
sudo apt-get install -y ros-kinetic-dynamic-reconfigure
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Gazebo 시뮬레이터로 AR drone 2.0을 웹에서 조작농업이나 경비라든지 화상 인식할 수 있는 정보 수집 드론에 개인의 지속은 외로운 것입니다. 다음에 시뮬레이터 내의 드론을 웹과 GUI의 인터페이스에서 조작할 수 있도록 했습니다. 참고로 한 것은 이쪽 ※ROS의 ca...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.