Wednesday, January 21, 2015

[RM2] Motion File Format cont. (pose slider bar value)

In the last post we've learned how to translate the motion text file. Now let's look into the pose values representing the position of the joints.

I created a new motion file with a pose,
"L shoulder pitch"  => 10 degree and "L shoulder roll" => -5 degree.

Let's look at the motion file.
The slider number of "L shoulder pitch" is 23, and "L shoulder roll" is 22, so we will look into the 22nd and 23rd numbers.
You can check them by having your cursor over the slider, or by looking at pose slider property.

Here are the represented values:
L shoulder pitch:  23, 10degree, 0x0884 (2180)
L shoulder roll:    22, -5degree, 0xc53e (-15042)  => hex to signed decimal conversion

Let's look at pose slider property.
In the slider property, there is a value for "unit corresponding 1 (deg)".
In this case, the unit value is 218.
2180 / 218 = 10
Wow, we got the value representation of the "shoulder pitch"!
How about the shoulder roll???
-15042 / 218 = -69
... not quite right...

We are missing one more thing to take into a count here.
When we work with those robot, we always do "Calibration" of the servo motors, and those calibration data will be saved and used for calculating the position of the servos as well.
In your robot project folder, there is a init file called "medit_defpose.ini".

Let's take a look at "medit_defpose.ini" file!

Under "Axisenable", our slider 23 is listed at 18th, and the "Defpose_Value" representation at 18th is "0x0000".  For slider 22, it's 0xc980.

Now we have:
L shoulder pitch:  23, 10degree, 0x0884 (2180), 0x0000 (0)
L shoulder roll:    22, -5degree, 0xc53e (-15042), 0xc980 (-13952)

Let's do the calculation!
(2180 - 0)/218 = 10
(-15042 - (-13952))/218 = -5

Wow, that was simple (^_^)/

Friday, January 16, 2015

[RM2] Motion File Format

Let's analyze motion file!
If you open one of your RM2 motion file, you will see lots of numbers and chars etc...

I added comments in the pose name so that i can easily see what the blocks are in the editor.

Here is what you see in the text editor.

Let's look at them!

I'm guessing those are the definitions for the type of motion file and identifying what formatting it is.

Line2:  _ENABLE_AXIS:[62]
this is the definition for number of enabled axis(slider bars)?

Line4:  _MOTION_INFO:[[]]-[50]-[10]-[9]-[0]-[1]-[-1]
Line5:  _STARTMOT:
Those lines represents the "Start Block".
[[]]:  this is the name of the pose, since its start block and does not have name, it's being empty.
[50]-[10]:  this is the position of the pose block.  take a look at other "MOTION_INFO" it has the same values as (x, y) noted in the name of the pose blocks.
[9]:  this is some value associated with the "arrow ->" going from the start block to the next.  if you change the position of the "dot" on the arrow, the value will change.
[0]:  Not 100% sure about this but if we follow the lest of the blocks, this should be the value for the second arrow, which does not exist on the start block. I would say keep it "0" for the start block.
[1]:  This is the identification of the block which the arrow is connected to.
_STARTMOT:  this is the identification for start block.
[-1]:  This is the indication of the block which the second arrow is connected to.  there is no second arrow on the start block, so its showing up "-1".

