Methods and systems are disclosed for controlling device movement based on a movement command. Issues on accurately controlling movement of a device such as a programmable robot and rover are addressed by first determining a command type of the movement command, followed by determining specific types of controllers for a high-level controller and a low-level controller based on the determined command type. When the command type is a linear movement, a Proportional-Integral-Derivative (PID) controller is used at the high-level controller and a Proportional/Proportional-Integral (PPI) controller is used at the low-level controller to accurately control a target distance. When the command type is an angular movement, the PPI controller is used at the high-level controller and the PID controller is used at the low-level controller to accurate control the end-heading of the device.
|
11. A programmable device, comprising:
at least one processing unit; and
at least one memory storing computer executable instructions for controlling device movement, the instructions when executed by the at least one processing unit causing the programmable movement device to:
receive a movement command as input, wherein the movement command includes command data for directing the device movement of the programmable movement device as a whole;
determine, based on one or more values of the command data, a command type of the movement command, wherein the command type comprises at least one of a linear motion command and an angular motion command;
loading a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination,
when the determined command type is the linear motion, the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional-integral (PPI) controller, the PPI controller, in response to receiving at least a trajectory profile associated with a moving part of the device in the linear movement, generating one or more signal levels for the moving part, and
when the determined command type is the angular motion command, the first controller being the PPI controller and the second controller being the PID controller, the PPI controller, in response to receiving a trajectory profile associated with the device movement in the angular movement and a current angular velocity and a heading of the device, generating one or more instructions for the second controller; and
transmit the movement command to the first controller; and
causing the programmable movement device to move according to the movement command.
1. A computer-implemented method for controlling device movement, the method comprising:
receiving a movement command as input, wherein the movement command includes command data for directing the device movement of a device as a whole;
determining, based on one or more values of the command data, a command type of the movement command, wherein the command type comprises at least one of a linear movement and an angular movement;
loading a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination,
when the determined command type is the linear movement, the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional-integral (PPI) controller, the PPI controller, in response to receiving at least a trajectory profile associated with a moving part of the device in the linear movement, generating one or more signal levels for the moving part, and
when the determined command type is the angular movement, the first controller being the PPI controller and the second controller being the PID controller, the PPI controller, in response to receiving a trajectory profile associated with the device movement in the angular movement and a current angular velocity and a heading of the device, generating one or more instructions for the second controller;
transmitting the movement command to the first controller;
causing the first controller to generate and transmit, based on the movement command, one or more instructions to the second controller; and
causing the second controller to generate and transmit, based on the one or more instructions, the one or more signal levels to a part of the device for controlling the device movement.
16. A computer-readable storage medium storing computer-executable instructions for controlling device movement, the instructions when executed by at least one processing unit, cause the at least one processing unit to perform steps of:
receive a movement command as input, wherein the movement command includes command data for directing the device movement of a device as a whole;
determine, based on one or more values of the command data, a command type of the movement command, wherein the command type comprises at least one of a linear motion command and an angular motion command;
loading a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination,
when the determined command type is the linear motion, the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional-integral (PPI) controller, the PPI controller, in response to receiving at least a trajectory profile associated with a moving part of the device in the linear movement, generating one or more signal levels for the moving part, and
when the determined command type is the angular motion command, set the first controller being the PPI controller and the second controller being the PID controller, the PPI controller, in response to receiving a trajectory profile associated with the device movement in the angular movement and a current angular velocity and a heading of the device, generating one or more instructions for the second controller;
transmit the movement command to the first controller;
causing the first controller to generate and transmit, based on the movement command, one or more instructions to the second controller; and
causing the second controller to generate and transmit, based on the one or more instructions, the one or more signal levels to a part of the device for controlling the device movement.
2. The computer-implemented method of
a linear velocity;
a linear end position;
an angular velocity; and
an end heading.
3. The computer-implemented method of
4. The computer-implemented method of
5. The computer-implemented method of
6. The computer-implemented method of
modifying, by the PPI controller, the received movement command based on movement phases of the device movement, wherein the movement phases comprise:
accelerating the device movement to the speed as specified by the movement command;
maintaining the speed of the device movement as specified by the movement command;
reducing the speed of the device movement as specified by the movement command; and
stopping the device movement as specified by the movement command.
7. The computer-implemented method of
8. The computer-implemented method of
9. The computer-implemented method of
receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and
updating the movement command based on the set of the current status.
10. The computer-implemented method of
receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and
generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
12. The programmable movement device of
a linear velocity;
a linear end position;
an angular velocity; and
an end heading.
13. The programmable movement device of
14. The programmable movement device of
receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and
updating the movement command based on the set of the current status.
15. The programmable movement device of
receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and
generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
17. The computer-readable storage medium of
a linear velocity;
a linear end position;
an angular velocity; and
an end heading.
18. The computer-readable storage medium of
receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and
updating the movement command based on the set of the current status.
19. The computer-readable storage medium of
receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and
generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
20. The computer-readable storage medium of
|
Computer-based movable devices, programmable rovers and robots, for example, have become widely available as prices of various sensors and other parts have become reasonable for use in education and entertainment settings. Such parts may include sensors such as inertia measurement sensors, and motors with moving parts, such as wheels and tread, for example.
It is with respect to these and other general considerations that the aspects disclosed herein have been made. Also, although relatively specific problems may be discussed, it should be understood that the examples should not be limited to solving the specific problems identified in the background or elsewhere in this disclosure.
According to the present disclosure, the above and other issues may be resolved by having an high-level controller receiving a movement command that specifies, determining a movement type based on the received movement command, determining an high-level controller for controlling a destination of the device movement based on the movement command and a lower-level controller correcting a deviation of the device movement toward the destination as the device moves based on the movement type.
This Summary is provided to introduce a selection of concepts in a simplified form, which is further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additional aspects, features, and/or advantages of examples will be set forth in part in the following description and, in part, will be apparent from the description, or may be learned by practice of the disclosure.
Non-limiting and non-exhaustive examples are described with reference to the following figures.
Various aspects of the disclosure are described more fully below with reference to the accompanying drawings, which from a part hereof, and which show specific example aspects. However, different aspects of the disclosure may be implement in many different forms and should not be construed as limited in the aspects set forth herein; rather, these aspects are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the aspects to those skilled in the art. Aspects may be practiced as methods, systems or devices. Accordingly, aspects may take the form of a hardware implementation, an entirely software implementation or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.
The present disclosure relates to systems and methods for controlling device movement based on a movement command. As sensors and parts used for rovers and robots have become readily available, programmable rovers and robots for consumers and educational purposes are being introduced. For example, a programmable rover may provide opportunities for users to program the rover using one or more movement commands and execute the program to control the movement.
In some aspect, controlling a movement of a device such as a rover or a robot involves generating series of complex commands and detailed path planning. Such planning requires, for example, specifying a movement path that includes a start point, multiple way points along the path, and an end point to stop the movement. While controlling movement of the device based on waypoints may accommodate movement of the device along a complex path, programming with less burden to a user may be desirable when the device is used for entertainment and educational purpose.
For the programmable rover to be useful in settings such as entertainment and education, accommodating movement commands that are intuitive and easy may become an issue. In a case of a programmable rover with a set of treads or wheels, for example, a movement command may take a form of a signal level for each motor that attaches to respective treads or wheels. However, it may be more intuitive for the user to thinking about the device movement in terms of speed, time, and directions of the programmable rover as a whole, instead directly adjusting signal input levels to individual motors to control rotations. For programming a linear device movement, it may be desirable to enable a user to control a device movement by specifying start and end positions and time duration of the device, for example, instead of directly specifying signal levels to motors that cause the left wheel and the right wheel to rotate respectively. Similarly, controlling an angular movement of the device may be more intuitively controlled by using a set of parameters such as an angular velocity and the heading of the device, forming an arc with a specific radius and time duration.
In some aspect, a device may provide at least two modes of movement: a linear movement and an angular movement. The linear movement is movement in a straight line. The angular movement is a movement along an arc with a specified radius. Parameters of a movement command to control the device may include a linear velocity, a linear end position or distance of the movement, an angular velocity, an end heading, and a time duration. The linear velocity describes a velocity of the device in motion in terms a distance per a unit of time, such as a number of millimeters per second, for example. The linear end position describes a distance that the device needs to move, a number of centimeters, for example, at a completion of executing the movement command. The angular velocity specifies a degree of angle per unit of time, 10 counter-clockwise degrees per second, for example, for the device to turn. The end heading specifies a degree in angle, 90 degrees for example, where the device needs to be positioned at the completion of executing the movement command. A time duration, 10 seconds for example, specifies a time duration of executing the movement command. The device movement command has a command type of a linear movement when the device movement command specifies its angular velocity as zero. The device movement command has a command type of an angular movement when a linear velocity is zero.
In some aspect, a combination of different types of controllers may control the device movement: a Proportional/Proportional-Integral (PPI) controller and a Proportional-Integral-Derivative (PID) controller. In some aspect, a PPI controller is used as the high-level controller for an angular movement and used as the low-level controller(s) for a linear movement, receives a trajectory profile from a trajectory generator. The trajectory generator processes a given movement command and the current position, orientation, and movement of the device to generate the trajectory profile. The trajectory profile include information that relates to how the device ramps up or reduces its speed or orienting its direction, based on a given movement command with a target movement. In some aspect, the trajectory profile includes a current position of the device, a new position of the device, and a position derivative of the device. As the device is a physical device, there is an inherent time lag between when a movement command with a target movement, such as a linear velocity, is issued and the device actually performs the movement, as the motor(s) need to change rotation from being a stationary to a motion at a speed as specified by the movement command. That is, there is a time lag between a time when a movement command instructs the device to move at a linear velocity of 50 millimeters per second and a time that the device is actually in motion at the linear velocity of 50 millimeters per second, for example, because the motors need to ramp up its speed of rotation before reaching the speed as instructed. Similarly, there may be a time lag between the time of issuing a movement command to stop movement and the time when the device actually stops its movement.
Use of the controllers in a multi-layer hierarchy enables designing movement commands in multiple layers of schema for controlling device movement. In some aspect, a user may define a movement command describing starting and ending of a movement at a specific time, without plotting way points with coordinates and instructing how to correct any deviation of the movement path while the device is in movement in details. A movement command for a linear movement may be expressed by a combination of any two parameters based on a linear velocity, a linear end position, and a time duration of the movement, for example, when an angular velocity has a value of zero. A movement command for an angular movement may be expressed by a combination of a linear velocity and any two parameters based on an angular velocity, an end heading of the device, and a time duration of the movement, for example. In some other aspect, a movement command for an angular movement may be expressed by a combination of a turn radius and any two parameters based on an angular velocity, an end heading of the device, and a time duration of the movement.
The high-level controller may receive the movement command describing starting and ending of the movement at the specific time and convert the movement command into instructions when there is a deviation between the intended course of movement and the actual status of the device. The high-level controller may receive inertia measurement data from on-board sensors, which may be encoders, gyroscope, and magnetometer and/or remote sensors, for example to determine the current orientation and movement of the device. The high-level controller provides the converted instructions to the low-level controllers. In some aspect, there may be one low-level controller for each motor that causes device movement using a wheel, a tread, a belt, a propeller, etc. In another example with a programmable rover robot having two wheels, there may be a first motor that drives a right wheel and a second motor that drives a left wheel. There may be one low-level controller for the first motor and another low-level controller for the second motor. The low-level controllers receives the instructions from the high-level controllers and further converts the instructions into signal levels, which is another scheme of instructions as may expressed in terms of electric voltage, as input to respective motors. One of skill in the art will appreciate that the aspects disclosed herein may be performed with a device having any number of motors or propulsion components and may employ one or more high-level and low-level controllers.
Furthermore, the layered controllers provide a benefit of minimizing deviations of an actual state of the device movement from the state of the device movement as specified by a movement command. It is inevitable that the actual movement lags behind the movement command because there is a time lag between a time when a motor is instructed to rotate at a rate that corresponds to a particular input signal level and a time when the motor is actually rotating at that rate. A time is needed for the rotation speed to change based on the instruction. A PID controller comprises a series of three internal controllers for error adjustment: a Proportional, an Integral, and a Derivative adjusters. In some aspect, the proportional portion of the controller adjusts the speed of the device to recover from the time delay of the actual movement to catch up. The integral portion of the controller aggregates the error or the deviation of actual state of the device from the movement command over time. The derivative portion of the controller minimizes the potential overshoot as the controller adjusts the speed to recover from the time delay and catch up to the state as specified by the movement command. Combinations and types of controllers is not limited to PID controllers and PPI controllers. Other types of controllers may be used to control the device movement based on movement commands.
A trajectory generator 116A generates a trajectory profile of a movement as the device performs the movement based on a movement command. In some aspect, the trajectory generator 116A calculates a new point of the device movement and where the device is supposed to be in an ideal case as instructed by the movement command, and what velocity the device should be to meet the movement as instructed by the movement command. The trajectory profile include information that relates to how the device increases or reduces its speed and/or orients its direction, based on a given movement command with a target movement. In some aspect, the trajectory profile includes a current position of the device, a new position of the device, and a position derivative of the device. In case where the device is instructed to perform a linear movement, the position derivative is a linear velocity at an integral of the current position and the new position in order to attain the device movement as instructed by the movement command. That is, the device needs to catch up with the required movement when the movement of the device thus far is short in a movement distance, moving off the straight line or the arc movement as instructed by the movement command. In a linear movement, for example, the trajectory profile provides how the device need to ramp up or reduce its actual linear velocity based on a given linear velocity as a target speed based on the movement command. In an angular movement, for example, the trajectory profile includes information on how the device ramps up its angular velocity to reach a steady angular velocity as specified by the movement command, slows down its angular velocity, and stops at a desired heading as specified by the movement command.
In some aspect, the trajectory generator 116A may provide a trajectory profile to PPI controller. The PPI controller may receive the trajectory profile to adjust the device's movement with respect to ramping up the speed of the movement, maintaining the movement, slowing down the movement, and stop the movement according to the movement command.
A high-level controller 104A may connect to one or more low-level controllers. In some aspect, the device may include one low-level controller for each motor of the two wheels. In other aspects, one low-level controller may control multiple motors. As shown in
In some aspect, all the controllers, IMU 114A, the trajectory generator 116A and the motors 118A may be implemented and executed on-board the device. In alternate aspects, some of the controllers may be implemented and executed on another device. For example, the command controller 102A may be executed on a smart phone or other wireless or wire-connected handsets and communicate with the device to load/unload the sets of controllers. The loadable controller sets 110A and 112A may be stored in a memory on the device or be transferred from a remote device via a network connection. In some other aspect, the loadable controller sets may be pre-loaded on-board the device for the command controller 102A to select which one of the controller sets to use based on a movement command type of the received movement command.
As should be appreciated, the various methods, devices, applications, features, etc., described with respect to
In some aspects, when a movement command type is linear motion, the high-level controller (a PID controller) controls locations along a linear path to ensure the movement is straight while correcting deviation based on data from IMU 114B. The low-level controllers (PPI controllers) controls a linear velocity and an end position (e.g., how fast to accelerate and then stop at the end position) by setting a signal levels to rotate respective motors 118B and 120B for the left wheel and the right wheel at specific rotational speeds based on a trajectory profile from the respective trajectory generators 116B and 122B.
As should be appreciated, the various methods, devices, applications, features, etc., described with respect to
The high-level controller (PPI controller) 104C compares the received movement command with the on-board sensor data and generates input commands to respective low-level controllers (both PID controllers) 106C and 108C. The high-level controller (PPI controller) 104C receives a trajectory profile from the trajectory generator 116C. The PPI controller adjusts the movement command based on the on-board sensor data from IMU 114C and the trajectory profile from the trajectory generator 116C and determines an instruction to each of the low-level controller (PID controller) 106C for left wheel and the low-level controller (PID controller) 108C for the right wheel. Based on the trajectory profile, the high-level controller (PPI controller) 104C determines the detailed motions of respective wheels based on the need for the device as a whole to ramp up its angular velocity, maintains its angular velocity at a steady speed based on the movement command, reduces its angular velocity to stop at a required time at a required heading as specified by the movement command. The low-level controllers 106C and 108C for the respective wheels receive instructions from the high-level controller (PPI controller) 104C and converts the instructions into signals to control rotations of respective motors 118C and 120C for the left wheel and the right wheel.
In some aspect, when a movement command type is angular movement, the high-level controller (a PPI controller) controls a rotation of the device (e.g., the programmable rover robot) at a particular rate of changes in the angle and the heading of the device by adjusting the movement command with an actual state of the device based on the on-board sensor data from the IMU 114 and a trajectory profile data from the trajectory generator 116C. The low-level controllers (PID controllers) maintains a linear velocity at a point that is tangent to the arc at a location to perform an angular movement.
As should be appreciated, the various methods, devices, applications, features, etc., described with respect to
A general order for the operations of the method 200 is shown in
The receive operation 202 may receive a movement command. The movement command may be received by the command controller 102A in
The determine operation 204 may determine a movement command type of the movement command. In some aspect, a device may provide at least two modes of movement: a linear movement and an angular movement. The linear movement is a movement in a straight line. The angular movement is a movement along an arc with a specified radius. Parameters of a movement command to control the device may include a linear velocity, a linear end position or distance of the movement, an angular velocity, an end heading, and a time duration. The linear velocity describes a velocity of the device in motion in terms a distance per a unit of time, a number of millimeters in second, for example. The linear end position describes a distance that the device needs to move, a number of millimeters for example, at a completion of executing the movement command. The angular velocity specifies a degree of angle per unit of time, 10 counter-clockwise degrees per second, for the device to turn. The end heading specifies a degree in angle, 90 degrees for example, where the device needs to head toward at the completion of executing the movement command. The time duration, 10 seconds for example, specifies a time duration of executing the movement command. The device movement command has a command type of a linear movement when the device movement command specifies its angular velocity as zero. The device movement command has a command type of an angular movement when a linear velocity is zero.
The decision operation 206 decides whether the movement command type of the received movement command is a linear movement. When the movement command type is a linear movement, flow branches “Yes” to the set operation 216 which sets a PID controller as the high-level controller. The high-level controller (PID controller) 104B is as shown in
When the movement command type is angular movement, flow branches “No” to the set operation 212, which sets a PPI controller as the high-level controller. The high-level controller (PPI controller) 104C is as shown in
In some aspect, the command controller 102A as shown in
As should be appreciated, operations 201-222 are described for purposes of illustrating the present methods and systems and are not intended to limit the disclosure to a particular sequence of steps, e.g., steps may be performed in different order, an additional steps may be performed, and disclosed steps may be excluded without departing from the present disclosure.
The movement commands 300A in
Based on the movement command with command ID 0001, the device 302 loads a PID controller as a high-level controller 104B and PPI controllers as low-level controllers 106B and 108B, as shown in
Each of the low-level controller (PPI controller) for the left wheel 106B and the low-level controller (PPI controller) for the right wheel 108B respectively receives trajectory profiles from the trajectory generator for the left wheel 116B and the trajectory generator for the right wheel 122B. The respective PPI controllers compare the movement command as adjusted based on the on-board sensor from IMU 114B by the high-level controller (PID controller) 104 against the trajectory profiles from the respective trajectory generators 116B and 122B to determine signal levels to be sent to control the respective motors 118B and 120B for the left wheel and for the right wheel. The respective PPI controllers as the low-level controllers for the respective wheels determines the detailed motions of respective wheels as the device as a whole accelerates, maintains its speed at the specified speed, and reduces its speed to stop at a the time, heading, and position as specified by the movement command. By processing the movement command with command ID 0001, the device 302 stops its linear movement at a location 306.
Next, a movement command with command ID 0002 includes a linear velocity of zero, a linear end position of zero, an angular velocity of 10 degrees per second, an end heading of 90 degrees for a time duration of 9 seconds. The command controller 102A determines a movement command type of the movement command as an angular movement as its linear end position being zero. Accordingly, the device 302 at a location 306 performs an angular movement at an angular velocity of 10 degrees per seconds for 9 seconds, stopping at the end heading of 90 degrees at a location 306. As the device 302 performs the angular movement based on the movement command with command ID 0002, the command controller determines that the movement command type as an angular movement based on the values of the linear velocity and the linear end position of the movement command being zero. Accordingly, the command controller may determine and load a PPI controller as the high-level controller 104C and a PID controller as each of the low-level controllers 106C and 108C as shown in
The high-level controller (PPI controller) 104C compares the received movement command with the on-board sensor data and generates input commands to respective low-level controllers (both PID controllers) 106C and 108C. The high-level controller (PPI controller) receives a trajectory profile from the trajectory generator 116C. The PPI controller compares the movement command as adjusted based on the on-board sensor from IMU 114C against the trajectory profile from the trajectory generator 116C to determine an instruction to each of a low-level controllers (PID controller) 106C for left wheel and a low-level controller (PID controller) 108C for the right wheel. Based on the trajectory profile, the high-level controller (PPI controller) 104C determines the detailed motions of the respective wheels as the device as a whole accelerates its rotation, maintains its speed at the speed based on the movement command, reduces its speed to stop at a time, heading, and position as specified by the movement command. The low-level controllers (PID controllers) 106C and 108C for the respective wheels receives instructions from the high-level controller (PPI controller) 104C and converts the instructions into signals to control respective motors 118C and 120C for the left wheel and the right wheel. Upon processing the movement command with command ID=0002, the device 302 stops its angular movement at its heading of 90 degrees at a location 306.
Processing of the rest of the movement commands may be performed similarly, depending on the movement command types. A movement command with command ID=0003 instructs the device 302 to perform a linear movement from a location 306 along the arrow 308 and to stop at a location 310. A movement command with command ID=0004 causes the device 302 to perform an angular movement to turn 90 degrees counter-clockwise at the location 310, stopping at the end heading of 180 degrees. A movement command with command ID=0005 causes the devices 302 to perform a linear movement along the arrow 312 and stops at a location 314. A movement command with command ID=0006 causes the device 302 to perform an angular movement for 90 degrees counter-clockwise and stops at the end heading of 270 degrees. A movement command with command ID=0007 causes the device 302 to perform a linear movement along the arrow 314 and stops at the initial location of the device 302 as shown in
In some aspects, the device performs the underlying operations to accurately control the movement of the device based on the movement commands with parameters that are simple and intuitive. In particular, the command controller determines a set of the high-level controller and the low-level controllers based on a movement command type, loads the respective controllers, and transmits the movement command to the high-level controller. The high-level controller generates instructions to the low-level controllers based on the received movement command and the actual position and orientation data of the device from IMU to recover from deviations and time-delays of actual status of the device. The PPI controller, whether the PPI controller is used as a high-level controller during a linear movement or low-level controllers during an angular movement, adjusts the instructions based on a trajectory profile received from the trajectory generator for ramping up the speed, maintaining the steady speed, and reducing the speed to complete the movement command. The low-level controllers converts the instructions to signals to control respective motors.
The movement command 402 has command ID of 0010 with parameters of a linear velocity of 8 cm/second, a linear end position at 40 cm, an angular velocity of zero degree per second, an end heading of zero degree, and the time duration of 5 seconds. It is a linear movement at a steady linear velocity at 8 cm/second for 5 seconds and stopping at the linear end position at 40 cm.
The device as shown in
The command controller transmits the movement command to the high-level controller, which is a PID controller, as shown as the high-level controller (PID controller) 104B in
Accordingly, the high-level controller (PID controller) 104B takes into account the original movement command and the current position and change in heading to generate input to the low-level controllers (PPI controllers) 106B and 108B as shown in
The input 404 in the example indicates instructions for respective low-level controllers (PPI controllers) 106B and 108B. In particular, the input to the low-level controller (PPI controller) 108 B for the right wheel indicates a linear velocity of 9 cm/second to a linear end position of 40 cm within the time duration of 5 seconds. The input to the low-level controller (PPI controller) 106B for the left wheel indicates a linear velocity of 10 cm/second to a linear end position of 40 cm within the time duration of 5 seconds. In the example, the PPI controllers receives a trajectory profile from the trajectory generators 116B and 122B, respectively. The trajectory profiles indicate the linear velocity needed as the device ramps up its speed to achieve the steady linear velocity of 8 cm/second and completes the linear movement based on the movement command. For example, the input 408 from the trajectory generator indicates a new linear velocity of 12 cm/second with correction of heading at minus 2 degrees to further ramp-up its speed to catch up to the pace according to the movement command.
Accordingly, the output from the low-level controllers (PPI controllers) 106B and 108B to respective motors 118B and 120B is shown in 410. In particular, the low-level controller (PPI controller) to the motor 120B for the right wheel instructs a signal level, which may translate into a forward rotation of the right wheel at a signal level 15. The low-level controller (PPI controller) to the motor 118B for the right wheel instructs a signal level, which may translate into a forward rotation of the right wheel at a signal level 17. That is, the right wheel rotates slower than the left wheel, causing the device to rotate counter-clockwise to correct the angular deviation of 2 degrees while making a linear movement at a linear velocity that is faster to catch up to perform the movement trajectory as required by the movement command.
In its most basic configuration, the operating environment 500 typically includes at least one processing unit 502 and memory 504. Depending on the exact configuration and type of computing device, memory 504 (instructions to perform controlling device movement techniques as described herein) may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.), or some combination of the two. This most basic configuration is illustrated in
Operating environment 500 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by processing unit 502 or other devices comprising the operating environment. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other tangible, non-transitory medium which can be used to store the desired information. Computer storage media does not include communication media. Computer storage media does not include a carrier wave or other propagated or modulated data signal.
Communication media embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media.
The operating environment 500 may be a single computer operating in a networked environment using logical connections to one or more remote computers. The remote computer may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above as well as others not so mentioned. The logical connections may include any method supported by available communications media. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
An aspect herein can include a computer-implemented method for controlling device movement, the method comprising: receiving a movement command; determining a command type of the movement command, wherein the command type comprises at least one of a linear movement and an angular movement; determining a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination; when the determined command type is the linear movement, set the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional integral (PPI) controller; when the determined command type is the angular movement, set the first controller being the PPI controller and the second controller being the PID controller; and transmitting the movement command to the first controller.
One or more of the above aspects comprise: a linear velocity, a linear end position, an angular velocity, and an end heading.
One or more of the above aspects comprise receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and updating the movement command based on the set of the current status.
One or more of the above aspects comprise receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
One or more of the above aspects, wherein the command type of the movement command is the linear movement when the angular velocity is zero.
One or more of the above aspects, wherein the command type of the movement command is the angular movement when the angular velocity is non-zero.
One or more of the above aspects, wherein the command type of the movement command is an angular movement when the linear velocity is zero.
One or more of the above aspects comprise modifying, by the PPI controller, the received movement command based on movement phases of the device movement, wherein the movement phases comprise: accelerating the device movement to the speed as specified by the movement command; maintaining the speed of the device movement as specified by the movement command; reducing the speed of the device movement as specified by the movement command; and stopping the device movement as specified by the movement command.
One or more of the above aspects, wherein the first controller is a high-level controller and the second controller is a low-level controller, and wherein the high-level controller controls the low-level controller based on a deviation of device movement from the movement command, and wherein the low-level controller controls at least one motor used for the device movement.
One or more of the above aspects, wherein the movement command comprises a linear velocity and a linear distance when the determined command type of the movement command is a linear movement, and wherein the movement command comprises an angular velocity and an end heading when the determined command type of the movement command is an angular movement.
An aspect herein can include a programmable device, comprising: at least one processing unit; and at least one memory storing computer executable instructions for controlling device movement, the instructions when executed by the at least one processing unit causing the programmable movement device to: receive a movement command; determine a command type of the movement command, wherein the command type comprises at least one of a linear motion command and an angular motion command; determine a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination; when the determined command type is the linear motion, set the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional integral (PPI) controller; when the determined command type is the angular motion command, set the first controller being the PPI controller and the second controller being the PID controller; and transmit the movement command to the first controller.
One or more of the above aspects, wherein the movement command comprises: a linear velocity, a linear end position, an angular velocity, and an end heading.
One or more of the above aspects comprise receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and updating the movement command based on the set of the current status.
One or more of the above aspects comprise receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
One or more of the above aspects, wherein the command type of the movement command is the linear movement when the angular velocity is zero.
An aspect herein can include a computer-readable storage medium storing computer-executable instructions for controlling device movement, the instructions when executed by at least one processing unit, cause the at least one processing unit to perform steps of: receive a movement command; determine a command type of the movement command, wherein the command type comprises at least one of a linear motion command and an angular motion command; determine a first controller and a second controller based on the determined command type, wherein the first controller controlling a destination of the device movement based on the movement command and the second controller correcting a deviation of the device movement toward the destination; when the determined command type is the linear motion, set the first controller being a proportional integral derivative (PID) controller and the second controller being a proportional/proportional integral (PPI) controller; when the determined command type is the angular motion command, set the first controller being the PPI controller and the second controller being the PID controller; and transmit the movement command to the first controller.
One or more of the above aspects, wherein the movement command comprises: a linear velocity, a linear end position, an angular velocity, and an end heading.
One or more of the above aspects, the steps further comprising: receiving, by the first controller, a set of current status of the device movement based on inertial measurement; and updating the movement command based on the set of the current status.
One or more of the above aspects, the steps further comprising: receiving, by the PPI controller, a trajectory profile, wherein the trajectory profile comprises a current position, a new position, and a position derivative to correct a deviation of the device movement from the movement command; and generating, by the PPI controller, an output instruction based on the received trajectory profile and the movement command.
One or more of the above aspects, wherein the command type of the movement command is the linear movement when the angular velocity is zero.
Any of the one or more above aspects in combination with any other of the one or more aspect. Any of the one or more aspects as described herein.
The description and illustration of one or more aspects provided in this application are not intended to limit or restrict the scope of the disclosure as claimed in any way. The aspects, examples, and details provided in this application are considered sufficient to convey possession and enable others to make and use the best mode of claimed disclosure. The claimed disclosure should not be construed as being limited to any aspect, for example, or detail provided in this application. Regardless of whether shown and described in combination or separately, the various features (both structural and methodological) are intended to be selectively included or omitted to produce an embodiment with a particular set of features. Having been provided with the description and illustration of the present application, one skilled in the art may envision variations, modifications, and alternate aspects falling within the spirit of the broader aspects of the general inventive concept embodied in this application that do not depart from the broader scope of the claimed disclosure.
Cao, Ting, Hygh, David E., Konish, James William
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
8972059, | Jun 01 2009 | Kawasaki Jukogyo Kabushiki Kaisha | Displacement correcting method and displacement correcting program in automatic operation system |
20090153349, | |||
20120013275, | |||
20160293464, | |||
20170028558, | |||
20170160751, | |||
20190004482, | |||
20190160682, | |||
20190207810, | |||
CN105814442, | |||
WO2012018168, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Feb 11 2020 | SPHERO, INC. | (assignment on the face of the patent) | / | |||
Apr 24 2020 | CAO, TING | SPHERO, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 054436 | /0189 | |
Apr 27 2020 | HYGH, DAVID E | SPHERO, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 054436 | /0189 | |
Jun 25 2020 | KONISH, JAMES WILLIAM | SPHERO, INC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 054436 | /0189 |
Date | Maintenance Fee Events |
Feb 11 2020 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Feb 28 2020 | SMAL: Entity status set to Small. |
Date | Maintenance Schedule |
Nov 22 2025 | 4 years fee payment window open |
May 22 2026 | 6 months grace period start (w surcharge) |
Nov 22 2026 | patent expiry (for year 4) |
Nov 22 2028 | 2 years to revive unintentionally abandoned end. (for year 4) |
Nov 22 2029 | 8 years fee payment window open |
May 22 2030 | 6 months grace period start (w surcharge) |
Nov 22 2030 | patent expiry (for year 8) |
Nov 22 2032 | 2 years to revive unintentionally abandoned end. (for year 8) |
Nov 22 2033 | 12 years fee payment window open |
May 22 2034 | 6 months grace period start (w surcharge) |
Nov 22 2034 | patent expiry (for year 12) |
Nov 22 2036 | 2 years to revive unintentionally abandoned end. (for year 12) |