Method and apparatus for efficiently determining positional states of a vehicle in a vehicle navigation system
10408855 ยท 2019-09-10
Assignee
Inventors
- BoChih Liu (Shanghai, CN)
- Zhike Jia (Fremont, CA, US)
- Jing YU (SHANGHAI, CN)
- Hongquan Liu (Shanghai, CN)
- Jinfeng LIU (Shanghai, CN)
Cpc classification
G06N7/01
PHYSICS
G01P13/00
PHYSICS
International classification
G01R13/00
PHYSICS
G06F17/18
PHYSICS
G06N7/00
PHYSICS
G01P13/00
PHYSICS
Abstract
Aspects of the disclosure provide a system for detecting a movement that includes a moving state detector, a profile-based movement state detector, and a refined movement state detector. The moving state detector is configured to generate a moving state based on a detected speed. The profile-based movement state detector is configured to determine an estimated movement state based on the moving state and detected accelerations. The refined movement state detector is configured to generate, in response to the estimated movement state corresponding to a predetermined triggering movement state, a refined movement state based on a detected angular velocity.
Claims
1. A system for detecting a movement state of a vehicle, the system installed in the vehicle or included in a mobile device carried in the vehicle, the system comprising: a moving state detector circuit that is configured to determine whether the vehicle is moving based on a detected speed of the vehicle; a profile-based movement state detector circuit that is configured to, determine an estimated movement state of the vehicle based on detected accelerations of the vehicle when the vehicle is moving, and determine whether the estimated movement state of the vehicle is a predetermined triggering movement state; and a refined movement state detector circuit that is configured to generate a refined movement state of the vehicle based on a detected angular velocity of the vehicle when the estimated movement state of the vehicle is the predetermined triggering movement state.
2. The system of claim 1, wherein the profile-based movement state detector circuit is configured to determine interim movement states of the vehicle based on the detected accelerations and to identify a latest one of the interim movement states as the estimated movement state of the vehicle when a second detected speed that is greater than a predetermined threshold is received.
3. The system of claim 2, wherein the profile-based movement state detector circuit is configured to: convert the detected accelerations into a sequence of observation tokens; calculate probabilities of candidate movement states based on the sequence of observation tokens; and identify one of the candidate movement states that corresponds to a highest probability as the latest one of the interim movement states.
4. The system of claim 3, wherein the profile-based movement state detector circuit is further configured to perform a low-pass filtering process on the detected accelerations prior to converting the detected accelerations into the sequence of observation tokens.
5. The system of claim 3, wherein the candidate movement states include a moving straight state, a turning left state, and a turning right state.
6. The system of claim 1, further comprising a speed detector that outputs the detected speed, wherein the speed detector includes at least one of a satellite-based positioning circuit, a ground-based positioning circuit, a graphic-based speed detector, a wheel speed sensor, and a fluid flow velocity sensor.
7. The system of claim 1, further comprising an acceleration detector that outputs the detected accelerations, wherein the profile-based movement state detector circuit is further configured to: determine a posture of the acceleration detector when a second detected speed that is equal to or less than a predetermined threshold is received; determine a reference axis based on the detected posture of the acceleration detector; and determine the estimated movement state based on components of the detected accelerations corresponding to the reference axis.
8. The system of claim 7, wherein the profile-based movement state detector circuit is further configured to calculate the components of the detected accelerations corresponding to the reference axis based on a conversion matrix.
9. A method for detecting a movement state of a vehicle, the vehicle equipped with processing circuitry or carrying a mobile device including the processing circuitry, the method comprising: receiving, by the processing circuitry, detected accelerations of the vehicle at a first update rate; determining, by the processing circuitry, interim movement states of the vehicle in response to receiving the detected accelerations of the vehicle; receiving, by the processing circuitry, detected speeds of the vehicle at a second update rate that is slower than the first update rate; identifying, by the processing circuitry, a latest one of the interim movement states of the vehicle as an estimated movement state of the vehicle when a first detected speed of the detected speeds of the vehicle that is greater than a predetermined threshold is received; determining, by the processing circuitry, whether the estimated movement state of the vehicle corresponds to a predetermined triggering movement state; and when the estimated movement state of the vehicle corresponds to the predetermined triggering movement state, determining, by the processing circuitry, a refined movement state of the vehicle based on a detected angular velocity.
10. The method of claim 9, wherein identifying the latest one of the interim movement states of the vehicle comprises: converting the detected accelerations into a sequence of observation tokens; calculating probabilities of various candidate movement states based on the sequence of observation tokens and a previous interim movement state using a Hidden Markov Model; and identifying a movement state among the candidate movement states that corresponds to a highest probability as the latest one of the interim movement states.
11. The method of claim 10, further comprising: prior to converting the detected accelerations into the sequence of observation tokens, performing a low-pass filtering process on the detected accelerations.
12. The method of claim 10, wherein the candidate movement states include a moving straight state, a turning left state, and a turning right state.
13. The method of claim 10, further comprising: determining a posture of an acceleration detector when a second detected speed of the detected speeds that is equal to or less than the predetermined threshold is received; determining a reference axis based on the detected posture of the acceleration detector; and determining the interim movement states based on components of the detected accelerations corresponding to the reference axis.
14. The method of claim 13, further comprising calculating the components of the detected accelerations corresponding to the reference axis based on a conversion matrix.
15. A circuit for detecting a movement state of a vehicle, the vehicle equipped with the circuit, or carrying a mobile device including the circuit, the circuit comprising: a moving state detector configured to: set a moving state of the vehicle to a non-stationary state when a first detected speed of the vehicle greater than a predetermined threshold is received, and set the moving state of the vehicle to a stationary state when the first detected speed of the vehicle that is equal to or less than the predetermined threshold is received; a profile-based movement state detector configured to: determine interim movement states of the vehicle when the moving state of the vehicle is at the non-stationary state by calculating probabilities of various candidate movement states based on a plurality of detected accelerations, identify a latest one of the interim movement states as an estimated movement state of the vehicle when a second detected speed greater than the predetermined threshold is received, and determine whether the estimated movement state of the vehicle qualifies as a predetermined triggering movement state; and a refined movement state detector configured to: determine a refined movement state of the vehicle based on a detected angular velocity when the estimated movement state qualifies as the predetermined triggering movement state.
16. The circuit of claim 15, wherein the profile-based movement state detector comprises: a filter configured to convert the plurality of detected accelerations into a sequence of observation tokens; and a Hidden Markov Model analyzer configured to, during an iteration: calculate the probabilities of the candidate movement states based on the sequence of observation tokens and a previous interim movement state from a previous iteration using a Hidden Markov Model, and identify a movement state among the candidate movement states that corresponds to a highest probability as an interim movement state of the iteration.
17. The circuit of claim 16, wherein the Hidden Markov analyzer comprises: a storage configured to store transition and emission matrices of the Hidden Markov Model; a likelihood calculator configured to calculate the probabilities of the candidate movement states using the transition and emission matrices of the Hidden Markov Model; and a state selector configured to identify the movement state among the candidate movement states that corresponds to the highest probability.
18. The circuit of claim 16, wherein the filter is further configured to, prior to converting the detected accelerations into the sequence of observation tokens, perform a low-pass filtering process on the detected accelerations.
19. A system for detecting a movement state of a vehicle, the system installed in the vehicle or included in a mobile device carried in the vehicle, the system comprising: a gyroscope configured to determine an angular velocity of the vehicle; an accelerometer configured to determine an acceleration of the vehicle; a moving state detector circuit that is configured to initially determine whether the vehicle is moving based on a detected speed of the vehicle; a profile-based movement state detector circuit that is configured to, based on the moving state detector circuit initially determining that the vehicle is moving based on the detected speed of the vehicle, (i) determine, based in part on the acceleration of the vehicle as determined by the accelerometer and without using the angular velocity of the vehicle as determined by the gyroscope, an estimated movement state of the vehicle, and (ii) determine whether the estimated movement state of the vehicle corresponds to one of a number of predetermined movement states of the vehicle; and a refined movement state detector circuit that is configured to, responsive to the estimated movement state of the vehicle corresponding to one of the number of predetermined movement states of the vehicle, generate a refined movement state of the vehicle based on the angular velocity of the vehicle as determined by the gyroscope.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) Various embodiments of this disclosure that are proposed as examples will be described in detail with reference to the following figures, wherein like numerals reference like elements, and wherein:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
DETAILED DESCRIPTION OF EMBODIMENTS
(11) Embodiments of this disclosure provide a movement state detection technique where a movement state of a device is initially estimated by performing a profile-based analysis based on detected accelerations. By doing so, the technique reduces power consumption of the device because such a profile-based analysis is less resource and power demanding than calculating the movement state based on detected angular velocities from a gyroscope. In some examples, the movement state of the device estimated by performing the profile-based analysis (i.e., the estimated movement state) may be sufficiently accurate for various services provided by the device. However, in some examples, a more accurate determination of the movement state of the device (i.e., a refined movement state) may be needed when the estimated movement state triggers some further action by falling within a set of predetermined movement states (i.e., the triggering movement states). When the estimated movement state qualifies as a triggering movement state and thus indicates that a more accurate movement state is needed, additional resources and power can be used so that the refined movement state may then calculated based on the detected angular velocities. Accordingly, the movement of the device or vehicle can be monitored with sufficient accuracy while the overall resource and power consumption can be reduced.
(12)
(13) The movement state of a device can be determined by a movement state detection circuit.
(14) As shown in
(15) The moving state detector 210 can be any device that makes an initial determination as to whether the device is moving. The moving state detector 210 receives a detected speed (SPD) signal from a speed detector, and generates, based on the SPD signal, a moving states S.sub.D signal that indicates whether the device is moving. In some examples, the operations of the profile-based movement state detector 220 and/or the refined movement state detector 230 depend on the detected moving states S.sub.D.
(16) The profile-based movement state detector 220 receives the moving states S.sub.D signal from the moving state detector 210, the SPD signal from the speed detector, as well as a detected acceleration signal A from an accelerometer (not shown). Based on these inputs, the profile-based movement state detector 220 determines an estimated movement state S.sub.A.
(17) The profile-based movement state detector 220 may instruct the refined movement state detector 230, via a control signal CTRL, to determine a refined movement state S.sub.W when the estimated movement state S.sub.A falls within a set of predetermined triggering movement states. For example, when the estimated movement state S.sub.A corresponds to making a right turn, making a left turn, making a sharp right turn, or making a sharp left turn, the profile-based movement state detector 220 causes the refined movement state detector 230 to determine a refined movement state S.sub.W.
(18) The refined movement state detector 230 is configured to receive a detected angular velocity W from an angular velocity detector (not shown), such as a gyroscope, and to determine the refined movement state S.sub.W based on the detected angular velocity W. In some examples, the angular velocity detector is part of the device where the movement state detection circuit 200 resides, or is disposed on a user or a vehicle separately. The refined movement state detector 230 can be further configured to receive the control signal CTRL from the profile-based movement state detector 220 and to determine the refined movement state S.sub.W in response to the control signal CTRL.
(19) The profile-based movement state detector 220 generates an estimated movement state S.sub.A of the device. The profile-based movement state detector 220 determines an interim movement state when the profile-based movement state detector 220 receives an updated detected acceleration A. In some examples, the profile-based movement state detector 220 determines a latest interim movement state as an estimated movement state S.sub.A in response to a detected speed SPD that is greater than a second predetermined threshold, which indicates that the device is still moving. The second predetermined threshold may range from 5 km/h to 10 km/h. In some examples, the first predetermined threshold and the second predetermined threshold are set to be the same.
(20) The accelerometer can be part of the device where the movement state detection circuit 200 resides or can be disposed on a user or a vehicle separately. In some examples, the accelerometer outputs the detected accelerations A of the device or the vehicle at an update rate f.sub.A ranging from 20 updates to 50 updates per second, which is faster than the update rate f.sub.SPD. In some examples, the profile-based movement state detector 220 determines interim movement states when the moving state S.sub.D is at the non-stationary state.
(21) The profile-based movement state detector 220 determines an interim movement state in response to each detected acceleration A. Accordingly, the profile-based movement state detector 220 determines the interim movement states by iterations of calculations repeated at the update rate f.sub.A. In some examples, the profile-based movement state detector 220 determines, for every iteration in response to the updated detected acceleration, an interim movement state of the iteration based on the corresponding detected acceleration, a predetermined number of prior detected accelerations, and a previous interim movement state from a previous iteration. The profile-based movement state detector 220 also receives a detected heading of the device or vehicle accompanied with or embedded in a corresponding detected speed SPD from the speed detector. In such examples, the profile-based movement state detector 220 also outputs the estimated movement state S.sub.A with the detected heading. An interim movement state or an estimated movement state S.sub.A may be one of the following states illustrated with reference to
(22) In some examples, the speed detector outputs detected speeds SPD of the device, or the vehicle in which the device is installed, at an update rate f.sub.SPD ranging from one update every 0.5 seconds to one update every 2 seconds. The moving state detector 210 sets a moving state S.sub.D at a non-stationary state when a detected speed SPD is greater than a first predetermined threshold, and sets the moving state S.sub.D to a stationary state when the detected speed SPD is equal to or less than the first predetermined threshold, such as from 5 to 10 km/h.
(23) The speed detector includes at least one of a satellite-based positioning circuit, a ground-based positioning circuit, a graphic-based speed detector, a wheel speed sensor, and a fluid flow velocity sensor. In some examples, the speed detector is part of the device where the movement state detection circuit 200 resides, or is disposed on a user or a vehicle separately.
(24) In operation, the movement state detection circuit 200 can initially determine a moving state S.sub.D in order to determine whether to update a movement state of the device, either using the estimated movement state S.sub.A or the refined movement state S.sub.W. In some examples, when the moving state S.sub.D indicates that the device is moving, such as moving at a speed greater than a predetermined speed threshold, the movement state detection circuit 200 causes the profile-based movement state detector 220 to determine the estimated movement state S.sub.A of the device based on the detected acceleration A. However, when an estimated movement state S.sub.A falls within a set of predetermined triggering movement states, the profile-based movement state detector 220 instructs the refined movement state detector 230 to determine a refined movement state S.sub.W. For example, when the estimated movement state S.sub.A corresponds to a predetermined triggering movement state such as making a right turn, making a left turn, making a sharp right turn, or making a sharp left turn, the profile-based movement state detector 220 can cause the refined movement state detector 230 to determine the refined movement state S.sub.W. The movement state detection circuit 200 may output one or both of the estimated movement state S.sub.A and the refined movement state S.sub.W to other components of the device, such that the services provided by the device may be performed based on the detected movement state S.sub.A or S.sub.W.
(25) The power and computational resources for determining a refined movement state S.sub.W, including the resources for operating the angular velocity detector and the refined movement state detector 230, are greater than the power and computational resources for determining an estimated movement state S.sub.A, including the resources for operating the speed detector, the accelerometer, the moving state detector 210, and the profile-based movement state detector 220. However, the refined movement state S.sub.W is more accurate than the estimated movement state S.sub.A in monitoring the movement of the device. Therefore, by using the refined movement state detector 230 in response to the presence of a predetermined triggering movement state, the movement of the device or vehicle is monitored with sufficient accuracy while the overall resource consumption according to the present disclosure is less than that of the configuration that uses the refined movement state detector 230 all the time.
(26)
(27) As shown, the profile-based movement state detector 320 includes a filter 330 and a Hidden Markov Model (HAW) analyzer 340. The profile-based movement state detector 320 may receive the detected acceleration A and moving state S.sub.D, and generate interim movement states S.sub.I accordingly. The profile-based movement state detector 320 may also receive the detected speed SPD and, in response to the received detected speed SPD, select the latest one of the interim movement states as an estimated movement state S.sub.A for output.
(28) The filter 330 receives the detected accelerations A. In some examples, the filter 330 extracts the components of the detected accelerations A corresponding to a predetermined reference axis that is most responsive to the turning of the device or the vehicle. For example, when the accelerometer that outputs the detected accelerations A is a multi-axis accelerometer, the reference axis is one of the axes of detection of the accelerometer. In another example, when the accelerometer that outputs the detected accelerations A is a multi-axis accelerometer, the reference axis is a virtual axis, where the components of the reference axis is determined by calculating all detected accretions from all axes of detection of the accelerometer based on a conversion matrix. In some examples, the reference axis is determined based on a posture of the device where the profile-based movement state detector 320 resides. The posture of the device is determined based on the detected accelerations when the device is at the stationary state, in which case the detected accelerations are caused mainly by the gravity of the Earth.
(29) The filter 330 receives the components of the detected accelerations A corresponding to the reference axis from the accelerometer. For example, when the accelerometer that outputs the detected accelerations A is a single-axis accelerometer, the reference axis is the axis of detection of the accelerometer. In other example, when the accelerometer that outputs the detected accelerations A is a multi-axis accelerometer, the accelerometer processes the detected accelerations and outputs the components of the detected accelerations A corresponding to the reference axis.
(30) The filter 330 also converts a detected acceleration and a predetermined number of prior detected accelerations into a sequence of observation tokens {O}. For example,
(31) In some examples, the filter 330 further performs a low-pass filtering process on the sequence of detected accelerations A, including the detected acceleration and the N prior detected accelerations, prior to converting the detected acceleration and the N prior detected accelerations into the sequence of observation tokens {O}. Therefore, a mid-term or long-term trend of the sequence of detected accelerations A is reflected in the generated sequence of observation tokens {O}, and instantaneous fluctuations or noises of the detected accelerations A are thus ignored.
(32) The HMM analyzer 340 receives the moving state S.sub.D and may be activated when the moving state S.sub.D is set to the non-stationary state. The HMM analyzer 340 also receives the sequence of observation tokens {O} and the detected speeds SPD and determines an estimated movement state S.sub.A in response to an updated detected speed SPD when the updated speed is greater than a predetermined threshold. The predetermined threshold corresponds to the aforementioned second predetermined threshold. The HMM analyzer 340 includes a storage 342, a likelihood calculator 344, and a movement state selector 346.
(33) The storage 342 stores transition matrices and emission matrices 342a of a Hidden Markov Model, as well as a previously determined interim movement state 342b.
(34) The likelihood calculator 344 calculates the probabilities of the plural candidate movement states. These can include the movement states illustrated in
(35) The movement state selector 346 identifies a movement state among the plural candidate movement states that corresponds to a highest probability as the interim movement state S.sub.I and outputs the interim movement state S.sub.I to the storage 342. In some examples, an updated interim movement state S.sub.I is determined every time an updated acceleration A is received.
(36) In addition, upon receipt of an updated detected speed SPD, the movement state selector 346 identifies a latest one of the interim movement states S.sub.I as an estimated movement state S.sub.A when the updated detected speed SPD is greater than the predetermined threshold, such as the aforementioned second predetermined threshold.
(37) For example,
(38) In operation, the profile-based movement state detector 320 converts, by the filter 330, a detected acceleration and a predetermined number of prior detected accelerations into a sequence of observation tokens {O}, such as {O(t.sub.1), O(t.sub.2), . . . , O(t.sub.N), O(t.sub.N+1)}, where N is a positive integer, O(t.sub.N+1) is an observation token corresponding to the detected acceleration, O(t.sub.1), O(t.sub.2), and O(t.sub.N) are observation tokens corresponding to previous N detected accelerations. Each one of the observation tokens O(t.sub.1), O(t.sub.2), O(t.sub.N), and O(t.sub.N+1) is selected from one of a predetermined set of observation tokens, such as the observation tokens y.sub.1 to y.sub.m in
(39) In operation, the profile-based movement state detector 320 also determines, by the HMM analyzer 340, interim movement states. For example, as shown in
(40) At time t.sub.2, the likelihood calculator 344 calculates, using a Viterbi algorithm, the probabilities of the candidate movement states being the interim movement state of time t.sub.2 based on the transition matrices and emission matrices 342a of a Hidden Markov Model and a previously determined interim movement state 342b (e.g., x(t.sub.1)=S.sub.2). For example, the probability of the movement state S.sub.1 being the interim movement state of time t.sub.2 is P.sub.1(t.sub.2), the probability of the movement state S.sub.2 being the interim movement state of time t.sub.2 is P.sub.2(t.sub.2), and the probability of the movement state S.sub.3 being the interim movement state of time t.sub.2 is P.sub.3(t.sub.2). If, for example, P.sub.3(t.sub.2) has the highest value, the movement state selector 346 determines that the interim movement state of time t.sub.2 is S.sub.3 (i.e., x(t.sub.2)=S.sub.3). The interim movement state x(t.sub.2) is recorded in the storage 342 as the previous movement state 342b for determining the next interim movement state.
(41) At time t.sub.3, the likelihood calculator 344 calculates, using a Viterbi algorithm, the probabilities of the candidate movement states being the interim movement state of time t.sub.3 based on the transition matrices and emission matrices 342a of the Hidden Markov Model and a previously determined interim movement state 342b. For example, the probability of the movement state S.sub.1 being the interim movement state of time t.sub.3 is P.sub.1(t.sub.3), the probability of the movement state S.sub.2 being the interim movement state of time t.sub.3 is P.sub.2(t.sub.3), and the probability of the movement state S.sub.3 being the interim movement state of time t.sub.3 is P.sub.3(t.sub.3). If for example P.sub.1(t.sub.3) has the highest value, the movement state selector 346 determines that the interim movement state of time t.sub.3 is S.sub.1 (i.e., x(t.sub.3)=S.sub.1). The interim movement state x(t.sub.3) is recorded in the storage 342 as the previous movement state 342b for determining the next interim movement state.
(42) Also, in operation, if at time t.sub.3 the movement state selector 346 receives an updated detected speed SPD that is greater than a threshold value, the movement state selector 346 also identifies that the latest one of the interim movement states (i.e., x(t.sub.3)=S.sub.1) as the estimated movement state S.sub.A.
(43) The filter 330 and the HMM analyzer 340 also receive a moving state S.sub.D, and the operations of the filter 330 and/or the HMM analyzer 340 are activated when the moving state S.sub.D is at the moving state. In some examples, the operations of the filter 330 and/or the HAW analyzer 340 are suspended when the moving state S.sub.D is at the stationary state.
(44) In some examples, the transition matrices and emission matrices 342a and/or other parameters of the Hidden Markov Model are analyzed by conducting field experiments and/or computer simulations prior to delivering the profile-based movement state detector 320 to an end user. Also, Hidden Markov Model is illustrated as a non-limiting example for implementing the profile-based movement state detector 320. In some examples, profile-based movement state detector 320 is implemented based on other suitable algorithm or circuit configurations.
(45) Of course, the number of candidate movement states and the observation tokens in
(46)
(47) At S510, a detected speed is received. In some example, detected speeds are provided by a speed detector at a predetermined update rate. In some example, the process 500 revisits S510 multiple times under various conditions illustrated below to receive the detected speeds. For example, the movement state detection circuit 200 receives detected speeds SPD of a device or a vehicle from a speed detector at an update rate f.sub.SPD. In some examples, the update rate f.sub.SPD ranges from one update every 0.5 seconds to one update every 2 seconds.
(48) At S520, it is determined whether the detected speed received at S510 is greater than a first predetermined threshold. For example, the moving state detector 210 determines that a moving state S.sub.D of the device is at a non-stationary state when the detected speed SPD is greater than the first predetermined threshold, and the moving state detector 210 determines that the moving state S.sub.D of the device is at a stationary state when the detected speed SPD is equal to or less than the first predetermined threshold. In some examples, the first predetermined threshold may range from 5 km/h to 10 km/h. At S520, when the detected speed is greater than the first predetermined threshold, the process proceeds to S530; otherwise, the process proceeds to S540.
(49) At S530, a profile-based movement state detection process is performed in order to determine an estimated movement state. In some examples, the profile-based movement state detection process is performed by a profile-based movement state detector, such as the profile-based movement state detector 220 in
(50) At S530, in some examples, if no movement state is determined at S530 because an updated detected speed is less than a second predetermined threshold, the process proceeds to S540. In some examples, the second predetermined threshold may range from 5 km/h to 10 km/h. If an updated estimated movement state is determined at S530, the process proceeds to S550.
(51) At S540, various settings for determining the movement state of the device are reset. In some examples, S540 includes receiving detected accelerations output by an acceleration detector, detecting a posture of the acceleration detector based on detected accelerations, and determining a reference axis based on the detected posture of the acceleration detector. In some examples, S540 is performed by the moving state detector 210, the profile-based movement state detector 220, and/or other suitable components of the movement state detection circuit 200. After S540, the process proceeds to S510.
(52) At S550, it is determined whether the estimated movement state falls within a set of predetermined triggering movement states. In some examples, the set of predetermined triggering movement states is a subset of the set of candidate movement states and indicates that determining a refined movement state based on a detected angular velocity is justified. In some examples, the set of predetermined triggering movement states includes making a right turn, making a left turn, making a sharp right turn, or making a sharp left turn. At S550, when the estimated movement state falls within the set of predetermined triggering movement states, the process proceeds to S560. Otherwise, when the estimated movement state does not fall within the set of predetermined triggering movement states, the process proceeds to S570.
(53) At S560, when the estimated movement state falls within the set of predetermined triggering movement states, a refined movement state detection process is performed. In some examples, the refined movement state detection process is performed by a refined movement state detector, such as the refined movement state detector 230 in
(54) At S570, the estimated movement state determined at S530, and/or the refined movement state determined at S560, if available, are outputted for further processing. For example, the movement state detection circuit 200 outputs the estimated movement state S.sub.A determined by the profile-based movement state detector 220 and/or the refined movement state S.sub.W determined by the refined movement state detector 230.
(55) At S580, it is determined whether to terminate the process 500. If the process 500 is to be terminated, the process proceeds to S599 and terminates. If the process 500 is not yet to be terminated, the process proceeds to S510, and a next moving state, estimated movement state, and/or refined movement state are determined based on S510-S570 illustrated above.
(56)
(57) At S610, a detected acceleration is received. In some example, detected accelerations are provided by an acceleration detector at a predetermined update rate. In some example, the process 600 revisits S610 multiple times under various conditions illustrated below to receive the detected accelerations that are provided at the predetermined update rate. For example, the profile-based movement state detector 320 receives detected accelerations A of a device or a vehicle from an acceleration detector at an update rate f.sub.A. In some examples, the update rate f.sub.A ranges from 20 updates to 50 updates per second.
(58) At S620, interim movement states are determined in response to the received detected accelerations. In some examples, for a current iteration, in response to a detected acceleration received at S610, an interim movement state of the current iteration is determined based on the detected acceleration, a predetermined number of prior detected accelerations, and a previous interim movement state from a previous iteration. For example, the HMM analyzer 340 determines interim movement states S.sub.I in response to the received detected accelerations A. Detailed operations of determining interim movement states will be illustrated with reference to
(59) At S630, it is determined if an updated detected speed is available since the determination of last interim movement state. When an updated detected speed is available, the process proceeds to S640. When an updated detected speed is not available, the process proceeds to S610. For example, the movement state selector 346 determines whether an updated detected speed SPD is available. In some examples, S610-S630 are performed in response to each one of the detected accelerations provided at the update rate f.sub.A, and the detected speeds are provided at the update rate f.sub.SPD that is slower than the update rate f.sub.A. For example, if the update rate f.sub.A is K times faster than the update rate f.sub.SPD, in at least one example, S610-S630 repeats K times before S630 determines that the process may proceed to S640. Therefore, one interim movement state is determined in response to a detected acceleration, and K interim movement states are determined within a duration between two detected speeds. In some examples, K is a positive integer ranging from 20 to 100.
(60) At S640, it is determined whether the updated detected speed is greater than a second predetermined threshold. When the updated detected speed is greater than the second predetermined threshold, the device or the vehicle is likely to be at the non-stationary state, and the process proceeds to S650. When the updated detected speed is not greater than the second predetermined threshold, the device or the vehicle is likely to be at the stationary state, and the process proceeds to S660. In some examples, the second predetermined threshold may range from 5 km/h to 10 km/h.
(61) At S650, when the updated detected speed is greater than the second predetermined threshold, a latest one of the interim movement states is used as an estimated movement state. For example, the state selector 346 identifies a latest interim movement state S.sub.I as an estimated movement state S.sub.A when the updated detected speed SPD that is greater than the second predetermined threshold is received.
(62) At S660, because the device or the vehicle is likely to be at the stationary state, the device or the vehicle is not considered as corresponding to any of the candidate movement states. The process 600 triggers the performance of S540 and then proceeds to S699.
(63) In some examples, an executed application program that receives the estimated movement state determines how the estimated movement state will be interpreted in light of the detected speeds, and S640 and S660 are omitted.
(64) At S670, it is determined whether to terminate the process 600. If the process 600 is to be terminated, the process proceeds to S699 and terminates. If the process 600 is not yet to be terminated, the process proceeds to S610, and a next estimated movement state is determined based on S610-S650 as illustrated above.
(65)
(66) At S710, a sequence of observation tokens is obtained based on a detected acceleration and a predetermined number of prior detected accelerations. For example, a filter 330 converts a detected acceleration and a predetermined number of prior detected accelerations into a sequence of observation tokens {O} as illustrated with reference to
(67) At S720, probabilities of various candidate movement states being the interim movement state for this iteration are calculated based on the sequence of observation tokens and the previous interim movement state using a profile-based model. In some examples, the profile-based model is a Hidden Markov Model. For example, the likelihood calculator 344 calculates the probabilities P.sub.1(t.sub.2), P.sub.2(t.sub.2), P.sub.3(t.sub.2), P.sub.1(t.sub.3), P.sub.2(t.sub.3), and P.sub.3(t.sub.3) for candidate movement states S.sub.1, S.sub.2, and S.sub.3 based on the transition and emission matrices 342a of the Hidden Markov Model and the previous interim movement state 342b as illustrated with reference to
(68) At S730, a movement state among the candidate movement states that corresponds to a highest probability is identified as the interim movement state of this iteration. For example, the movement state selector 346 determines that the interim movement state is S.sub.3 at time t.sub.2 (i.e., x(t.sub.2)=S.sub.3) and that the interim movement state is S.sub.1 at time t.sub.3 (i.e., x(t.sub.3)=S.sub.1) as illustrated with reference to
(69) After S730, the process proceeds to S799 and terminates.
(70) In some examples, at least a portion of the features described in
(71)
(72) The movement state detection system 800 includes a processor 810, a storage device 820 electrically coupled with the processor 810, a positioning circuit 830 electrically coupled with the processor 810, and input/output interfaces 840. The movement state detection system 800 includes an accelerometer 852 configured to provide detected accelerations and a gyroscope 854 configured to provide detected angular velocities, a speed sensor 856, and/or other sensors 858.
(73) The movement state detection system 800 also includes a Hidden Markov Model (HMM) circuit 860. The HMM circuit 860 is a dedicated circuit that functions as the HMM analyzer 340 in
(74) The processor 810 includes a single processing core or multiple processing cores. The processor 810 is configured to execute an operating system and various application programs to perform various functions. In some examples, the processor 810 by executing instructions functions as one or more of the moving state detector 210, profile-based movement state detector 320, and refined movement state detector 230 in
(75) The storage device 820 is used to store an operating system and application programs (822), and/or other data or intermediate data for executing one or more of the application programs (824). In some examples, the application programs are compliance with one or more programming languages (e.g., Java, Objective-C, and the like), including compiled or interpreted languages, and are deployed as a stand-alone program or as a module, component, a browser-based web application, or other unit suitable for use in a computing environment. In some embodiments, storage device 820 includes a non-transitory computer readable medium, such as a semiconductor or solid-state memory, a random access memory (RAM), a read-only memory (ROM), a hard disk, an optical disk, or other suitable storage medium. In some embodiments, storage device 820 includes a plurality of non-transitory computer readable mediums listed above.
(76) The positioning circuit 830 is configured to determine speeds and/or a position of the device 800. In some examples, the positioning circuit 830 includes a satellite-based positioning circuit that is configured to determine the speeds and/or position of the movement state detection system 800 based on satellite signals. In some examples, the positioning circuit 830 includes a ground-based positioning circuit that is configured to determine the speeds and position of the movement state detection system 800 based on wireless base station signals.
(77) In some examples, the speed sensor 856 or other sensors 858 are configured to provide detected speeds to the processor 810. In some examples, the speed sensor 856 includes a wheel speed sensor, a fluid flow velocity sensor, or the like. In some examples, sensors 858 include a camera that, when working with the processor 810, functions as a graphic-based speed detector. In some examples, one or more of the speed sensor 856, and/or the other sensors 858 are omitted.
(78) In some examples, the positioning circuit 830 or the speed sensor 856 and/or other sensors 858 function as the speed detector illustrated with reference to
(79) The input/output interface 840 includes components through which a user interacts with the movement state detection system 800. In some examples, the input/output interface 840 includes one or more of a monitor, a keyboard, a touch panel, a speaker, a keyboard, a mouse, a toggle switch, a button, or the like.
(80) In some examples, the accelerometer 852 functions as the acceleration detector illustrated with reference to
(81) In some examples, the gyroscope 854 functions as the angular velocity detector illustrated with reference to
(82) While aspects of the present disclosure have been described in conjunction with the specific embodiments thereof that are proposed as examples, alternatives, modifications, and variations to the examples may be made. Accordingly, embodiments as set forth herein are intended to be illustrative and not limiting. There are changes that may be made without departing from the scope of the claims set forth below.