ROS verwendet yocs_smoother_velocity zur Geschwindigkeitsglättung

Das vom ROS-Navigationsmodul move_base ausgegebene Thema / cmd_vel gibt die für den Roboter geplante Lineargeschwindigkeit und Winkelgeschwindigkeit an. Dieser Ausgabewert ist jedoch immer noch nicht freundlich genug, um eine reibungslose Bewegung des Roboters zu bewirken, was einen reibungslosen Ablauf für diesen Ausgabegeschwindigkeitswert erfordert. Die yocs_smoother_velocity in ROS ist ein sehr gutes Geschwindigkeitsinterpolationspaket , das die Geschwindigkeit und Beschleunigung begrenzen kann, um zu verhindern, dass sich die Geschwindigkeit und Geschwindigkeit des Roboters zu schnell oder zu langsam ändert. Es ist ein reibungsloser und reibungsloser Vorgang.

 

1 THEMEN-Eingang

~ raw_cmd_vel  ( Geometrie_msgs / Twist )

  • Eingabegeschwindigkeitsbefehle: Der Eingabegeschwindigkeitswert ist im Allgemeinen das Ausgabethema von move_base / cmd_vel

~ Kilometerzähler  ( nav_msgs / Kilometerzähler )

  • Wir vergleichen die Ausgangsgeschwindigkeitsbefehle mit der "realen" Geschwindigkeit, um sicherzustellen, dass wir keine sehr großen Sprünge im Geschwindigkeitsprofil erzeugen.

Kilometerzählerdaten, dies kann ein direkter Kilometerzähler oder ein Kilometerzähler sein, der durch Haltungsschätzung angepasst wird

~ robot_cmd_vel  ( Geometrie_msgs / Twist )

  • Alternativ können wir auch die Ausgabegeschwindigkeitsbefehle mit den Endrobotergeschwindigkeitsbefehlen vergleichen, um sicherzustellen, dass keine sehr großen Sprünge im Geschwindigkeitsprofil erzeugt werden. Weitere Informationen finden Sie in der Beschreibung der Parameter robot_feedback unten.

Diese Daten sind im Allgemeinen der Geschwindigkeitswert, den der base_controller tatsächlich an den Robotermotor sendet. Veröffentlichen Sie diesen Wert. Yocs_smoother_velocity kann auf diesen Wert verweisen, um große Datenschwankungen zu vermeiden.

2 THEMENausgang

~ glatt_cmd_vel  ( Geometrie_msgs / Twist )

  • Befehle für geglättete Ausgangsgeschwindigkeit unter Berücksichtigung der Geschwindigkeits- und Beschleunigungsgrenzen.

Ausgabe cmd_vel. Bas_ Controller Eingang Thema . Verwenden Sie keine yocs_smoother_velocity Worten Basis der Controller - Eingang ist move_base Ausgang / cmd_vel, jetzt mit / smooth_cmd_vel die

3 Konfigurationsparameter

~ accel_lim_v  ( double )

  • Lineare Beschleunigungsgrenze. Obligatorisch. Der Maximalwert der linearen Beschleunigung

~ accel_lim_w  ( double )

  • Winkelbeschleunigungsgrenze. Obligatorisch. Maximaler Wert der Winkelbeschleunigung

~ speed_lim_v  ( doppelt )

  • Lineargeschwindigkeitsgrenze. Obligatorisch. Der Maximalwert der Lineargeschwindigkeit

~ speed_lim_w  ( doppelt )

  • Winkelgeschwindigkeitsgrenze. Obligatorisch. Maximale Winkelgeschwindigkeit

~ decel_factor  ( double , default: 1.0)

  • Verzögerungs- / Beschleunigungsverhältnis. Nützlich, um die Verzögerung aggressiver zu gestalten, z. B. um Roboter mit hoher Trägheit sicher zu bremsen.

Der Reduktions- oder Beschleunigungskoeffizient ist nützlich, wenn eine Notverzögerung erforderlich ist. Wenn beispielsweise ein Roboter mit hoher Trägheit plötzlich bremst, ist er umso effektiver, je größer der Koeffizient ist

~ Frequenz  ( doppelt , Standard: 20.0)

  • Ausgabemeldungsrate. Der Geschwindigkeitsglätter hält ihn unabhängig von der Rate eingehender Nachrichten und interpoliert bei Bedarf.

Die Frequenz der Ausgabedaten, unabhängig von der Frequenz der Eingabedaten, behält der Geschwindigkeitsglätter diese Frequenz bei, um die Daten zu veröffentlichen

~ robot_feedback  ( int , Standard: 0)

  • Gibt an, welches Thema als Robotergeschwindigkeitsrückmeldung verwendet werden soll (0 - keine, 1 - Kilometerzähler, 2 - Endroboterbefehle). Weitere Informationen finden Sie in den Hinweisen unten.

Roboter-Feedback zu den veröffentlichten Daten. Ausführliche Erläuterungen finden Sie in der offiziellen Dokumentation.

4 Installation und Konfiguration von yocs_velocity_smoother

Die Installation ist sehr einfach, Ubuntu18.04 melodisch als Beispiel,

运行 sudo apt-get installiere ros-melodic-yocs_velocity_smoother

 

Das Konfigurationsbeispiel für die Startdatei lautet wie folgt:

  <include file = "$ (find yocs_velocity_smoother ) /launch/velocity_smoother.launch">

    <arg name = "knotenname" value = "$ (arg knotenname)" />

    <arg name = "nodelet_manager_name" value = "$ (arg nodelet_manager_name)" />

    < arg name = "config_file" value = "$ (arg config_file)" /> // yaml-Datei für Konfigurationsparameter

    <arg name = "raw_cmd_vel_topic" value = "$ (arg raw_cmd_vel_topic)" />

    <arg name = "glatt_cmd_vel_topic" value = "$ (arg glatt_cmd_vel_topic)" />

    <arg name = "robot_cmd_vel_topic" value = "$ (arg robot_cmd_vel_topic)" />

<arg name = "odom_topic" value = "$ (arg odom_topic)" />

</ include>

Die Konfigurationsparameter liegen im yaml-Dateiformat vor. Ein Beispiel lautet wie folgt:

# 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

Referenz:

http://wiki.ros.org/yocs_velocity_smoother

Veröffentlicht 31 Originalartikel · Gefällt mir 3 · Besuche 2028

Ich denke du magst

Origin blog.csdn.net/lclfans1983/article/details/105444059
Empfohlen
Rangfolge