Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages | Examples

ArRobotConnector Class Reference

#include <ArRobotConnector.h>

List of all members.


Detailed Description

ArRobotConnector makes a robot connection either through a TCP port (for the simulator or for robots with Ethernet-serial bridge devices instead of onboard computers), or through a direct serial port connection. Normally, it first attempts a TCP connection on localhost port 8101, to use a simulator if running. If the simulator is not running, then it normally then connects using the serial port (the first serial port, COM1, by default). Various other connection parameters are configurable through command-line arguments.

When you create your ArRobotConnector, pass it command line parameters via either the argc and argv variables from main(), or pass it an ArArgumentBuilder or ArArgumentParser object. (ArArgumentBuilder is able to obtain command line parameters from a Windows program that uses WinMain() instead of main()). ArRobotConnector registers a callback with the global Aria class. Use Aria::parseArgs() to parse all command line parameters to the program, and Aria::logOptions() to print out information about all registered command-line parameters.

The following command-line arguments are checked:

Options for ArRobotConnector (see docs for more details):

Robot options:
-remoteHost <remoteHostNameOrIP>
-rh <remoteHostNameOrIP>
-robotPort <robotSerialPort>
-rp <robotSerialPort>
-robotBaud <baud>
-rb <baud>
-remoteRobotTcpPort <remoteRobotTcpPort>
-rrtp <remoteRobotTcpPort>
-remoteIsSim
-ris
-robotLogPacketsReceived
-rlpr
-robotLogPacketsSent
-rlps
-robotLogMovementReceived
-rlmr
-robotLogMovementSent
-rlms
-robotLogVelocitiesReceived
-rlvr
-robotLogActions
-rla

You can prepare an ArRobot object for connection (with various connection options configured via the command line parameters) and initiate the connection attempt by that object by calling connectRobot().

After it's connected, you must then begin the robot processing cycle by calling ArRobot::runAsync() or ArRobot::run().

You can then configure ArRobotConnector for the SICK laser based on the robot connection, and command line parameters with setupLaser(). After calling setupLaser(), you must then run the laser processing thread (with ArRangeDeviceLaser::runAsync() or ArRangeDeviceLaser()::run()) and then use ArRobotConnector::connectLaser() to connect with the laser if specifically requested on the command line using the -connectLaser option (or simply call ArRangeDeviceLaser::blockingConnect() (or similar) to attempt a laser connection regardless of whether or not the -connectLaser option was given; use this latter technique if your program always prefers or requires use of the laser).

Examples:

demo.cpp, simpleConnect.cpp, simpleMotionCommands.cpp, and wander.cpp.


Public Member Functions

 ArRobotConnector (ArArgumentParser *parser, ArRobot *robot, bool autoParseArgs=true)
 Constructor that takes argument parser.
bool connectRobot (ArRobot *robot)
 Sets up the robot then connects it.
bool connectRobot (void)
 Sets up the robot then connects it.
const char * getRemoteHost (void) const
 Gets the remote host, if one was used, or NULL if it wasn't.
bool getRemoteIsSim (void) const
 Gets if the remote connection is a sim.
ArRobotgetRobot (void)
 Gets the robot this connector is using (mostly for backwards compatibility stuff).
void logOptions (void) const
 Log the options the simple connector has.
bool parseArgs (ArArgumentParser *parser)
 Function to parse the arguments given in an arbitrary parser.
bool parseArgs (void)
 Function to parse the arguments given in the constructor.
bool setupRobot (ArRobot *robot)
 Sets up an arbitrary robot to be connected.
bool setupRobot (void)
 Sets up the given robot to be connected.
 ~ArRobotConnector (void)
 Destructor.

Protected Attributes

bool myAutoParseArgs
bool myHaveParsedArgs
 If we've parsed the args already or not.
