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