Ahahah...  it should say "Virtual good times" ...  this is nice .. the virtual Arduino is now talking all the way back to the MRL Arduino  GOOD TIMES !  What does this mean?  virtual sensors? virtual events? ??? 

 

Well, not completely .. but soon we should be able to run our favorite scripts with all the other MyRobotLab services .. like voice recognition, ProgramAB, and our Virtual InMoov will respond and talk and do nifty gestures ... 

WITHOUT REAL SMOKE !!!!  or many of the other problems associated with "real" hardware :D  

 

Ouch !

We'll need to do this after the virtual InMoov

 

https://code.google.com/p/ic2020/source/browse/#svn%2Ftrunk%2Fic2020_vo…

20141210 - Ok, here's an update.  Blender.py starts two TCP Servers - one for "control" and the other for serial connections.  Control messaging models the MRL Message in JSON form.  So its channel is used for MRL telling Blender what is going to go into virtual land.  

We want things with serial connections to go into virtual land.  Why?  Very simply, its the way the computer sees peripheral devices.  For example, the computer connects to all micro-controllers through a serial port.  Some motor controllers are controlled through a serial port (SaberTooth & EddieControlBoard).  Many things are controlled through serial ports, so this is a good road to pick, if we are making a bridge.

The goal is that we will be able to do our virtual work in MRL - like make InMoov smart and pick up objects in the virtual world.  Then after "virtual training" we unplug our MRL program and plug it into a "real" InMoov with NO CHANGES.  Plug and Pray ! :D

So I got Control & Serial channels working through the Blender Service.  At the moment setup is very easy (lower right - Create an Arduino, a Servo, and A Blender service. attach the Arduino to the Blender - this puts it into virtual world, and connect and move a servo like you would normally)

The servo is moved (e.g. servo01.moveTo(90)). The Servo tells the Arduino to send bytes to the "real" Arduino (in our case the virtual one) which go over the newly improved Serial service with TCP relay, which in turn fly out of MRL and into the Blender.py serial server (top left)  WOOHOO ...

Anyone have a blender servo I can move ? :D

[[home/GroG/Blender.py]]

Yay - multi-threaded, socket server in Blender, thanks to Gareths cutting edge virtual InMoov work ..

Now the MRL <---->  Blender bridge is building !  With the socket server we can now connect from another socket (on same or different machine)

We want to move Sir Gareths virtual craps playing hand with MRL !

Here's the roadmap of communication

InMoov (MRL) ------> Servo(MRL) ---> Arduino (MRL) ----> (Virtual Arduino/UART) (MRL) ----- TCP/IP -----> Servo (Blender)

the Virtual Arduino/UART with TCP/IP out is the next brick !  Bwahahahaha soon virtual InMoov will be very busy throwing dice with whole body ! 

[[home/GroG/Blender.SocketServer.py]]

Gareth

9 years 11 months ago

WoW ... do I detect a sliding vertex there..... thats Just Awesome..

....just another 278222 to go (the rig Gael sent me)

....does this mean the end of serial RS232 ports as we know them....

... and somehow (ponders with chin tap) the "Virtual Arduino" becomes redundant too..... (or could one find a home in the Blender python code....hmmmm), these real and virtual things are confusing me..

Highest Respect on Spanning the Bridge ....

Akashi_Bridge

I think this might worky ....

Step 1 ... A Blender Service is created in both MRL and Blender .. these two guys coordinate all the subsequent connections, and on the Blender side the Blender service will add, modify or teardown other virtual endpoints and services based on what the MRL Blender service tells it.

Starting up should look a little like ths :

1. Start MRL & Start Blender
2. Run a Blender Service.py in Blender which listens on port 8989 for control messages
3. Start a MRL Blender service - it connects to the Blender Service.py
4. Start an Arduino in MRL arduino01

5. (Here's the fun part) Tell MRL's Blender service you need a virtual serial port over TCP/IP for arduino01
6. It creates a virtual UART + TCP client and tells the Blender Service.py what is needed, the Blender Service creates a server socket for incoming connection, and creates a virtual arduino01

7. Servos are created and attached in MRL - this information is send to the MRL Blender Service and it tells Blender to do the same (create virtual Blender Servos) - some initial position is set like  the orgin (0,0,0) - but and the user will be able to move or set all the details of X,Y,Z and rotation depending on what is needed

Finally No not the end of "real" serial ports.  Real serial is supported by Blender too !  

As drivers we want options - and 2 bridges are better than one !

You could use the real serial bridge with a null modem cable, a virtual loop back, or some other means..

Creating virtual loop backs has always been a pain, and null modem cable you need 2 serial ports and some  wire ..   We'll still support it but the TCP/IP is like the express freeway, easy to start, no additional parts needed.. and all of a sudden BOOM your on your way ! 

kmcgerald

9 years 10 months ago

BUILD A BRIDGE OUT OF 'ER!!

BUILD A BRIDGE OUT OF 'ER!!!!!!!

Just keep on hacking until you get across.

Your image KMC is pretty close are things like they are now........

Just for progress update 201412 of reduction of vertex count (circa 40% at momo)

White = InMoov Lite version

Pink = old mesh for convertion

Gareth

9 years 10 months ago

Goodness...... there is me thinking just a few tweaks to link ....

I can see you are "Stringing" it with a bigger perspective in mind. (ie. virtual Arduino----nice....)

...and now possibilities to work on InMoov "AnyWhere" & "Anytime" ....no rest for the wicked as they would say..... (saves a lot of batteries and calibration)