Module micromelon.robot
Collection of functions to set and get robot attributes and use the onboard screen
If using these functions over the network to a Micromelon server, image capture is available
Expand source code
"""
Collection of functions to set and get robot attributes and use the onboard screen
If using these functions over the network to a Micromelon server, image capture is available
"""
from ._robot import *
__all__ = [
"display",
"setName",
"getName",
"getID",
"getImageCapture",
"showSensors",
]
Functions
def display(text, label=None)
-
Puts the given text or the string representation of it on the robot screen
If a label is provided the screen will show "label
:text
"
The robot screen can display up to 15 characters at a timeArguments will be cast to strings
Args
text
:any
- content to put on the screen
label
:any
- optional label to put before the text
Returns
None
Expand source code
def display(text, label=None): """ Puts the given text or the string representation of it on the robot screen If a label is provided the screen will show "`label`: `text`" The robot screen can display up to 15 characters at a time Arguments will be cast to strings Args: text (any): content to put on the screen label (any): optional label to put before the text Returns: None """ text = str(text) if label: text = str(label) + ": " + text text = text[:15] return _rc.writeAttribute(OPTYPE.DISPLAY_TEXT, stringToBytes(text) + [0])
def getID()
-
Returns
The integer id of the robot.
Expand source code
def getID(): """ Returns: The integer id of the robot. """ id = _rc.readAttribute(OPTYPE.BOTID) return bytesToIntArray(id, 2, signed=False)[0]
def getImageCapture(width, height)
-
When the rover controller is connected in network mode to a micromelon server on a raspberry pi
this function can be used to capture an image from the raspberry pi cameraNote is is not recommended to request images larger than 1640x1232 as the pi camera cannot
use its video port for images larger than that and will take a long time and risk overflowing memory
The maximum capture resolutions are 2592x1944 and 3280x2464 for V1 and V2 pi cameras.
You can request images larger than that but they will be captured at that resolution and linearly scaled up.Args
width
:int
- pixel width of image to capture
height
:int
- pixel height of image to capture
Raises
Exception if the controller is not in network mode
Returns
A numpy array of the image in bgr colour format
Expand source code
def getImageCapture(width, height): """ When the rover controller is connected in network mode to a micromelon server on a raspberry pi this function can be used to capture an image from the raspberry pi camera Note is is not recommended to request images larger than 1640x1232 as the pi camera cannot use its video port for images larger than that and will take a long time and risk overflowing memory The maximum capture resolutions are 2592x1944 and 3280x2464 for V1 and V2 pi cameras. You can request images larger than that but they will be captured at that resolution and linearly scaled up. Args: width (int): pixel width of image to capture height (int): pixel height of image to capture Raises: Exception if the controller is not in network mode Returns: A numpy array of the image in bgr colour format """ if not _rc._robotCommunicator.isInTcpMode(): raise Exception("This operation is only valid over the network to a backpack") image = _rc.readAttribute( OPTYPE.RPI_IMAGE, intArrayToBytes([width, height], 2, False) ) image = numpy.reshape(image, (height, width, 3)) return image
def getName()
-
Returns
The current name of the robot as a string
Expand source code
def getName(): """ Returns: The current name of the robot as a string """ name = _rc.readAttribute(OPTYPE.ROBOT_NAME) return bytesToAsciiString(name)
def setName(name)
-
Sets the name of the robot.
This is cleared with a power cycle and displayed on the robot screen during idle times
Name will be shortened to 11 charactersArgs
name
:any
- Name to set for the robot. Will be cast to a string
Returns
None
Expand source code
def setName(name): """ Sets the name of the robot. This is cleared with a power cycle and displayed on the robot screen during idle times Name will be shortened to 11 characters Args: name (any): Name to set for the robot. Will be cast to a string Returns: None """ name = str(name)[:11] return _rc.writeAttribute(OPTYPE.ROBOT_NAME, stringToBytes(name) + [0])
def showSensors(secs=0)
-
Pause the running of your python program and show the Sensors View
Useful for debugging at a specific point in your codeArgs
secs
:number
- How many seconds to show the sensors popup before continuing
If secs <= 0 the sensors view will stay until you close it manually
Raises
Exception if secs is not a number or the function is not available
Returns
None
Expand source code
def showSensors(secs=0): """ Pause the running of your python program and show the Sensors View Useful for debugging at a specific point in your code Args: secs (number): How many seconds to show the sensors popup before continuing If secs <= 0 the sensors view will stay until you close it manually Raises: Exception if secs is not a number or the function is not available Returns: None """ raise Exception("This function is only available inside the Micromelon IDE")