Mudanças entre as edições de "Running Carmen"

De LCAD
Ir para: navegação, pesquisa
(New page: This document is an aid to begin using the CARMEN robot sensing and navigation software, including (but not limited to) the following programs: * logger This program stores sens...)
 
(Carmen use Scenaria)
 
(63 revisões intermediárias por 4 usuários não estão sendo mostradas)
Linha 1: Linha 1:
 +
[[category:Carmen]]
 +
==Introduction==
 
This document is an aid to begin using the CARMEN robot sensing and navigation software, including (but not limited to) the following programs:
 
This document is an aid to begin using the CARMEN robot sensing and navigation software, including (but not limited to) the following programs:
  
    * logger
+
* [[logger]]
      This program stores sensor and odometry data with time stamps into a log file.
+
This program stores sensor and odometry data with time stamps into a log file.
    * playback
+
* playback
      This program plays back a log file and send the stored messages to the other modules.
+
This program plays back a log file and send the stored messages to the other modules.
    * map_editor
+
* [[map_editor]]
      This program allows for creating or editting maps for use by Carmen.
+
This program allows for creating or editting maps for use by Carmen.
    * navigatorgui
+
* [[navigatorgui]]
      This program provides a graphic interface which shows the robot's position and destiation on the pre-built map and allows setting of the current position and orientation, and selection of destinations.
+
This program provides a graphic interface which shows the robot's position and destiation on the pre-built map and allows setting of the current position and orientation, and selection of destinations.
    * param_edit
+
* param_edit
      This program enables the user to change parameters as the robot is running. It also makes it easy to save the changes to a ".ini" file.
+
This program enables the user to change parameters as the robot is running. It also makes it easy to save the changes to a ".ini" file.
    * param_deamon
+
* param_deamon
      This program provides other programs with information about the robot being used and the area around it. This can include a pre-built map, sensors on the robot, and typical sensor error.
+
This program provides other programs with information about the robot being used and the area around it. This can include a pre-built map, sensors on the robot, and typical sensor error.
    * robotgui
+
* robotgui
      This program provides a simple graphic interface for the robot, allowing direct motion control and a display of current sensor information.
+
This program provides a simple graphic interface for the robot, allowing direct motion control and a display of current sensor information.
    * processcontrol
+
* processcontrol
      This program controls the different processes, restarts them in case of a crash, etc.
+
This program controls the different processes, restarts them in case of a crash, etc.
    * simulator
+
* simulator
      This program provides simulated data generation from a virtual robot. It requires a previously generated map.
+
This program provides simulated data generation from a virtual robot. It requires a previously generated map.
    * base_services
+
* base_services
      This program controls the movement of the robot and accepts inputs from the sensors. This program MUST run on the computer attatched to the robot hardware.
+
This program controls the movement of the robot and accepts inputs from the sensors. This program MUST run on the computer attatched to the robot hardware.
    * localize
+
* localize
      This program uses the sensor information from the baseServer to find the robot position in a map provided by param_deamon.
+
This program uses the sensor information from the baseServer to find the robot position in a map provided by param_deamon.
    * navigator
+
* navigator
      This program enables autonomous navigation.
+
This program enables autonomous navigation.
    * vasco
+
* vasco
      This program creates a map from sensor and odometry data stored in a log file.
+
This program creates a map from sensor and odometry data stored in a log file.
    * vasco-tiny
+
* vasco-tiny
      A command line scan-matcher based on vasco. It reads log files and outputs a (locally) corrected log file.  
+
A command line scan-matcher based on vasco. It reads log files and outputs a (locally) corrected log file.  
  
 
The links above will go to other pages with more complete descriptions and instructions for using these programs.
 
The links above will go to other pages with more complete descriptions and instructions for using these programs.
  
