Gulliver: Converting KHR-1/RCB-1 Robot Motions For The RCB-3 Controller
We're prepping Gulliver, our KHR-1 robot, for the RoboGames competition this June in San Francisco, and the first step was to give him a brain transplant - a brand new Kondo RCB-3 controller. Mechanically, and electrically, the change was surprisingly simple. Basically we carefully removed the old RCB-1 controller - labeling all the servo cables, installed the new RCB-3 controller, removed the jumper and plugged in the booster module, then reconnected all the servo cables.
Of course, the robot needed to be trimmed so that it would start from the correct Home Position, but that process was very straight forward. The next challenge was to create some motion sequences, and the shortest path was to just load and convert some of the old motion sequences so that they could be used with the new configuration.
Before we get into the detailed conversion procedure, we'd like to thank the staff at the Kondo RoboSpot facility and RT Corporation in Akihabara. They were both extremely generous with their time, expertise, and encouragement as we converted Gulliver.
Since we have multiple robots, and the Heart to Heart-3 (H2H3) software stores information like the trim settings and initial parameters in its default directory, we created separate directories for each robot with their own copy of the application.
To avoid running the wrong setup with a particular robot, we created backgrounds for H2H3 in different schemes and labeled them with the configuration information. Also, to make setup easier, we arranged the servo sliders to match the physical positions on each robot.
Our H2H3 setup for Gulliver (KHR-1 with the RCB-3 controller) follows the basic robot layout that we used with the original controller. With H2H3, the sliders and control bars can be moved around to any position and then locked, so users are encouraged to experiment to find the layout that feels natural for them,
Converting KHR-1/RCB-1 Motion Sequences
Using H2H3, open the old KHR-1/RCB-1 motion sequence you want to convert using the folder icon and file selection pop-up window. Since there was no POS label information created by the RCB-1, all of the POS objects will be labeled "DATA".
This example uses the advanced walking motion sequence for the KHR-1/RCB-1, but the same process applies to converting any of the motion sequences.
For this configuration, the channel assignments haven't changed, but the servo and speed values need to be scaled to operate properly with the RCB-3 controller.
Scaling the Servo Values
To scale all the servo values for all objects in the motion sequence, first select all the objects-
There are two methods - either use your mouse cursor with the left button depressed to draw a box around all the objects, or a right mouse click will bring up a menu with select all as the last selection (highlighted in the screenshot above.
With all the objects selected, do a right mouse click, and pick the 'Convert' option:
The conversion screen will pop-up, initially looking like this:
The KHR-1 uses Kondo KRS-78* series servos which the RCB-1 controller drives in 1 degree increments. In other words, changing the value sent to a servo by 90 will cause it to rotate 90 degrees.
For the same servo series, the RCB-3 controller factory default parameter is 0.345 - roughly three times better resolution compared to the original KHR-1/RCB-1 configuration. A 90 degree servo rotation requires a value change of 261. Doing the math, 261/90 = 2.9 - which means that all of the servo values in the old motion sequences need to be multiplied by a factor of 2.9 to execute correctly.
Pull down the CH1 menu box, select MULT(?), then enter 2.9 as the value (see screenshot below). Repeat this for all the servo channels. Note: after entering the formula in the first box, we used the standard Windows keyboard short cuts to copy and paste it into the other boxes without having to retype.
It's a good idea to save this conversion setup under a unique name since there may be quite a few motion sequences you want to convert. Enter a name that will be easy to remember and understand later in the box in the lower left hand corner. We used "RCB1->RCB3 Data"
When you press "OK" then the servo values for all the objects in the motion sequence that you had previously selected are multiplied by 2.9.
So, now the servos will move to the correct positions as the motion sequence executes, but the speed still needs to be adjusted.
Scaling The Speed Values
The RCB-3 controller time base is faster than the RCB-1. This would cause the original RCB-1 motion sequences to run too fast, so they need to be stretched to match the original execution times by multiplying the original speed parameters by a factor of 1.333.
Select all the motion objects, as before, and open the Convert window.
Use the CH1 pull down box to select the SPD(?) function, and enter "*1.333". Since there is only one speed parameter for each object we want to modify, it only has to be entered in one channel box. Enter a name for this conversion function - we used "RCB1->RCB3 Speed", then press "OK". The speed parameters for all the objects are automatically updated.
Final Steps and Comments
Just a few final comments that may be obvious, but it's probably better to mention them anyway.
- Be sure to rename and save each converted motion sequence.
- Make sure that you trimmed the robot correctly with the RCB-3 so that it stands in the same home position as it did with the RCB-1 controller.
- Have fun!
Gulliver is a stock KHR-1 humanoid robot kit purchased in April, 2006 here in Japan. We use the original Japanese documentation and software for our competition robots, but are familiar with the English versions. For the controller upgrade, we installed the latest RCB-3 version 1.0.3 and use H2H3 version 070205, though the procedure described above will work with earlier versions of the controller and software.
We'll be posting about several other modifications and improvements to Gulliver over the next month or two as time permits.
Kondo Robo Spot (Japanese)
Kondo Robot Website (Japanese)