Skip to content

bender_nav

Matías Pavez edited this page May 8, 2017 · 1 revision

#bender_nav

Package Summary

[TOC]

0.- Usage:

1. Nodes

1.1 goal_server

Obs: Tanto servicios como tópicos usan el prefijo /bender/nav/goal_server/

Sirve como gestor de goals para el sitema de navegación.

En general, se debe especificar el campo 'header/frame_id' del goal a perseguir, transformado automáticamente al frame '/map' (por default), de ser necesario. Se recomienda enviar goals ya transformados al frame '/map', si es que fueron almacenados hace mucho tiempo, pues el sistema tiene un buffer de tiempo limitado (~15[s]) y no podrá procesar goals de los que no tenga información de las transformadas pasadas.

1.1.1 Published Topics

1.1.2 Subscribed Topics

  • goal_server/goal (geometry_msgs/PoseStamped)

    • A goal for move_base to pursue in the world.
    • It replaces the current goal.
  • /bender/nav/move_base/global_costmap/inflated_obstacles (nav_msgs::GridCells)

    • Utilizado para chequear si el espacio para goal_server/approach está ocupado.

1.1.3 Services

  • ~go (bender_srvs/NavGoal)

    • A goal for goal_server to pursue in the world. It replaces the current goal.
    • Sólo toma en cuenta el campo NavGoal/goal.
    • Servicio retorna false ante algún error en el procedimiento.
  • ~look (bender_srvs/NavGoal)

    • Setea un goal para girar hacia la pose requerida. Reemplaza el goal actual.
    • Sólo toma en cuenta el campo NavGoal/goal (La orientación de la pose es irrelevante)
    • Servicio retorna false ante algún error en el procedimiento.
  • ~approach (bender_srvs/NavGoal)

    • Setea un goal, en el que supuestamente hay un obstáculo, al que el robot intentará acercarse.
    • El procedimiento usado es:
      • a) generar poses alrededor de la pose central, candidatos a goal. (Todos mirando hacia el centro)
      • b) elige la siguiente pose más cercana al robot
      • c) si hay obstáculos cerca de la pose: pasar a b)
      • d) si la pose está sobre espacio desconocido: pasar a b)
      • e) enviar el primer goal que cumpla con ambos requisitos.
    • Reemplaza el goal actual.
    • Sólo toma en cuenta el campo NavGoal/goal (La orientación de la pose es irrelevante)
    • Servicio retorna false ante algún error en el procedimiento.
    • Todos los parámetros de goal_server que inicial con goal_server/approach_ sirven para modificar el comportamiento del servicio.
  • ~rotate (bender_srvs/NavGoal)

    • Setea un goal para girar en el ángulo requerido. Reemplaza el goal actual.
    • Sólo toma en cuenta el campo NavGoal/rotation, que está en grados sexagesimales.
    • Si ángulo > 0, la rotación es en sentido antihorario (del eje_x a eje_y)
    • Servicio retorna false ante algún error en el procedimiento.
  • ~cancel (std_srvs/Empty)

    • Cancela el goal actual, deteniendo el robot.
  • ~has_arrived (bender_srvs/NavGoal)

    • retorna el estado del goal actual, en el campo NavGoal/state
    • Para mayor info acerca del significado del número retornado, ver bender_srvs/NavGoal

1.1.4 Service Clients

  • /static_map (nav_msgs/GetMap)
    • Utilizado para hacer el chequeo de puntos desconocidos, para goal_server/approach.

1.1.5 Parameters

  • ~goal_almost_reach_radius (double, default:0.3)
  • ~map_frame (string, default:"/map")
  • ~goal_reach_degree_th (double, default:20.0)
  • ~goal_almost_reach_radius (double, default:0.3)
  • ~goal_topic (string, default:"goal")
  • ~pose_topic (string, default:"/amcl_pose")
  • ~initial_pose_topic (string, default:"/initialpose")
  • ~base_frame (string, default:"/base_link")
  • ~tf_buffer_size (double, default:3.0)
  • ~obstacles_topic (string, default:"/move_base/global_costmap/inflated_obstacles")
  • ~map_service (string, default:"/static_map")
  • ~approach_delta_degree (double, default:50.0)
  • ~approach_delta_radius (double, default:0.3)
  • ~approach_max_radius (double, default:1.0)
  • ~approach_person_radius (double, default:0.6)
  • ~approach_obstacle_th (double, default:0.1)
  • ~approach_window_w (double, default:0.8)
  • ~approach_window_h (double, default:0.8)
  • ~approach_unknown_th (int, default:10)

1.2 semantic_map_server

Diccionario de poses, útiles como mapa semántico.

Los cambios con objetos agregados/modificados sólo son hechos con los datos de la memoria, para almacenar los cambios en un archivo es necesario utilizar el servicio /bender/nav/semantic_map_server/save

Obs: Los servicios tienen el prefijo /bender/nav/semantic_map_server/

TODO: Se espera que el servidor evolucione a algo más que un simple diccionario, pudiendo trabajar con informaciónes topológicas como lo son: 'door','room','object','table','etc', almacenando además un grafo del mapa topológico y operaciones útiles.

1.2.1 Map Format

TODO

Sujeto a cambios

1.2.2 Services

  • which (bender_srvs/String)

    • Returns the last loaded map's name
  • set (bender_srvs/SemMap)

    • Inserts a SemanticObject in memory.
    • If the object already exists, then it is replaced.
    • It does not modifies the map file
  • get (bender_srvs/SemMap)

    • Gets a SemanticObject with the specified 'id' from memory.
    • It does not uses the map file
  • get_all (bender_srvs/SemMap)

    • Gets all the SemanticObject(s) from memory.
    • It does not uses the map file
  • delete (bender_srvs/String)

    • Deletes a SemanticObject with the specified 'id' from memory.
    • It does not modifies the map file
  • print (std_srvs/Empty)

    • Prints current map contents on screen
  • save (bender_srvs/String)

    • Saves the current map contents on the specified file
  • load (bender_srvs/String)

    • Loads the current map contents from the specified file

1.2.3 Parameters

No usa

1.3 semantic_input_bridge

Utilidad para simplificar la creación de mapas semánticos por medio de rviz.

1.4 goal_polar_directions

utilidad para enviar goals al estilo rotar + avanzar