The "central" program, IPC, enables communication between these other programs. Information on using and coding with IPC can be found at http://www-2.cs.cmu.edu/afs/cs/project/TCA/www/ipc/ipc.html. A simplistic explanation of IPC: various programs "publish" generated information which is then "subscibed to" by other programs. IPC keeps track of what is published and delivers it to the subscribers.
+
The "central" program, IPC, enables communication between these and other programs. Information on using and coding with IPC can be found at http://www-2.cs.cmu.edu/afs/cs/project/TCA/www/ipc/ipc.html. A simplistic explanation of IPC: various programs "publish" generated information which is then "subscibed to" by other programs. IPC keeps track of what is published and delivers it to the subscribers.
  
Table Of Contents
+
==Carmen use Scenaria==
# Running a Simulated Robot
+
The use of CARMEN will described using two different scenaria: simulating a robot and way-point navigation of it in a known map and then running a playback of a logged ride. Since CARMEN is modular software, each scenario will involve opening a bunch of different xterms and running different programs (called modules in the LCAD version of Carmen). Alternatively, one can use the program '''proccontrol''' to start and control each module.
# Teleoperation of a Robot
 
# Building a Map
 
# Autonomous Navigation
 
  
The use of CARMEN will described using four different scenaria: simulating a robot, tele-operating a robot, building a map, and way-point navigation of a robot in a known map. Since CARMEN is modular software, each scenario will involve opening a bunch of different xterms and running different programs.
+
Before starting, go to the Carmen sub-directory carmen/bin.
  
Parameters for all of the modules are read from the carmen.ini file. You will need to edit this file, adding your own robot and parameter values. The name of your robot in [] square brackets in the param file will be a command line parameter to the parameter server later in these instructions.
+
===Running a Simulated Robot===
  
 +
In this section you will learn how to run a simulation of the autonomous driving car from IARA project. Just follow the steps bellow to understand how each of the modules are initialized for this task.
  
Running a Simulated Robot
+
The modules shown in this tutorial may be replaced, as the project is still in developpement. So we encourage you to check the 'process-navigate-volta-da-ufes-pid.ini' file. There you will see every module been used by this process (that is usualy the most update one).
  
1. In window 1, start the IPC central server
+
To run the simulation just do:
  
   cd carmen/bin ; ./central
+
   cd $CARMEN_HOME/bin/
 +
  ./central
  
If you are running programs on multiple machines, then you must specify on the other machines which machine is running central. This is done with the command:
+
And then, in another tab in the bin/ directory:
  
setenv CENTRALHOST [hostname]
+
  ./proccontrol process-navigate-volta-da-ufes-pid.ini
  
where [hostname] is the name of the machine on which central is running.
+
This will run all the commands automatically.
  
Note: When running displays on off-robot computers, running the display programs off-robot rather than on-robot uses less bandwidth than piping the X display across the network.
 
  
2. In window 2, start the parameter server
+
==== Central notes ====
  
  cd carmen/bin ; ./param_deamon --robot pearl ../data/thickwean.map
+
If the central server is already running, you might receive the message:
  
The command above will start the param_deamon such that it serves parameters for the CMU robot "Pearl" from the parameter file "carmen.ini" and the map file "thickwean.map." Other command-line options are:
+
  Error: unable to bind TCP/IP socket for listening
  
    * robot [robotname] directs the server to parameters specific to the robot which should exist in the specified parameter file.
+
You can check if the server is running using the command:
    * [mapfile.map] directs the server to a map file specific to the location. If you do not specify a mapfile, then no map will be served.
+
 
    * [paramfile.ini] specifies a parameter file. If no file is specified, then parameters from carmen.ini will be used. The param_deamon will look first in the current directory, then the parent directory (../), and then ../src/ for carmen.ini.
+
  ps -a | grep central
    * [-port portnum] specifies a port to be used for an ANT server
 
    * [-noant] says not open an ANT server
 
    * [-useant] says to use an ANT server
 
  
3. In window 3, start the robot simulator
+
If there is a server running you will receive a message like this:
 +
 
 +
  6446 pts/0    00:00:00 central
  
  cd carmen/bin ; ./simulator
