Before preforming any experiments with the Jaemi Hubo, it is necessary to properly calibrate the joints to ensure repeatability of motion and alleviation of unnecessary bending moments when standing or walking. The sections below detail the procedure to calibrate the lower body of the Jaemi Hubo.
From left to right: long metal ruler, short metal ruler, liquid magnetic level, laser level
When calibrating the joints, make sure that the laser level is projecting perpendicular to the face of the joint
Side view aligning the hip, knee, and ankle pitch joints using the laser level
Front view aligning the hip and ankle roll joints using the laser level
Use landmarks like holes to align the joints of the lower body
Use the metal ruler to check the yaw alignment of the lower body. The ruler will be flush with both limbs if the yaw is properly calibrated
Follow the steps of powering on the Jaemi Hubo in the proceeding section up to zeroing the joints. Make sure that the robot is lifted off the ground before attempting to move any joints.
Zero the joints of the lower body (click Search next to each joint of the lower body and waist, RHY, RHR, RHP, RKP, RAP, RAR, LHY, LHR, LHP, LKP, LAP, LAR, WST). Make sure the robot is off the ground when doing this.
Lower the robot to the ground onto a flat, level plate (Hubo calibration plate). Use the three screws on the plate and the ball level to ensure that the plate is level with the ground. Check with laser level the alignment of the joints of the lower body. Use landmarks like joint bearings and axes to check the alignment. Make sure the level is as perpendicular to the joint surface as possible.
If joints are not aligned, lift the robot and change the values in the boxes beneath the joint names and press Go Offset. The leftmost box represents the number of full rotations of the motor (4000 encoder ticks to one full rotation) while the rightmost box represents the number sub-rotations of the motor (below 4000 ticks). The rightmost box also controls the direction of rotation (e.g. “1, -1000” will move the motor 5000 ticks in the negative direction while “1, 1000” will move the motor 5000 ticks in the positive direction.
The offset values are absolute, meaning that they are referenced from the zeroed position of each joint coinciding with the joint's mechanical reference.
Use a straight-edged metal ruler to check to see whether or not the legs are flush with one another. Also, check the distance between the legs to verify that both are parallel.
Once the proper offsets have been found, record the values of the offsets and click Exit in the z-phase dialog window. Click CAN OFF and Exit to exit the program.
Open parameter.par under projectname\khr3win in a text editor. This file contains the motor parameters that are loaded onto the motor drivers when the robot initializes CAN communication. The data form a matrix whose row and column represented values are listed below. Unless mechanical changes are made to the robot in the form of replacing motors, harmonic drives or belts with differing components (e.g. smaller/larger harmonic drive, smaller/larger timing belt, encoder with a different number of ticks), do not change the any other values. To set the default home position, change only the values in columns 5 and 6 (rotation offset; sub-revolutions, direction).
File contents:
Column values:
Row values:
The procedure below details the steps needed to operate the Jaemi Hubo and execute basic built-in gestures and walking functionality. It is imperative to follow the instructions in this section exactly as there is no error checking in the Jaemi Hubo GUI.
Before powering the robot or attempting to move any joints, make sure that the robot is lifted off the ground at least 3“ above the ground when the legs are fully extended. If a medical hoist is being used, make sure to spread apart the legs of the hoist using the lever at the rear.
Check to verify that all switches on the power panel behind the Jaemi Hubo are facing down.
Plug in the power supply to an outlet and connect the five pin keyed barrel connector to the back of the Jaemi Hubo's power board.
(Optional) Install the Battery
Installing a battery is optional to powering the Jaemi Hubo. It is strongly recommended to connect the power supply to the robot when using a battery as many of the current batteries do not hold proper charges.
Turn on the main 48V supply switch on the power panel.
Turn on both switches for the left and right body PCs. Currently, only the left body PC is installed. However, both switches must be activated to power the cooling fans which are required for the PCs to function normally. The PC will beep audibly upon booting.
Connect to the body PC using either a wired LAN connection or over the HuNet wireless network. The body PC will attempt to connect to HuNet if the network is detected by the wireless adapter. Both ports are set to static IPs. The IP for the wireless connection is 192.168.0.102. The IP for the wired connection 192.168.0.112. HuNet supports DHCP and can be connected to using default network settings. The wired LAN connection requires setting a static IP (e.g. IP: 192.168.0.113, Mask: 255.255.255.0, Default Gateway: 192.168.0.1).
Open a remote desktop application. To use RDC under Windows, go to:
Start → run → “mstsc.exe” (Windows XP or later)
Start → Search → “remote desktop connection” (Windows Vista or later)
Log into the robot using the following credentials:
User: hubo
Login: #@^#.. (SHIFT + 3263..)
Once logged in, wait for the desktop to load.
All Jaemi Hubo applications are created using a template of the original source code made in Visual Studio 6.0. The core elements of the code (RTX) interface with the low-level elements of the system that require precise timing like the motor controllers and sensors. The Windows portion of the code controls the GUI and interfaces with the code running on the RTX portion of the system. It is possible to modify the code on both the Windows side and RTX side of the program to implement custom functions. The procedure to build and run a template program is discussed below.
Upon loading the desktop, double-click on the Visual C++ 6.0 shortcut to launch Visual Studio 6.0.
All Hubo programs have an associated hubo2.dsw file with workspace parameters. Open the workspace file associated with the project that you're working with and wait for the project to load in Visual Studio.
Right-click on the project and select Set as Active Project.
Right-click on the project and select Clean.
Right-click on the project and select Build.
Right-click on the project and select Set as Active Project.
Right-click on the project and select Clean.
Right-click on the project and select Build.
Click the red exclamation point button at the top of the toolbar to run the program.
Switch ON the sensor switch and motor driver switch on the power panel behind the Jaemi Hubo. The motor drivers and sensors will turn on but the joints will still be pliable as the activation command has yet to be sent.
Move the joints as close to their homed position as possible to ensure proper homing. The legs and arms should be facing straight down and the torso should be flush with the pelvis. Keep each limb at least 1” apart from other limbs and the body.
Wait for the program to communicate with the motor drivers and sensor boards. If CAN communication is successful, the dialog box will return the following message.
0th JMC Board is ready for 10 msec Int. time. 1th JMC Board is ready for 10 msec Int. time. 2th JMC Board is ready for 10 msec Int. time. 3th JMC Board is ready for 10 msec Int. time. 4th JMC Board is ready for 10 msec Int. time. 5th JMC Board is ready for 10 msec Int. time. 6th JMC Board is ready for 10 msec Int. time. 7th JMC Board is ready for 10 msec Int. time. 8th JMC Board is ready for 10 msec Int. time. 9th JMC Board is ready for 10 msec Int. time. 10th JMC Board is ready for 10 msec Int. time. 11th JMC Board is ready for 10 msec Int. time.
0th EJMC Board is ready for 10 msec Int. time. 1th EJMC Board is ready for 10 msec Int. time. 2th EJMC Board is ready for 10 msec Int. time. 3th EJMC Board is ready for 10 msec Int. time. 4th EJMC Board is ready for 10 msec Int. time. 5th EJMC Board is ready for 10 msec Int. time.
0th Sensor Board is ready. 1th Sensor Board is ready. 2th Sensor Board is ready. 3th Sensor Board is ready. 4th Sensor Board is ready. 6th Sensor Board is ready.
Zeroing the joints of the Jaemi Hubo references the motion of the joint to a mechanical landmark (switch) on each joint. Before using the Jaemi Hubo, the joints must be properly calibrated.
The ZPhase dialog window contains the controls to both home the Jaemi Hubo's joints and set joint offsets relative to the current offset. Click Search next to each joint or click Auto Setup at the bottom of the window. Note: If a joint fails during the auto setup routine, it must be reset by clicking Search next to the failed joint.
This next section details the steps needed to zero the IMU and force-torque sensors to enable the Jaemi Hubo to balance and walk.
Click on the exclamation point icon provided that no code has been modified.
This will null the FT sensors again. This action must do this a minimum of one time. Make sure that the values in the left boxes of Mx, My, Fz for the left and right feet and the wrist are all between -4 and 4 before continuing. Each time F/T Null is pressed, the program will take the difference between the current value and zero and add that to the FT offset.
The tilt of the torso should be between 70 to 100 for pitch and -10 to 10 for roll.
Wait about 20 seconds for the tilt compensation to begin.
Click the Start button in the dialog window to begin the ZMP homing procedure. This procedure requires around 5 to 10 minutes to settle on the proper values depending on the quality of the joint calibration. The desired values for the X-axis and Y-axiz ZMP are 10mm and 0mm (+/- 0.3mm) respectively.
The ZMP calibration is complete.
The Jaemi Hubo is now ready to walk and perform gestures.
The following few steps must be take to complete the setup phase to run the Jaemi Hubo and enable waling and gestures. Further walking commands are covered in the walking section of the tutorial.
The Jaemi Hubo will begin stepping in place. This routine sets flags within the program that will enable walking and other gestures to be performed later.
The Jaemi Hubo will stop moving and return to the default crouched position. This button must be pressed to conclude all walking commands.
Before attempting to run any walking routines, please make sure that the walking in place routine in the preceding section has been run. Also, please make sure to allow sufficient slack in the hoist cables and power cord when walking or performing any gestures.
In the Kirk walking dialog window, the buttons Walk Ready and Home set the posture of the Jaemi Hubo to the crouched walking position and the upright standing position, respectively. The Jaemi Hubo will be set to the crouched walking pose by default during calibration. Please be sure that the Jaemi Hubo is in this position before attempting to run any walking routines.
When a walking routine is running, all other buttons in the window will be disabled except for the Stop button. Routines will loop continuously unless prompted to terminate. Press the Stop button to end any routine currently running and wait until the robot is stationary before attempting to begin another routine.
Walking in place is a necessary step in completing the initial setup to run the robot as described in the preceding section. Make sure that the robot is stationary before pressing Walk in place. Once pressed, the robot will continuously step in place. Press Stop to terminate the routine.
The buttons GO_FWD and GO_BWD command the Jaemi Hubo to walk forward and walk backward, respectively. Make sure the robot is stationary before pressing either GO_FWD or GO_BWD. The robot will continuously move in the desired direction until the Stop button is pressed.
The step length can be changed by changing the value in the Step Length text field. The default value is 150 mm.
The buttons L_side and R_side command the Jaemi Hubo to side-step to the left and right, respectively. Make sure the robot is stationary before pressing either L_side or R_side. The robot will continuously move in the desired direction until the Stop button is pressed.
The side-step length can be changed by changing the value in the Side Step Length text field. The default value is 60 mm.
The buttons CW and CCW command the Jaemi Hubo to turn clockwise and counterclockwise, respectively. Make sure the robot is stationary before pressing either CW or CCW. The robot will continuously move in the desired direction until the Stop button is pressed.
The turning angle can be changed by changing the value in the Turning Angle text field. The default value is 15 degrees.
Gestures are a collection of upper body motions that can be performed through the Gesture dialog window. Click on Gesture in the Kirk walking dialog window to open the Gesture dialog window. The buttons in the Upper Body Gesture group perform a set of programmed gestures with the gesture description as the button name. For instance, pressing Raise Right Arm will raise and lower the Jaemi Hubo's right arm as a predefined routine. More complex motions can be performed by clicking on buttons like Taichi. These motions will conclude automatically and the robot will return to its default crouched position.