Wheeled robot and control method thereof

12422855 ยท 2025-09-23

Assignee

Inventors

Cpc classification

International classification

Abstract

A robot includes a body, a pair of wheels rotatably provided at a lower part of the body, a cargo box provided at an upper part of the body, an inertial measurement sensor configured to measure a tilt angle of the body, a pair of wheel encoders configured to measure a rotational angle of each of the pair of wheels, a cargo box encoder configured to measure a tilt angle of the cargo box, a pair of wheel motors configured to transmit a torque to each of the pair of wheels, a cargo box motor configured to transmit a torque to the cargo box, and a controller. The controller is configured to control the pair of wheel motors and the cargo box motor to allow the robot to make a double axis inverted pendulum motion on an axis of each of the pair of wheels and the cargo box.

Claims

1. A robot, comprising: a body; a pair of wheels rotatably provided at a lower part of the body; a cargo box provided at an upper part of the body; an inertial measurement sensor configured to measure a tilt angle of the body; a pair of wheel encoders configured to measure a rotational angle of each of the pair of wheels; a cargo box encoder configured to measure a tilt angle of the cargo box; a pair of wheel motors configured to transmit a torque to each of the pair of wheels; a cargo box motor configured to transmit a torque to the cargo box; and a controller configured to: control the pair of wheel motors and the cargo box motor to allow the robot to make a double axis inverted pendulum motion on an axis of each of the pair of wheels and the cargo box, based on an output from each of the inertial measurement sensor, the pair of wheel encoders, and the cargo box encoder, determine, based on the robot being balanced by the double axis inverted pendulum motion, a slope of a current position of the robot based on the torque applied to the cargo box, the torque applied to the pair of wheels, and the tilt angle of the body, and determine a ratio between the tilt angle of the body and the tilt angle of the cargo box based on the slope to thereby move the robot while maintaining balance.

2. The robot of claim 1, wherein the controller is configured to estimate the slope using (i) the output of each from the inertial measurement sensor, the pair of wheel encoders, and the cargo box encoder, as state variables and (ii) the torque applied to the cargo box and the torque applied to the pair of wheels, as control input.

3. The robot of claim 2, wherein the controller is configured to estimate the slope based on (i) a correlation among the state variables and the control input, (ii) a mass and a dimension of each of the body, the pair of wheels, and the cargo box, and (iii) a gravitational acceleration.

4. The robot of claim 2, wherein the controller is configured to determine a target tilt angle of the body and a target tilt angle of the cargo box to move the robot while maintaining balance in the slope, based on the ratio between the tilt angle of the body and the tilt angle of the cargo box.

5. The robot of claim 4, wherein the controller is configured to determine the ratio between the tilt angle of the body and the tilt angle of the cargo box in the slope based on the tilt angle of the body, the tilt angle of the cargo box, and an angular speed of the pair of wheels being constant.

6. The robot of claim 5, wherein the controller is configured to determine the ratio between the tilt angle of the body and the tilt angle of the cargo box based on a slope determined in real time while the robot is moving, to thereby adaptively change the target tilt angle of the cargo box.

7. The robot of claim 5, wherein the controller is configured to: determine the target tilt angle of the cargo box to ensure the cargo box is parallel to a ground, and determine the target tilt angle of the body based on a ratio among the determined target tilt angle of the cargo box, the tilt angle of the body, and the tilt angle of the cargo box.

8. The robot of claim 4, wherein the controller is configured to perform feedback-control on the pair of wheel motors and the cargo box motor, based on an angular speed of the pair of wheels, the target tilt angle of the body, and the target tilt angle of the cargo box according to a movement command.

9. The robot of claim 1, wherein the controller is configured to determine a slope in each of the pair of wheels, and determine an average of the slope in each of the pair of wheels as the slope of the current position.

10. The robot of claim 9, wherein the controller is configured to adjust an output of each of the pair of wheel motors based on the slope in each of the pair of wheels.