+
You can kill a running central using:
  
4. In window 4, start the navigatorgui program
+
  killall central
  
  cd carmen/bin ; ./navigatorgui
+
If you are running programs on multiple machines, then you must specify on the other machines which machine is running central. This is done with the bash command:
  
This will open a graphic display. Place the simulated robot in the map by left-clicking on the "Place Simulator" button, and then left-clicking once on the desired location on the map. Then move the cursor away from the blue dot that appears, in the direction you wish the robot to face. A blue line appears between the cursor (now two curved arrows) and the simulated robot, indicating the facing of the robot. Left-click again to fix the facing of the robot.
+
  export CENTRALHOST=[hostname]
  
5. In window 5, start the robotgui (before robotgraph) program
+
where [hostname] is the name of the machine on which central is running.
  
  cd carmen/bin ; ./robotgui
+
Note: When running displays on off-robot computers, running the display programs off-robot rather than on-robot uses less bandwidth than piping the X display across the network.
 
 
See the instructions for using robotgui below to teleoperate the simulated robot. You can also build maps and autonomously navigate the robot as described further below. Maps should look the same as the original map unless there were differences in the parameters used (in either the paramfile or in the vasco program) when creating the original map and the new map. Remember that if you are running programs on multiple machines, you must set the CENTRALHOST environment variable to point to the machine on which you are running central.
 
 
 
 
 
Teleoperation of a Robot
 
 
 
1. In window 1, start the IPC central server
 
 
 
  cd carmen/bin ; ./central
 
 
 
2. In window 2, start the parameter server
 
 
 
  cd carmen/bin ; ./param_deamon [paramfile.ini] --robot robotname
 
 
 
3. In window 3, start the base server that corresponds to your robot
 
 
 
  cd carmen/bin ; ./scout
 
 
 
4. In window 4, start the laser server
 
 
 
  cd carmen/bin ; ./laser
 
 
 
5. In window 5, start the robot server
 
 
 
  cd carmen/bin ; ./robot
 
 
 
6. In window 6, start the robotgui program
 
 
 
  cd carmen/bin ; ./robogui
 
 
 
Note that if you have a pioneer or scout robot, you can run the base_services program instead of steps 3, 4, and 5. It is not yet working with other robot types.
 
 
 
  cd carmen/bin ; ./base_services
 
 
 
Here is a bit more detail on the programs to be run.
 
 
 
    * central
 
      Run this anywhere, but other programs need an environment vairable set before you run them: "setenv CENTRALHOST [hostname]" if that program is being run on a different computer than central. This program must be started first. If stop this program (with cntl-c, typically), all the other Carmen programs will quit.
 
    * param_deamon --robot robotname [paramfile.ini]
 
      The robotname option directs the server to parameters specific to the robot which should exist in the file "carmen.ini". If you wish to use a parameter file other than carmen.ini, then that would be specified in the paramfile.ini option.
 
    * base_services
 
      Run this program after central and param_deamon have been started. This program connects to the robot and to the various sensors on the robot, so it MUST run on the machine connected to that hardware.
 
          o Note: This program combines three modules. If the robot hardware is divided among multiple computers, then the modules can be used independently on different computers. this currently only works with the Scout robots from Nomadics Technologies and the Pioneer robots from ActivMedia. scout - This module co-ordinates the motion of the Scout robot and monitors robot odometry.
 
          o pioneer - This module co-ordinates the motion of the Pioneer robot and monitors robot odometry. It is an alternative to scout.
 
          o laser - this monitors the SICK LMS and PLS laser sensors.
 
          o robot - this module takes odometry and sensor readings and combines them for distribution to other programs.
 
    * robotgui -add_control on
 
      This opens a display which shows the robot as a circle or rectangle in the center with a small line designating the front and also sensor information. Blue regions are obsticals or unknown, white is clear. Red edges in the laser display indicate indicate obsticals which are close enough to prevent forward motion. Red arcs indicate sonar-detected obsticals.
 
 
 
      To turn the robot, use the left mouse button. Clicking near the robot will turn it right or left. To move the robot, click on the robot and drag the mouse pointer in the direction (relative to the "forward" indicator on the screen) you wish the robot to go. The robot indicator will turn red when you click on it, indicating that it is ready to move. The further from the robot you drag the cursor, the faster the robot will go.
 
 
 
      Or, if you have properly installed your joystick under linux, you can drive the robot with the joystick.
 
 
 
      Alternatively, you can use keyboard commands to move the robot. The following keys will move the robot:
 
 
 
      U I O
 
      J K L
 
      M , .
 
  
      with I moving the robot forward, U will move it forward and turning it left, O forward and right. J and L will turn the robot in place. Some robot param files are written so that the robot will not go backwards because some of our robots do not have rear sensing. M and . will move it backwards and turn, or just turn, depending on the parameter file. , will move it backwards or not at all. any other key, including K, will stop the robot. Speed cannot be controlled with this method.
