Next version 'Nixie' is coming soon !

Help us to get ready with MyRobotLab version Nixie: try it !

I have continued to work on the robot legs and have them 'static' walking

All the main support parts are made in aluminum 

Still using RoboClaw boards for driving the 10 motors, all motors have encoders

New all joints have angle sensors

I have a IMU on the platform and am using roll and pitch

power is from 3 LION 3.7 volt cells on the top back,  cells are from a hybrid car

I finally listened to Ray and have the weight on the top, inverted pendulum

Javadoc link
Example code (from branch develop):
# TODO: Implement this script fpr
servomixer = runtime.start("servomixer","ServoMixer")...
Example configuration (from branch develop):
!!org.myrobotlab.service.config.ServiceConfig
listeners: null
peers: null
type: ServoMixer

General purpose service to orchestrate servos.

Javadoc link
Example code (from branch develop):
#file : Random.py (github)
#########################################
# Random.py
# description: Random message generator - sends messages
# at random intervales with random parameters
# categories: general
# more info @: http://myrobotlab.org/service/Random
#########################################
 
# start the service
python = runtime.start("python", "Python")
random = runtime.start("random", "Random")
clock = runtime.start("clock", "Clock")
 
 
def happy():
    print("i am happy")
 
 
def sad():
    print("i am sad")
 
 
def angry():
    print("i am angry")
 
 
# add a named random task
random.addRandom("random emotion", 1000, 2000, "python", "exec", "happy()", "sad()", "angry()")
 
 
# enable random events
random.enable()
 
 
def roll_dice(value):
    print("roll_dice " + str(value))
 
 
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_dice", random.intRange(1, 6))
 
 
# add a complex dice
def roll_complex_dice(value):
    print("roll_complex_dice " + str(value))
 
 
# roll the complex dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "roll_complex_dice", random.doubleRange(1, 6))
 
 
def random_color(value):
    print("random_color " + str(value))
 
 
# roll the dice every 1 to 2 seonds
random.addRandom(1000, 2000, "python", "random_color", random.setRange("red", "green", "blue", "yellow"))
 
 
# do a complex multi parameter, multi-type method
def kitchen_sink(dice, complex_dice, colors, names):
    print("kitchen_sink ", dice, complex_dice, colors, names)
 
 
random.addRandom(1000, 2000, "python", "kitchen_sink", random.intRange(1, 6), random.doubleRange(1, 6), random.setRange("red","green","blue","yellow"), random.setRange("bob","jane","fred","mary"))
 
# set the interval on a clock between 1000 and 8000
# if you look in the UI you can see the clock interval changing
random.addRandom(200, 500, "clock", "setInterval", random.intRange(1000, 8000))
 
# Chaos monkey clock starting and stopping !
random.addRandom(200, 500, "clock", "startClock")
random.addRandom(200, 500, "clock", "stopClock")
 
# disable single random event generator - must be explicit with name.method key
random.disable("python.roll_dice")
 
# you know longer should see the python.roll_dice event firing - since it was explicitly disabled
 
# stop events - but leave all random event data
# allows re-enabling
# random.disable()
 
# enable events
# random.enable()
 
# stop events and clear all random event ata
# random.purge()

The Random service can create random messages with random parameters.  Any method accessable can be called at some interval with ranges of parameters.  For example, if you wanted a Servo to move at some interval between 1 and 5 seconds between 35 and 165.

random = Runtime.start('random','Random')
random.addRandom(1000, 5000, 'servo01', 'moveTo', random.intRange(35, 165))

 

Example of Web UI list of current random method events

Javadoc link
Example code (from branch develop):
#file : Mpr121.py (github)
#########################################
# Mpr121.py
# description: MPR121 Touch sensor & LED Driver
# categories: shield, sensor, i2c
# more info @: http://myrobotlab.org/service/Mpr121
#########################################
 
# start the service
mpr121 = runtime.start('mpr121','Mpr121')
Example configuration (from branch develop):
#file : Mpr121.py (github)
!!org.myrobotlab.service.config.Mpr121Config
address: '0x5A'
bus: '1'
controller: null
listeners: null
peers: null
rateHz: 1.0
type: Mpr121

The Mpr121 service

Hello, enybody can explain me how the signals from MRL serial to Arduino is coded?
I am trying to decode but have no idea what method is used to code serial messages going to arduino.
Example from serial readings that:

Javadoc link
Example code (from branch develop):
#file : Hd44780.py (github)
#################################################################
# Example Code                                                  #
#################################################################
 
#################################################################
# First start your I2C Bus Master Device                        #
#################################################################
# If your using the Arduino Nano, comment out this line and
# uncomment the ArDuino Nano lines
raspi = runtime.start("raspi","RasPi")
#################################################################
# Start the Arduino Nano connected using /dev/ttyUSB0           #
#################################################################
#arduinoNano = runtime.start("arduinoNano","Arduino")
#arduinoNano.setBoardNano()
#arduinoNano.connect("/dev/ttyUSB0")
 
#################################################################
# Next start the PCF8574 service                                #
#################################################################
pcf = runtime.start("pcf","Pcf8574")
# Then attach it to the I2C Bus Master
# When attaching, we specify the Bus Master Device,
# the I2C Bus Number
# and the I2C address
pcf.setBus("1")
pcf.setAddress("0x27")
pcf.attach(raspi)
 
#pcf.attach(arduinoNano,"0","0x27")
 
#################################################################
# Next start the Hd44780 service                                #
#################################################################
lcd = runtime.start("lcd","Hd44780")
 
# Once the service has been started, we need to attach it to
# the PCF service
lcd.attach(pcf)
 
# this will initalise the display.
# not needed now unless you want to manually reset
# lcd.reset() 
 
# when we want to clear the screen call this
lcd.clear()
 
# You can turn the backlight on or off.
# True will turn it on, False will turn it off.
lcd.setBackLight(True)
 
# Filally to send text to the display
lcd.display("Hello World", 0)
Example configuration (from branch develop):
#file : Hd44780.py (github)
!!org.myrobotlab.service.config.Hd44780Config
backlight: true
controller: null
delay: null
listeners: null
peers: null
type: Hd44780

 
The HD44780 is the primary chip for a 16 character x 2 or 20 x 4 line LCD display.
 
These small displays can be found cheap online and are easy to use with a device with an I2C bus master.