Update 2016: Web interface for your Indego (click here)
Update 2015: Bosch Indego Connect
This page describes some internal details of the robot mower “Bosch Indego”. The Indego is the only (known to me) robotic mower that …
1. can locate where it is, and so
2. navigate to a specific location in the garden.
One can literally look the Indego over your shoulder by looking into the generated maps, and so learn more about it. Here is an animation of the mapping (Click to play):
It is immediately apparent that the map is already complete at the first perimeter loop run and that the map is not corrected in further mowing sessions. I have placed the Indego map over an estate map and areal photo.
The dark grey line is the map border. You can see that the orientation of the map border sections is very accurate but the distances are not. The reason is that the sensor for measuring the orientation (Gyro + Compass) is very accurate, but the sensor for measuring the distances (odometry) is not particularly accurate.
One can only speculate about the exact algorithms of Indego, probably it works as follows:
-perimeter signal strength (2 coils)
-motor encoders/odometry (measures traveled distance/cm), accuracy depending on terrain 70-95% per meter
-gyro and compass (compass is tilt corrected by acceleration sensor), measures course/orientation , accuracy <1 degree
Mapping: after installation, the robot travels along the perimeter wire and generates a map of the garden.
Localization: the short-term position is estimated by odometry – if the Indego hits the perimeter, the estimated position is corrected. To improve the position estimation, the perimeter field strength is probably used and stored in the map ( ‘particle filter/Monte Carlo localization’). Sometimes, the Indego has no estimation where it is on the map (e.g. if you stop it manually) – then it travels along the perimeter wire and computes a ‘correlation’ with the map to find out its position. Often, a short perimeter section is sufficient for a secure position estimation (=high correlation with the map).
Gyro calibration: Every 3.5 minutes the Indego stops (turns of all motors) and “calibrates”. Then the gyro offset (caused by temperature variations) is measured and probably also the absolute orientation (via compass), and so the gyro orientation is corrected (as the summing up of the gyro values will otherwise drift after a few minutes).
Compass calibration: Sometimes the Indego simply rotates at a fixed position – it is quite possible that it is calibrating the compass during this time (like a sailing ship that calibrates its compass by sailing a circle). Calibration a compass means finding the minimum/maximum values of each compass axis (x,y,z).
3600HA2100 – —, 0V/–
3600HA2101 – Indego, 230V/EU
3600HA2102 – Indego, 230V/EU
3600HA2103 – Indego 800, 230V/EU
3600HA2104 – Indego 850, 230V/EU
3600HA2200 – Indego 1300, 230V/EU
3600HA2201 – Indego 1300, 230V/EU
3600HA2300 – Indego 1000 Connect, 230V/EU
3600HA2301 – Indego 1200 Connect, 230V/EU
3600HA2302 – Indego 1100 Connect, 230V/EU
3600HA2303 – Indego 13C, 0V/EU
3600HA2304 – Indego 10C, 0V/EU
Cover hanger and bumper
The cover is mounted with a rubber ‘joystick’ at 3 positions on the body. That way the cover works like an universal ‘bumper’ for the whole body. As soon as the Indego encounters an obstacle, the cover will move slightly (consume the impact energy), the motor current will increase, and the center ‘joystick’ will trigger one of the 4 hall effect sensors (north, west, east, south). I think they are linear hall effect sensor ICs with analog output. Possibly Allegro A1324. The IC’s have 324 written on them.
The mowing motor can be lifted up/down, 24V, 87W, 5A, 3700 rpm, 22 Ncm
(photo source of last two drive and gear photos: http://www.roboter-forum.com/showthread.php?4384-Bosch-Indego/page80)
ACTUATOR AEM81002808, DC 36V, D383A2, estimated 30 Watt
ACTUATOR AEM81002813, DC 36V, G196D1
gear motor wiring (assumption): thick wires (white and green) for motor +/- and thin wires for encoder (red VCC, black GND, blue/yellow encoder signals)
- Charging station generates DC voltage 4.8 V – Looking at robot front side, left side is (+) and right side is (-)
- Robot contacts charging station, DC voltage drops to 2.8 V
- This voltage drop (and the robot’s front magnet) is detected by charging station, and it generates 42 V for a few seconds
- These 42 V are detected by robot, and now you can turn on robot via display.
- Charging station sends “magnet OK” signal (HIGH=4.2V, LOW=1.8V) after turning off 42V.
Magnet OK signal as follows (LOW time microseconds, HIGH time microseconds):
(12, 228), (168, 124), (64 , 124), (68 , 224), (172, 124), (588, 224), (172, 124), (592, 228), (68 , 124), (68 , 120), (68 , 124), (68 , 120), (64 , 228), (904, 224), (176, 224), (484, 53192)
- As long as “magnet OK” signal is not sent, robot displays “perimeter error”.
chip-on-glass (COG) module, 77mm x 61mm, 240×160 pixels, 35+2 pins at display, 20 pins at socket (0.5mm pitch, 10.5mm width), maybe based on ‘uc1698u’, maybe compatible to: Truly MG240160-1(ch) , RA8822S controller
(or ST7529, LH1560, LH1562 controller)
truly TSF 8G0661FPC-A2-E (Indego)
truly 8G1293FPC-A2-E (Indego Connect)
Power Standby (32V power, no 32V charge signal)
TP329, TP140, TP58: 32V
Power ON (32V power, 32V charge signal)
TP207, TP27, TP10, TP9: 32V
TP269, TP105, TP7: 12V
TP320, TP215: 6V
TP328, TP327, TP311, TP298, TP224, TP127, TP2: 5V
TP304, TP248, TP246, TP243, TP238, TP237, TP219, TP184, TP183, TP68, TP41: 3.3V
TP178, TP126: 2.5V
TP325, TP56, TP55, TP42, TP11: 1V
Power ON (32V power, no 32V charge signal)
TP27: 5V (charger data signal)
(JTAG + Nexus/IEEE-ISTO 5001-2003)
location: near SD card reader, pin1 points to board center
MPC5604P IDCODE: 0x5ae2101d [0101 1010111000100001 00000001110 1]
TDI--7 8 --GND TDO--6 9 --GND TCK--5 10--GND EVTI--4 11--NC RESET--3 12--TMS VDD--2 13--GND NC--1 14--JCOMP
Arduino code (setting debug bit not working/incomplete): jtagduino
More details in robotic forum: http://www.roboter-forum.com/showthread.php?17511-Indego-am-Schreibtisch-auslesen
VCC--10 11--TP304 GND--9 12--TP199 GND--8 13--R81 GND--7 14--R82 GND--6 15--TP196 GND--5 16--TP197 GND--4 17--TP198 GND--3 18--12 GND--2 19 GND--1 20
TXD (pin 114) — TP263
RXD (pin 116) — TP296
another serial communication on TP181, TP182, TP240, TP242, TP243?
Bosch 4254X P1235 16 Pins
Linear 2E 3850 B2606 30 Pins (Step-down Converter)
LV123A (Monostable Multivibrator)
U17: IT OPA 2376 (Low Noise OPAMP)
U99: 5V0L6US (diode array)
U89: ATMEL1116 (EEPROM)
U33, U34: 74HC30D (NAND)
U111, U113, U116, U117: MV3581 (OPAMP)
U91: NXP 5V0L6US (diode array)
Q71: 028N06LS HAB231 (power transistor)
U61: TI OPA 2376 (OPAMP)
U96: LTC4355IS (diode OR)
GPS (not found in Connect)
u-blox Neo 6m (WAAS, EGNOS, MSAS, GAGAN), 50 channels
Indego Connect measurements (Wire diameter 1mm): At startup, the sender ‘probes’ within 5 seconds from 5W to 25W, then returns to 5W again.
Measurement A B C D E F 220m 120m 100m 50m 20m OFF Upp 63 42 20 12 4 - Umin -19 -13 -7 -4 -1.9 - Umax 44 28 14 8 2.2 - PowerW 5 5 5 5 2.7 3 ROhm 7 4.7 2.4 1.2 0.6 -
Measurement B: repaired 120m wire, ROhm would be an effective 156m wire
Measurement A: includes the repaired 120m wire (see measurement B)
Signal sender, perimeter open:
Signal sender, perimeter closed:
Signal shape: square, pseudo-noise signal code (10 Khz samples), that means the sequence “1,-1” would be a 5 Khz square, and the sequence “1,1,-1,-1” would be a 2.5 Khz square. The signal code evaluation could be performed by a Matched Filter (correlation). The average frequency is 3.7 kHz.
The signal (Indego Connect) is 82 samples (8 ms long, repeating every 100ms, so 92ms silence) and can be detected by a correlation:
The result of the correlation is polarity (sign of the correlation) and the signal strength. The polarity tells us if the robot is inside/outside, and the signal strength tells us how far it is away from the perimeter.