11. A method for controlling a robot comprising a body, a pair of wheels rotatably provided at a lower part of the body, and a cargo box provided at an upper part of the body, the method comprising: controlling a pair of wheel motors and a cargo box motor to allow the robot to make a double axis inverted pendulum motion on an axis of each of the pair of wheels and the cargo box, based on an output from each of an inertial measurement sensor, a pair of wheel encoders and a cargo box encoder, the pair of wheel motors configured to transmit a torque to each of the pair of wheels, the cargo box motor configured to transmit a torque to the cargo box, the inertial measurement sensor configured to measure a tilt angle of the body, the pair of wheel encoders configured to measure a rotational angle of each of the pair of wheels, and the cargo box encoder configured to measure a tilt angle of the cargo box; determining, based on the robot being balanced by the double axis inverted pendulum motion, a slope of a current position based on the torque applied to the cargo box, the torque applied to the pair of wheels, and the tilt angle of the body; and determining a ratio between the tilt angle of the body and the tilt angle of the cargo box based on the slope to thereby move the robot while maintaining balance.

12. The method of claim 11, wherein determining the slope comprises estimating the slope using (i) the output from each of the inertial measurement sensor, the pair of wheel encoders, and the cargo box encoder, as state variables and (ii) using the torque applied to the cargo box and the torque applied to the pair of wheels, as control input.

13. The method of claim 12, wherein determining the slope comprises estimating the slope based on (i) a correlation among the state variables and the control input, (ii) a mass and a dimension of each of the body, the pair of wheels and the cargo box, and (iii) a gravitational acceleration.

14. The method of claim 12, further comprising: determining a target tilt angle of the body and a target tilt angle of the cargo box to move the robot while maintaining balance in the slope, based on the ratio between the tilt angle of the body and the tilt angle of the cargo box.

15. The method of claim 14, wherein determining the ratio between the tilt angle of the body and the tilt angle of the cargo box to determine the ratio between the tilt angle of the body and the tilt angle of the cargo box in the slope based on the tilt angle of the body, the tilt angle of the cargo box, and an angular speed of the pair of wheels being constant.

16. The method of claim 15, wherein determining the ratio between the tilt angle of the body and the tilt angle of the cargo box comprises determining the ratio between the tilt angle of the body and the tilt angle of the cargo box based on a slope determined in real time while the robot is moving, to thereby adaptively change the target tilt angle of the cargo box.

17. The method of claim 15, wherein determining the ratio between the tilt angle of the body and the tilt angle of the cargo box comprises: determining the target tilt angle of the cargo box to ensure the cargo box is parallel to a ground, and determining the target tilt angle of the body based on a ratio among the determined target tilt angle of the cargo box, the tilt angle of the body, and the tilt angle of the cargo box.

18. The method of claim 14, further comprising: performing feedback-control on the pair of wheel motors and the cargo box motor, based on an angular speed of the pair of wheels, the target tilt angle of the body, and the target tilt angle of the cargo box according to a movement command.

19. The method of claim 11, wherein determining the slope comprises: determining a slope in each of the pair of wheels, and determining an average of the slope in each of the pair of wheels as the slope of the current position.

20. The method of claim 19, further comprising: adjusting an output of each of the pair of wheel motors based on the slope in each of the pair of wheels.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) FIG. 1 illustrates an exterior of an example of a robot.

(2) FIG. 2 is a side cross-sectional view schematically illustrating an example of a robot.

(3) FIG. 3 is a control block diagram illustrating an example of a robot.

(4) FIG. 4 is a diagram illustrating an example of a robot climbing a slope.

(5) FIG. 5 is a diagram illustrating an example of determining a slope by a robot.

(6) FIG. 6 is a diagram illustrating an example of determining a slope by an observer of a robot.

(7) FIG. 7 illustrates an example where a normal state in which a robot drives in a balanced state is assumed.

(8) FIG. 8 illustrates a yaw error when an example of a robot compensates an output of each wheel motor based on a slope in each of a pair of wheels.

(9) FIG. 9 is a flowchart illustrating exemplary operations of estimating a slope and determining a tilt angle of each of a body and a cargo box, in a control method of a robot.

(10) FIG. 10 is a flowchart illustrating exemplary operations of compensating an output of each wheel motor based on a slope in each of a pair of wheels, in a control method of a robot.

