Interfaz de computadora host ROS-componente de navegación nav2djs

El componente de navegación nav2djs es para controlar la máquina a través de la página web. Específicamente, ejecutamos el algoritmo de navegación en el lado del robot, y luego usamos el navegador para ver el mapa del robot en el otro lado del dispositivo debajo de la LAN, y lo configuramos haciendo clic en la página web. punto de destino dado para guiar al robot para que se mueva a una posición, si tiene dudas sobre la función de este componente puede ver el video de demostración oficial: [2] o un video oficial

1. Demo oficial del tutorial

El funcionario componente de navegación nav2djs también da un tutorial detallado (dirección [1]), pero si corremos el archivo html en el tutorial directamente, se producirá un error, el efecto de pantalla de vídeo del autor no será obtenida, y la imagen no se puede mostrar.
Inserte la descripción de la imagen aquí
Esta es Debido a nuestro entorno de red nacional, no podemos acceder a la dirección de cdn.robotwebtools.org, por lo que debemos cambiar el cdn a estático, y la dirección y el enlace de la dependencia a:

<script src="http://static.robotwebtools.org/EaselJS/current/easeljs.min.js"></script>
<script src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script src="http://static.robotwebtools.org/roslibjs/current/roslib.js"></script>
<script src="http://static.robotwebtools.org/ros2djs/current/ros2d.js"></script>

Y agregue el script js en la carpeta src.

<script src="../src/nav2d.js"></script>
<script src="../src/navigator/ImageMapClientNav.js"></script>
<script src="../src/navigator/Navigator.js"></script>
<script src="../src/navigator/OccupancyGridClientNav.js"></script>

Finalmente, modifique la dirección IP del host que ejecuta el servicio ROS. Si está ejecutando en esta máquina, mantenga la predeterminada. De lo contrario, cámbiela a la IP de la computadora que ejecuta ROS como yo. Después de modificar el
Inserte la descripción de la imagen aquí
archivo html, comenzamos a ejecutar el comando ros en el tutorial
Nota : En la versión cinética, el mapa debajo de la ruta /opt/ros/groovy/stacks/wg_common/willow_maps/willow-sans-whitelab-2010-02-18-0.025.pgm debe modificarse a: / opt / ros / kinetic /share/willow_maps/willow_maps/willow-sans-whitelab-2010-02-18-0.025.pgm, el resto permanece sin cambios

roslaunch pr2_gazebo pr2_empty_world.launch
rosrun map_server map_server /opt/ros/kinetic/share/willow_maps/willow_maps/willow-sans-whitelab-2010-02-18-0.025.pgm 0.025
export ROBOT=sim
roslaunch pr2_2dnav pr2_2dnav.launch
roslaunch pr2_tuckarm tuck_arms.launch
rosrun robot_pose_publisher robot_pose_publisher
roslaunch rosbridge_server rosbridge_websocket.launch

A continuación, ejecute el archivo occupancygrid.html para ver el efecto en el tutorial,
Inserte la descripción de la imagen aquí
haga clic dos veces y aparecerá el triángulo rojo en el tutorial. El
Inserte la descripción de la imagen aquí
triángulo amarillo representa la posición actual del robot en el mapa y el rojo representa el punto objetivo. coordenada de. En este momento, cuando verifiquemos el tema pr2_move_base / goal, aparecerá la posición de las coordenadas del punto de destino en el que se hizo clic.

2 experimento de simulación de turtlebot

Debido al robot Pr2 utilizado en el tutorial oficial, muchos nodos deben iniciarse para navegar por el robot, y algunos nodos funcionarán mal en la versión cinética, por lo que usamos turtlebot en su lugar. Ejecutamos la simulación de navegación 2D de turtlebot en la computadora Ubuntu, y luego ejecutamos el programa de control web en otra computadora, mostramos un punto en el mapa que se muestra en la página web, y establecemos el punto cambiado como el punto de destino y lo enviamos a move_base.

2.1 Entorno de instalación

En ros viene el paquete de simulación de TurtleBot en Gazebo. Se puede demostrar instalando el paquete de simulación de turtlebot

sudo apt-get install ros-kinetic-turtlebot-gazebo
sudo apt-get install ros-kinetic-turtlebot-simulator

Usar comandos

roslaunch turtlebot_stage turtlebot_in_stage.launch 

