ROS usa yocs_smoother_velocity para suavizar la velocidad

La salida del tema / cmd_vel del módulo de navegación ROS move_base especifica la velocidad lineal y la velocidad angular planificadas para el robot, pero este valor de salida todavía no es lo suficientemente amigable como para hacer que el robot se mueva suavemente, lo que requiere un proceso suave para este valor de velocidad de salida. ROS en yocs_smoother_velocity es una muy buena interpolación de paquetes de velocidad , puede acelerar, límite de aceleración, para la prevención de la velocidad del robot, la velocidad cambia rápido o demasiado lento, lo que se está ejecutando es suave. La siguiente descripción específica que sea.

 

1 entrada de tema

~ raw_cmd_vel  ( geometry_msgs / Twist )

  • Comandos de velocidad de entrada. El valor de velocidad de entrada es generalmente el tema de salida de move_base / cmd_vel

~ odometría  ( nav_msgs / Odometry )

  • Comparamos los comandos de velocidad de salida con la velocidad "real" para garantizar que no creemos saltos muy grandes en el perfil de velocidad.

Datos del cuentakilómetros, puede ser un cuentakilómetros directo o un cuentakilómetros ajustado por estimación de postura

~ robot_cmd_vel  ( geometry_msgs / Twist )

  • Alternativamente, también podemos comparar los comandos de velocidad de salida para finalizar los comandos de velocidad del robot para garantizar que no creemos saltos muy grandes en el perfil de velocidad. Consulte la descripción del parámetro robot_feedback a continuación para obtener más detalles.

Estos datos son generalmente el valor de velocidad que el controlador base_ realmente envía al motor del robot. Publique este valor. Yocs_smoother_velocity puede referirse a este valor para evitar grandes fluctuaciones de datos.

2 salidas de tema

~ smooth_cmd_vel  ( geometry_msgs / Twist )

  • Comandos de velocidad de salida suavizados respetando los límites de velocidad y aceleración.

Salida cmd_vel. Controlador Bas_ entrada Tema . No utilice yocs_smoother_velocity palabras, la base del controlador de entrada es move_base de salida / cmd_vel, usando ahora / smooth_cmd_vel la

3 parámetros de configuración

~ accel_lim_v  ( doble )

  • Límite de aceleración lineal. Obligatorio. El valor máximo de la aceleración lineal.

~ accel_lim_w  ( doble )

  • Límite de aceleración angular. Obligatorio. Valor máximo de la aceleración angular.

~ speed_lim_v  ( doble )

  • Límite de velocidad lineal. Obligatorio. El valor máximo de la velocidad lineal.

~ speed_lim_w  ( doble )

  • Límite de velocidad angular. Obligatorio. Velocidad angular máxima

~ decel_factor  ( doble , predeterminado: 1.0)

  • Desaceleración / aceleración. Útil para hacer que la desaceleración sea más agresiva, por ejemplo, para frenar con seguridad en robots con alta inercia.

El coeficiente de reducción o aceleración es útil cuando se requiere una desaceleración de emergencia, por ejemplo, cuando un robot con alta inercia frena repentinamente, cuanto mayor es el coeficiente, más efectivo es

~ frecuencia  ( doble , por defecto: 20.0)

  • Tasa de mensajes de salida. La velocidad más suave la mantiene independientemente de la velocidad de los mensajes entrantes, interpolando cuando sea necesario.

La frecuencia de los datos de salida, independientemente de la frecuencia de los datos de entrada, la velocidad más suave mantendrá esta frecuencia para publicar datos

~ robot_feedback  ( int , predeterminado: 0)

  • Especifica qué tema utilizar como retroalimentación de velocidad del robot (0 - ninguno, 1 - odometría, comandos de robot de 2 extremos). Vea las sugerencias a continuación para más detalles.

Comentarios del robot sobre los datos publicados. Para una explicación detallada, consulte la documentación oficial.

4 Instalación y configuración de yocs_velocity_smoother

La instalación es muy simple, Ubuntu18.04 melódico como ejemplo,

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

 

El ejemplo de configuración del archivo de inicio es el siguiente:

  <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)" /> // archivo yaml para parámetros de configuración

    <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>

Los parámetros de configuración están en el formato de archivo yaml. Un ejemplo es el siguiente:

# 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

Referencia:

http://wiki.ros.org/yocs_velocity_smoother

31 artículos originales publicados · Me gusta 3 · Visitas 2028

Supongo que te gusta

Origin blog.csdn.net/lclfans1983/article/details/105444059
Recomendado
Clasificación