DETAILED DESCRIPTION

(11) The terms such as part, device, block, member, module, and the like may refer to a unit for processing at least one function or act. For example, the terms may refer to at least one process processed by at least one hardware, such as field-programmable gate array (FPGA)/application specific integrated circuit (ASIC), software stored in memories or processors.

(12) FIG. 1 illustrates an exterior of a robot. FIG. 2 is a side cross-sectional view schematically illustrating a robot.

(13) Referring to FIGS. 1 and 2, a robot 1 can include a body 10, a pair of wheels 20 rotatably provided at a lower part of the body 10, and a cargo box 30 provided at an upper part of the body 10.

(14) As shown in FIGS. 1 and 2, the body 10 includes a first rotation shaft 11 located at a lower part of the body and to which the pair of wheels 20 are attached, and a second rotation shaft 12 located at an upper part of the body and to which the cargo box 30 is attached.

(15) On one side of the first rotation shaft 11 in the body 10, a pair of wheel motors transmitting a torque to each of the pair of wheels 20 and a pair of wheel encoders measuring a rotational angle of each of the pair of wheels 20 may be provided.

(16) On one side of the second rotation shaft 12, a cargo box motor transmitting a torque to the cargo box 30 and a cargo box encoder measuring a tilt angle of the cargo box 30 may be provided.

(17) Also, an inertial measurement unit (IMU) 110 measuring a tilt angle of the body 10 may be provided on one side of the body 10. In this instance, the tilt angle of the body 10 may refer to an angle between the body 10 and a vertical axis perpendicular to the ground.

(18) In this instance, the robot 1 may control the pair of wheel motors and the cargo box motor to allow the robot to make a double axis inverted pendulum motion on the axis and of each of the pair of wheels 20 and the cargo box 30, based on an output of each of the inertial measurement unit 110, the pair of wheel encoders and the cargo box encoder. As such, the robot 1 may achieve balance by the double axis inverted pendulum motion.

(19) Each of the pair of wheels 20 can be provided as a flexible tire capable of being deformed in a direction from a circumference to a center, allowing the robot 1 to drive while maintaining balance even in a large step or slope.

(20) The cargo box 30 can be loaded with items to be transported by the robot 1, and be provided with the cargo box motor transmitting torque to the cargo box 30, the cargo box encoder measuring the tilt angle of the cargo box 30, and the like.

(21) FIG. 3 is a control block diagram illustrating the robot 1.

(22) Referring to FIG. 3, the robot 1 can include the inertial measurement unit 110, a pair of wheel encoders 120, a cargo box encoder 130, a controller 140, a pair of wheel motors 150, a cargo box motor 160, and a storage 170. Here, the inertial measurement unit 110 measures a tilt angle of the body 10, the pair of wheel encoders 120 measures a rotational angle of each of the pair of wheels 20, the cargo box encoder 130 measures a tilt angle of the cargo box 30, the controller 140 controls a double axis inverted pendulum motion, the pair of wheel motors 150 transmits a torque to each of the pair of wheels 20, the cargo box motor 160 transmits a torque to the cargo box 30, and the storage 170 stores various information required for control.

(23) In some implementations, the inertial measurement unit 110 is provided on one side of the body 10, and may measure how much the body 10 is tilted from a vertical axis perpendicular to the ground.

(24) In some implementations, the wheel encoder 120 may be provided integrally with the wheel motor 150, and measure a rotational angle of the wheel 20 by measuring a rotational angle of the wheel motor 150. The pair of wheel encoders 120 may be provided as a known type of encoder.

(25) In some implementations, the cargo box encoder 130 may be provided integrally with the cargo box motor 160 and measure the tilt angle of the cargo box 30 by measuring a rotational angle of the cargo box motor 160. The cargo box encoder 130 may be provided as a known type of encoder.

(26) In some implementations, the controller 140 may include a basic controller 141 performing feedback-control and an observer 143 estimating a slope (disturbance) at a current position of the robot 1.

