Package: pyroombaadapter
PyRoombaAdapterA Python library for Roomba Open InterfaceWhat is this?This is a python library for Roomba Open Interface(ROI)This module is based on the document:iRobot® Roomba 500 Open Interface (OI) SpecificationIt aims to control a Roomba easily.This module is only tested on Roomba 690 model.InstallYou can use pip to install it.$ pip install pyroombaadapterpyroombaadapter · PyPIRequirementsPython 3.6.x or higher (2.7 is not supported)pyserialDocumentationPlease check the document for all API and usages.Welcome to PyRoombaAdapter’s documentation!Usage examplesAll examples are in examples directory.Click each image to see each example movie.Go and back exampleThis example uses "move" API.move API"""Go and back example with roomba"""fromtimeimportsleepimportmathfrompyroombaadapterimportPyRoombaAdapterPORT="/dev/ttyUSB0"adapter=PyRoombaAdapter(PORT)adapter.move(0.2,math.radians(0.0))# go straightsleep(1.0)adapter.move(0,math.radians(-20))# turn rightsleep(6.0)adapter.move(0.2,math.radians(0.0))# go straightsleep(1.0)adapter.move(0,math.radians(20))# turn leftsleep(6.0)#Print the total distance traveledprint(f"distance:{adapter.request_distance()}mm, angle:{adapter.request_angle()}rad")Play song1This example uses "send_song_cmd" and "send_play_cmd" API.send_song_cmd APIsend_play_cmd API"""Play Darth Vader song"""fromtimeimportsleepfrompyroombaadapterimportPyRoombaAdapterPORT="/dev/ttyUSB0"adapter=PyRoombaAdapter(PORT)adapter.send_song_cmd(0,9,[69,69,69,65,72,69,65,72,69],[40,40,40,30,10,40,30,10,80])adapter.send_play_cmd(0)sleep(10.0)Play song2This example uses "send_song_cmd" and "send_play_cmd" API.send_song_cmd APIsend_play_cmd API"""Play namidaga kirari by spitz"""fromtimeimportsleepfrompyroombaadapterimportPyRoombaAdapterPORT="/dev/ttyUSB0"adapter=PyRoombaAdapter(PORT)adapter.send_song_cmd(0,10,[66,67,69,67,66,62,64,66,67,66],[16,16,16,32,32,16,16,16,16,64])sleep(1.0)adapter.send_song_cmd(1,9,[66,67,69,67,66,71,59,62,61],[16,16,16,32,32,32,16,16,64])sleep(1.0)adapter.send_song_cmd(2,13,[62,64,61,62,64,66,62,64,66,67,64,66,71],[16,16,16,16,16,16,16,16,16,16,16,16,16])sleep(1.0)adapter.send_song_cmd(3,7,[71,67,64,62,61,62,62],[16,16,16,16,48,16,64])sleep(3.0)adapter.send_play_cmd(0)sleep(4.0)adapter.send_play_cmd(1)sleep(4.0)adapter.send_play_cmd(0)sleep(4.0)adapter.send_play_cmd(1)sleep(4.0)adapter.send_play_cmd(2)sleep(4.0)adapter.send_play_cmd(3)sleep(4.0)Read sensorsThere are two ways how to read sensor values. Request manually on demand:"""Read Roomba sensors"""fromtimeimportsleepfrompyroombaadapterimportPyRoombaAdapterPORT="/dev/ttyUSB0"adapter=PyRoombaAdapter(PORT)adapter.change_mode_to_passive()# Request sensor value manuallyprint(adapter.request_charging_state())print(adapter.request_voltage())print(adapter.request_current())print(adapter.request_temperature())print(adapter.request_charge())print(adapter.request_capacity())print(adapter.request_oi_mode())print(adapter.request_distance())print(adapter.request_angle())Start a data stream:"""Read Roomba sensors"""fromtimeimportsleepfrompyroombaadapterimportPyRoombaAdapterPORT="/dev/ttyUSB0"adapter=PyRoombaAdapter(PORT)adapter.change_mode_to_passive()# Read sensor value from data streamadapter.data_stream_start(["Charging State","Voltage","Current","Temperature","Battery Charge","Battery Capacity","OI Mode"])sleep(1)print(adapter.data_stream_read())sleep(1)print(adapter.data_stream_read())sleep(1)print(adapter.data_stream_read())sleep(1)adapter.data_stream_stop()ContributionAny contributions to this project are welcome!Feel free to make an issue and a PR to improve this OSS.LicenseMITAuthorsAtsushi Sakai