The parameter files are read by ArRobot after it connects to the robot, and stored in the ArRobot and ArRobotParams classes (Use ArRobot::getRobotParams() to get a pointer to its ArRobotParams object.)
When ArRobot connects to a robot it receives strings identifying the robot model (the model's Pioneer "subtype" or "subclass") and an individual robot nickname. It uses these names to load parameter files. It first loads the parameter file that corresponds to the model subtype, e.g. "p3dx-sh.p" or "powerbot.p" and stores those parameters. A log message is printed indicating that it loaded parameters from that file. ARIA includes robot parameter files for all current robot types. If such a file cannot be found, but ARIA recognizes the robot subtype, it stores internal default constants as those parameter values, and prints a log message indicating this.
Next, if a file exists which corresponds to this particular robot's nickname (name.p), then it loads that file, which can override any settings provided in the robot type parameters or defaults.
An individual robot's nickname is stored in the robot firmware configuration, and may be changed using the firmware configuration tool. For example, if a robot uses the ARCOS firmware for the SH microcontroller, connect with ARCOScf and change the "Name" parameter, then save the new configuration. Each robot is assigned a unique name when assembled and configured by MobileRobots, but you may change it if you want to use your own names. However, if you change the name stored in the firmware configuration, you must rename its parameter files in any ARIA or ARNL/SONARNL/MOGS installation on all computers that connect to it as well.
In almost all circumstances, modifying the standard parameters for robot types is unneccesary; change your robot's name.p instead.
In addition to the parameter files, if a program is using ARIA's argument parsing and connector classes, then it can be executed with command-line arguments which also affect robot and device parameters (see Command Line Option Summary), and may override some of the device parameters given in the parameter file.
Section Laser parameters LaserType lms2xx ; type of laser LaserPortType ; type of port the laser is on LaserPort COM3 ; port the laser is on LaserAutoConnect false ; if the laser connector should autoconnect this laser ; or not LaserFlipped false ; if the laser is upside-down or not LaserPowerControlled true ; if the power to the laser is controlled by serial LaserMaxRange 0 ; Max range of the laser, 0 to use default (only use ; if you want to shorten it from the default), mm LaserX 21 ; x location of laser, mm LaserY 0 ; y location of laser, mm LaserTh 0 ; rotation of laser, deg LaserZ 0 ; height of the laser off the ground, mm (0 means ; unknown) LaserIgnore ; Readings within a degree of the listed degrees ; (separated by a space) will be ignored LaserStartDegrees ; start degrees for the sensor (leave blank for ; default, use this to constrain the range) (double) LaserEndDegrees ; start degrees for the sensor (leave blank for ; default, use this to constrain the range) (double) LaserDegreesChoice ; degrees choice for the sensor (leave blank for ; default, use this to constrain the range) LaserIncrement ; Increment for the sensor (leave blank for default, ; use this to have a custom increment) (double) LaserIncrementChoice ; Increment for the sensor (leave blank for default, ; use this to have a larger increment) LaserUnitsChoice ; Units for the sensor (leave blank for default, use ; this to have a larger units) LaserReflectorBitsChoice ; ReflectorBits for the sensor (leave blank for ; default, use this to have a larger units) LaserStartingBaudChoice ; StartingBaud for the sensor (leave blank for ; default, use this to have a larger StartingBaud) LaserAutoBaudChoice ; AutoBaud for the sensor (leave blank for default, ; use this to have a larger units)
The first and default laser is in the "Laser parameters" section. The second laser is in "Laser 2 parameters", the third in "Laser 3 parameters", and so on.
LaserType indicates the kind of laser device present: lms2xx
for a SICK LMS 200 and compatible, or urg
for an Hokoyu URG or UTM. Other types will be added as support is added to ARIA.
LaserPortType and LaserPort indicate how the laser is connected to the onboard computer. LaserPortType currently is either blank or has the value serial
for a serial port. LaserPort identifies which port of the given type to use: COM1
, COM2
, COM3
, etc. for the first, second, third, etc. serial ports (use the "COM" notation both on Linux and Windows). As support for other connection types such as USB and TCP are added in the future new types will be possible.
LaserAutoConnect indicates whether an ArLaserConnector object should automatically connect to the laser. If false
, then a program must specifically request that the connector initiate the connection; however most programs do this if they expect to use a laser.
LaserFlipped, LaserX, LaserY, LaserTh, and LaserZ indicate the physical positioning of the laser on the robot. X, Y, Z and Th give its position relative to the center of the robot. If LaserFlipped is true then the order of the readings supplied by ArRangeDevice objects is reversed, so the order is correct for a laser mounted upside-down from normal.
You can list a set of degree values for which laser readings should be ignored after LaserIgnore. Use this if parts of the robot or mounted equipment obscure the laser's field of detection and cause undesirable readings.
The other parameters affect the configuration of the laser itself, and their meaning may depend on the type of laser. You may leave them empty (supply no value) to use defaults for that type.
Section GPS parameters GPSPossessed false ; if the robot has a gps GPSPX -160 ; x location of gps receiver antenna on robot, mm GPSPY 120 ; y location of gps receiver antenna on robot, mm GPSType standard ; type of gps receiver (trimble, novatel, standard) GPSPort COM2 ; port the gps is on GPSBaud 9600 ; gps baud rate (9600, 19200, 38400, etc.)
Section Accessories the robot has TableSensingIR false ; if robot has upwards facing table sensing IR NewTableSensingIR false ; if table sensing IR are sent in IO packet FrontBumpers false ; if robot has a front bump ring NumFrontBumpers 5 ; number of front bumpers on the robot RearBumpers false ; if the robot has a rear bump ring NumRearBumpers 5 ; number of rear bumpers on the robot