(27) When a target tilt angle of the body 10 and a target tilt angle of the cargo box 30 are determined, the basic controller 141 may control the wheel motor 150 and the cargo box motor 160 so that the tilt angle of the body 10 and the tilt angle of the cargo box 30 become the target tilt angle of the body 10 and the target tilt angle of the cargo box 30, respectively. Through the above, the basic controller 141 may allow the robot 1 to drive while maintaining balance.

(28) The observer 143 may determine the slope of the current position based on the tilt angle of the body 10, the torque applied to the pair of wheels 20, and the torque applied to the cargo box 30. Operations of the observer 143 are described in detail later.

(29) In some implementations, the controller 140 may control the pair of wheel motors 150 and the cargo box motor 160 to allow the robot to make a double axis inverted pendulum motion on an axis of each of the pair of wheels 20 and the cargo box 30, based on an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130.

(30) In this instance, the controller 140 may control the basic controller 141 to allow the robot to make a double axis inverted pendulum motion, using an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using the torque applied to the cargo box 30 and the torque applied to the pair of wheels 20 as control input.

(31) The basic controller 141 may use a correlation among the state variables and the control inputs, so that the robot 1 makes double axis inverted pendulum motion.

(32) In some implementations, when balance is achieved by the double axis inverted pendulum motion, the controller 140 may determine the slope of the current position based on the tilt angle of the body 10, the torque applied to the pair of wheels 20, and the torque applied to the cargo box 30.

(33) The controller 140 may control the observer 143 to estimate the slope, using an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using the torque applied to the cargo box 30 and the torque applied to the pair of wheels 20 as control inputs.

(34) In this instance, the observer 143 may estimate the slope using the correlation among the state variables and the control inputs, a mass and a dimension of each of the body 10, the pair of wheels 20 and the cargo box 30, and a gravitational acceleration.

(35) In some implementations, the controller 140 may determine a ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 based on the slope to allow the robot to drive while maintaining balance.

(36) In this instance, the controller 140 may control the observer 143 to determine the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 in the slope, by assuming that the tilt angle of the body 10, the tilt angle of the cargo box 30, and an angular speed of the pair of wheels 20 are constant.

(37) The controller 140 may determine a target tilt angle of the body 10 and a target tilt angle of the cargo box 30, based on the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30. Here, the target tilt angle of the body 10 and the target tilt angle of the cargo box 30 are for allowing the robot to drive in the slope while maintaining balance.

(38) For example, by determining the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 based on a slope determined in real time while driving, the controller 140 may allow the target tilt angle of the cargo box 30 to be adaptively changed.

(39) Also, the controller 140 may determine the target tilt angle of the cargo box 30 to allow the cargo box 30 to be level, and determine the target tilt angle of the body 10 based on a ratio among the determined target tilt angle of the cargo box 30, the tilt angle of the body 10, and the tilt angle of the cargo box 30. In this instance, the target tilt angle of the cargo box 30 may correspond to 0 degree based on a vertical axis perpendicular to the ground.

(40) In some implementations, the controller 140 may control the basic controller 141 to feedback-control the pair of wheel motors 150 and the cargo box motor 160, based on an angular speed of the pair of wheels 20, the target tilt angle of the body 10, and the target tilt angle of the cargo box 30 according to a movement command.

(41) In some implementations, the controller 140 may determine the slope in each of the pair of wheels 20, and determine an average of the slope in each of the pair of wheels 20 as the slope of the current position.

(42) In some implementations, the controller 140 may compensate an output of each of the pair of wheel motors 150 based on the slope in each of the pair of wheels 20, thereby allowing the robot 1 to drive without being shaken in yaw direction.

(43) The controller 140 may include at least one memory storing a program for performing the aforementioned operations and operations described below, and at least one processor for implementing a stored program. When a plurality of memories and processors are provided, the plurality of memories and processors may be integrated into one chip, or provided in physically separated locations.

(44) In some implementations, the wheel motor 150 may transmit a torque to the wheel 20, and be provided as a known type of motor. In this instance, the wheel motor 150 may include a left wheel motor transmitting a torque to a left wheel and a right wheel motor transmitting a torque to a right wheel.