Inicie el paquete de simulación de coche de navegación por mapa para realizar la función de navegación por mapa.
Inserte la descripción de la imagen aquí
En primer lugar, probamos si el entorno de simulación de navegación de turtlebot está configurado correctamente. Hacemos clic en "Objetivo de navegación 2D" en la interfaz de RVIZ para darle a turtlebot una posición de destino para verificar si turtlebot puede navegar correctamente. A continuación se muestra un video de prueba ( enlace de video HD )
Inserte la descripción de la imagen aquí

2.2 control del componente de navegación nav2djs

Primero modifique el archivo occupancygrid.html en el directorio nav2djs-development \ examples para asegurarse de que las dependencias y direcciones de host estén configuradas correctamente. Al mismo tiempo, modifique el parámetro serverName en la línea 36 del archivo fuente a: '/ move_base', y el resto puede permanecer sin cambios. El siguiente es mi contenido revisado:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<script src="http://static.robotwebtools.org/EaselJS/current/easeljs.min.js"></script>
<script src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script src="http://static.robotwebtools.org/roslibjs/current/roslib.js"></script>
<script src="http://static.robotwebtools.org/ros2djs/current/ros2d.js"></script>
<script src="../src/nav2d.js"></script>
<script src="../src/navigator/ImageMapClientNav.js"></script>
<script src="../src/navigator/Navigator.js"></script>
<script src="../src/navigator/OccupancyGridClientNav.js"></script>
<script>
  /**
   * Setup all visualization elements when the page is loaded. 
   */
  function init() {
    // Connect to ROS.
    var ros = new ROSLIB.Ros({
      url : 'ws://10.5.3.11:9090'
    });

    // Create the main viewer.
    var viewer = new ROS2D.Viewer({
      divID : 'nav',
      width : 350,
      height : 400
    });

    // Setup the nav client.
    var nav = NAV2D.OccupancyGridClientNav({
      ros : ros,
      rootObject : viewer.scene,
      viewer : viewer,
      serverName : '/move_base'
    });
  }
</script>
</head>

<body onload="init()">
  <h1>Simple Map Example</h1>
  <p>Run the following commands in the terminal then refresh this page.</p>
  <ol>
    <li><tt>roslaunch pr2_gazebo pr2_empty_world.launch</tt>
    </li>
    <li>Place the Willow Garage model over the robot by selecting <tt>Willow Garage</tt> from
      the models list in the <tt>Insert</tt> tab.</li>
    <li><tt>rosrun map_server map_server
        /opt/ros/groovy/stacks/wg_common/willow_maps/willow-sans-whitelab-2010-02-18-0.025.pgm 0.025</tt>
    </li>
    <li><tt>export ROBOT=sim</tt></li>
    <li><tt>roslaunch pr2_2dnav pr2_2dnav.launch</tt></li>
    <li><tt>roslaunch pr2_tuckarm tuck_arms.launch</tt></li>
    <li><tt>rosrun robot_pose_publisher robot_pose_publisher</tt></li>
    <li><tt>roslaunch rosbridge_server rosbridge_websocket.launch</tt>
    </li>
  </ol>
  <div id="nav"></div>
</body>
</html>

Después de modificar el archivo html, iniciamos la emulación de navegación de turtlebot y rosbridge en la computadora Ubuntu ( nota: asegúrese de que las dos computadoras estén conectadas bajo el mismo WIFI ) se
ejecuta en la computadora Ubuntu:

export TURTLEBOT_STAGE_WORLD_FILE="/opt/ros/kinetic/share/turtlebot_stage/maps/stage/maze.world"
export TURTLEBOT_STAGE_MAP_FILE="/opt/ros/kinetic/share/turtlebot_stage/maps/maze.yaml"
roslaunch turtlebot_stage turtlebot_in_stage.launch

Abra una nueva terminal:

roslaunch rosbridge_server rosbridge_websocket.launch 

Finalmente, hacemos clic en un punto del mapa en la página web, y luego se mostrará una flecha roja en el mismo lugar en RVIZ en la computadora Ubuntu (esto se debe a que el tema enviado por la página web es move_base / goal), y luego el auto lo hará El movimiento de desarrollo ha alcanzado la posición de destino designada (enlace de video HD)
Inserte la descripción de la imagen aquí

参考 :
【1】 : https: //github.com/GT-RAIL/nav2djs
【2】 : https: //wiki.ros.org/nav2djs/Tutorials/CreatingABasicNav2DWidget

Supongo que te gusta

Origin blog.csdn.net/crp997576280/article/details/102781371
Recomendado
Clasificación