The LCM USARSim Proxy

Arnoud Visser, Universiteit van Amsterdam, NL

October 17, 2012

Description

The program lcm_usarsim_proxy makes a connection to the simulation environment USARSim, spawns a robot and publishes the sensor-messages to a number of lcm-channels. At the same time the program subscribes to the lcm-channel GAMEPAD, which allow you to drive the robot through the environment. USARSim is a simulation environment based on the Unreal Engine, which opens a number of tcp-ports to spawn different robot-models as GameBots. The program lcm_usarsim_proxy makes a connection to both the GamePort 3000 and the ImageServer port 5003. It polls both connections to check if data is available, and publishes this data on the lcm-channels POSE, LASER, CAMERA. This lcm-channel are broadcasted in the local subnetwork via the udpm-protocol on port 7667. This schema is illustrated in Figure 1.


Fig. 1: An overview of the communication between the components.

Both the lcm-library as the April toolkit contain several modules to record, monitor, inspect and process the information on the lcm-channels, as for instance the LCM Spy (see Usage).

Usage

The lcm_usarsim_proxy.exe assumes that on the local machine USARSim is running. USARSim can be started by selecting one of the scripts in UDK-Release\USARRunMaps. The program lcm_usarsim_proxy.exe can be called without any arguments. In that case a number of default choices are made. The most sensitive argument is -l; the start location. The default choice is a start position for the script Robocup2012-Tryout.bat. Possible start positions differ for every map. A list of positions can be displayed with the following command: telnet 127.0.0.1:3000 followed by command getstartposes. Note that the telnet-client is no longer a default part of Windows7, you should first activate this feature via Control Panel->Programs and Features->Turn Windows features on or off->telnet-client.

This is the list of expected arguments:

-h 127.0.0.1 : host - ip-adress of host where USARSim is running
-t P3AT : type - the type of this robot
-n Robot1 : name - the name of this robot
-l -5.4734,27.8247,1.4720 : location - the location where the robot is spawned
-r 0.0000,0.0000,-3.4361 : rotation - the rotation of the robot when spawned
-v 1 : viewport - the tile of the robots' camera in multiview (upperleft=1,2=totheright)
-w 0 : 2nd viewport - the tile of the robots' 2nd camera in multiview (none=0,upperleft=1,2=totheright)
-x 2 : CameraTileX - the number of columns of multiview (typically 1,2,3)

When succesfully connected, the console shows the following three lines:

Connected to USARSim at machine 127.0.0.1:3000
LCM: TTL set to 1.
Connected to ImageServer at machine 127.0.0.1:5003
If you have installed the rest of the lcm-library, you can inspect the data published on the channels with the command: java -ea -server lcm.spy.Spy -l udpm://239.255.76.67:7667?ttl=1. This illustrated in Figure 2:

  
Fig. 2: A screenshots of LcmSpy for a P3AT, Kenaf and AirRobot gamebot.

Dependencies

The program is made based on Microsoft's .Net Framework. It references System components from both .Net Framework v2.0 and v3.5. If missing you can find redistributables and SDKs at Microsoft's website.

Known issues

Documentation

Installation instructions

Download from the code to sourceforge. Go into the directory USARTools/LcmProxy, open lcm-usarsim-proxy.sln and build the solution. lcm_usarsim_proxy.exe is ready to run.

Authors

Origins

Licences

Reference

In papers of research that has become possible thanks to (parts) of this software, appropriate reference should be given. In case of doubt, use the bibtex as provided here:

@TechReport{Visser2012lcm,
author = {Arnoud Visser},
institution = {Universiteit van Amsterdam},
title = {A survey of the architecture of the communication library LCM for the monitoring and control of autonomous mobile robots},
number = {IAS-UVA-12-01},
month = {October},
year = {2012},
howpublished = {Online: \url{http://www.science.uva.nl/~arnoud/publications/LcmArchitectureSurvey.pdf}},
}

Acknowledgement

Part of the research is funded by the Dutch IIP Cooperation Challenge ’Sensor Intelligence for Mobility Systems’.

Disclaimer

THIS SOFTWARE IS PROVIDED BY THE author ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE author WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.