(45) In some implementations, the cargo box motor 160 may transmit a torque to the cargo box 30 and be provided as a known type of motor.

(46) In some implementations, the storage 170 may store information such as the correlation among the state variables and the control inputs, the mass and the dimension of each of the body 10, the pair of wheels 20 and the cargo box 30, the gravitational acceleration, and the like. To this end, the storage 170 may be provided as a known type of recording medium.

(47) FIG. 4 is a diagram illustrating the robot 1 climbing a slope. FIG. 5 is a diagram illustrating an example of determining a slope by the robot 1. FIG. 6 is a diagram illustrating an example of determining a slope by the observer 143 of the robot 1.

(48) Referring to FIG. 4, when climbing a slope, the robot 1 may estimate a slope of a current position, and adjust a tilt angle of each of the body 10 and the cargo box 30 based on the estimated slope.

(49) In this instance, as shown in FIG. 4, when climbing stairs with large steps, the robot 1 may estimate the slope by substituting the stairs for a slope.

(50) In some implementations, even when climbing a slope, the robot 1 may control the pair of wheel motors 150 and the cargo box motor 160 to make a double axis inverted pendulum motion on an axis of each of the pair of wheels 20 and the cargo box 30, based on an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130.

(51) In this instance, the controller 140 may control the basic controller 141 to allow the robot to make a double axis inverted pendulum motion, using an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using the torque applied to the cargo box 30 and the torque applied to the pair of wheels 20 as control inputs.

(52) The basic controller 141 may use a correlation among the state variables and the control inputs, so that the robot 1 makes double axis inverted pendulum motion.

(53) In some implementations, when balance is achieved by the double axis inverted pendulum motion, the robot 1 may determine the slope of the current position based on the tilt angle of the body 10, the torque applied to the pair of wheels 20, and the torque applied to the cargo box 30.

(54) In this instance, as shown in FIG. 5, the robot 1 may determine a slope (slopeL, slopeR) in each of the pair of wheels 20, and determine an average of the slope (slopeL, slopeR) in each of the pair of wheels 20 as the slope (slope) of the current position.

(55) Specifically, each of the left and right sides of the robot 1 has a torque (T-L, T-R) to be applied to each of the wheels 20 and a tilt angle (1L, 1R) of the body 10 to achieve balance in the given respective slope (slopeL, slopeR).

(56) In this instance, a torque T to be applied to the entire robot 1 may be a sum of the torques (T-L and T-R) to be applied to the left wheel 20L and the right wheel 20R, respectively. (T=TL+TR)

(57) In this instance, the torque T to be applied to the entire robot 1 may be expressed as Equation 1 below.

(58) T = Mgrsin ( slope ) 2 Mgr slope 2 .Math. Equation 1 .Math.

(59) Here, M may correspond to a mass of the robot 1, r may be a radius of the wheel, and g may be a gravitational acceleration.

(60) Accordingly, the torques (T-L and T-R) to be applied to the left wheel 20L and the right wheel 20R, respectively, may be expressed as Equation 2 and Equation 3 below. That is, a half of a total mass of the robot may be reflected when calculating a slope of one side.

(61) T_L = 1 2 M gr slope _L 2 .Math. Equation 2 .Math. T_R = 1 2 M gr slope _R 2 .Math. Equation 3 .Math.

(62) Considering T=TL+TR, as shown in <Equation 4>, the slope (slope) of the current position of the robot 1 may correspond to the average of the slope (slopeL, slopeR) of each of the pair of wheels 20.

(63) slope = slope R + slope L 2 .Math. Equation 4 .Math.

(64) In this instance, as shown in <Equation 5>, the tilt angle of the body 10 may correspond to the average of a tilt angle of the left body 10 and a tilt angle of the right body 10 in that the slope and the tilt angle of the body 10 correspond to each other.

(65) 1 = 1 R + 1 L 2 .Math. Equation 5 .Math.

(66) Hereinafter, although it is described that the slope (slope) is determined based on the tilt angle 1 of the body 10, by <Equation 1> to <Equation 5>, it may be understood that the slope (slopeL, slopeR) of each of the pair of wheels 20 is determined by the tilt angle 1L of the left body 10 and the tilt angle 1R of the right body 10, and the average thereof is determined as the slope (slope).

