Next version 'Nixie' is coming soon !

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

I have start to implement a way to detect if the Serial communication between MRL and arduinos is still active. The goal is to put both MRL and arduinos in a stanby state and try to reestablish connection.

The principle is simple. Arduino service in MRL send msg at fixed time and expect to get a reply (ACK) from the arduino before the timeout expired, and arduino expect to get at least 1 msg before it's timeout expire.

Currently

I just programmed MRLcomm version 35 into my Arduino Mega 2560 and am trying to communicate with it from a Windows C++ program I wrote. I can find the Mega, open the COM port, and get the MRLcomm version and acknowledgement successfully. I can also attach a servo to a pin, after which the servo centers.

 

 

And here's the result what I needed it great bends 2 phalanges together after several tested and problems. J have finally found the solution to comply with the pulleys . ... watch the video

 

SO ive created a script to add events in google calendar, with the final goal of using program AB to make the robot add them for me, the script runs pretty well and does what it is suposed, however when i try run with MRL it gives errors evrywhere, it never happened before in other scripts, does anyone have a clue?

this is the script

from __future__ import print_function
import httplib2
import os

from apiclient import discovery
import oauth2client
from oauth2client import client
from oauth2client import tools
from oauth2client import file
from apiclient.discovery import build

Ok Alessandruino - DualPwm should be worky. 
 

This is the testing I did ...

 

Javadoc link
Example code (from branch develop):
#file : Mpu6050.py (github)
#########################################
# Mpu6050.py
# more info @: http://myrobotlab.org/service/Mpu6050
#########################################
port = '/dev/ttyACM0'
# port = 'COM5'
 
mpu6050 = runtime.start('mpu6050','Mpu6050')
mpu6050.setDeviceBus('0') # When using the Arduino, we must use bus 0, on the Raspberry Pi use Bus 1
mpu6050.setDeviceAddress('0x68')
mpu6050.setSampleRate(10) # in Hz default is 3Hz
 
# end test
# raspi controler :
# raspi = runtime.start('RasPi','RasPi')
mega = runtime.start('mega','Arduino')
mega.connect(port)
 
sleep(3)
 
# mpu6050.attach(raspi,'1','0x68')
mpu6050.attach(mega)
 
# for simple orientation
python.subscribe('mpu6050', 'publishOrientation')
 
# for "all" the data !
python.subscribe('mpu6050', 'publishMpu6050Data')
 
def onOrientation(data):
    print(data)
 
def onMpu6050Data(data):
    print(data)
 
# tell refresh the current mpu data.
mpu6050.start()
Example configuration (from branch develop):
#file : Mpu6050.py (github)
!!org.myrobotlab.service.config.Mpu6050Config
address: null
bus: null
controller: null
listeners: null
peers: null
sampleRate: null
start: false
type: Mpu6050

 

MPU6050 is a service for Accelerometer and Gyro. Several different boards exists that has the MPU-6050 circuit. Different boards can be found at the Arduino site http://playground.arduino.cc/Main/MPU-6050. The board that has been used for testing on both Arduino and Raspberry Pi is the GY-521 board. 

Javadoc link
Example code (from branch develop):
#file : I2cMux.py (github)
port="COM3"
#
if ('virtual' in globals() and virtual):
    virtualArduino = runtime.start("virtualArduino", "VirtualArduino")
    virtualArduino.connect(port)
ard = runtime.start("Arduino","Arduino")
ard.connect(port)
#
i2cmux = runtime.start("i2cMux","I2cMux")
# From version 1.0.2316 use attach instead of setController
# i2cmux.setController(ard,"1","0x70")
i2cmux.attach(ard,"1","0x70")
#
mpu6050_0 = runtime.start("Mpu6050-0","Mpu6050")
mpu6050_0.attach(i2cmux,"0","0x68")
 
mpu6050_1 = runtime.start("Mpu6050-1","Mpu6050")
mpu6050_1.attach(i2cmux,"1","0x68")
Example configuration (from branch develop):
#file : I2cMux.py (github)
!!org.myrobotlab.service.config.I2cMuxConfig
address: '0x70'
bus: '1'
controller: null
i2cDevices: {
  }
listeners: null
peers: null
type: I2cMux

I2cMux is a service that can be used if you have several i2c devices that share the same address. The hardware needed is a TCA9548A and can be found as a breakout board here :I2cMux

The example script and the picture below use one I2cMux ( TCA9548A ) and two GY-521 ( MPU-6050 ) gyroscope / accelerometer boards.

Hey,

I am trying to set language for alice bot as Dutch but it is always picking up english as default language.

Code:

 

speech = Runtime.createAndStart("Speech","AcapelaSpeech")

lloyd = Runtime.createAndStart("lloyd", "ProgramAB")

lloyd.startSession("kevin", "alice2")

webgui = Runtime.create("WebGui","WebGui")

webgui.autoStartBrowser(True)

webgui.startService()

Maybe I have this wrong, but wanted to see if anyone can help out.

InMoov bicep, setup per Gael. I set the servo pot to 0. I test using Arduino IDE and everything works fine.

Now I fire up MRL, and by defaut the servo setting is at 90 for (servo.bicep) when I attach the servo (instead of 0) and everything falls apart.

If I go back and set the servo-bicep to 0 in MRL gui before I attach then the slider works fine.

Am I missing something? How can I ensure that when I start inMoov Arm I have the right setting for the servos?