+
==== Parameters Server ====
  
 +
  ./param_daemon ../src/carmen-ford-escape.ini
  
In this image, the sensor data displayed is from a SICK PLS laser scanner. The robot is represented by the grey circle, facing the direction indicated by the black line. Dark blue edges are perceived objects, and lighter blue areas are unknown. The red edges are objects which are close enough that obstical avoidance routines will prevent forward motion.
+
The command above will start the param_deamon such that read the parameters for LCAD's robots and modules from the parameter file "carmen/src/carmen-ford-escape.ini". Some of the parameters contained in "carmen-ford-escape.ini" are informations about the localization, mapping and odometry modules, as well as the geometry of the sensors and the car it-self.
  
 +
Other command-line options are:
 +
* [map_filename] Opens the map to get some information about it
 +
* robot [robotname] directs the server to parameters specific to the robot which should exist in the specified parameter file.
 +
* [mapfile.map] directs the server to a map file specific to the location. If you do not specify a mapfile, then no map will be served.
 +
* [paramfile.ini] specifies a parameter file. If no file is specified, then parameters from carmen.ini will be used. The param_deamon will look first in the current directory, then the parent directory (../), and then ../src/ for carmen.ini.
 +
* [-port portnum] specifies a port to be used for an ANT server
 +
* [-noant] says not open an ANT server
 +
* [-useant] says to use an ANT server
  
Building a Map (using teleoperation)
+
==== Proccontrol GUI====
 +
Command:
  
To build a map, you can use either teleoperation or autonomous navigation. However, autonomous navigation requires that you start with a map, so this section describes how to do it with teleoperation. Another way to build a map is with the map editor program.
+
  ./proccontrol_gui
  
While the robot is moving, you will need to run the logger program.
+
The command above will open an interface where you can easily monitor the modules running for this simulation. As you run other modules, their names will apear in the screen.  
  
Run steps 1 through 6 for teleoperating the robot, then:
+
==== Map Server ====
  
7. In window 7, start the loggger
+
  ./map_server -map_path ../data/map_ida_guarapari-20170403-2 -map_x 7756892.9 -map_y -364045.2 -block_map on  -lanemap_incoming_message_type 0
  
  cd carmen/bin ; ./logger [filename].log
+
The map_server program will load the car's poses and the OFFLINE map from the informations contained in ../data/map_ida_guarapari-20170403-2 directory. The OFFLINE MAP serves as reference to the localisation system of the car.
  
[filename] specifies a filename for the sensor log. If the file already exists, the program will ask to overwrite it. If an answer other than "Y" or "y" is given, then the logger will quit.
+
Essential command-line options:
 +
* -map [map-file]         : Load an offline map from the [map-file].
 +
* -map_path [path]        : Enter the path to the offline map directory.
 +