(67) The robot 1 may control the observer 143 to estimate the slope, using an output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using the torque applied to the cargo box 30 and the torque applied to the pair of wheels 20 as control inputs.

(68) In this instance, the observer 143 may estimate the slope using a correlation among the state variables and the control inputs, a mass and a dimension of each of the body 10, the pair of wheels 20 and the cargo box 30, and a gravitational acceleration.

(69) That is, the observer 143 may determine the slope (slope) corresponding to a disturbance according to <Equation 6>.

(70) C [ T h T w ] = M [ .Math. 1 .Math. 2 .Math. ] + G [ 1 2 ] + D .Math. Equation 6 .Math.

(71) In this instance, as shown in FIG. 6, 1 and 2 may correspond to the tilt angle of the body 10 and the tilt angle of the cargo box 30, respectively. Also, may correspond to a rotational angle of the wheel 20. The tilt angle 1 of the body 10 may be measured by the inertial measurement unit 110, the tilt angle 2 of the cargo box 30 may be measured by the cargo box encoder 130, and the rotational angle of the wheel 20 may be measured by the wheel encoder 120.

(72) Also, T.sub.h is a torque applied to the cargo box 30, and T.sub.W is a torque applied to the wheel 20.

(73) C is a matrix representing the correlation among the state variables (1, 2, ) and the control inputs (T.sub.h, T.sub.W). M is a matrix related to the mass and the dimension of each of the body 10, the pair of wheels 20 and the cargo box 30. G is a matrix related to the gravitational acceleration. D is a matrix representing a disturbance to be estimated by the observer 143.

(74) For example, C may be expressed as <Equation 7>, and M may be expressed as <Equation 8> below.

(75) C = [ - 1 - 2 1 0 0 2 ] .Math. Equation 7 .Math. M = [ m 1 l c 2 + m 2 l 1 2 + I 1 - m 2 l 1 l 2 ( m 1 l c + m 2 l 1 ) r w - m 2 l 1 l 2 m 2 l 2 2 + I 2 - m 2 r w l 2 ( m 1 l c + m 2 l 1 ) r w - m 2 r w l 2 ( m 1 + m 2 + 2 m w ) r w 2 + 2 J w ) ] ] .Math. Equation 8 .Math.

(76) Here, m.sub.1, m.sub.2 and m.sub.w correspond to the mass of the body 10, the cargo box 30, and the wheel 20, respectively. l.sub.1, l.sub.2 and l.sub.C correspond to a length of the body 10, a length of the cargo box 30, and a length from a center of mass of the wheel 20 to a center of mass of the body 10, respectively. r.sub.w corresponds to a radius of the wheel 20.

(77) Also, G may be expressed as <Equation 9>, and D may be expressed as <Equation 10> below.

(78) G = [ - ( m 1 l c + m 2 l 1 ) g 0 0 0 m 2 l 2 g 0 0 0 0 ] .Math. Equation 9 .Math. D = [ 0 0 ( 2 m w + m 1 + m 2 ) gr slope ) ] .Math. Equation 10 .Math.

(79) However, <Equation 7> to <Equation 10> are only examples of each matrix, and may be provided in various ways.

(80) FIG. 7 illustrates an example where a normal state in which the robot 1 drives in a balanced state is assumed.

(81) Referring to FIG. 7, the robot 1 may determine a ratio between the tilt angle 1 of the body 10 and the tilt angle 2 of the cargo box 30 based on the slope (slope), in order to drive while maintaining balance.

(82) In this instance, the robot 1 may control the observer 143 to determine the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 in the slope, by assuming that the tilt angle 1 of the body 10, the tilt angle 2 of the cargo box 30, and an angular speed of the pair of wheels 20 are constant.