ArConstFunctorC< ArRobotConnectormyLogOptionsCB
bool myOwnParser
ArRetFunctorC< bool, ArRobotConnectormyParseArgsCB
ArArgumentParsermyParser
const char * myRemoteHost
bool myRemoteIsSim
int myRemoteRobotTcpPort
ArRobotmyRobot
int myRobotBaud
bool myRobotLogActions
bool myRobotLogMovementReceived
bool myRobotLogMovementSent
bool myRobotLogPacketsReceived
bool myRobotLogPacketsSent
bool myRobotLogVelocitiesReceived
const char * myRobotPort
ArSerialConnection myRobotSerConn
ArTcpConnection myRobotTcpConn
bool myUsingSim


Constructor & Destructor Documentation

ArRobotConnector::ArRobotConnector ArArgumentParser parser,
ArRobot robot,
bool  autoParseArgs = true
 

Constructor that takes argument parser.

Warning:
do not delete parser during the lifetime of this ArRobotConnector, which may need to access its contents later.


Member Function Documentation

bool ArRobotConnector::connectRobot ArRobot robot  ) 
 

Sets up the robot then connects it.

Prepares the given ArRobot object for connection, then begins a blocking connection attempt. If you wish to simply prepare the ArRobot object, but not begin the connection, then use setupRobot().

bool ArRobotConnector::connectRobot void   ) 
 

Sets up the robot then connects it.

Prepares the given ArRobot object for connection, then begins a blocking connection attempt. If you wish to simply prepare the ArRobot object, but not begin the connection, then use setupRobot().

bool ArRobotConnector::parseArgs ArArgumentParser parser  ) 
 

Function to parse the arguments given in an arbitrary parser.

Parse command line arguments held by the given ArArgumentParser.

Returns:
true if the arguments were parsed successfully false if not
The following arguments are used for the robot connection:

-robotPort port
-rp port
Use the given serial port device name for a serial port connection (e.g. COM1, or /dev/ttyS0 if on Linux.) The default is the first serial port, or COM1, which is the typical Pioneer setup.

-remoteHost hostname
-rh hostname
Use a TCP connection to a remote computer with the given network host name instead of a serial port connection

-remoteRobotTcpPort port
-rrtp port
Use the given TCP port number if connecting to a remote robot using TCP due to -remoteHost having been given.

-remoteIsSim
-ris
The remote TCP robot given by -remoteHost or -rh is actually a simulator. Use any alternative behavior intended for the simulator (e.g. tell the laser device object to request laser data from the simulator rather than trying to connect to a real laser device on the local computer)

-robotBaud baudrate
-rb baudrate
Use the given baud rate when connecting over a serial port, instead of trying to use the normal rate.

bool ArRobotConnector::parseArgs void   ) 
 

Function to parse the arguments given in the constructor.

Parse command line arguments using the ArArgumentParser given in the ArRobotConnector constructor.

See parseArgs(ArArgumentParser*) for details about argument parsing.

Returns:
true if the arguments were parsed successfully false if not

bool ArRobotConnector::setupRobot ArRobot robot  ) 
 

Sets up an arbitrary robot to be connected.

Deprecated:
This method is normally used internally by connectRobot(), but you may use it if you wish.

If -remoteHost was given, then open that TCP port. If it was not given, then try to open a TCP port to the simulator on localhost. If that fails, then use a local serial port connection. Sets the given ArRobot's device connection pointer to this object. Sets up internal settings determined by command line arguments such as serial port and baud rate, etc.

After calling this function (and it returns true), then you may connect ArRobot to the robot using ArRobot::blockingConnect() (or similar).

Returns:
false if -remoteHost was given and there was an error connecting to the remote host, true otherwise.

bool ArRobotConnector::setupRobot void   ) 
 

Sets up the given robot to be connected.

This method is normally used internally by connectRobot(), but you may use it if you wish.

If -remoteHost was given, then open that TCP port. If it was not given, then try to open a TCP port to the simulator on localhost. If that fails, then use a local serial port connection. Sets the given ArRobot's device connection pointer to this object. Sets up internal settings determined by command line arguments such as serial port and baud rate, etc.

After calling this function (and it returns true), then you may connect ArRobot to the robot using ArRobot::blockingConnect() (or similar).

Returns:
false if -remoteHost was given and there was an error connecting to the remote host, true otherwise.


The documentation for this class was generated from the following files:
Generated on Thu Jan 7 10:34:44 2010 for Aria by  doxygen 1.4.2