ROSナビゲーションモジュールmove_baseによる/ cmd_velトピック出力は、ロボットに計画された線形速度と角速度を指定しますが、この出力値は、ロボットをスムーズに移動させるのに十分フレンドリーではないため、この出力速度値のスムーズなプロセスが必要です。ROS にyocs_smoother_velocityは非常に良好な高速パケット補間である、加速度限度を高速化することができ、ロボットの速度を防止するため、速度が実行されて、高速または遅すぎる変化は滑らかである。以下の特定の説明があること。
1 TOPIC入力
〜raw_cmd_vel (geometry_msgs / Twist)
- 入力速度コマンド。入力速度値は、通常move_base / cmd_velの出力トピックです
〜オドメトリ (nav_msgs /オドメトリ)
- 出力速度コマンドを「実際の」速度と比較して、速度プロファイルに非常に大きなジャンプを作成しないようにします。
走行距離計データ。これは直接走行距離計、または姿勢推定によって調整された走行距離計です。
〜robot_cmd_vel (geometry_msgs / Twist)
- あるいは、出力速度コマンドを終了ロボット速度コマンドと比較して、速度プロファイルに非常に大きなジャンプを作成しないようにすることもできます。詳しくは、下記のrobot_feedbackパラメータの説明をご覧ください。
このデータは通常、base_controllerが実際にロボットモーターに送信する速度値です。この値を公開します。Yocs_smoother_velocity は、この値を参照して、大きなデータの変動を回避できます。
2 TOPIC出力
〜smooth_cmd_vel (geometry_msgs / Twist)
- 速度と加速度の制限を考慮した滑らかな出力速度コマンド。
出力cmd_vel。Bas_コントローラの入力トピック。使用しないでくださいyocs_smoother_velocityの言葉を、ベースは、コントローラの入力があるmove_base 出力、/ cmd_vel 今使って/ smooth_cmd_vel
3構成パラメーター
〜accel_lim_v (double )
- 線形加速制限。必須。線形加速の最大値
〜accel_lim_w (double )
- 角加速度制限。必須。角加速度の最大値
〜speed_lim_v (double )
- 線形速度制限。必須。線形速度の最大値
〜speed_lim_w (double )
- 角速度制限、必須、最大角速度
〜decel_factor (double 、デフォルト:1.0)
- 減速/加速比。減速をより積極的にするのに役立ちます。たとえば、慣性の高いロボットを安全にブレーキングするのに役立ちます。
減速度または加速係数は、緊急時の減速が必要な場合に役立ちます。たとえば、慣性ブレーキの高いロボットが突然ブレーキをかけた場合、係数が大きいほど効果的です。
〜frequency (double 、デフォルト:20.0)
- 出力メッセージ率。速度平滑化は、着信メッセージレートに関係なくそれを維持し、必要に応じて補間します。
出力データの周波数 は、入力データの周波数に関係なく、速度平滑化はこの周波数を維持してデータを公開します
〜robot_feedback (int 、デフォルト:0)
- ロボット速度フィードバックとして使用するトピックを指定します(0-なし、1-オドメトリー、2-ロボットコマンドの終了)。詳細については、以下のヒントを参照してください。
公開されたデータに関するロボットのフィードバック。詳細については、公式ドキュメントを参照してください。
4 yocs_velocity_smootherのインストールと構成
インストールは非常にシンプルで、Ubuntu18.04は例としてメロディックです。
运行sudo apt-get install ros-melodic-yocs_velocity_smoother
Launchファイルの構成例は次のとおりです。
<include file = "$(find yocs_velocity_smoother)/launch/velocity_smoother.launch">
<arg name = "node_name" value = "$(arg node_name)" />
<arg name = "nodelet_manager_name" value = "$(arg nodelet_manager_name)" />
< arg name = "config_file" value = "$(arg config_file)" /> //設定パラメーター用のyamlファイル
<arg name = "raw_cmd_vel_topic" value = "$(arg raw_cmd_vel_topic)" />
<arg name = "smooth_cmd_vel_topic" value = "$(arg smooth_cmd_vel_topic)" />
<arg name = "robot_cmd_vel_topic" value = "$(arg robot_cmd_vel_topic)" />
<arg name = "odom_topic" value = "$(arg odom_topic)" />
</ include>
構成パラメーターはyamlファイル形式で、例は次のとおりです。
# Example configuration:
# - velocity limits are around a 10% above the physical limits
# - acceleration limits are just low enough to avoid jerking
# Mandatory parameters
speed_lim_v: 0.6
speed_lim_w: 0.5
accel_lim_v: 0.1
accel_lim_w: 0.25
# Optional parameters
frequency: 20.0
decel_factor: 20.0
# Robot velocity feedback type:
# 0 - none
# 1 - odometry
# 2 - end robot commands
robot_feedback: 0