(83) That is, as shown in FIG. 7, the robot 1 assumes that a value obtained by once differentiating the tilt angle 1 of the body 10 and a value obtained by twice differentiating the tilt angle 1 of the body 10 are 0, and a value obtained by once differentiating the tilt angle 2 of the cargo box 30 and a value obtained by twice differentiating the tilt angle 2 of the cargo box 30 are 0. Also, the robot 1 assumes that a value obtained by once differentiating the rotational angle of the wheel 20 is a constant and a value obtained by twice differentiating the rotational angle of the wheel 20 is 0.

(84) In this instance, the robot 1 may reflect the values shown in FIG. 7 on <Equation 6>, thereby determining the ratio between the tilt angle 1 of the body 10 and the tilt angle 2 of the cargo box 30.

(85) That is, <Equation 11> may be derived by reflecting the values shown in FIG. 7 on <Equation 6>, and the robot 1 may determine the ratio between the tilt angle 1 of the body 10 and the tilt angle 2 of the cargo box 30 based on <Equation 11>.
(2m.sub.w+m.sub.1+m.sub.2)r.sub.w sin(.sub.slope)=(m.sub.1l.sub.c+m.sub.2l.sub.1).sub.1m.sub.2l.sub.2.sub.2<Equation 11>

(86) The robot 1 may determine a target tilt angle of the body 10 and a target tilt angle of the cargo box 30, based on the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30, to drive while maintaining balance in a slope.

(87) For example, by determining the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 based on a slope determined in real time while driving, the robot 1 may allow the target tilt angle of the cargo box 30 to be adaptively changed.

(88) Also, the robot 1 may determine the target tilt angle of the cargo box 30 to allow the cargo box 30 to be level, and determine the target tilt angle of the body 10 based on a ratio among the determined target tilt angle of the cargo box 30, the tilt angle of the body 10, and the tilt angle of the cargo box 30. In this instance, the target tilt angle of the cargo box 30 may correspond to 0 degree based on a vertical axis perpendicular to the ground.

(89) In some implementations, the robot 1 may control the basic controller 141 to feedback-control the pair of wheel motors 150 and the cargo box motor 160, based on an angular speed of the pair of wheels 20, the target tilt angle of the body 10, and the target tilt angle of the cargo box 30 according to a movement command.

(90) FIG. 8 illustrates a yaw error when the robot 1 compensates an output of each of the wheel motors 150 based on a slope in each of the pair of wheels 20.

(91) Referring to FIG. 8, the robot 1 may compensate an output of each of the wheel motors 150 based on a slope in each of the pair of wheels 20, thereby allowing the robot 1 to drive without being shaken in yaw direction.

(92) For example, when a left slope is greater than a right slope, the robot 1 may control the pair of wheel motors 150 so that a torque applied to the left wheel 20L is greater than a torque applied to the right wheel 20R.

(93) Through the above, as shown in FIG. 8, a yaw error of the robot 1 may converge to a stable level.

(94) Hereinafter, implementations of a control method of a robot according to an aspect of the disclosure are described. The robot 1 described above may be used in the control method of the robot. Accordingly, a description made with reference to FIGS. 1 to 8 may be equally applied to the control method of the robot.

(95) FIG. 9 is a flowchart illustrating operations of estimating a slope and determining a tilt angle of each of the body 10 and the cargo box 30, in a control method of the robot 1.

(96) Referring to FIG. 9, the robot 1 may control the pair of wheel motors 150 and the cargo box motor 160 to make a double axis inverted pendulum motion on an axis of each of the pair of wheels 20 and the cargo box 30, based on output of the inertial measurement unit 110 and the encoders 120 and 130 (910).

(97) In this instance, the robot 1 may control the basic controller 141 to allow the robot to make a double axis inverted pendulum motion, using the output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using a torque applied to the cargo box 30 and a torque applied to the pair of wheels 20 as control inputs.

(98) The basic controller 141 may use a correlation among the state variables and the control inputs, so that the robot 1 makes double axis inverted pendulum motion.

(99) In some implementations, when balance is achieved by the double axis inverted pendulum motion, the robot 1 may determine a slope of a current position based on a tilt angle of the body 10, the wheel torque, and the torque applied to the cargo box 30 (920).