Line7:  _MOTION_INFO:[[P0 (50,50) 50step START->P1]]-[50]-[50]-[23]-[6]-[3]-[-1]
Line8:  _POSE:[50]-[0x0000,0x0aa5,0x3e97,0xf5c8,0x0000,0X0000,0x0000,0xf55b,0xc169, ....
Those lines represents the first pose block "P1".
_MOTION_INFO:  This part looks the same as the start block...
<!>  Notice that this pose is connected to the second pose and mysteriously the identification indicated here says "3".  Let's keep eye on this value to see if we can figure out how this work...
_POSE:[50]:  the value 50 is the number of the steps.  You can chek it by looking at other pose blocks.
[0x0000,0x0aa5,0x3e97 ...:  Those values are the value representing the "slider", you can check them by changing one and see the difference.

Line10:  _MOTION_INFO:[[   END   ]]-[50]-[736]-[16]-[46]-[-1]-[-1]
Line11:  _ENDMOT:
Those lines represents the end block.... Well, why it's showing up after the first pose block???
The order of the pose blocks listed in the motion file is the order of the blocks created.  When you create a new file, it will automatically creates "Start", "Pose0", and "End" blocks.  Therefore, the end block comes before the second pose block. That's my guess...

Line13:  [[P1 (45,133) 40step P1->P2]]-[45]-[133]-[6]-[6]-[4]-[-1]
Line14:  _POSE:[40]-[0x0000,0x0aa5,0x3e97,0xf5c8,0x0000,0X0000,0x0000,0xf55b,0xc169,...
Those lines represent the second pose block.
this pose has value "4" as the indication of the connecting pose!

Line16:  _MOTION_INFO:[[P2 (49,208) 30step P2->END]]-[47]-[201]-[6]-[6]-[5]-[-1]
Line17:  _POSE:[30]-[0x0000,0x0aa5,0x3e97,0xf5c8,0x0000,0X0000,0x0000,0xf55b,0xc169,
Those lines represent the third pose block.
Now the connection pose is "5"!

Line19:  _MOTION_INFO:[[OP1 CR64 CTSUB CON255 OP1-IF1]]-[47]-[265]-[6]-[6]-[6]-[-1]
Line20:  _VARCON:[0]-[64]-[255]
Those lines represent the operational block.  
All the parameters used for operation is in the line 20.
 _VARCON:  indication of operation block
[0]:  indication of type of operation. In this case, its constant subtraction
[64]:  The memorry address where the calculation result is stored.
[255]:  constant value.
This block has connection pose value "6".

Line22:  _MOTION_INFO:[[IF1 V64>50 YP1 NBK]]-[46]-[334]-[54]-[46]-[7]-[3]
Line23:  _MIF:[1]-[64]-[50]
Those lines represent the condition block.  
[1]:  this represents type of condtion its looking for. in this case, it's "Greater than".
[64]-[50]:  values used for checking the conditions.
[7]-[3]:  Indication of connection blocks 

Line25:  _MOTION_INFO:[[BK1 YP2 NEND]]-[53]-[397]-[16]-[46]-[2]-[4]
Line26:  _OLDLOOP
Those lines represent the break block.
[2]-[4]:  indicates connecting blocks.

Now, have you figure out how find out which block connects to which???
By looking at how I have them connected to in the RM2, here is the number representation of the blocks.

Start:  0
P0:  1
P1:  3
P2:  4
OP1: 5
IF1: 6
BK1:  7
END: 2

You should notice it by now that the numbering of the blocks are based on the order you see in the editor (order of the blocks that created).
You can see that by ordering them by how its listed in the text editor.

Start:  0
P0:  1  
END: 2
P1:  3
P2:  4
OP1: 5
IF1: 6
BK1:  7

Wow!  That's really simple isn't it???
Now you can creat a simulation software and create your robot project from your own simulator!!!

Friday, December 19, 2014

[KTX] How to change the animation assigned to remote controller buttons

1.  Download and Install RM2
If you do not have RM2 installed on your PC, please download and install RM2.

2.  Create/Open Robot Project
If you do not have your robot project, please take a look at this page and create a new robot project.

If you already have your robot project ready, locate and double click on your robot project file.

Here is the screen shot of the RM2 main window.

3.  Connect Mini USB to your Robot
There is a Mini USB port at the top on its back and behind its neck.  Make sure that the robot is powered off and connect Mini USB cable to the robot.

4.  Establish Connection
Go to the RM2 tool bar and click on the connect button.

5.  Open Transfer Window
Click on the Transfer button, it will open up a transfer window.

Here is the screen shot of the transfer window.

6.  Select control map
Select the control map and click on Edit button.

7.  Select animation to make some change
Select assigned animation that you would like to make a change.
The button assignment is shown under “Performing condition”.

Click on Edit button, it will open up “input preference window”.

8.  Change assigned animation 
Click on the “Choose” button.

Select the animation file that you would like to assign, then click “Open”.

You can also change button assignment by checking on the different check box for button inputs.

Click “OK” on the “Control map input preference” window.

Now the assigned animation has been changed from “Nod” to “Greeting”.

9.  Save and Transfer the updated control map setting 
Click on the save button and save the modified control map setting, then close the window.

Transfer modified CPU settings and close the transfer window.
Then click "Close" and close the transfer window.

10.  Disconnect the Robot
Click on the Connect button and disconnect the robot from RM2.
Then, pull the Mini USB cable from the robot.

Thursday, September 5, 2013

[KTX] Installing Remote Controller

It's really getting hard to find PS2 remote controllers new/used...
When you buy our KTX robots from us, make sure you get the remote also!

Here is the new version of KTX remote controller, VS-C3.

The remote controller for one of our demo KTX is getting old and having problem with the analog stick...
Let's replace with new VS-C3!

1.  Remove 4 screws and take the front body panel off.

2.  Remove 2 screws and take the old receiver out.

3.  Connect new receiver.

4.  Place the AAA batteries inside remote controller and turn on the remote controller.

5.  Place battery inside the robot and turn on the robot, then press the button switch on the receiver.

6.  The red and green LEDs should start blinking faster.  Press the "analog" button once on the remote controller.
7.  If the remote controller is paired ok, The LEDs should stop blinking and stay turned on.

8.  Place the receiver and screw it on.

Monday, July 1, 2013

[VS-RC003] Analog Board IX-008

Here are some useful information on IX-008.

<Setting up IX008>
1. Settings on the Dip Switch
    1, 2, 3 => OFF, 4 => ON  (it will set the address 0x92 to the board for I2C communication)
2. Settings on the Jumper Pin
    Short 1 and 2 => 5V from CN2-9, Short 2 and 3 => 3.3V from CN2-9
3. Pin Configuration on CN2 Analog IN
    CN2-1:  CH0
    CN2-2:  CH1
    CN2-3:  CH2
    CN2-4:  CH3
    CN2-8:  CH7
    CN2-9:  Power (5V or 3.3V set by the JP1)
    CN2-10 GND

<Setting up Vsrc003 from RM2>
1. Add the analog board from “CPU Preference”.
2. Go to Advanced Settings
3. Change “Data input variable” to “0” for none used channels
4.  “Apply” the settings and transfer the updated CPU preference to VSRC003

Tuesday, April 30, 2013

[KTX] First time using RobovieMaker2

This Post is for the KTX Users who received KTX pre-assembled.
Please have your RobovieMaker2 manual ready in case you need more information.

Once you have had fun with your robot, you would wonder how you can change the animations on those robots.  well, it's pretty simple using our software called RobovieMaker2.
Here is a little tips to get you easy start!

When you start RobovieMaker2 for the first time, it will not be able to locate your robot project file.
Just create one from the scratch!
Please make sure that you are selecting correct robot model.
Also, do NOT connect your robot yet, and do NOT check "initialize CPU board".

Click "Create", and now you have a new robot project file.
Let's connect your robot now!
Connect usb cable and click on connection button on RM2.

When you connect your KTX humanoid robot to RobovieMaker2, it will shows a dialogue box asking for "creating new project".
Normally you can select your robot project that you've been using for the robot...
Since the robot does not come with the original Robot Project file, you cannot chose that option.

Just select "No" on the dialogue.
It will establish connection and load all the CPU configuration from the robot (Vsrc003), without flashing the memory.

Now, click on the transfer button.
Transfer window "Mode switching and adjusting..." will show up.
Click on the transfer button "Transfer the preferences to CPU board".
This will load all the settings to the CPU board, your robot now has the same name as specified in your project file.

Wow, now you have your robot project file ready for your programming!

Tuesday, August 21, 2012

[Robot Parts] Omnidirectional Sensor

The omnidirectional sensor is an image sensor that can observe 360 degree at a time.  The surrounding scenery is reflected to the omnidirectional mirror, and it corrects image data from the camera mounted looking up facing the mirror.

<Installation of software and driver>
Step 0:  Make sure your camera is not connected onto your PC.
Step 1:    Insert CD into your PC.  It will start setup program.  If not, open the content inside the CD and run “Setup.exe” under “ODS/camera/software” folder.
Step 2:  Select “Install IUC PCCam Driver”, and follow the instruction.  It will install camera driver and TViewer software.
Step 3:  Connect your camera to USB port.
Step 4:  Start TViewer.  It will show you camera image.

The drivers (included in the CD) come with the sensor did not run on my win7 PC...
The one I have is really old version so it wasn't updated for win7.

If you run into the same problem for some reason, please check on the manufactures website and download newest drivers for your use.