Plugin to connect to a Roomba. Read Sensors, Start/Stop.
[roomba] class_name = Roomba class_path = plugins.roomba cycle = 240 #0=deactivate reading sensors socket_type = bt #tcp or bt socket_addr = 00:13:04:11:14:77 # MAC for Bluetooth, IP for TCP socket_port = 1234
There are 3 attributes wich can be used with the Roomba-Plugin:
[roomba] [[command]] [[[clean]]] enforce_updates = true name = clean type = bool roomba_cmd = clean [[[dock]]] enforce_updates = true name = dock type = bool roomba_cmd = dock [[[power_off]]] enforce_updates = true name = power_off type = bool roomba_cmd = power_off [[[spot]]] enforce_updates = true name = spot type = bool roomba_cmd = spot [[[max]]] enforce_updates = true name = max type = bool roomba_cmd = max [[[test_scene]]] enforce_updates = true #drives backward for 2 seconds, then spins left for 2 seconds, then drives forward for 3 seconds, then spins right for 3 seconds, then stops and starts to clean after 2 seconds name = test-drive type = bool roomba_cmd = backward | 2 | spin_left | 2 | forward | 3 | spin_right | 3 | stop | 2 | clean [[raw]] [[[stop]]] type = bool enforce_updates = true roomba_raw = 137 | 0 | 0 | 0 [[sensor]] [[[current]]] #current in mA enforce_updates = true type = num roomba_get = current [[[temperature]]] #temperature in degrees celsius enforce_updates = true type = num roomba_get = temperature [[[voltage]]] #voltage in mV enforce_updates = true type = num roomba_get = voltage [[[button_clean]]] #clean button pressed enforce_updates = true type = bool roomba_get = buttons_clean [[[capacity]]] #capacity in mA enforce_updates = true type = num roomba_get = capacity [[[charge]]] #charge in mA enforce_updates = true type = num roomba_get = charge [[[angle]]] #angle since last request enforce_updates = true type = num roomba_get = angle [[[distance]]] #distance since last request enforce_updates = true type = num roomba_get = distance [[[buttons_max]]] enforce_updates = true type = bool roomba_get = buttons_max [[[buttons_clean]]] enforce_updates = true type = bool roomba_get = buttons_clean [[[buttons_spot]]] enforce_updates = true type = bool roomba_get = buttons_spot [[[buttons_power]]] enforce_updates = true type = bool roomba_get = buttons_power [[[remote_opcode]]] enforce_updates = true type = num roomba_get = remote_opcode [[[dirt_detect_right]]] enforce_updates = true type = bool roomba_get = dirt_detect_right [[[dirt_detect_left]]] enforce_updates = true type = bool roomba_get = dirt_detect_left [[[motor_overcurrent_side_brush]]] enforce_updates = true type = bool roomba_get = motor_overcurrent_side_brush [[[motor_overcurrent_vacuum]]] enforce_updates = true type = bool roomba_get = motor_overcurrent_vacuum [[[motor_overcurrent_main_brush]]] enforce_updates = true type = bool roomba_get = motor_overcurrent_main_brush [[[motor_overcurrent_drive_left]]] enforce_updates = true type = bool roomba_get = motor_overcurrent_drive_left [[[virtual_wall]]] enforce_updates = true type = bool roomba_get = virtual_wall [[[cliff_right]]] enforce_updates = true type = bool roomba_get = cliff_right [[[cliff_front_right]]] enforce_updates = true type = bool roomba_get = cliff_front_right [[[cliff_front_left]]] enforce_updates = true type = bool roomba_get = cliff_front_left [[[cliff_left]]] enforce_updates = true type = bool roomba_get = cliff_left [[[wall]]] enforce_updates = true type = bool roomba_get = wall [[[bumps_wheeldrops_bump_right]]] enforce_updates = true type = bool roomba_get = bumps_wheeldrops_bump_right [[[bumps_wheeldrops_bump_left]]] enforce_updates = true type = bool roomba_get = bumps_wheeldrops_bump_left [[[bumps_wheeldrops_wheeldrop_right]]] enforce_updates = true type = bool roomba_get = bumps_wheeldrops_wheeldrop_right [[[bumps_wheeldrops_wheeldrop_left]]] enforce_updates = true type = bool roomba_get = bumps_wheeldrops_wheeldrop_left [[[bumps_wheeldrops_wheeldrop_caster]]] enforce_updates = true type = bool roomba_cmd = bumps_wheeldrops_wheeldrop_caster
There are several availabilitys to connect to Roomba Serial Port. This was tested with a DIY-bluetooth-modul. This can be done in do-it-yourself or you can buy it i.e. “FT41 BlueRoom” from Fussel-Tronic. Not tested is a connection trough a wifi-rs232 adapter.
apt-get install bluez
Choose socket_type = ‘bt’ and add the Roomba Bluetooth-Mac in socket_addr = XX:XX:XX:XX:XX:XX
!!! Not tested yet !!! Choose socket_type = ‘tcp’ and add the IP and Port of your Roomba-Remote in socket_addr = 192.168.2.123 and socket_port = 1234
Good doocumentation to Roombas SCI: http://www.robotiklubi.ee/_media/kursused/roomba_sumo/failid/hacking_roomba.pdf