Raubase configuration file

From Rsewiki
Revision as of 17:32, 31 December 2023 by Jca (talk | contribs) (→‎[heading])


Robot.ini

The configuration file is called robot.ini and must be found in the default directory. If no robot.ini is found, it will be created with default values.

The default robot.ini looks (pt) like this:

[section]
name = value

Each of the sections is explained a bit here.

[Service]

[service]
logpath = log/
; add '%d' in the logpath (e.g. "log_%d/" to generate a timestamped path. = 

Note: remember to end the path with a '/' slash.

Service creates a directory for log files. In this case, it is called 'log', and all previous log files will be overwritten by the files from the newest run.

If logpath is

[service]
logpath = log_%d/

Then a number log directories will be created, like:

$ ls
CMakeCache.txt       log                      log_20231231_134200.702
CMakeFiles           log_20231231_133902.348  raubase
Makefile             log_20231231_133909.383  robot.ini
cmake_install.cmake  log_20231231_133913.291

With default options, about 150 kb will be created every second.

[id]

[id]
type = robobot
idx = 149
; robot 'name' and 'idx' are read-only, use command line option to change = 
name = Psyche

These are read-only. The robot (and Raspberry) names are determined by the Regbot.

  • type: the robot type, for robobot a number of functions in the Regbot board are disabled.
  • idx: is the board number that determines the robot name.
  • name: is the associated name (for info only).

These values generated by the module in steensy.cpp.

[teensy]

[teensy]
device = /dev/ttyACM0
log = true
print = false
confirm_timeout = 0.04  
  • device: On Linux, all devices are seen as files, and /dev/ttyACM0 is the default name for the Regbot interface.
  • confirm_timeout: is the timeout in ms for retransmission of messages to the Regbot. Configuration messages to the Regbot are queued and sent one at a time until positively acknowledged by the Regbot.

Used by the module in steensy.cpp.

[state]

[state]
log = true
print = false 

This is for the heartbeat messages from Regbot. This includes e.g. the battery voltage.

Used by the module in sstate.cpp.

[encoder]

[encoder]
rate_ms = 8
log = true
print = false
encoder_reversed = true

The motor encoder has the movement of the motors.

  • rate_ms: is the interval at which the encoder count is sent by the Regbot.

This interval also determines the update rate of the robot pose.

  • encoder_reversed: For all Robobots, the encoder signals are reversed. That is, the two encoders A and B, are swapped.

Used by the module in sencoder.cpp

[pose]

[pose]
gear = 19.0
wheeldiameter = 0.146
enctickperrev = 64
wheelbase = 0.243
log = true
print = false

To translate encoder ticks to robot movement, a number of parameters are needed.

  • gear: Gearing of 19:1 in the case of Robobot.
  • wheeldiameter: The wheel diameter (in meters), including the depression of the tire due to the robot's weight.
  • wheelbase: The distance between the (main) wheels (in meters).

Used by module in mpose.cpp.

[gpio]

[gpio]
pins_out = 12=0 16=0
stop_on_stop = true
log = true
print = false 

The interface to the general purpose pins on the Raspberry Pi.

  • pin_out: controls which pins are output. Default output is pin 12 and 16. Both are set to a low value (1 would give a hight value). Pin 12 and 16 is the pins next to the 'start' (pin 13) and 'stop' (pin 6) buttons. The remaining pins are 19, 26, 21, and 20.
  • stop_on_stop: determines if the mission should stop, when the 'stop' button is pressed.

Used by the module in sgpio.cpp'.

[imu]

[imu]
rate_ms = 12
gyro_offset = 0 0 0
log = true
print_gyro = false
print_acc = false 

  • rate_ms: is the data interval for the IMU (Inertial Measurement Unit) data. The data is generated with a 1ms interval, but the USB bandwidth is limited.
  • gyro_offset: is the value that will be subtracted from the raw gyro values by the Regbot board. The unit is rad/sec.

Used by the module in simu.cpp.

[edge]

[edge]
rate_ms = 8
highpower = true
lograw = true
printraw = false
calibwhite = 1000 1000 1000 1000 1000 1000 1000 1000
calibblack = 0 0 0 0 0 0 0 0
whitethreshold = 700
crossingwidth = 0.08
crossingwidthd = 1
sensorwidth = 0.12
log = true
lognorm = true
print = false
kp = 40.0
lead = 0.3 0.5
taui = 0.0
logcedge = true
logctrl = false
printctrl = false
maxturnrate = 7.0

Line sensor parameters.

  • rate_ms: data update rate in ms. Data is generated at 1ms intervals.
  • high-power: Full or half power to the line sensor LEDs.
  • calibwhite: The calibration values for white (use raubase --white to calibrate).
  • calibblack: The calibration values for black (use raubase --white to calibrate).
  • whitethreshold: threshold for detection of white (in range 0..1000).
  • crossingwidth: width of the line to be classified as a crossing line (in meters).
  • crossingwidthd: a factor for change since the last update; the value is then added to the width if the value is increasing.
  • sensorwidth: width of the sensor (meters).
  • kp: proportional gain for the line follow controller.
  • lead: Two values for a Lead filter in the control forward loop, the zero time constant and the alpha value.
  • taui: The time constant for the integrator zero.
  • maxturnrate: is an output limit of the edge controller before being sent to the heading controller.
  • The log and print values control use of logfiles and print to console.

Used by the modules in sedge.cpp, medge.cpp and cedge.cpp.

[mixer]

[mixer]
log = true
print = false

Used by the module in cmixer.cpp.

[motor]

[motor]
kp = 7.0
lead = 0 1.0
taui = 0.05
maxmotv = 10.0
log = true
print_m1 = false
print_m2 = false

  • kp: proportional gain for the motor velocity controller.
  • lead: Two values for a Lead filter in the control forward loop, the zero time constant and the alpha value.
  • taui: The time constant for the integrator zero.
  • maxmotv: is the maximum motor voltage the controller allows as output.

Used by the module in cmotor.cpp

[heading]

[heading]
kp = 10.0
lead = 0.0 1.0
taui = 0.0
maxturnrate = 3.0
log = true
print = false
  • kp: proportional gain for the heading controller.
  • lead: Two values for a Lead filter in the control forward loop, the zero time constant and the alpha value.
  • taui: The time constant for the integrator zero.
  • maxturnrate: limits the turn rate before being sent to the motor velocity controller.

Used by the module in cheading.cpp.

[pyvision]

[pyvision]
host = localhost
port = 25001
log = true
print = false
enabled = false

A socket server is generated with these parameters - intended to communicate with Python modules:

  • host: is the hostname.
  • post: is the port number.
  • enabled: The server can be disabled if it is not used.

Used by the module in spyvision.cpp-

[servo]

[servo]
rate_ms = 50
log = true
print = true

The position of the servoes can be obtained from the Regbot board. Note that this is valid only if the servo is controlled, i.e. enabled (by setting the initial position and velocity).

  • rate_ms: is the update interval for receiving the servo position.

Used by the module in cservo.cpp.

[dist]

[dist]
rate_ms = 45
ir13cm = 70000 70000
ir50cm = 20000 20000
uscalib = 0.00126953125
log = true
print = false
sensor1 = sharp
sensor2 = sharp

Two distance sensors are supported by the Regbot board.

  • rate_ms: is the data interval for the distance measurements (generated at about 50ms interval).
  • ir13cm: is the calibration value for an object at 13cm from the sensor (sharp sensor only).
  • ir50cm: is the calibration value for an object at 50cm from the sensor (sharp sensor only).
  • uscalib: is the scale factor to meters (sharp sensor only).
  • sensor1, sensor2: is the sensor type (all robots are mounted with a Sharp 2Y0A21 sensor)

Used by the module in sdist.cpp.

[joy_logitech]

[joy_logitech]
log = true
print = false
device = /dev/input/js0
limit = 1.5 1.5 0.1
button_fast = 5
axis_vel = 4
axis_turn = 3
slow_factor = 0.3
axis_servo = 1
servo = 1
device_type = Logitech Gamepad F710 

These parameters are used by the module in sjoylogitech, an optional gamepad that can be used to control the robot remotely.

[plan20]

[plan20]
run = false
log = true
print = true
  • run: determines if this behaviour plan is to be used.

Used by module in bplan20.

[plan21]

[plan21]
run = false
log = true
print = true
  • run: determines if this behaviour plan is to be used.

Used by module in bplan21.

[plan40]

[plan40]
run = false
log = true
print = true
  • run: determines if this behaviour plan is to be used.

Used by module in bplan40.

[ini]

[ini]
; set 'saveconfig' to 'false' to avoid autosave = 
saveconfig = true
version = 524 2023-12-31 11:48:38
  • saveconfig: can be set to false to prohibit updating of the configuration file robot.ini.
  • version: is the SVN version number and date of the uservice.cpp' file.

Used by the module in uservice.cpp