Raubase configuration file: Difference between revisions

From Rsewiki
No edit summary
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Back to [[Robobot B | Robobot]]
Back to [[Robobot software description]]




Line 6: Line 9:
If no ''robot.ini'' is found, it will be created with default values.
If no ''robot.ini'' is found, it will be created with default values.


The default ''robot.ini'' looks (pt) like this:
The default ''robot.ini'' has (pt) the values described on this page.
 
[section]
name = value
 
Each of the sections is explained a bit here.


==== [Service] ====
==== [Service] ====
Line 48: Line 46:


These are read-only. The robot (and Raspberry) names are determined by the Regbot.
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] ====
Line 57: Line 60:
  confirm_timeout = 0.04   
  confirm_timeout = 0.04   


On Linux, all devices are seen as files, and ''/dev/ttyACM0'' is the default name for the Regbot interface.
* 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''.


''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.
==== [state] ====
==== [state] ====


Line 68: Line 72:


This is for the heartbeat messages from Regbot. This includes e.g. the battery voltage.
This is for the heartbeat messages from Regbot. This includes e.g. the battery voltage.
 
Used by the module in ''sstate.cpp''.
 
==== [encoder] ====
==== [encoder] ====


Line 77: Line 83:
  encoder_reversed = true
  encoder_reversed = true


The motor encoder has the movement of the motors. The ''rate_ms'' is the interval at which the encoder count is sent by the Regbot.
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.
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.


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] ====
Line 91: Line 99:
  log = true
  log = true
  print = false
  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] ====
Line 97: Line 112:
  pins_out = 12=0 16=0
  pins_out = 12=0 16=0
  stop_on_stop = true
  stop_on_stop = true
blink_period_ms = 600
  log = true
  log = true
  print = false  
  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] ====


Line 110: Line 130:
  print_acc = 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] ====


Line 123: Line 148:
  crossingwidthd = 1
  crossingwidthd = 1
  sensorwidth = 0.12
  sensorwidth = 0.12
sensorwidthd = 0.7
  log = true
  log = true
  lognorm = true
  lognorm = true
Line 135: Line 159:
  maxturnrate = 7.0
  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] ====


Line 140: Line 182:
  log = true
  log = true
  print = false
  print = false
Used by the module in ''cmixer.cpp''.
   
   
==== [motor] ====
==== [motor] ====
Line 151: Line 195:
  print_m1 = false
  print_m1 = false
  print_m2 = 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] ====


Line 161: Line 212:
  log = true
  log = true
  print = false
  print = false
enabled = 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] ====


Line 171: Line 228:
  print = false
  print = false
  enabled = 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] ====
Line 178: Line 242:
  log = true
  log = true
  print = true
  print = true
printctrl = false
 
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] ====


Line 191: Line 260:
  sensor1 = sharp
  sensor1 = sharp
  sensor2 = 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] ====
Line 206: Line 284:
  servo = 1
  servo = 1
  device_type = Logitech Gamepad F710  
  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] ====
Line 213: Line 293:
  log = true
  log = true
  print = true
  print = true
* run: determines if this behaviour plan is to be used.
Used by module in ''bplan20.cpp''.
   
   
==== [plan21] ====
==== [plan21] ====
Line 220: Line 304:
  log = true
  log = true
  print = true
  print = true
* run: determines if this behaviour plan is to be used.
Used by module in ''bplan21.cpp''.
   
   
==== [plan40] ====
==== [plan40] ====
Line 227: Line 315:
  log = true
  log = true
  print = true
  print = true
* run: determines if this behaviour plan is to be used.
Used by module in ''bplan40.cpp''.
   
   
==== [ini] ====
==== [ini] ====
Line 234: Line 326:
  saveconfig = true
  saveconfig = true
  version = 524 2023-12-31 11:48:38
  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''

Latest revision as of 17:39, 31 December 2023

Back to Robobot

Back to Robobot software description


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 has (pt) the values described on this page.

[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.cpp.

[plan21]

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

Used by module in bplan21.cpp.

[plan40]

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

Used by module in bplan40.cpp.

[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