Gesture - Balance

 

 

Here's gesture/balance.py

I got most of the left hand worky, and I've fixed the "snap" bug where other axis go to 0 when it moves.  

The InMoov service currently has all this initial calibration, although more can be adjusted - specifically the right hand's calibration needs fixing up, and even the left hand 2nd & 3rd joint should probably not curl so much - and I haven't had time for the thumb.

These changes are in the latest v1.1.108

1. Download the jar from the latest link... and --install depdencies 

2. make a data/JMonkeyEngine/assets/Models/ directory
3. drop the latest VinMoov4.j3o file from Gael in.
4. start mrl 
       java -jar myrobotlab.jar

5. start a InMoov service named i01
6. in python use the i01 to start the simulator

7. type
i01.startSimulator()
and press the execute button

8. You should get something like this ..
The menu has hotkeys to the scene graph
R = rootNode
C = camera node

Navigation is 
Alt + Left Mouse Button = Rotate
Alt + Shift  + LMB = Pan
Alt + Ctrl + LMB = Zoom

I just copied the gestures/balance.py into the python tab and executed it.   I imagine most should work that way.


Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
hairygael's picture

Waooo!!Super progress!I am

Waooo!!

Super progress!

I am glad you found how to solve the issue related to snaping parts when it would start.

I just tried the version 1.1.108 to see if all seems okay and I noted some odd positions of cursor at start up.

I am testing VinMoov4 as you described above:

-Jaw (cursor is set at 180 although it should be at "rest")

-Bicep left and right (cursor is set at 180 although it should be at "rest")

-Omoplate left and right (cursor is set at 180 although it should be at "rest")

-index, majeure, ringFinger, pinky of the  left hand (cursor is set at 90 although it should be at 0)

-The Neck servo is inverted (when going at 0 the head should go down)

-The rollNeck servo is inverted (when going at 0 the head should lean to the right side of the robot, it's own right side)

-It's great to see the fingers work!! I noted that there is a mapping strange effect, which can be seen when going back from 180 to 0 moving the cursor slowly and stoping and moving the cursor again. The finger repositions itself many times.

-The wrist is snaping, but I have been testing so many things in Blender to try to solve that effect, that I am not sure anymore if I am using the same VinMoov file as you are. I can see in your video that the wrist is not snaping, so I am guessing it must be my file.

 

And also testing it after launching INMOOV_START.bat:

Which makes me wonder about if VinMoov should be using default mapping at all time or should it be using the mappings set by the user in his config files.

-If VinMoov always use the default mappings, it's good for new builders to refer as they can see what can be wrongly assembled on their real InMoov.

-If VinMoov use the config of the user, it will reflect the real InMoov, but in this case the user cannot see if he has a wrong position potentiometer on some parts.

Conclusion: we would need an option to select if VinMoov is using default or user mappings.(or another suggestion)

 

 

GroG's picture

Waoooo !  goodtimes :) Servo

Waoooo ! 

goodtimes :)

Servo Slider Positions
These are off because I disabled ServoEvents which previously the system was driven on .. I'll look into re-enabling it and this should put the servos gui sliders in the correct position.

Neck
I noticed in the VinMoov4.j3o I'm using it appears to have 2 identically named nodes ...

This will cause problems - I currently prevent new nodes from being added with duplicate names, but at the moment I do not check models that are imported.

Rolling Fingers
yeah .. it happens on other joints too in the right conditions .. It has to do with an animation "overrunning" an end boundary - then it sees itself "far away" from its destination, and continues to try again from the other side.   Probably better test conditions for when an animation should stop.

Right Hand
currently the right hand is completely messed up because the left hand calibration doesn't seem to be applicable to the right.

RollNeck
fixed ...  will be in next build

WristSnapping
send me the latest - the source of files should always come from you - i don't think i modified anything, but just in case give me your latest - btw, how are you maintaining versioning ?

Config
Very simple - vinmoov comes with settings, and these setting shoudl represent as closely as possible to your inmoov.  However, if user config is supplied, then both vinmoov and user inmoov will adjust accordingly.

GroG's picture

No Wrist Snapping

But the wrist is rotating on an axis which is not quite expected ... video show "first" movement - so there is no longer any "snapping" - however the angles which the node is at are not aligned to the angle which you want it to rotate..

 

 

neck - fixed

rollNeck - fixed

The details of the calibrations are here :
https://github.com/MyRobotLab/myrobotlab/blob/worke/src/main/java/org/myrobotlab/service/InMoov.java#L2452

Your welcome to adjust these as you desire, additionally, you can "override" them simply by using the peer name in python .. e.g. :

i01_jme.setMapper("i01.head.jaw", 0, 180, -50, 30)

This will change the rotation mapping of the jaw - and shift it 50

Perhaps it would be useful to take a side by side video with the camera in the same location in space & virtual space of both inmoovs performing the same gestures ..  Just an idea ...

hairygael's picture

Hello Greg,Testing version

Hello Greg,

Testing version 1.1.110

Fingers are working on the right hand!! ( I need to check because they curl a bit too far.)

Neck and rollNeck are fixed!

For the wrist rotation, I have the same issue.  It seems it takes the global axis instead of the local axis. Although when I try in JMonkey SDK it works as expected.

I noticed the velocity in general on vinmoov is not working as expected.

(-1) is currently slow, when it should be at maximum velocity.

To make a test I set a virtualservo at velocity (99) and it was going much faster than (-1) which is not correct. (I wouldn't say it is not logic, because the fact that the maximum velocity being -1 is a bit non common sense, but that has been debated for months)

:)

We need to figure what is going on with the jaw, because currently when VinMoov speaks, he opens widely the jaw and doesn't close it anymore.

Maybe it is related to the mouthControl map settings.

In this version, the eyeY is having an issue, I think they go opposite direction as real InMoov.

UPDATE:

When running vinmoov with the START_INMOOV.bat, the mappings are not totally the same.

Here is what I currently have:

i01.jme.setMapper("i01.head.jaw", 0, 180, -0, 10)
i01.jme.setMapper("i01.head.eyeY", 0, 180, 105, 80)     I had to reverse, 0 is when the eyes look down
i01.jme.setMapper("i01.head.eyeX", 0, 180, 0, 140)     

i01.jme.setMapper("i01.head.rollNeck", 0, 180, 10, -10)
i01.jme.setMapper("i01.torso.midStom", 0, 180, 0, 180)

i01.jme.setMapper("i01.rightArm.bicep", 0, 180, 0, -130)
i01.jme.setMapper("i01.leftArm.bicep", 0, 180, 0, -130)

I would be interested to hear if when you run the same starting bat you get similar results compared to the video I have sent you.