(100) In this instance, the robot 1 may determine a slope (slopeL, slopeR) in each of the pair of wheels 20, and determine an average of the slope (slopeL, slopeR) in each of the pair of wheels 20 as the slope (slope) of the current position.

(101) The robot 1 may control the observer 143 to estimate the slope, using the output of each of the inertial measurement unit 110, the pair of wheel encoders 120 and the cargo box encoder 130 as state variables, and using the torque applied to the cargo box 30 and the torque applied to the pair of wheels 20 as control inputs.

(102) In this instance, the observer 143 may estimate the slope using the correlation among the state variables and the control inputs, a mass and a dimension of each of the body 10, the pair of wheels 20 and the cargo box 30, and a gravitational acceleration.

(103) In some implementations, the robot 1 may determine a ratio between the tilt angle of the body 10 and a tilt angle of the cargo box 30 based on the slope to drive while maintaining balance (930).

(104) In this instance, the robot 1 may control the observer 143 to determine the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 in the slope, by assuming that the tilt angle 1 of the body 10, the tilt angle of the cargo box 30, and an angular speed of the pair of wheels 20 are constant.

(105) That is, the robot 1 assumes that a value obtained by once differentiating the tilt angle 1 of the body 10 and a value obtained by twice differentiating the tilt angle 1 of the body 10 are 0, and a value obtained by once differentiating the tilt angle 2 of the cargo box 30 and a value obtained by twice differentiating the tilt angle 2 of the cargo box 30 are 0. Also, the robot 1 assumes that a value obtained by once differentiating a rotational angle of the wheel 20 is a constant and a value obtained by twice differentiating the rotational angle of the wheel 20 is 0.

(106) The robot 1 may determine a target tilt angle of the body 10 and a target tilt angle of the cargo box 30 based on the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30, to drive in the slope while maintaining balance.

(107) For example, by determining the ratio between the tilt angle of the body 10 and the tilt angle of the cargo box 30 based on a slope determined in real time while driving, the robot 1 may allow the target tilt angle of the cargo box 30 to be adaptively changed.

(108) Also, the robot 1 may determine the target tilt angle of the cargo box 30 to allow the cargo box 30 to be level, and determine the target tilt angle of the body 10 based on a ratio among the determined target tilt angle of the cargo box 30, the tilt angle of the body 10, and the tilt angle of the cargo box 30. In this instance, the target tilt angle of the cargo box 30 may correspond to 0 degree based on a vertical axis perpendicular to the ground.

(109) In some implementations, the robot 1 may control the basic controller 141 to feedback-control the pair of wheel motors 150 and the cargo box motor 160, based on an angular speed of the pair of wheels 20, the target tilt angle of the body 10, and the target tilt angle of the cargo box 30 according to a movement command.

(110) FIG. 10 is a flowchart illustrating operations of compensating an output of each of the wheel motors 150 based on a slope in each of the pair of wheels 20, in a control method of the robot 1.

(111) Referring to FIG. 10, the robot 1 may determine a slope of each of the pair of wheels 20 (1010).

(112) Afterwards, the robot 1 may compensate an output of each of the pair of wheel motors 150 based on the slope in each of the pair of wheels 20 (1020).

(113) For example, when a left slope is greater than a right slope, the robot 1 may control the pair of wheel motors 150 so that a torque applied to the left wheel 20L is greater than a torque applied to the right wheel 20R.

(114) Through the above, a yaw error of the robot 1 may converge to a stable level.

(115) As is apparent from the above, in some implementations, the robot and the control method thereof can determine a tilt angle of a body and a tilt angle of a cargo box provided at an upper part of the body by estimating a slope of a current position, thereby allowing the robot to drive while maintaining balance.

(116) For example, implementations can be stored in the form of a recording medium storing computer-executable instructions. The instructions may be stored in the form of a program code, and when executed by a processor, the instructions may perform operations of the disclosed implementations. The recording medium may be implemented as a computer-readable recording medium.

(117) The computer-readable recording medium includes all kinds of recording media in which instructions which may be decoded by a computer are stored of, for example, a read only memory (ROM), random access memory (RAM), magnetic tapes, magnetic disks, flash memories, optical recording medium, and the like.