PySphero - Utagoe-robotics/Wiki GitHub Wiki
PySphero
PySphero (BOLT supported)
Installation
Install via pip3 since ROS 2 uses Python3.
Dependencies
# apt-get install libgtk2.0-dev
# pip3 install bluepy
# pip3 install gatt
Install
# pip3 install pysphero
Restart the session.
Class Information of PySphero
Class: Sphero
Method | Package | Return Type |
---|---|---|
system_info | pysphero.device_api | SystemInfo |
power | pysphero.device_api | Power |
driving | pysphero.driving | Driving |
api_processor | pysphero.device_api | ApiProcessor |
user_io | pysphero.device_api | UserIO |
sensor | pysphero.device_api | Sensor |
animatronics | pysphero.device_api | Animatronics |
Class: SystemInfo
source: pysphero/device_api/system_info.py
Method | Return Type | Overview |
---|---|---|
get_main_application_version | Version | Get version of toy's firmware |
get_bootloader_version | Version | Get version of toy's bootloader |
get_mac_address | str | Get toy's mac address as "aa:bb:cc:dd:ee:ff" |
get_nordic_temperature | int | Return celsius temperature |
get_status_id | int | ??? |
get_sku | str | ??? |
Class: Version
class Version(NamedTuple):
major: int
minor: int
revision: int
Class: Power
source: pysphero/device_api/power.py
Method | Return Type | Overview |
---|---|---|
enter_deep_sleep | - | Send shutdown command to toy |
enter_soft_sleep | - | Send sleep command to toy |
get_battery_voltage | float | Get battery voltage |
wake | None | Wake up toy |
get_battery_state | BatteryVoltageStates | Get battery state without known volatage constants |
battery_state_changed | ChagerStates | Get charging status information |
class BatteryVoltageStates(UnknownEnumMixing, Enum):
ok = 0x01
low = 0x02
critical = 0x03
class ChargerStates(UnknownEnumMixing, Enum):
not_charging = 0x01
charging = 0x02
charged = 0x03
Class: Driving
source: pysphero/driving.py
*Mandatory
Method | Argument | Function |
---|---|---|
drive_with_heading | *speed(int: 0 to 255), *heading(int: 0 to 360), direction(Direction) | Drive heading to heading with speed speed |
set_stabilization | *stabilization_index: StabilizationIndex | ??? |
raw_motor | left_speed(int: 0 to 255), left_direction(DirectionRowMotor), right_speed(int: 0 to 255), right_direction(DirectionRawMotor) | Control of each motor separately. (Note it works strange) |
reset_yaw | None | Reset of toy's yaw |
tank_drive | left_speed(int), right_speed(int), direction(TankDriveDirection) | For Sphero RVR? |
Class: ApiProcessor
source: pysphero/device_api/api_processor.py
Method | Overview |
---|---|
echo | Send ping |
Class: UserIO
source: pysphero/device_api/user_io.py
*Mandatory
Method | Argument | Function |
---|---|---|
set_all_leds_8_bit_mask | *front_color(Color), *back_color(Color) | Set LEDs color (for only Sphero BOLT) |
set_led_matrix_one_color | *color(Color) | Set matrix one color |
set_led_matrix_pixel | *pixel(Pixel), *color(Color) | Put into pixel the color |
set_led_matrix_single_character | *symbol(str), *color(Color) | Print symbol on matrix |
set_led_matrix_text_scrolling | *string(str: max 6 symbols), *color(Color), speed(int: max 30), repeat(bool) | Print text on matrix |
set_led_matrix_text_scrolling_notify | None | ??? |
set_led_matrix_frame_rotation | rotation(FrameRotation) | ??? |
Class: Sensor
source: pysphero/device_api/sensor.py
*Mandatory
Method | Argument | Return Type | Overview |
---|---|---|---|
set_notify | *callback(Callback function), *sensors(Sensors class), interval(int), count(int), timeout(float) | None | Set notifications from sensors |
cancel_notify_sensors | None | None | Cancel notifications from sensors |
get_sensor_streaming_mask | None | Tuple | ??? |
get_ambient_light_sensor_value | None | float | ??? |
magnetometer_calibrate_to_north | None | None | ??? |
Sensor Class
Class | Attribute |
---|---|
Quaternion | x, y, z, w |
Attitude | pitch, roll, yaw |
Accelerometer | x, y, z |
AccelOne | accel_one |
Locator | x, y |
Velocity | x, y |
Speed | speed |
CoreTime | core_time |
Gyroscope | x, y, z |
AmbientLight | ambient_light |
How to Use Example
sensors.py
from time import sleep
from typing import Dict
from pysphero.core import Sphero
from pysphero.device_api.sensor import CoreTime, Quaternion
def notify_callback(data: Dict):
info = ", ".join("{:1.2f}".format(data.get(param)) for param in Quaternion)
print(f"[{data.get(CoreTime.core_time):1.2f}] Quaternion (x, y, z, w): {info}")
print("=" * 60)
def main():
mac_address = "d6:bc:6a:05:79:b6"
with Sphero(mac_address=mac_address) as sphero:
sphero.power.wake()
sphero.sensor.set_notify(notify_callback, CoreTime, Quaternion)
sleep(2)
sphero.sensor.cancel_notify_sensors()
sphero.power.enter_soft_sleep()
if __name__ == "__main__":
main()
Class: Animatronics
source: pysphero/device_api/animatronics.py
*Mandatory
Method | Argument | Return Type |
---|---|---|
play_animation | *animation_id(int), target_id | None |
play_animation_and_wait | *animation_id(int), target_id, timeout(float) | None |
perform_leg_action | *leg_action(R2LegAction) | None |
set_head_position | *position(float) | None |
get_head_position | None | float |
set_leg_position | *position(float) | None |
get_leg_position | None | float |
get_leg_action | None | R2LegAction |
stop_animation | None | None |
get_trophy_mode_enabled | None | bool |