* -map_x [float]          : map's x global position.
 +
* -map_y [float]          : map's y global position.
 +
* -block_map ['on'/'off'] : enable the generation of the map with the data inside the [path] directory.
  
Drive the robot around, covering your environment, then stop the logger by typing a CONTROL-C in the logger xterm. Before quitting the other programs (or after restarting them at a later time), run vasco on the logfile you created
+
==== Simulator Module ====
  
    cd carmen/bin ; ./vasco file.log
+
  ./simulator_ackerman
  
This program opens an interface which displays sensor data compiled with raw odometry data, as in this image:
+
This command will start a moderately useful 2-D simulator, intended to replace the base module. It publishes odometry, laser messages and sonar messages. It accepts base velocity commands. The simulator always starts with its robot in the bottom right corner of the map (0,0), but subscribes to localize_initialize messages as well as simulator_set_truepose messages to initialize its robot position.
  
To correct for odometry error, click the "scan match" button on the upper right. After some computation time (progress is indicated on the lower left), the display will change, as in this second image:
+
The simulator can also run an instance of the robot module to provide collision prevention. This, however, needs to be activated in the ini file using the parameter "simulator_use_robot". This parameter is disabled by default, which means that you have to start the module robot separately.
  
This data was generated moving a robot from a lab (center right) into a corridor, up and down the corridor some distance, then back to the lab. The odd "fuzz" in the center of the corridor is actually the legs of people walking by as the data was gathered.
+
==== Slam modules ====
  
To create the final map to be used with param_deamon, now click the "Make Evidence Grid" button on the upper right. A new display will open allowing you to adjust parameters for creating the mapfile. At first, you should stick with the defaults.
+
  ./localize_ackerman -mapping_mode off &
 +
  ./mapper -map_path ../data/mapper_teste -map_x 7756450 -map_y -364200 &
 +
  ./obstacle_distance_mapper
  
When you click "Okay," that display will disapear, a new one will open and the map will form as you watch.
+
The localize module is the original Carmen localization program using a particle filter. It can perform global localization and pose tracking. Localize uses a set of parameters that (strongly) influence the robustness and performance of localize. This is mainly the observation likelihood model and the noise in the motion model. You will find those parameters as expert parameters in the `carmen-ford-escape.ini` file. In this case we use the '-mapping_mode off' command-line option because we are not generating an offline map from sensor logs.
  
Note that the data which showed the people walking through the image has not effected the final map. To save this as a map, klick on the "File" menu and save as a ".map" file.
+
The mapper module updates the offline map loaded from the map_server module with real-time information (moving objects, people, etc).
  
This file can then be used through your param_deamon program to allow for localization and autonomous navigation through the area you mapped.
+
==== RDDF Module====
  
Autonomous Navigation
+
RDDF stands for Road Data Definition file.
  
This begins as if you were teleoperating the robot, but with a change in the param_deamon options to add the map file, and with other programs added.
+
  ./rddf_play ../data/rndf/rddf-voltadaufes-20170809.txt ../data/rddf_annotation_log_20140418.txt
  
1. In window 1, start the IPC central server
+
This program will create a file that contains pose informations (position and angles) about a previous driven ride. This will be a reference to the rigth path inside the road to the car when in autonomous mode.
  
  cd carmen/bin ; ./central
+
====Behavior Selector====
  
2. In window 2, start the parameter server
+
  ./behavior_selector
  
  cd carmen/bin ; ./param_deamon [paramfile.ini] --robot robotname mapfile.map
+
As the name suggest, this program will choose the rigth behavior in each different situation detected by other modules.
 +
 +
==== Motion Control Module ====
 +
Model predictive planner
  
3. In window 3, start the base server that corresponds to your robot
+
  ./model_predictive_planner
 +
  ./rrt_path_follower
  
  cd carmen/bin ; ./scout
+
The first module outputs the aceleration of the car based on the next position desired.
 +
