create new tag
view all tags

Stereo Server and Client

The stereoServer code is based on the Aria serverDemo/clientDemo code. Changes the the basic Aria code include

1. use of joystick is supported inclient demo.

2. multiple robots can be used

3. There is a single command to trigger a multi-pan or multi-tilt stereo scan

Client code

The client code was modified from the Aria clientDemo in /usr/local/Aria/Arnetworking/examples/clientDemo.cpp

The easiest way to compile this is to rename the original clientDemo.cpp and substitute this one, then use the makefile in /usr/local/Aria/Arnetworking/examples/ to make the executable.

There are some different versions of this program. The principle difference is whether they support the multiple robot interface commands.

Version 1.0 was an edit of the Aria clientDemo to support moving the robot with the joystick, and to send doStereoScan server command. To work correctly that needs to be connected to the stereoServer program, not the (Aria) serverDemo program. serverDemo will run okay under joystick control, but will ignore the new commands such as doStereoScan.

Version 2.0 was modified to allow control of the DPPU pan and tilt angles during a scan by sending the doStereoPan and doStereoTilt and also to allow connection to multiple robots (instances of serverDemo or stereoServer). Commands were added to allow robot moves to be directed to each robot or broadcast to all robots. Because of network delays, broadasting to all robots does not mean they all move the same unfortunately.

Version 3.0 added in support for control of the visual saliency architecture and automatic selection and data gathering motions for likely landmarks. This has to be run with the correct version of stereoServer to run the commands on the robot.

Here is the joystick button mapping for V3.0

b1 - trigger, has to be pressed for motion to occur. b2 - do a stereoscan. b3 - broadcast robot commands. b4 - send to robot 0 only. b5 - send to robot 1 only. b8 - enable the saliency architecure on the next stereoscan. b9 - allow the robot to carry out an automatic saliency move.

Here is the source of the latest version (v3):

  • clientDemo.cpp: clientDemo.cpp
  • Server code

    The server code is a heavily modified version of the serverDemo.cpp program in /usr/local/Aria/Arnetworking/examples.

    You need a new makefile to make it, you can't use the original from Aria, because of the dependence on the stereo camera (which is captured in the source file stereoCamera.[cpp,h]).

    There have been several version of the server code. The logfile that the server writes has the version number on the top.

    Version 1.0 was the modified (Aria) serverDemo.cpp program with support for the new server command doStereoScan.

    Version 2.0 added support for the doStereoPan and doStereoTilt (which had arguments, so more difficult) server commands. There output format was changed to write GPS data. But the GPS support code was probably not correct.

    Version 2.1. This version has support for older Aria that does not support GPS, and using serialGPS.cpp it writes GPS (north/west) and TCM2 (roll/pitch/compas/temp) data to the logfile for each stop.

    Version 2.2 has support for the saliency architecture, identifying salient landmarks and plotting either a confined space (corridors) or open space (room or outside) set of saliency actions to gather the landmark data. In addition to the stop log, there is now also a landmark log and a separate set of landmark datasets. If you are only interested in landmarks, you can just copy the landmark datasets, images and log.

    Here are the main sources file and the Makfile for the latest version:

    • landmarkList.h:landmarkList.h; support for manipulating lists of landmarks

    • serialGPS.cpp: Read the GPS directly using serial port (because old Aria did not do this).

    For hardware installation instruction of the BB2 and PTZ base, see BumbleBee2Installation

    For information regarding calibration, the Triclops API, etc.., see FRCVBumbleBee2

    -- DamianLyons - 2011-06-14

    Topic attachments
    I Attachment History Action Size Date Who Comment
    Unknown file formatEXT Makefile r1 manage 1.5 K 2011-06-14 - 20:02 DamianLyons  
    C source code filecpp checkSalience.cpp r1 manage 18.8 K 2011-08-04 - 20:06 DamianLyons Implements the salience architecture
    C source code filecpp clientDemo.cpp r2 r1 manage 24.9 K 2011-08-04 - 19:52 DamianLyons Version 3.0 of clientDemo
    Header fileh landmarkList.h r1 manage 1.5 K 2011-08-04 - 20:08 DamianLyons Managing lists of landmarks for saliency processing
    C source code filecpp serialGPS.cpp r1 manage 4.5 K 2011-08-04 - 20:06 DamianLyons Read the GPS directly
    C source code filecpp stereoCamera.cpp r4 r3 r2 r1 manage 18.4 K 2011-08-04 - 20:05 DamianLyons support for Bumblebee stereo, supoprts v2.2 of stereoServer
    Header fileh stereoCamera.h r2 r1 manage 2.3 K 2011-08-04 - 20:04 DamianLyons include for stereoCamera.cpp, supports v2.2 of stereoserver
    C source code filecpp stereoServer.cpp r2 r1 manage 31.3 K 2011-08-04 - 20:05 DamianLyons V2.2 with support for saliency architecture, GPS and TCM
    Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
    Topic revision: r4 - 2011-09-24 - StephenFox
    This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
    Ideas, requests, problems regarding TWiki? Send feedback