The rtt_path_follower module tries to reduce the latency on the atuation system.
  
4. In window 4, start the laser server
+
Obstacle avoider
  
   cd carmen/bin ; ./laser
+
   ./obstacle_avoider
  
5. In window 5, start the robot server
+
Controls the aceleration of the robot to avoid obstacles.
  
  cd carmen/bin ; ./robot
+
==== Interface Modules ====
 +
Navigatorgui
  
6. In window 6, start the robotgui program
+
  ./navigator_gui2 -map_path ../data/map_ida_guarapari-20170403
  
  cd carmen/bin ; ./robotgui
+
This will open a graphic display.
  
7. In window 7, Run the localizer
+
Place the simulated robot in the map by left-clicking on the "Place Robot" button, and then left-clicking once on the desired location on the map. Then move the cursor away from the blue dot that appears, in the direction you wish the robot to face. A blue line appears between the cursor (now two curved arrows) and the simulated robot. Click on go to start the simulation.
  
  cd carmen/bin ; ./localize
+
[[imagem:navigator_procedure.gif]]
  
8. In window 8, Run the path planner
+
Procconttrol_gui
  
   cd carmen/bin ; ./navigator
+
   ./proccontrol_gui
  
9. In window 9, Run the path planner graphics module
+
This GUI display all the modules running for this process:
  
  cd carmen/bin ; ./navigatorgui
+
[[imagem:navigator_interface.png]]
  
Here is more detail on the new programs.
+
Viewer 3D
  
    * localize
+
  ./viewer_3D
      This program takes sensor data from base_services and compares it to the map to localize the robot on that map.
 
    * navigator
 
      This program plans the path from the robot's current location to its destination and tells base_services how to move the robot.
 
    * navigatorgui
 
      This program provides a user interface for telling the robot where it is and where to go. To set the robot position on the map display, simply left-click the "Place Robot" button, then left-click the desired location on the map. The cursor will change into a pair of curved arrows, and a red dot appears ti indicate the robot location. A line between the dot and the cursor indicates the direction the robot's orientation. Left-click again to fix the robot orientation. If you are using a simulated robot, this will also place and orient the simulated robot. To separate the simulated robot from it's perceived location, you must set the simulator location after setting the robot location.  
 
  
You can now control the robot using the navigator. You can then left click on the map to give the robot a goal. Select the "Go" button to send the robot from its current location to the selected goal. Select the "Stop" button (the same location as the "Go" button) to make the robot stop at any time.
+
This will open a 3D graphic interface where the car movement and sensors data are displayed.
  
 +
=== Playback a recorded ride ===
  
In this image, the robot's current perceived position is represented by the red circle, and the simulated position is represented by the blue circle. The robot's goal is represented by the yellow circle. The planned path is represented by the blue line. The planned path will change as the robot moves toward the goal and encounters obsticles. The scale of the image can be changed by moving the lower slide-bar.
+
Now, we will run a playback of a recorded ride so that we can see the car route and sensor data in real-time. To do this section you will need the log file called (NOME DO LOG) saved in a directory called ¨/dados/¨. The log file contains pose, gps and velodyne data from a especific run. The log files are oftenly used to generate new offline maps and to calibrate sensors.

Edição atual tal como às 17h44min de 11 de outubro de 2017

Introduction

This document is an aid to begin using the CARMEN robot sensing and navigation software, including (but not limited to) the following programs:

This program stores sensor and odometry data with time stamps into a log file.

  • playback

This program plays back a log file and send the stored messages to the other modules.

This program allows for creating or editting maps for use by Carmen.

This program provides a graphic interface which shows the robot's position and destiation on the pre-built map and allows setting of the current position and orientation, and selection of destinations.

  • param_edit

This program enables the user to change parameters as the robot is running. It also makes it easy to save the changes to a ".ini" file.

  • param_deamon

This program provides other programs with information about the robot being used and the area around it. This can include a pre-built map, sensors on the robot, and typical sensor error.

  • robotgui

This program provides a simple graphic interface for the robot, allowing direct motion control and a display of current sensor information.

  • processcontrol

This program controls the different processes, restarts them in case of a crash, etc.

  • simulator

This program provides simulated data generation from a virtual robot. It requires a previously generated map.

  • base_services

This program controls the movement of the robot and accepts inputs from the sensors. This program MUST run on the computer attatched to the robot hardware.

  • localize

This program uses the sensor information from the baseServer to find the robot position in a map provided by param_deamon.

  • navigator

This program enables autonomous navigation.

  • vasco

This program creates a map from sensor and odometry data stored in a log file.

  • vasco-tiny

A command line scan-matcher based on vasco. It reads log files and outputs a (locally) corrected log file.

The links above will go to other pages with more complete descriptions and instructions for using these programs.

The "central" program, IPC, enables communication between these and other programs. Information on using and coding with IPC can be found at http://www-2.cs.cmu.edu/afs/cs/project/TCA/www/ipc/ipc.html. A simplistic explanation of IPC: various programs "publish" generated information which is then "subscibed to" by other programs. IPC keeps track of what is published and delivers it to the subscribers.

Carmen use Scenaria

The use of CARMEN will described using two different scenaria: simulating a robot and way-point navigation of it in a known map and then running a playback of a logged ride. Since CARMEN is modular software, each scenario will involve opening a bunch of different xterms and running different programs (called modules in the LCAD version of Carmen). Alternatively, one can use the program proccontrol to start and control each module.

Before starting, go to the Carmen sub-directory carmen/bin.

Running a Simulated Robot

In this section you will learn how to run a simulation of the autonomous driving car from IARA project. Just follow the steps bellow to understand how each of the modules are initialized for this task.

The modules shown in this tutorial may be replaced, as the project is still in developpement. So we encourage you to check the 'process-navigate-volta-da-ufes-pid.ini' file. There you will see every module been used by this process (that is usualy the most update one).

To run the simulation just do:

  cd $CARMEN_HOME/bin/
  ./central

And then, in another tab in the bin/ directory:

  ./proccontrol process-navigate-volta-da-ufes-pid.ini

This will run all the commands automatically.


Central notes

If the central server is already running, you might receive the message:

  Error: unable to bind TCP/IP socket for listening

You can check if the server is running using the command:

  ps -a | grep central

If there is a server running you will receive a message like this:

  6446 pts/0    00:00:00 central

You can kill a running central using:

  killall central

If you are running programs on multiple machines, then you must specify on the other machines which machine is running central. This is done with the bash command:

  export CENTRALHOST=[hostname]

where [hostname] is the name of the machine on which central is running.

Note: When running displays on off-robot computers, running the display programs off-robot rather than on-robot uses less bandwidth than piping the X display across the network.

Parameters Server

  ./param_daemon ../src/carmen-ford-escape.ini

The command above will start the param_deamon such that read the parameters for LCAD's robots and modules from the parameter file "carmen/src/carmen-ford-escape.ini". Some of the parameters contained in "carmen-ford-escape.ini" are informations about the localization, mapping and odometry modules, as well as the geometry of the sensors and the car it-self.

Other command-line options are:

  • [map_filename] Opens the map to get some information about it
  • robot [robotname] directs the server to parameters specific to the robot which should exist in the specified parameter file.
  • [mapfile.map] directs the server to a map file specific to the location. If you do not specify a mapfile, then no map will be served.
  • [paramfile.ini] specifies a parameter file. If no file is specified, then parameters from carmen.ini will be used. The param_deamon will look first in the current directory, then the parent directory (../), and then ../src/ for carmen.ini.
  • [-port portnum] specifies a port to be used for an ANT server
  • [-noant] says not open an ANT server
  • [-useant] says to use an ANT server

Proccontrol GUI

Command:

  ./proccontrol_gui

The command above will open an interface where you can easily monitor the modules running for this simulation. As you run other modules, their names will apear in the screen.

Map Server

  ./map_server -map_path ../data/map_ida_guarapari-20170403-2 -map_x 7756892.9 -map_y -364045.2 -block_map on  -lanemap_incoming_message_type 0

The map_server program will load the car's poses and the OFFLINE map from the informations contained in ../data/map_ida_guarapari-20170403-2 directory. The OFFLINE MAP serves as reference to the localisation system of the car.

Essential command-line options:

  • -map [map-file]  : Load an offline map from the [map-file].
  • -map_path [path]  : Enter the path to the offline map directory.
  • -map_x [float]  : map's x global position.
  • -map_y [float]  : map's y global position.
  • -block_map ['on'/'off'] : enable the generation of the map with the data inside the [path] directory.

Simulator Module

  ./simulator_ackerman

This command will start a moderately useful 2-D simulator, intended to replace the base module. It publishes odometry, laser messages and sonar messages. It accepts base velocity commands. The simulator always starts with its robot in the bottom right corner of the map (0,0), but subscribes to localize_initialize messages as well as simulator_set_truepose messages to initialize its robot position.

The simulator can also run an instance of the robot module to provide collision prevention. This, however, needs to be activated in the ini file using the parameter "simulator_use_robot". This parameter is disabled by default, which means that you have to start the module robot separately.

Slam modules

  ./localize_ackerman -mapping_mode off &
  ./mapper -map_path ../data/mapper_teste -map_x 7756450 -map_y -364200 &
  ./obstacle_distance_mapper

The localize module is the original Carmen localization program using a particle filter. It can perform global localization and pose tracking. Localize uses a set of parameters that (strongly) influence the robustness and performance of localize. This is mainly the observation likelihood model and the noise in the motion model. You will find those parameters as expert parameters in the `carmen-ford-escape.ini` file. In this case we use the '-mapping_mode off' command-line option because we are not generating an offline map from sensor logs.

The mapper module updates the offline map loaded from the map_server module with real-time information (moving objects, people, etc).

RDDF Module

RDDF stands for Road Data Definition file.

  ./rddf_play ../data/rndf/rddf-voltadaufes-20170809.txt ../data/rddf_annotation_log_20140418.txt

This program will create a file that contains pose informations (position and angles) about a previous driven ride. This will be a reference to the rigth path inside the road to the car when in autonomous mode.

Behavior Selector

  ./behavior_selector

As the name suggest, this program will choose the rigth behavior in each different situation detected by other modules.

Motion Control Module

Model predictive planner

  ./model_predictive_planner
  ./rrt_path_follower

The first module outputs the aceleration of the car based on the next position desired. The rtt_path_follower module tries to reduce the latency on the atuation system.

Obstacle avoider

  ./obstacle_avoider

Controls the aceleration of the robot to avoid obstacles.

Interface Modules

Navigatorgui

  ./navigator_gui2 -map_path ../data/map_ida_guarapari-20170403

This will open a graphic display.

Place the simulated robot in the map by left-clicking on the "Place Robot" button, and then left-clicking once on the desired location on the map. Then move the cursor away from the blue dot that appears, in the direction you wish the robot to face. A blue line appears between the cursor (now two curved arrows) and the simulated robot. Click on go to start the simulation.

Navigator procedure.gif

Procconttrol_gui

  ./proccontrol_gui

This GUI display all the modules running for this process:

Navigator interface.png

Viewer 3D

  ./viewer_3D

This will open a 3D graphic interface where the car movement and sensors data are displayed.

Playback a recorded ride

Now, we will run a playback of a recorded ride so that we can see the car route and sensor data in real-time. To do this section you will need the log file called (NOME DO LOG) saved in a directory called ¨/dados/¨. The log file contains pose, gps and velodyne data from a especific run. The log files are oftenly used to generate new offline maps and to calibrate sensors.