Collision avoidance with trajectory assessment
By employing two computing systems to collaboratively generate and verify trajectories in autonomous vehicles, the error problem of collision detection systems in autonomous vehicles is solved, improving safety and operational efficiency, and enhancing the reliability and safety of the system.
Patent Information
- Application Number
- CN202480023315.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2023-03-30
- Filing Date
- 2024-03-29
- Publication Date
- 2025-11-14
AI Technical Summary
In some cases, collision detection systems in autonomous vehicles may fail to operate effectively due to errors or processing delays, leading to unsafe vehicle behavior.
Two computing systems work together: the first system generates the main trajectory and alternative trajectories, while the second system independently verifies and selects the optimal trajectory. It also generates alternative trajectories by modifying the main trajectory through lateral steering, ensuring collision avoidance and system redundancy.
It improves the safety and operational efficiency of autonomous vehicles, reduces computational load, enhances system reliability and security, and avoids frequent trajectory changes.
Smart Images

Figure CN120957906A_ABST
Abstract
Description
[0001] Priority information This application claims priority to U.S. Application No. 18 / 193,285, entitled "Collision Avoidance Using Trajectory Assessment," filed March 30, 2024, which is incorporated herein by reference. Background Technology
[0002] The safety of passengers in the vehicle and other people or objects nearby is paramount. This safety typically relies on accurate detection of potential collisions and the timely deployment of safety measures. While autonomous vehicles generally utilize systems with efficient collision detection capabilities, these systems can become inoperable or ineffective in rare circumstances. For example, errors can be introduced into the relatively long processing pipeline of the vehicle's systems, causing the system to generate trajectories that will collide with objects and / or attempt to maneuver the vehicle in an impossible or unacceptable manner given its current attitude and / or capabilities. Thus, the system may fail to operate as effectively as intended, potentially leading to unsafe behavior. Attached Figure Description
[0003] Refer to the detailed description in the accompanying drawings. In the drawings, the leftmost numeral of the reference numeral indicates the drawing in which that reference numeral first appears. The same reference numerals are used in different drawings to indicate similar or identical parts or features.
[0004] Figure 1 An example environment in which the techniques described in this article can be implemented is shown.
[0005] Figure 2 This is a flowchart of an example process used to determine whether to accept or reject the first trajectory.
[0006] Figure 3 This is a flowchart of an example process for selecting one of the trajectories received from the first computing system by the second computing system.
[0007] Figure 4 This is a flowchart of an example process for determining an alternative trajectory based on the main trajectory.
[0008] Figure 5 This is a flowchart of an example process for controlling a vehicle based on at least one of a main trajectory or an alternative trajectory.
[0009] Figure 6 This is a block diagram of an example system used to implement the techniques described in this article. Detailed Implementation
[0010] This disclosure describes techniques for determining the optimal trajectory of a vehicle. In some cases, the described techniques involve a second computing system (e.g., a computing system associated with a trajectory verification component of the vehicle) receiving multiple trajectories (e.g., a primary trajectory and an alternative trajectory) of the vehicle from a first computing system. In some cases, the second computing system is configured to select the primary trajectory, the alternative trajectory, or neither. In some cases, the alternative trajectory is determined by applying lateral steering to the primary trajectory. In some cases, the primary trajectory and the alternative trajectory have different lateral profiles. The lateral profile of the trajectory can describe a measure of the vehicle's position relative to the lateral axis of the trajectory it follows.
[0011] In at least some cases, such technology can further ensure that the system does not respond to any “false positive events.” As a non-limiting example of a false positive event, the system can evaluate all points along a trajectory, where at least some of these points may arrive later in the future relative to the frequency of receiving the trajectory. In such an example, a collision avoidance process can be conservatively initiated based on a predicted collision at at least one such point. These collision avoidance processes, while designed for passenger safety, may be associated with uncomfortable acceleration, increased computation, the need for remote assistance, and potentially have unintended consequences for other drivers. As will be discussed herein, if the predicted collision is far enough in the future, the provided technology can allow the system to receive new trajectories for evaluation before activating such a process. For example, in some cases, a second computing system can determine that the predicted primary trajectory will lead to a collision at a first time in the future. In some such cases, the second computing system can then determine whether the first time is outside a threshold time period. For example, the threshold time period can be determined based on the time period that the first computing system expects to be used to generate the new primary trajectory, as well as a buffer period. In some cases, based on (e.g., in response to) determining that the first time is outside the threshold time period, the second computing system recommends controlling the vehicle based on the primary trajectory, regardless of the predicted collision. In some cases, based on determining that the first time point is within a threshold time period, the second calculation system recommends controlling the vehicle based on an alternative trajectory, since the predicted main trajectory leads to a sufficiently close collision.
[0012] As another example, in some cases, if a second computing system determines that the predicted primary trajectory will lead to a collision and the alternative trajectory does not, the second computing system recommends controlling the vehicle based on the alternative trajectory until a new primary trajectory is received from the first computing system. The goal behind temporarily selecting an alternative trajectory may be to avoid predicted collisions that the first computing system might miss while validating the primary trajectory, and to defer to the first computing system after it generates a new primary trajectory. In some cases, the design principle behind imposing this inference on the second computing system relative to the first computing system may be to provide the first computing system with the greatest opportunity to guide the vehicle, and to use the second computing system as a safety check on the operation of the second computing system. This may be because the first computing system is expected to have additional computing resources, higher predictive accuracy, and / or a larger set of sensor inputs relative to the second computing system.
[0013] As additional examples, in some cases, if the second calculation system determines that both the predicted primary trajectory and the alternative trajectory will lead to a collision, the second calculation system recommends controlling the vehicle based on a stopping trajectory configured to guide the vehicle to a stop. In some cases, the second calculation system determines whether a trajectory is predicted to cause a collision based on whether the trajectory is predicted to cause a collision at any point in the future. In some cases, the second calculation system determines whether a trajectory is predicted to cause a collision based on whether the trajectory is predicted to cause a collision at a time outside a threshold time period. In some cases, the threshold time period can be determined based on the time period that the first calculation system expects to use to generate the new primary trajectory, as well as a buffer time period.
[0014] As illustrated in the examples provided above, in some cases, the described techniques can be used to select optimal trajectories for vehicles to increase their compliance with relevant traffic rules and avoid the likelihood of collisions with other objects in the vehicle's environment. Therefore, the techniques discussed herein can improve the safety of occupants in autonomous vehicles incorporating these techniques. Furthermore, the techniques can improve the efficiency of vehicles, such as autonomous vehicles, in performing tasks such as delivering passengers and / or goods, surveying areas, etc.
[0015] In some cases, the described techniques include equipping the vehicle with two separate computing systems, each configured to generate and / or validate the vehicle's trajectory: a first computing system and a second computing system. In some cases, the vehicle may include a vehicle safety system implemented separately from the vehicle computing device to improve the performance of the vehicle safety system and / or provide redundancy, error checking, and / or verification of determinations and / or commands determined by the vehicle computing device. However, in other cases, the vehicle safety system may be implemented as one or more components within the same vehicle computing device. Further examples of vehicle architectures including a first computing system and a second computing system can be found, for example, in U.S. Patent Application No. 16 / 218,182, filed December 12, 2018, entitled “Collision Avoidance System with Trajectory Verification”; U.S. Patent Application No. 16 / 232,863, filed December 26, 2018, entitled “Collision Avoidance System”; and U.S. Patent Application No. 16 / 588,529, filed September 30, 2019, entitled “Collision Avoidance Perception System”, the entire contents of which are incorporated herein by reference.
[0016] A first computing system typically performs processing to control how a vehicle maneuvers within its environment. This first computing system can implement various artificial intelligence (AI) techniques, such as machine learning, to understand the environment surrounding the vehicle and / or instruct the vehicle to move within that environment. For example, the first computing system can implement AI techniques to locate the vehicle, detect objects around the vehicle, segment sensor data, determine object classification, predict object trajectories, generate the vehicle's trajectory, etc. In one example, the first computing system generates a primary trajectory and an alternative trajectory for controlling the vehicle, and provides both the primary and alternative trajectories to a second computing system. The alternative trajectory can control the vehicle to stop and / or perform another maneuver (e.g., turn to one side, change lanes, etc.). In some cases, the first computing system is configured to determine, before sending the primary and secondary trajectories to the second computing system, that neither the primary nor secondary trajectories would result in a collision.
[0017] The second computing system typically uses at least one subset to evaluate the first computing system, which may include all data available to the first computing system (e.g., sensor data). For example, the second computing system can independently localize the vehicle by determining the position and / or orientation (collectively referred to as attitude) of the vehicle relative to points and / or objects in its environment. The second computing system can also independently detect objects around the vehicle and / or predict the trajectories of those objects. The second computing system can use the vehicle's attitude and / or the predicted trajectories of the objects to evaluate the trajectory of the vehicle provided by the first computing system and determine whether the trajectory should be used to control the vehicle. This localization and / or detection can use techniques similar to those used in the first computing system to validate its outputs and / or different techniques to ensure the consistency and verifiability of these outputs.
[0018] To evaluate the vehicle's trajectory, the second computing system may perform one or more operations to evaluate (or verify) the trajectory. For example, the second computing system may check whether the trajectory was generated less than a threshold time interval, whether the trajectory is consistent with the vehicle's current or previous attitude (e.g., the trajectory controls the vehicle's positioning to a possible location given the vehicle's current attitude), and whether the trajectory is compatible with the vehicle's capabilities (e.g., steering limitations, acceleration limitations, etc.). Furthermore, the second computing system may check whether the trajectory is associated with a collision. For example, the second computing system may check whether the vehicle's trajectory provided by the first computing system intersects with the trajectory of an object determined by the second computing system, and whether the object and vehicle meet simultaneously (or within a time window) at an intersection. That is, if the vehicle is held along the trajectory provided by the first computing system, the second computing system can determine whether the vehicle will collide with the object. This collision check may be based on one or more of direct kinematic assumptions and / or motion predictions of travel determined by one or more additional techniques.
[0019] In some cases, the first computing system is expected to have higher prediction accuracy but lower prediction frequency and / or responsiveness compared to the second computing system. This may be because the first computing system analyzes a larger set of sensed input data, uses computationally more complex processing operations, and / or uses more prediction models, each of which can improve the prediction accuracy of the trajectory evaluation output generated by the first computing system, but may also make the first computing system slower than the second computing system. In some cases, because the first computing system generates more accurate trajectory evaluation outputs, but does so at a slower speed, the second computing system is expected to be less accurate but more responsive than the first computing system. Therefore, in some cases, the second computing system is used to validate the operation of the first computing system.
[0020] In some cases, the second computing device includes a kinematics-based model and / or a dynamics-based model for evaluating whether at least one of the primary trajectory or alternative trajectory is predicted to intersect the predicted trajectory of the object at a time window. In some cases, the kinematics-based model is configured to determine whether the vehicle's trajectory is predicted to collide with the object based on the predicted motion direction associated with the object. In some cases, the predicted motion direction associated with the object is determined based on the object's past motion direction and the object's assumed future motion direction.
[0021] In some cases, the techniques described herein involve generating a primary trajectory and alternative trajectories using a first computing system. The primary trajectory may be a trajectory determined by the first computing system to be the optimal trajectory for the vehicle. The alternative trajectory may be another trajectory verified by the first computing system. In some cases, the alternative trajectory can be generated by modifying the primary trajectory according to one or more geometric modifications. For example, an alternative trajectory can be generated by applying lateral steering to the primary trajectory. In some cases, the alternative trajectory may be a trajectory determined by the first computing system to be the second optimal trajectory. For example, in some cases, the first computing system may determine a score for each candidate trajectory, select the highest-scoring trajectory as the primary trajectory, and select the second-highest-scoring trajectory as the alternative trajectory.
[0022] In some cases, both the primary trajectory and the alternative trajectory are generated by optimizing the lateral steering variables during trajectory generation, for example, by using a tree search algorithm. An example technique for trajectory generation and / or evaluation using a tree search operation is described in more detail in U.S. Patent No. 11,360,477, entitled “Track Generation Using Temporal Logic and Tree Search,” which is incorporated herein by reference in its entirety.
[0023] As described above, in some cases, an alternative trajectory is generated by modifying the main trajectory based on geometric modifications such as lateral steering. This modification can be performed by the first processing unit during the trajectory generation process. In some cases, the alternative trajectory is substantially parallel to the main trajectory but is positioned to one side of the main trajectory based on lateral steering, which is determined based on the magnitude of lateral steering. In some cases, to determine the alternative trajectory, the first calculation system determines a maximum amount of lateral steering, ensuring that the resulting trajectory is valid when this maximum amount is applied to the main trajectory. The maximum amount of lateral steering can be determined by ensuring a minimum distance from the lane boundary.
[0024] For example, in some cases, if the first calculation system determines that the main trajectory will still be validated if it laterally turns to the right by up to *a* units and to the left by up to *b* units, and if *a* > *b*, then the first calculation system can determine that the maximum permissible lateral turning is *a* units. In some cases, the first calculation system determines an alternative trajectory by laterally turning the main trajectory with a lateral turning magnitude determined based on (e.g., equal to) the maximum permissible lateral turning and in a lateral turning direction determined based on the direction associated with that maximum. For example, in some cases, if the first calculation system determines that the main trajectory will still be validated if it laterally turns to the right by up to *a* units and to the left by up to *b* units, and if *a* > *b*, then the first calculation system can determine that the alternative trajectory was generated by turning the main trajectory laterally to the right by *a* units.
[0025] In some cases, the lateral steering magnitude associated with an alternative trajectory is not allowed to exceed a threshold. For example, the threshold may be determined based on the distance between the estimated position of the vehicle while following the main trajectory and the estimated position of the lane markings. In some cases, the lateral steering magnitude associated with an alternative trajectory is determined in such a way that the vehicle is expected to remain within its lane of travel while following the alternative trajectory. In some cases, the lateral steering magnitude associated with an alternative trajectory is determined in such a way that the vehicle is expected to remain within its lane of travel and have a threshold distance from lane markings on one or both sides of the vehicle while following the alternative trajectory. In some cases, the lateral steering threshold applied to the lateral steering magnitude of the alternative trajectory is determined based on (e.g., based on the sum of) the following: (i) the distance between the estimated position of the vehicle while following the main trajectory and the estimated position of the lane markings, and / or (ii) a safety buffer distance.
[0026] In some cases, to determine an alternative trajectory, the first calculation system determines a maximum amount of lateral steering that: (i) ensures the resulting trajectory is valid when applied to the main trajectory, and (ii) is below a lateral steering threshold. For example, if the first calculation system determines that if the main trajectory laterally steers to the right by up to a units and to the left by up to b units, a > b, then a is below or reaches the right steering threshold T. R And b is below or reaches the left-turn threshold T L If the main trajectory is still verified, the first calculation system can determine that the maximum permissible lateral steering is *a* units. However, if the first calculation system determines that *a* > *T*... R And b < T L Then the first computational system can: (i) if b > (T) R-a), then the maximum permissible lateral steering is determined to be b units, and (ii) if b > (T R If -b), then the maximum allowable lateral steering is determined to be a units.
[0027] In some cases, after determining the maximum permissible lateral offset threshold of the main trajectory, the first calculation system determines an alternative trajectory by laterally turning the main trajectory based on (e.g., equal to) the maximum permissible lateral turning amount and in a lateral turning direction determined based on the direction associated with that maximum amount. For example, if the first calculation system determines that if the main trajectory laterally turns to the right by up to a units and laterally turns to the left by up to b units, a > b, then a is less than or equal to the right turn threshold T. R And b is below or reaches the left-turn threshold T L If the main trajectory is still verified, the first calculation system can determine that the alternative trajectory was generated by laterally turning the main trajectory to the right by a units. As another example, if the first calculation system determines that if the main trajectory turns laterally to the right by a units and laterally to the left by b units, a > b, then a exceeds the right-turn threshold T. R b is below or reaches the left-turn threshold T L And b > (T) R –a) If the main trajectory is still verified, the first calculation system can determine that the alternative trajectory was generated by laterally turning the main trajectory to the left by b units. As an additional example, if the first calculation system determines that if the main trajectory laterally turns to the right by a units and laterally turns to the left by b units, a > b, then a exceeds the right-turn threshold T. R b is below or reaches the left-turn threshold T L And b < (T) R –a), the main trajectory will still be verified, then the first calculation system can determine that the alternative trajectory was generated by turning the main trajectory laterally to the right by a units.
[0028] Therefore, in some cases, an alternative trajectory is generated by applying lateral steering to a direction based on the lateral steering magnitude, where the lateral steering magnitude is below or reaches a lateral steering threshold. In some cases, the lateral steering threshold is the same for rightward and leftward lateral steering, while in others, each direction is associated with a corresponding threshold. In some cases, if the estimated vehicle position (x...) V y V ), estimate the position of the right lane sign (x) R y R And estimate the position of the left lane sign (x) L y L ), then it can be based on | x V -xR |Determine the right turn threshold, and then it can be based on |x V -x L | Determine the left turn threshold. For example, it can be based on (| x V -x R | - B R Determine the right turn threshold, and then you can base it on (|x) V -x L | + B L Determine the left turn threshold, where B R This could be a buffer distance for right turns, while B L This can be a buffer distance for left turns, which can be related to B. R Same or different. In some cases, whether the lane to the right of the vehicle's current lane is estimated in y V The threshold longitudinal distance occupied by objects and / or vehicles is used to determine B. R In some cases, this is based on whether the lane to the left of the vehicle's current lane is within the y-axis. V The threshold longitudinal distance occupied by objects and / or vehicles is used to determine B. L .
[0029] In some cases, in addition to the main trajectory and the alternative trajectory, the first computing system also provides a stopping trajectory to the second computing system. In some cases, the stopping trajectory is configured to guide the vehicle to a stop. In some cases, the first computing system verifies the stopping trajectory. In some cases, the alternative trajectory also guides the vehicle to a stop, but it differs from the stopping trajectory provided and / or verified by the first computing system. In some cases, the alternative trajectory causes the vehicle to turn for a period of time before stopping the vehicle.
[0030] In some cases, the techniques described herein include evaluating a trajectory provided by a first computing system. In some cases, evaluating the trajectory includes: determining whether the trajectory is predicted to cause a collision, and determining whether to validate the trajectory based on whether the trajectory is predicted to cause a collision. In some cases, if the predicted trajectory does not cause a collision, the trajectory is validated. In some cases, if the trajectory is predicted to cause a collision, the trajectory is not validated (e.g., rejected).
[0031] In some cases, trajectory evaluation includes determining whether the trajectory is predicted to cause a collision within a threshold time period, and determining whether to validate the trajectory based on whether the trajectory is predicted to cause a collision within the threshold time period. In some cases, the trajectory is validated if the predicted trajectory does not cause a collision within the threshold time period. In some cases, the trajectory is not validated (e.g., rejected) if the predicted trajectory causes a collision within the threshold time period.
[0032] In some cases, if the probability that a trajectory will cause a collision during a time period exceeds a probability threshold, the trajectory is predicted to cause a collision during that time period. In some cases, if the probability that the main trajectory will cause a collision during a threshold time period is determined to be below the probability threshold, the vehicle is controlled based on the main trajectory. In some cases, determining that the probability is below the probability threshold is based on (e.g., in response to) determining that the main trajectory will cause a collision at a first time point and that the first time point reaches or exceeds the threshold time period. In some cases, the probability can be determined based on at least one of the following: a first speed of the autonomous vehicle, a second speed of the object associated with the predicted collision, the classification of the object, or the environment of the autonomous vehicle. In some cases, the probability can be determined based on at least one of the following: the vehicle's speed, environmental characteristics of the vehicle, the vehicle's deceleration profile, a collision time measure, a collision distance measure, or the classification of the object associated with the predicted collision.
[0033] In some cases, the probability that a vehicle will collide with an object within a threshold time period can be determined based on the object's predicted trajectory. For example, the object's trajectory can be used to determine a second probability that the object leaves an occluded area. This second probability can then be used to determine the probability that the vehicle will collide with the object within the threshold time period.
[0034] In some cases, the second computing system evaluates the trajectory to determine whether it is predicted to cause a collision, and if so, when it is predicted to cause a collision. In some such cases, if the second computing system determines that the trajectory is not predicted to cause a collision, it determines a verification trajectory. In some cases, if the second computing system determines that the trajectory is predicted to cause a collision, it determines a first time associated with the predicted collision. In some cases, the second computing system may then determine whether the first time is outside a threshold time period. For example, the threshold time period may be determined based on the time period that the first computing system expects to use to generate the new master trajectory, as well as a buffer period. In some cases, based on the determination that the first time is outside the threshold time period, the second computing system recommends controlling the vehicle based on the master trajectory, regardless of the predicted collision. In some cases, based on the determination that the first time is within the threshold time period, the second computing system recommends controlling the vehicle based on an alternative trajectory, because the predicted master trajectory leads to a sufficiently close collision.
[0035] In some cases, to verify the trajectory, the second computing system may check whether the trajectory of the vehicle provided by the first computing system intersects with the trajectory of the object determined by the second computing system, and whether the object and the vehicle meet at the intersection simultaneously (or within a time window). In some cases, to verify the trajectory, the second computing system may perform one or more collision check operations based on one or more of the direct kinematic assumptions and / or motion predictions of travel determined by one or more additional techniques.
[0036] As described above, in some cases, the second calculation system verifies the trajectory based on whether a first time associated with the predicted collision of the trajectory falls outside a threshold time period. In some cases, the threshold time period is determined based on an estimated time associated with receiving a new master trajectory from the first calculation system. In some cases, the threshold time period is determined based on an estimated time associated with receiving a new master trajectory from the first calculation system and a buffer time period. The buffer time period can be determined based on the classification of the object with which the vehicle is predicted to collide (e.g., based on whether the object is a pedestrian, based on whether the object is a moving and / or dynamic object, based on whether the object is a static object, etc.), the object's speed, the vehicle's speed, the vehicle's direction of movement, the object's speed, the object's direction of movement, and / or one or more characteristics of the vehicle's environment (e.g., weather conditions, road safety features, etc.). In some cases, the threshold time period is determined based on at least one of the following: the vehicle's speed, the vehicle's environmental characteristics, the vehicle's deceleration profile, a collision time measure, a collision distance measure, or the classification of the object associated with the predicted collision.
[0037] In some cases, if the second calculation system determines that the trajectory is predicted to lead to a collision with an object in the vehicle environment, the second calculation system can determine a threshold time period based on one or more characteristics of the object. In some cases, the second calculation system can determine the threshold time based on the vehicle's speed, the vehicle's direction of movement, the object's speed, and / or the object's direction of movement. For example, if the vehicle is moving faster toward the object, the second calculation system can determine a shorter threshold time period. As another example, if the vehicle is moving faster away from the object, the second calculation system can determine a longer threshold time period. As a further example, if the object is moving faster toward the object, the second calculation system can determine a shorter threshold time period. As an additional example, if the object is moving faster away from the object, the second calculation system can determine a longer threshold time period.
[0038] In some cases, the second calculation system can determine the threshold time period based on the classification of the object that the vehicle is predicted to collide with. For example, in some cases, if the object is a pedestrian, the second calculation system can determine a longer threshold time period. As another example, if the object is a dynamic (e.g., moving) object, the second calculation system can determine a longer threshold time period. As an additional example, if the object is a reactive object (e.g., an object expected to react to the movement of a vehicle), the second calculation system can determine a longer threshold time period. As a further example, if the object is a static and / or non-reactive object, the second calculation system can determine a shorter threshold time period.
[0039] In some cases, the second calculation system can determine the threshold time period based on one or more characteristics of the vehicle environment. For example, in some cases, if weather conditions make the vehicle environment more dangerous, the second calculation system can determine a longer threshold time period. As another example, in some cases, if road conditions make the vehicle environment more dangerous, the second calculation system can determine a longer threshold time period. As a further example, in some cases, if traffic conditions make the vehicle environment more dangerous, the second calculation system can determine a longer threshold time period. As an additional example, if the time of day makes other drivers and / or objects more likely to act unresponsively, the second calculation system can determine a longer threshold time period.
[0040] In some cases, the techniques described herein involve using a second computing system to determine a recommended trajectory for the vehicle based on a primary trajectory and alternative trajectories provided by a first computing system. In some cases, the second computing system is configured to select whether to recommend the vehicle's primary trajectory, alternative trajectories, or neither. In some cases, the second computing system is configured to select the optimal trajectory for the vehicle to increase the likelihood of the vehicle operating in accordance with applicable traffic regulations and avoiding collisions with other objects in the vehicle's environment. In some cases, the second computing device can modify the trajectory longitudinally, but only the first computing device can modify the trajectory both longitudinally and laterally.
[0041] In some cases, if the second calculation system determines that the predicted primary trajectory will cause a collision and the alternative trajectory is not predicted to cause a collision, the second calculation system recommends controlling the vehicle based on the alternative trajectory until a new primary trajectory is received from the first calculation system. In some cases, if the second calculation system determines that both the predicted primary trajectory and the alternative trajectory will cause a collision, the second calculation system recommends controlling the vehicle based on a parking trajectory configured to guide the vehicle to a stop.
[0042] In some cases, the second calculation system can determine that the predicted primary trajectory will lead to a collision at a first future time. In some such cases, the second calculation system can then determine whether the first time is outside a threshold time period. In some cases, based on (e.g., in response to) determining that the first time is outside the threshold time period, the second calculation system recommends controlling the vehicle based on the primary trajectory, regardless of the predicted collision. In some cases, based on determining that the first time is within the threshold time period, the second calculation system recommends controlling the vehicle based on an alternative trajectory, because the predicted primary trajectory leads to a sufficiently close collision.
[0043] In some cases, the second computing system can provide the first computing system with a message indicating the error associated with the trajectory provided by the first computing system. For example, if the vehicle is traveling along the main trajectory provided by the first computing system, and if the second computing system determines that an estimated collision is far enough away in the future that the vehicle does not need to brake immediately (e.g., beyond a threshold time), the second computing system can send a message to the first computing system to warn it. This can allow the first computing system to adjust the main trajectory before a collision occurs.
[0044] In some cases, the techniques described herein involve controlling the vehicle based on a trajectory adopted by a second computing system. In some cases, after a trajectory is selected using the second computing system, the system controller component controls the vehicle based on that optimal trajectory. In some cases, controlling the vehicle based on the optimal trajectory is configured to improve occupant safety of autonomous vehicles using techniques incorporated herein. Furthermore, this technique can improve the efficiency of vehicles, such as autonomous vehicles, in performing tasks such as delivering passengers and / or goods, surveying areas, etc.
[0045] In some cases, the second computing system can select a trajectory to maintain control of the vehicle based on the chosen trajectory until a signal to release control from the selected trajectory is received. For example, if necessary, the second computing system can switch to an alternative trajectory at any time and avoid switching back to another trajectory (e.g., a new primary trajectory provided by the first computing system) until a signal is received to release control to the other trajectory. To illustrate, if the second computing system selects an alternative trajectory because the primary trajectory is associated with a collision, control of the vehicle can be maintained along the alternative trajectory until a signal is received from a remote operating system (e.g., a system associated with the operator) to release control to the other trajectory. By doing so, the vehicle can avoid frequent changes between trajectories.
[0046] In some cases, the technologies and / or systems discussed herein can enhance the safety of passengers in a vehicle and / or other individuals near the vehicle. For example, a second computing system can detect errors in the trajectory provided by a first computing system and control the vehicle to safely decelerate, stop, and / or perform another maneuver to avoid a collision. In some cases, the second computing system can operate relatively independently of the first computing system, enabling another form of assessment to avoid a collision. For example, the second computing system can independently detect objects approaching the vehicle and / or assess the trajectory generated by the first computing system. Furthermore, in some cases, the second computing system can be a system with higher integrity (e.g., more verifiable) and / or less complex than the first computing system. For example, the second computing system can be designed to process less data, include a shorter processing pipeline than the first computing system, operate according to a technology that is more easily verifiable than the technology of the first computing system, and so on.
[0047] In some cases, the techniques described in this paper increase the redundancy of the vehicle computing device by equipping it with two computing systems for trajectory verification. In some cases, if one system fails, the other can take over, which increases the reliability of the vehicle computing device.
[0048] In some cases, the techniques described herein improve the efficiency of the vehicle computing device by enabling the first computing system to generate trajectories at a lower frequency. In some cases, because the first computing system provides two validated trajectories at each iteration, it may need to validate new trajectories less frequently, which reduces the computational load on the first computing system and thus makes the vehicle computing device more efficient.
[0049] The methods, apparatuses, and systems described herein can be implemented in a variety of ways. Example implementations are provided below with reference to the accompanying figures. Although discussed in the context of autonomous vehicles, in some examples, the methods, apparatuses, and systems described herein can be applied to a variety of systems. In another example, the methods, apparatuses, and systems described herein can be used in an aviation or marine environment. Additionally or alternatively, the techniques described herein can be used with real data (e.g., captured using sensors), simulated data (e.g., generated by a simulator), or any combination thereof.
[0050] Figure 1 An example environment 100 in which the techniques described herein can be implemented is shown. For example... Figure 1 As depicted, environment 100 includes vehicle 102 and object 120. (As...) Figure 1 As further depicted, vehicle 102 is associated with main trajectory 130 and alternative trajectory 132. The current position of object 120 intersects with main trajectory 130 but not with auxiliary trajectory 132.
[0051] The main trajectory 130 and the alternative trajectory 132 can be generated using one or more sensors 108 and / or one or more computing devices 110 of the vehicle. According to the techniques discussed herein, data collected by vehicle(s) 102 may include sensor data from one or more sensors 108 of vehicle(s) 102. For example, sensors 108 may include position sensors (e.g., Global Positioning System (GPS) sensors), inertial sensors (e.g., accelerometer sensors, gyroscope sensors, etc.), magnetic field sensors (e.g., compasses), position / velocity / accelerometer sensors (e.g., speedometers, drive system sensors), depth position sensors (e.g., lidar sensors, radar sensors, sonar sensors, time-of-flight (ToF) cameras, depth cameras, and / or other depth sensing sensors), image sensors (e.g., cameras), audio sensors (e.g., microphones), and / or environmental sensors (e.g., barometers, hygrometers, etc.). Sensor(s) 108 can generate sensor data that can be received by one or more computing devices 110 associated with vehicle(s) 102. However, in other examples, some or all of the sensors 108 and / or computing devices 110 may be separated from and / or located away from the vehicles 102, and data capture, processing, command and / or control may be transmitted to / from the vehicles 102 by one or more remote computing devices via wired and / or wireless networks. One or more computing devices 110 may include memory 112 storing sensing components 114, planning components 116, one or more controllers 138, and / or trajectory verification systems 118. Note that in some examples, computing devices 110 may additionally or alternatively store a positioning component, which may include one or more software and / or hardware systems for determining the attitude (e.g., position and / or orientation) of one or more vehicles 102 relative to one or more coordinate systems (e.g., relative to the environment, relative to the road, relative to the inertial direction of movement associated with the autonomous vehicle). The positioning component may output at least a portion of this data to the sensing component 114, which may output at least some of the positioning data and / or use the positioning data as a reference for determining at least some of the sensing data. The perception component 114 can determine what is in the environment surrounding (or, in a simulation, what is in the simulated environment) of vehicle(s) 102, and the planning component 116 can determine how to operate vehicle(s) 102 based on information received from the localization component and / or the perception component 114. The localization component, the perception component 114, and / or the planning component 116 may include one or more machine learning (ML) models and / or other computer-executable instructions. In some cases, the planning component 116 is configured to generate one or more trajectories (e.g., primary trajectory 130, alternative trajectory 132, etc.). The trajectory verification system 118 can be configured to verify the trajectories provided by the planning component 116, select the optimal trajectory, and provide the optimal trajectory to one or more system controllers 138. The system controllers 138 can then be configured to control the vehicle 102 based on the selected trajectory. In some cases, in order to select the optimal trajectory, the trajectory verification system 118 performs the operations of process 160, such as... Figure 1 As depicted herein. However, while the various embodiments described herein use the trajectory verification system 118 to verify and select trajectories, those skilled in the art will recognize that other components of the vehicle can also be used to verify and select trajectories. Furthermore, all operations described herein as performed by the trajectory verification system 118 can be performed by other components of the vehicle. like Figure 1 As shown, in operation 140, trajectory verification system 118 receives primary trajectory 130 and alternative trajectory 132. At operation 142, trajectory verification system 118 determines that the predicted primary trajectory 130 will cause a collision at a first time. For example, a second calculation system may determine that trajectory 130 intersects the trajectory of an object (e.g., object 120) at a first time (e.g., as determined by trajectory verification system 118) and / or that the object and vehicle 102 meet at an intersection at a first time. In some cases, if the vehicle is held along primary trajectory 130, trajectory verification system 118 may determine that vehicle 102 will collide with an object (e.g., with object 120) at a first time. This collision check may be based on one or more of direct kinematic assumptions of travel and / or motion predictions determined by one or more additional techniques. In some cases, the first time is a future point in time. In some cases, the first time is a future time window. In operation 144, the trajectory verification system 118 determines whether the first time is within a threshold time period. In some cases, the threshold time period is determined based on the estimated time associated with receiving the new main trajectory. In other cases, the threshold time period is determined based on the estimated time associated with receiving the new main trajectory and a buffer time period. The buffer time period may be determined based on the classification of the object with which the vehicle is predicted to collide (e.g., based on whether the object is a pedestrian or a moving / dynamic object), the speed of the object, the speed of the vehicle 102, the direction of movement of the vehicle, the speed of the object, the direction of movement of the object, one or more characteristics of the vehicle's environment 100 (e.g., weather conditions, road safety features, etc.). In some cases, the trajectory verification system 118 may determine a threshold time period based on one or more features of the object that the vehicle 102 is predicted to collide with. In some cases, the trajectory verification system 118 may determine the threshold time period based on the speed of the vehicle 102, the direction of the vehicle's movement, the speed of the object, and / or the direction of the object's movement. In some cases, the trajectory verification system 118 may determine the threshold time period based on the classification of the object that the vehicle 102 is predicted to collide with. For example, in some cases, if the object is a pedestrian, the trajectory verification system 118 may determine a longer threshold time period. In some cases, the trajectory verification system 118 may determine the threshold time period based on one or more features of the vehicle environment 100. For example, in some cases, if weather conditions make the vehicle environment more dangerous, the trajectory verification system 118 may determine a longer threshold time period. In any such example, a threshold can be determined to improve the safe operation of the vehicle while attempting to account for false alarms. In operation 146, the trajectory verification system 118 controls the vehicle 102 based on the main trajectory 130, based on determining that a first time is outside a threshold time period (e.g., in response to determining that the first time is outside a threshold time period). In some cases, the trajectory verification system 118 provides the main trajectory 130 to controller(s) ... At operation 148, the trajectory verification system 118 determines whether to verify the alternative trajectory 132 based on (e.g., in response to) determining a first time within a threshold time period. In some cases, the trajectory evaluation by the trajectory verification system 118 includes: determining whether the trajectory is predicted to cause a collision, and determining whether to verify the trajectory based on whether the trajectory is predicted to cause a collision. In some cases, if the predicted trajectory does not cause a collision, the trajectory is verified. In some cases, if the trajectory is predicted to cause a collision, the trajectory is not verified (e.g., rejected). In some cases, trajectory evaluation by trajectory verification system 118 includes: determining whether the trajectory is predicted to cause a collision within a threshold time period, and determining whether to verify the trajectory based on whether the trajectory is predicted to cause a collision within the threshold time period. In some cases, if the predicted trajectory does not cause a collision within the threshold time period, the trajectory is verified. In some cases, if the predicted trajectory causes a collision within the threshold time period, the trajectory is not verified (e.g., rejected). At operation 150, the trajectory verification system 118 controls the vehicle 102 based on (e.g., in response to) determining that a first time period is within a threshold time period and that the alternative trajectory 132 has been verified. In some cases, the trajectory verification system 118 provides the alternative trajectory 132 to one or more controllers 138 so that one or more controllers 138 can control the vehicle based on the alternative trajectory 132. At operation 152, the trajectory verification system 118 controls the vehicle 102 based on the stop trajectory, based on (e.g., in response to) determining that a first time period falls within a threshold time interval and the alternative trajectory 132 has not been verified. In some cases, the trajectory verification system 118 provides the stop trajectory to one or more controllers 138, enabling the controllers 138 to control the vehicle based on the stop trajectory. In some cases, the stop trajectory is configured to guide the vehicle to a stop. In some cases, the alternative trajectory 132 also guides the vehicle to a stop, but is different from the stop trajectory. In some cases, the trajectory verification system 118 generates a stop profile of the alternative trajectory 132, which represents the stop point, stop path, and / or deceleration profile of the alternative trajectory 132. In some cases, the trajectory verification system 118 generates a stop trajectory by generating at least one of the following along the main trajectory 130: a stop point, a stop path, or a deceleration profile. In some cases, the trajectory verification system 118 generates a stop profile for a trajectory configured to bring the vehicle to a stop. The stop profile of the trajectory can represent at least one of a stop point, a stop path, or a deceleration profile. Figure 2 It is used to determine whether to accept or reject the first trajectory (e.g., such as...) Figure 1 The main trajectory of 130, or such as Figure 1 The flowchart of an example process 200 for the alternative trajectory 132. Figure 2 As depicted, at operation 202, process 200 includes receiving a first trajectory. In some cases, a second computing system (e.g., Figure 1 The trajectory verification system 118) is from the first computing system (e.g., Figure 1 The planning component 116) receives the first trajectory. In operation 204, process 200 includes verifying a first trajectory. In some cases, verifying the first trajectory includes verifying the first trajectory at frequent time intervals until a new master trajectory is received. In some cases, verifying the first trajectory includes verifying the first trajectory at every time processing resources are available for verification until a new master trajectory is received. In some cases, the verification of the first trajectory is performed by a second computing system. In some cases, the second computing system may perform one or more operations to verify the trajectory. If the second computing system determines that the trajectory-based vehicle control may meet one or more safety and / or one or more validity conditions, the second computing system may determine that the trajectory is valid and therefore verify the trajectory. If the second computing system determines that the trajectory-based vehicle control may fail under one or more safety and / or one or more validity conditions, the second computing system may determine that the trajectory is invalid and therefore reject the trajectory. For example, the second computing system may determine that the trajectory is invalid and therefore reject and / or modify the trajectory if the system determines that the trajectory may lead to a collision. In some cases, to verify the trajectory, the second calculation system can check whether the trajectory was generated less than a threshold amount of time, whether the trajectory is consistent with the vehicle's current or previous attitude (e.g., the trajectory controls the vehicle's possible position in the given vehicle's current attitude), and whether the trajectory is compatible with the vehicle's capabilities (e.g., steering limitations, acceleration limitations, etc.). Furthermore, the second calculation system can check whether the trajectory is associated with a collision. For example, the second calculation system can check whether the trajectory of the vehicle provided by the first calculation system intersects with the trajectory of an object determined by the second calculation system, and whether the object and the vehicle meet simultaneously (or within a time window) at an intersection. In operation 206, process 200 includes determining whether a first trajectory is both valid and predicted to avoid a collision based on each verification determination output generated by the successive verification process. For example, if the first trajectory intersects with the trajectory of an object (e.g., as determined by a second computing system), and if the object and the vehicle meet at the intersection at the same time (or within the same time window), the second computing system can determine whether the first trajectory is predicted to cause a collision. At operation 208, process 200 includes selecting a first trajectory based on (e.g., in response to) determining that a first trajectory is valid and predicted not to cause a collision. In some cases, based on determining that the first trajectory is predicted not to cause a collision, a second computing system provides the first trajectory to one or more vehicle controllers so that the controller(s) can control the vehicle based on the first trajectory. At operation 210, process 200 includes determining whether the collision time associated with the predicted collision falls outside a threshold time period based on (e.g., in response to) determining that the first trajectory is valid and / or predicted to cause a collision. In some cases, the threshold time period is determined based on an estimated time associated with receiving a new master trajectory from the first computing system. In some cases, the threshold time period is determined based on an estimated time associated with receiving a new master trajectory from the first computing system and a buffer time period. The buffer time period may be determined based on the classification of the object with which the vehicle is predicted to collide (e.g., based on whether the object is a pedestrian or a moving / dynamic object), the speed of the object, the speed of the vehicle, the direction of movement of the vehicle, the speed of the object, the direction of movement of the object, and / or one or more characteristics of the vehicle environment (e.g., weather conditions, road safety features, etc.). In some cases, the second calculation system can determine the threshold time period based on the classification of the object that the vehicle is predicted to collide with. For example, in some cases, if the object is a pedestrian, the second calculation system can determine a longer threshold time period. As another example, if the object is a dynamic (e.g., moving) object, the second calculation system can determine a longer threshold time period. As an additional example, if the object is a reactive object (e.g., an object expected to react to the movement of a vehicle), the second calculation system can determine a longer threshold time period. As a further example, if the object is a static and / or non-reactive object, the second calculation system can determine a shorter threshold time period. In some cases, based on (e.g., in response to) determining that a first trajectory is predicted to cause a collision, but the collision time falls outside a threshold time period, process 200 returns to operation 208 to control the vehicle based on the first trajectory. In some cases, based on (e.g., in response to) determining that a first trajectory is predicted to cause a collision, but the collision time falls outside a threshold time period, the second calculation system provides the first trajectory to one or more vehicle controllers so that the controllers can control the vehicle based on the first trajectory. In some cases, based on (e.g., in response to) determining that the collision time is outside a threshold time period, the second calculation system recommends controlling the vehicle based on the primary trajectory, regardless of the predicted collision. In some cases, based on determining that the first time is within a threshold time period, the second calculation system recommends controlling the vehicle based on an alternative trajectory because the predicted primary trajectory results in a sufficiently close collision. At operation 212, process 200 includes rejecting the first trajectory based on (e.g., in response to) determining that a first trajectory is predicted to cause a collision and that the collision time falls within a threshold time period. In some cases, based on determining that the collision time is within the threshold time period, a second calculation system recommends controlling the vehicle based on a different trajectory (e.g., an alternative trajectory) because the first trajectory is predicted to cause a sufficiently close collision. Upon such rejection, the process may proceed to one or more safety maneuvers as discussed in detail herein. Figure 3 This is a flowchart of an example process 300 for the second computing system to select one of the trajectories received from the first computing system. (Example:) Figure 3 As described, at operation 302, the second calculation system determines whether to verify the main trajectory. The main trajectory can be the trajectory that the first calculation system determines is the optimal trajectory for the vehicle to choose. To verify the primary trajectory, the second computational system can perform one or more operations to evaluate (or verify) the primary trajectory. For example, the second computational system can check whether the primary trajectory was generated less than a threshold time interval, whether the primary trajectory is consistent with the vehicle's current or previous attitude (e.g., the primary trajectory controls the vehicle's positioning to a possible location given the vehicle's current attitude), and whether the primary trajectory is compatible with the vehicle's capabilities (e.g., steering limitations, acceleration limitations, etc.). Furthermore, the second computational system can check whether the primary trajectory is predicted to cause a collision. In operation 304, the second computing system selects a main trajectory based on (e.g., in response to) determining a valid main trajectory. In some cases, based on (e.g., in response to) determining that the main trajectory is valid, the second computing system provides the main trajectory to one or more vehicle controllers so that the vehicle controllers can control the vehicle based on the main trajectory. In operation 306, the second computing system determines, based on (e.g., in response to) determining that a main trajectory has been rejected, whether a new main trajectory has been received from the first computing system after the main trajectory processed in operation 302. In some cases, the first computing system is configured to provide the vehicle with new main trajectories over time (e.g., periodically). In some cases, the first computing system is configured to provide the vehicle with a set of trajectories over time (e.g., periodically), where each set of trajectories includes a new main trajectory and a new alternative trajectory. In some cases, the first computing system is configured to provide the vehicle with a set of trajectories over time (e.g., periodically), where each set of trajectories includes a new main trajectory, a new alternative trajectory, and a new stopping trajectory. In operation 308, the second computing system selects a new master trajectory based on (e.g., in response to) determining that a new master trajectory has been received and that the new master trajectory is valid. In some cases, based on (e.g., in response to) determining that a new master trajectory has been received, the second computing system provides the new master trajectory to one or more vehicle controllers, enabling the vehicle controllers to control the vehicle based on the new master trajectory. In operation 310, the second computing system determines to apply mitigation logic based on (e.g., in response to) determining that the main trajectory is invalid and no new main trajectory has been received. In some cases, to apply the mitigation logic, the second computing system determines the probability that each of one or more additional trajectories will cause a collision and selects the additional trajectory with the lowest probability. Additional trajectories may include alternative trajectories and / or stopping trajectories. A stopping trajectory can be generated by determining a stopping point along the main trajectory. In some cases, the second computing system may modify the additional trajectories longitudinally before applying mitigation logic based on the best additional trajectory (e.g., based on an alternative trajectory or a stopping trajectory). Figure 4 This is a flowchart of an example process 400 for determining an alternative trajectory based on the main trajectory. (Example:) Figure 4 As shown, in operation 402, process 400 includes receiving a master trajectory. In some cases, the first computing system generates and / or verifies the master trajectory and provides it to the second computing system. The master trajectory may be the trajectory determined by the first computing system as the optimal trajectory for the vehicle to select. In operation 404, process 400 includes identifying (e.g., determining or receiving) lateral steering thresholds. In some cases, the lateral steering threshold is the maximum amount of lateral steering that can be applied to the main trajectory to generate an alternative trajectory. In some cases, two lateral steering thresholds are identified: a left lateral steering direction threshold, which is the maximum amount of left lateral steering that can be applied to the main trajectory to generate an alternative trajectory, and a right lateral steering direction threshold, which is the maximum amount of right lateral steering that can be applied to the main trajectory to generate an alternative trajectory. In some cases, for each time period (e.g., seconds) in a future time period, a separate set of one or more lateral steering thresholds is identified. For example, a future first second may be associated with a first left lateral steering direction and a first right lateral steering direction, a future second second may be associated with a second left lateral steering direction and a second right lateral steering direction, and so on. This may be because the lane width is expected to change as the vehicle travels along the main trajectory. In some cases, the lateral steering magnitude associated with an alternative trajectory is not allowed to exceed a lateral steering threshold. For example, the threshold may be determined based on the distance between the estimated position of the vehicle while following the main trajectory and the estimated position of a lane sign. In some cases, the lateral steering magnitude associated with an alternative trajectory is determined in such a way that the vehicle is expected to remain within its lane of travel while following the alternative trajectory. In some cases, the lateral steering magnitude associated with an alternative trajectory is determined in such a way that the vehicle is expected to remain within its lane of travel and have a threshold distance from lane signs on one or both sides of the vehicle while following the alternative trajectory. In some cases, the lateral steering threshold applied to the lateral steering magnitude of the alternative trajectory is determined based on (e.g., based on the sum of) the following: (i) the distance between the estimated position of the vehicle and the estimated position of a lane sign while following the main trajectory, and (ii) a safety buffer distance. In operation 406, process 400 includes determining the lateral steering magnitude to be applied to the main trajectory to generate the alternative trajectory. In some cases, to determine the lateral steering magnitude, the system (e.g., a first calculation system) determines a maximum amount of lateral steering that: (i) ensures the resulting trajectory is valid when applied to the main trajectory, and (ii) is below a lateral steering threshold. For example, if the system determines that if the main trajectory laterally steers to the right by up to a units and laterally steers to the left by up to b units, a > b, then a is below or reaches the right steering threshold T. R And b is below or reaches the left-turn threshold T L If the main trajectory is still verified, the first calculation system can determine that the maximum allowable lateral steering is a units. In some cases, after determining the maximum allowable lateral offset threshold of the main trajectory, the system determines an alternative trajectory by laterally turning the main trajectory based on (e.g., equal to) the maximum allowable lateral turn, in a lateral turning direction determined based on the direction associated with the maximum allowable lateral turn. For example, if the system determines that if the main trajectory laterally turns a unit to the right and b units to the left, a > b, then a is below or reaches the right turn threshold T. R And b is below or reaches the left-turn threshold T L If the main trajectory is still verified, the system can determine to generate an alternative trajectory by turning the main trajectory laterally to the right by a units. In operation 408, process 400 includes determining an alternative trajectory based on the lateral steering magnitude. For example, in some cases, to determine the alternative trajectory, the system (e.g., a first computing system) laterally steers the main trajectory by that lateral steering magnitude. In some cases, the alternative trajectory is substantially parallel to the main trajectory, but is positioned to one side of the main trajectory based on the lateral steering magnitude. Figure 5 This is a flowchart of an example process 500 for controlling a vehicle based on at least one of a main trajectory or an alternative trajectory. (Example:) Figure 5 As shown, in operation 502, process 500 includes determining the master trajectory. The master trajectory may be the trajectory determined by the first calculation system as the optimal trajectory to be selected by the vehicle. In operation 504, process 500 includes determining the lateral steering magnitude. In some cases, to determine the lateral steering magnitude, the system (e.g., a first calculation system) determines a maximum amount of lateral steering that: (i) still ensures the resulting trajectory is valid when applied to the main trajectory, and (ii) is below the lateral steering threshold. For example, if the system determines that if the main trajectory laterally steers to the right by up to a units and laterally steers to the left by up to b units, a > b, then a is below or reaches the right steering threshold T. R And b is below or reaches the left-turn threshold T L If the main trajectory is still verified, the first calculation system can determine that the maximum allowable lateral steering is a units. At operation 506, process 500 includes determining an alternative trajectory based on the main trajectory and a lateral steering threshold. In some cases, to determine the alternative trajectory, the system (e.g., a first computing system) laterally steers the main trajectory by that lateral steering magnitude. In some cases, the alternative trajectory is substantially parallel to the main trajectory, but is positioned to one side of the main trajectory based on the lateral steering, which is determined based on the lateral steering magnitude. In operation 508, process 500 includes verifying the primary trajectory and alternative trajectories. In some cases, to verify the trajectory, the second computational system may check whether the trajectory was generated less than a threshold time amount, whether the trajectory is consistent with the vehicle's current or previous attitude (e.g., the trajectory controls the vehicle's possible position given the vehicle's current attitude), and whether the trajectory is compatible with the vehicle's capabilities (e.g., steering limitations, acceleration limitations, etc.). Furthermore, the second computational system may check whether the trajectory is associated with a collision. For example, the second computational system may check whether the vehicle's trajectory provided by the first computational system intersects with the trajectory of an object determined by the second computational system, and whether the object and vehicle meet simultaneously (or within a time window) at an intersection. That is, if the vehicle is held along the trajectory provided by the first computational system, the second computational system can determine whether the vehicle will collide with the object. This collision check may be based on one or more of direct kinematic assumptions and / or motion predictions of travel determined by one or more additional techniques. In operation 510, process 500 includes selecting the optimal trajectory based on the trajectory verification results obtained in operation 508. In some cases, if the primary trajectory is verified, the primary trajectory is selected as the optimal trajectory. In some cases, if the primary trajectory is rejected but the auxiliary trajectory is verified, the alternative trajectory is selected as the optimal trajectory. In some cases, if both the primary trajectory and the alternative trajectory are rejected, the stop trajectory is selected as the optimal trajectory. In operation 512, process 200 includes controlling the vehicle based on the selected optimal trajectory. In some cases, a second computing system provides the optimal trajectory to one or more vehicle controllers, enabling the vehicle(s) to control the vehicle based on the optimal trajectory. In some cases, after selecting a trajectory using the second computing system, the system controller components control the vehicle based on that optimal trajectory. In some cases, controlling the vehicle based on the optimal trajectory is configured to improve occupant safety of autonomous vehicles using techniques incorporated herein by reference. Furthermore, this technique can improve the efficiency of vehicles, such as autonomous vehicles, in performing tasks such as delivering passengers and / or goods, surveying areas, etc. Figure 6 This is a block diagram of an example system 600 for implementing the techniques described herein. In at least one example, system 600 may include vehicle 602. In the example system 600 shown, vehicle 602 is an autonomous vehicle; however, vehicle 602 may be any other type of vehicle. Vehicle 602 may be an unmanned vehicle, such as an autonomous vehicle configured to operate according to a Level 5 classification issued by the National Highway Traffic Safety Administration (NHTSA), which describes a vehicle capable of performing all safety-critical functions throughout the journey, where the driver (or occupant) does not expect to control the vehicle at any time. In such an example, because vehicle 602 can be configured to control all functions from the start to the end of the journey, including all parking functions, vehicle 602 may not include a driver and / or controls for driving vehicle 602, such as a steering wheel, accelerator pedal, and / or brake pedal. This is merely an example, and the systems and methods described herein can be incorporated into any ground-borne, airborne, or waterborne vehicle, ranging from vehicles requiring manual driver control to partially or fully autonomous vehicles. Vehicle 602 may include one or more first computing devices 604, one or more sensor systems 606, one or more transmitters 608, one or more communication connections 610 (also referred to as communication devices and / or modems), at least one direct connection 612 (e.g., for physically coupling with vehicle 602 to exchange data and / or provide power), and one or more drive systems 614. The one or more sensor systems 606 may be configured to capture sensor data associated with the environment. One or more sensor systems 606 may include time-of-flight sensors, position sensors (e.g., GPS, compass, etc.), inertial sensors (e.g., inertial measurement unit (IMU), accelerometer, magnetometer, gyroscope, etc.), lidar sensors, radar sensors, sonar sensors, infrared sensors, cameras (e.g., RGB, IR, intensity, depth, etc.), microphone sensors, environmental sensors (e.g., temperature sensors, humidity sensors, light sensors, pressure sensors, etc.), ultrasonic transducers, wheel encoders, etc. Sensor system 606 may include multiple instances of each of these or other types of sensors. For example, time-of-flight sensors may include individual time-of-flight sensors located at the corners, front, rear, sides, and / or top of vehicle 602. As another example, camera sensors may include multiple cameras disposed at various locations around the exterior and / or interior of vehicle 602. One or more sensor systems 606 may provide input to one or more first computing devices 604. Vehicle 602 may also include a transmitter 608 for emitting light and / or sound. In this example, transmitter 608 includes an internal audio transmitter and an internal visual transmitter for communicating with passengers of vehicle 602. By way of example and not limitation, the internal transmitter may include speakers, lights, signs, displays, touchscreens, haptic transmitters (e.g., vibration and / or force feedback), mechanical actuators (e.g., seatbelt tensioners, seat positioners, headrest positioners, etc.), etc. In this example, transmitter 608 also includes external transmitters. By way of example and not limitation, the external transmitter in this example includes lights or other indicators (e.g., indicator lights, signs, light arrays, etc.) for signaling direction of travel, and one or more audio transmitters (e.g., speakers, speaker arrays, horns, etc.) for audible communication with pedestrians or other nearby vehicles. One or more of the audio transmitters may include beam steering technology. Vehicle 602 may also include one or more communication connections 610 that enable communication between vehicle 602 and one or more other local or remote computing devices (e.g., remotely operated computing devices) or remote services. For example, communication connections 610 may facilitate communication with one or more other local computing devices and / or one or more drive systems 614 on vehicle 602. Furthermore, communication connections 610 may allow vehicle 602 to communicate with other nearby computing devices (e.g., other nearby vehicles, traffic signals, etc.). The communication connection 610 may include physical and / or logical interfaces for connecting the first computing device 604 to another computing device or one or more external networks 616 (e.g., the Internet). For example, the communication connection 610 may allow Wi-Fi-based communication, such as via frequencies defined by the IEEE 802.11 standard, short-range wireless frequencies such as Bluetooth, cellular communication (e.g., 2G, 3G, 4G, 4G LTE, 5G, etc.), satellite communication, dedicated short-range communication (DSRC), or any suitable wired or wireless communication protocol that enables the respective computing device to interface with other computing devices. In at least one example, vehicle 602 may include one or more drive systems 614. In some examples, vehicle 602 may have a single drive system 614. In at least one example, if vehicle 602 has multiple drive systems 614, the individual drive systems 614 may be positioned at opposite ends of vehicle 602 (e.g., front and rear, etc.). In at least one example, drive systems 614 may include one or more sensor systems 606 to detect the conditions of drive systems 614 and / or the environment surrounding vehicle 602. By way of example and not limitation, sensor systems 606 may include one or more wheel encoders (e.g., rotary encoders) for sensing the rotation of the wheels of the drive system, inertial sensors (e.g., inertial measurement units, accelerometers, gyroscopes, magnetometers, etc.) for measuring the orientation and acceleration of the drive system, cameras or other image sensors, ultrasonic sensors for acoustically detecting objects around the drive system, lidar sensors, radar sensors, etc. Some sensors, such as wheel encoders, may be unique to drive system 614. In some cases, the sensor system 606 on the drive system 614 may overlap with or complement the corresponding system (e.g., sensor system 606) of the vehicle 602. One or more drive systems 614 may include a number of vehicle systems, including a high-voltage battery, a motor that propels the vehicle, an inverter that converts direct current from the battery into alternating current for use by other vehicle systems, a steering system including a steering motor and a steering rack (which may be electric), a braking system including hydraulic or electric actuators, a suspension system including hydraulic and / or pneumatic components, a stability control system for distributing braking force to mitigate traction loss and maintain control, an HVAC system, lighting (e.g., lighting such as headlights / taillights to illuminate the vehicle's exterior environment), and one or more other systems (e.g., cooling systems, safety systems, charging systems, other electrical components such as DC / DC on-board converters, high-voltage connectors, high-voltage cables, charging systems, charging ports, etc.). Additionally, one or more drive systems 614 may include a drive system controller that can receive and preprocess data from one or more sensor systems 606 and control the operation of various vehicle systems. In some examples, the drive system controller may include one or more processors and a memory communicatively coupled to one or more processors. The memory may store one or more components to perform various functions of one or more drive systems 614. In addition, drive system 614 includes one or more communication connections that enable the respective drive system to communicate with one or more other local or remote computing devices. Vehicle 602 may include one or more second computing devices 618 to provide redundancy, error checking, and / or verification of determinations and / or commands determined by one or more first computing devices 604. As an example, one or more first computing devices 604 may be considered a main system, while one or more second computing devices 618 may be considered an auxiliary system. The main system typically performs processing to control how the vehicle maneuvers within its environment. The main system can implement various artificial intelligence (AI) techniques, such as machine learning, to understand the environment surrounding the vehicle and / or instruct the vehicle to move within that environment. For example, the main system can implement AI techniques to locate the vehicle, detect objects around the vehicle, segment sensor data, determine object classification, predict object trajectories, generate the vehicle's trajectory, etc. In this example, the main system processes data from various types of sensors on the vehicle, such as light detection and ranging (LiDAR) sensors, radar sensors, image sensors, depth sensors (time-of-flight, structured light, etc.), etc. The auxiliary system can verify the operation of the main system and, when the main system malfunctions, can take over control of the vehicle from the main system. The auxiliary system can implement probabilistic techniques based on the vehicle's location, velocity, acceleration, etc., and the location of objects in and / or its surroundings. For example, the auxiliary system can implement one or more probabilistic techniques to independently locate the vehicle (e.g., adapt to the local environment), detect objects around the vehicle, segment sensor data, classify objects, predict object trajectories, generate the vehicle's trajectory, etc. In this example, the auxiliary system processes data from several sensors, such as a subset of the sensor data processed by the main system. For illustration, the main system may process LiDAR data, radar data, image data, depth data, etc., while the auxiliary system may process only LiDAR data and / or radar data (and / or time-of-flight data). However, in other examples, the auxiliary system can process sensor data from any number of sensors, such as data from each of the sensors, data from the same number of sensors as the main system, etc. Further examples of vehicle architectures that include a primary computing system and an auxiliary computing system can be found, for example, in U.S. Patent Application No. 16 / 189,726 entitled "Perception Collision Avoidance," filed November 13, 2018, the entire contents of which are incorporated herein by reference. One or more first computing devices 604 may include one or more processors 620 and a memory 622 communicatively coupled to the one or more processors 620. In the illustrated example, the memory 622 of the one or more first computing devices 604 stores a positioning component 624, a sensing component 626, a prediction component 628, a planning component 630, a mapping component 632, and one or more system controllers 634. Although depicted as residing in the memory 622 for illustrative purposes, it is contemplated that the positioning component 624, the sensing component 626, the prediction component 628, the planning component 630, the mapping component 632, and one or more system controllers 634 may additionally or alternatively be accessible by the one or more first computing devices 604 (e.g., stored in different components of the vehicle 602) and / or accessible by the vehicle 602 (e.g., remotely stored)). In the memory 622 of the first computing device 604, the positioning component 624 may include the function of receiving data from one or more sensor systems 606 to determine the position of the vehicle 602. For example, the positioning component 624 may include and / or request / receive a three-dimensional map (and / or a semantic object-based map) of the environment and may continuously determine the position of the autonomous vehicle within the map. In some instances, the positioning component 624 may use SLAM (Simultaneous Localization and Mapping) or CLAMS (Simultaneous Calibration, Localization and Mapping) to receive time-of-flight data, image data, lidar data, radar data, sonar data, IMU data, GPS data, wheel encoder data, or any combination thereof to accurately determine the position of the autonomous vehicle. In some instances, the positioning component 624 may provide data to various components of the vehicle 602 to determine the initial position of the autonomous vehicle for generating a trajectory, as discussed herein. The sensing component 626 may include functions for performing object detection, segmentation, and / or classification. In some examples, the sensing component 626 may provide processed sensor data indicating the presence of entities approaching vehicle 602 and / or the classification of entities into entity types (e.g., car, pedestrian, cyclist, building, tree, road surface, curb, sidewalk, unknown, etc.). In additional or alternative examples, the sensing component 626 may provide processed sensor data indicating one or more characteristics associated with detected entities and / or the environment in which the entities are located. In some examples, characteristics associated with an entity may include, but are not limited to, x-position (global position), y-position (global position), z-position (global position), orientation, entity type (e.g., classification), entity velocity, entity extent (size), etc. Characteristics associated with the environment may include, but are not limited to, the presence of another entity in the environment, the state of another entity in the environment, time of day, day of week, season, weather conditions, darkness / light indication, etc. As described above, the perception component 626 can use a perception algorithm to determine perception-based bounding boxes associated with objects in the environment based on sensor data. For example, the perception component 626 can receive image data and classify the image data to determine the representation of objects in the image data. Then, using a detection algorithm, the perception component 626 can generate two-dimensional bounding boxes and / or perception-based three-dimensional bounding boxes associated with the objects. The perception component 626 can also generate three-dimensional bounding boxes associated with the objects. As described above, the three-dimensional bounding boxes can provide additional information such as the location, orientation, pose, and / or size (e.g., length, width, height, etc.) associated with the objects. The sensing component 626 may include functionality for storing the sensing data generated by the sensing component 626. In some instances, the sensing component 626 may determine a trajectory corresponding to an object that has been classified as an object type. For illustrative purposes only, the sensing component 626 using one or more sensor systems 606 may capture one or more images of the environment. The one or more sensor systems 606 may capture images of the environment including objects such as pedestrians. A pedestrian may be in a first position at time T and in a second position at time T + t (e.g., moving during a time span t after time T). In other words, a pedestrian may move from the first position to the second position during this time span. Such movement may, for example, be recorded as stored sensing data associated with the object. In some examples, the stored perception data may include fused perception data captured by vehicle 602. The fused perception data may include fusion or other combinations of sensor data from sensor system 606 (such as image sensors, lidar sensors, radar sensors, time-of-flight sensors, sonar sensors, GPS sensors, internal sensors, and / or any combination thereof). The stored perception data may additionally or alternatively include classification data, which includes semantic classifications of objects represented in the sensor data (e.g., pedestrians, vehicles, buildings, road surfaces, etc.). The stored perception data may additionally or alternatively include trajectory data (position, orientation, sensor features, etc.) corresponding to the movement of objects classified as dynamic objects through the environment. The trajectory data may include multiple trajectories of multiple different objects over time. This trajectory data can be mined to identify images of certain types of objects (e.g., pedestrians, animals, etc.) when the objects are stationary (e.g., standing still) or moving (e.g., walking, running, etc.). In this example, the computing device determines the trajectory corresponding to a pedestrian. Prediction component 628 can generate one or more probability maps representing the predicted probabilities of the possible locations of one or more objects in the environment. For example, prediction component 628 can generate one or more probability maps for vehicles, pedestrians, animals, etc., within a threshold distance of vehicle 602. In some instances, prediction component 628 can measure the trajectory of an object and generate a discretized predicted probability map, heatmap, probability distribution, discretized probability distribution, and / or trajectory of the object based on observed and predicted behavior. In some instances, one or more probability maps can represent the intent of one or more objects in the environment. Planning component 630 can determine the path that vehicle 602 should follow to traverse the environment. For example, planning component 630 can determine various routes and paths, as well as various levels of detail. In some cases, planning component 630 can determine a route from a first location (e.g., the current location) to a second location (e.g., the target location). For the purposes of this discussion, a route can be a sequence of waypoints for traveling between two locations. As a non-limiting example, waypoints include streets, intersections, Global Positioning System (GPS) coordinates, etc. Furthermore, planning component 630 can generate instructions for guiding the autonomous vehicle along at least a portion of the route from the first location to the second location. In at least one example, planning component 630 can determine how to guide the autonomous vehicle from a first waypoint in the waypoint sequence to a second waypoint in the waypoint sequence. In some examples, the instructions can be a path or a portion of a path. In some examples, multiple paths can be generated substantially simultaneously based on backtracking time-domain techniques (i.e., within technical tolerances). A single path with the highest confidence level from among multiple paths within the backtracking data range can be selected to operate the vehicle. In other examples, the planning component 630 may alternatively or additionally use data from the perception component 626 and / or the prediction component 628 to determine the path that the vehicle 602 should follow to traverse the environment. For example, the planning component 630 may receive data from the perception component 626 and / or the prediction component 628 regarding objects associated with the environment. Using this data, the planning component 630 may determine a route from a first position (e.g., the current position) to a second position (e.g., the target position) to avoid objects in the environment. In at least some examples, such a planning component 630 may determine that no such collision-free path exists and thus provide a path that brings the vehicle 602 to a safe stop, thereby avoiding all collisions and / or otherwise mitigating damage. The memory 622 may also include one or more maps (components) 632 that can be used by the vehicle 602 for navigation within the environment. For the purposes of this discussion, the map (component) can be any number of data structures modeled in two, three, or N dimensions, capable of providing information about the environment, such as, but not limited to, topology (such as intersections), streets, mountains, roads, terrain, and the general environment. In some cases, the map (component) may include, but is not limited to: texture information (e.g., color information (e.g., RGB color information, Lab color information, HSV / HSL color information) etc.), intensity information (e.g., LiDAR information, radar information, etc.); spatial information (e.g., image data projected onto a grid, individual “surfaces” (e.g., polygons associated with individual colors and / or intensities)), reflectivity information (e.g., specular reflectivity information, retroreflectivity information, BRDF information, BSSRDF information, etc.). In one example, the map (component) may include a three-dimensional mesh of the environment. In some cases, the map (component) may be stored in a tiled format, such that the individual tiles of the map represent discrete portions of the environment, and can be loaded into working memory as needed, as discussed herein. In at least one example, one or more map (components) 632 may include at least one map (e.g., an image and / or a grid). In some examples, vehicle 602 may be controlled at least in part based on map (components) 632. That is, map (components) 632 may be used in conjunction with positioning component 624, perception component 626, prediction component 628, and / or planning component 630 to determine the location of vehicle 602, identify objects in the environment, generate one or more predicted probabilities associated with objects and / or vehicle 602, and / or generate routes and / or trajectories for navigation within the environment. In some examples, one or more map (components) 632 may be stored on one or more remote computing devices (such as one or more computing devices 648) accessible via one or more networks 616. In some examples, multiple map (components) 632 may be stored based on characteristics such as entity type, time of day, day of week, season of year, etc. Storing multiple map (components) 632 may have similar memory requirements, but may increase the speed at which data in the map can be accessed. In at least one example, the first computing device 604(s) may include one or more system controllers 634(s), which may be configured to control the steering, propulsion, braking, safety, transmitter, communication, and other systems of the vehicle 602. These system controllers 634 may communicate with and / or control corresponding systems of the drive system 614 and / or other components of the vehicle 602, which may be configured to operate according to a path provided by the planning component 630. The second computing device 618 (one or more) may include one or more processors 636 and a memory 638, the memory 638 including components for verifying and / or controlling various aspects of the vehicle 602 as discussed herein. In at least one instance, the one or more processors 636 may be similar to the one or more processors 620, and the memory 638 may be similar to the memory 622. However, in some examples, the one or more processors 636 and the memory 638 may include hardware different from that of the one or more processors 620 and the memory 622 to obtain additional redundancy. In some examples, memory 638 may include verification system 118, positioning component 640, sensing component 642, prediction component 658, planning component 644, and one or more system controllers 646. In some examples, the localization component 640 may receive sensor data from one or more sensors 606 to determine one or more of the position and / or orientation (collectively referred to as attitude) of the autonomous vehicle 602. Here, position and / or orientation may be relative to one or more points and / or one or more objects in the environment in which the autonomous vehicle 602 is located. In examples, orientation may include indications of yaw, roll, and / or pitch of the autonomous vehicle 602 relative to a reference plane and / or relative to one or more points and / or one or more objects. In examples, the localization component 640 may perform less processing than the localization component 624 of the first computing device 604 (e.g., higher-level localization). For example, the localization component 640 may not determine the attitude of the autonomous vehicle 602 relative to a map, but only determine the attitude of the autonomous vehicle 602 relative to objects and / or surfaces detected around the autonomous vehicle 602 (e.g., local position rather than global position). For example, probabilistic filtering techniques may be used to determine such position and / or orientation, such as using a Bayesian filter (Kalman filter, extended Kalman filter, unscented Kalman filter, etc.) of some or all of the sensor data. In some examples, sensing component 642 may include the ability to detect, identify, classify, and / or track one or more objects represented in sensor data. For example, sensing component 642 may perform clustering operations and actions to estimate or determine connectivity data associated with data points, as discussed herein. In some examples, perception component 642 may include an M-estimator, but may lack an object classifier, such as, for example, a neural network, decision tree, and / or similar for classifying objects. In additional or alternative examples, perception component 642 may include any type of ML model configured to eliminate classification ambiguity for objects. In contrast, perception component 626 may include a pipeline of hardware and / or software components, which may include one or more machine learning models, Bayesian filters (e.g., Kalman filters), graphics processing units (GPUs), etc. In some examples, the perception data determined by perception component 642 (and / or 626) may include object detection (e.g., identification of sensor data associated with objects in the environment surrounding the autonomous vehicle), object classification (e.g., identification of the object type associated with detected objects), object trajectories (e.g., historical, current, and / or predicted object positions, velocities, accelerations, and / or headings), etc. The prediction component 658 can also process input data to determine one or more predicted trajectories for an object. For example, based on the object's current position and its velocity over a period of several seconds, the prediction component 658 can predict the path the object will take over the next few seconds. In some examples, such predicted paths may include linear assumptions about motion using a given position, orientation, velocity, and / or orientation. In other examples, such predicted paths may include more complex analyses. In some examples, the planning component 644 may include the ability to receive a trajectory from the planning component 630 to verify that the trajectory is collision-free and / or within a safety margin. In some examples, the planning component 644 may generate a safe stopping trajectory (e.g., a trajectory to stop vehicle 602 with "comfortable" deceleration (e.g., less than maximum deceleration), and in some examples, the planning component 644 may generate an emergency stopping trajectory (e.g., with or without maximum deceleration from steering input). In some examples, system controller(s) 646 may include functions for controlling safety-critical components of the vehicle, such as steering, braking, motors, etc. In this way, second computing devices(s) 618 may provide redundant and / or additional hardware and software layers for vehicle safety. Vehicle 602 may be connected via network 616 to one or more computing devices 648, which may include one or more processors 650 and memory 652 communicatively coupled to the one or more processors 650. In at least one instance, the one or more processors 650 may resemble processor 620, and the memory 652 may resemble memory 622. In the illustrated example, the memory 652 of the computing device 648 stores one or more components 654, which may correspond to any of the components discussed herein. Processors 620, 636, and / or 650 can be any suitable processor capable of executing instructions to process data and perform the operations described herein. By way of example and not limitation, processors 620, 636, and / or 650 may include one or more central processing units (CPUs), graphics processing units (GPUs), or any other device or part of a device that processes electronic data to convert that electronic data into other electronic data that can be stored in registers and / or memory. In some examples, integrated circuits (e.g., ASICs, etc.), gate arrays (e.g., FPGAs, etc.), and other hardware devices may also be considered such processors, provided they are configured to implement coded instructions. Memory 622, 638, and / or 652 are examples of non-transitory computer-readable media. Memory 622, 638, and / or 652 may store an operating system and one or more software applications, instructions, programs, and / or data to implement the methods described herein and the functions belonging to various systems. In various implementations, memory 622, 638, and / or 652 may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), non-volatile / flash memory, or any other type of memory capable of storing information. The architectures, systems, and individual elements described herein may contain many other logical, programming, and physical components; those components shown in the accompanying figures are merely examples relevant to the discussions herein. In some cases, aspects of some or all of the components discussed herein may include any model, algorithm, and / or machine learning algorithm. For example, in some instances, the components in memories 622, 638, and / or 652 may be implemented as neural networks. In some examples, the components in memories 622, 638, and / or 652 may not include machine learning algorithms to reduce complexity and for verification and / or authentication from a security perspective. As described herein, an exemplary neural network is an algorithm that passes input data through a series of connected layers to produce an output. Each layer in a neural network may also include another neural network, or may include any number of layers (whether convolutional or not). As will be understood in the context of this disclosure, neural networks may utilize machine learning, which can refer to algorithms in which a broad range of outputs are generated based on learned parameters. Although discussed in the context of neural networks, any type of machine learning consistent with this disclosure may be used. For example, machine learning or machine learning algorithms may include, but are not limited to, regression algorithms (e.g., ordinary least squares regression (OLSR), linear regression, logistic regression, stepwise regression, multivariate adaptive regression splines (MARS), local estimation scatter plot smoothing (LOESS)), instance-based algorithms (e.g., ridge regression, minimum absolute shrinkage and selection operator (LASSO), elastic net, minimum angle regression (LARS)), decision tree algorithms (e.g., classification and regression tree (CART), iterative dichotomer 3 (ID3), chi-square automatic interaction detection (CHAID), decision stump, conditional decision tree), Bayesian algorithms (e.g., Naive Bayes, Gaussian Bayes, multinomial Naive Bayes, average one-to-one estimator (AODE), Bayesian belief network (BNN), Bayesian network), clustering algorithms (e.g., k-means, k-median, expectation-maximization (EM), hierarchical clustering), association rule learning algorithms (e.g., perceptron, backpropagation, jump field networks, radial basis function networks (RBFN)), deep learning algorithms (e.g., deep Boltzmann machines (DBM), deep belief networks (DBN), convolutional neural networks (CNN), stacked autoencoders), dimensionality reduction algorithms (e.g., principal component analysis (PCA), principal component regression (PCR), partial least squares regression (PLSR), Sammon mapping, multidimensional scaling (MDS), projection tracking, linear discriminant analysis (LDA), mixture discriminant analysis (MDA), quadratic discriminant analysis (QDA), flexible discriminant analysis (FDA)), ensemble algorithms (e.g., boosting, bootstrap aggregation (bagging), AdaBoost, stacked generalization (mixture), gradient boosting machine (GBM), gradient boosting regression tree (GBRT), random forest), SVM (Support Vector Machine), supervised learning, unsupervised learning, semi-supervised learning, etc.). Other examples of architectures include neural networks such as ResNet50, ResNet101, VGG, DensNet, PointNet, etc. The methods described herein represent sequences of operations that can be implemented in hardware, software, or a combination thereof. In the context of software, a box (block) represents computer-executable instructions stored on one or more computer-readable storage media that perform the operations when executed by one or more processors. Typically, computer-executable instructions include routines, programs, objects, components, data structures, etc., that perform a particular function or implement a particular abstract data type. The order in which the operations are described is not intended to be construed as limiting, and any number of the described operations can be combined in any order and / or in parallel to implement the process. In some embodiments, one or more operations of the method may be omitted entirely. Furthermore, the methods described herein can be combined with each other, in whole or in part, or with other methods. The various techniques described herein can be implemented in the context of computer-executable instructions or software (e.g., program modules) stored in a computer-readable storage device and executed by the processors of one or more computing devices (e.g., those illustrated in the figures). Typically, program modules include routines, programs, objects, components, data structures, etc., and define operational logic for performing specific tasks or implementing specific abstract data types. Other architectures can be used to implement the described functions and are intended to be within the scope of this invention. Furthermore, although a specific distribution of responsibility has been defined above for purposes of discussion, various functions and responsibilities can be distributed and divided in different ways depending on the circumstances. Similarly, software can be stored and distributed in various ways and using different means, and the specific software storage and execution configuration described above can be changed in many different ways. Therefore, software implementing the above techniques can be distributed across various types of computer-readable media, and is not limited to the form of the memory specifically described. Example Terms While the exemplary clauses described below are for a particular implementation, it should be understood that, in the context of this document, the content of the exemplary clauses may also be implemented via methods, devices, systems, computer-readable media, and / or other implementations. Furthermore, any of the example ATs may be implemented alone or in combination with any other one or more of the example ATs. A: A system comprising: one or more processors; and one or more non-transitory computer-readable media storing computer-executable instructions, which, when executed, cause the one or more processors to perform operations including: receiving from a first computing device a main trajectory and an alternative trajectory of an autonomous vehicle, wherein the main trajectory includes a first lateral profile and the alternative trajectory includes a second lateral profile different from the first lateral profile; determining by a second computing device that the main trajectory will result in a probability below a probability threshold for a collision between the autonomous vehicle and an object within a threshold time period; and controlling the autonomous vehicle based on the main trajectory, at least in part, based on the determination that the probability is below the probability threshold. B: According to the system described in paragraph A, the operation further includes: determining that the main trajectory will cause a collision at a first time; determining that the first time reaches or exceeds the threshold time period; and determining that the probability is lower than the probability threshold based on determining that the first time reaches or exceeds the threshold time period. C: According to the system described in paragraph A or B, the operation further includes: determining the probability based at least in part on at least one of the autonomous vehicle's first speed, the object's second speed, the object's classification, or the autonomous vehicle's environment. D: The system according to any one of paragraphs A–C, wherein the second lateral profile is within a threshold lateral offset from the first lateral profile. E: According to any of paragraphs A–D, the operation further includes: determining the probability based at least in part on the predicted trajectory of the object. F: One or more non-transitory computer-readable media storing computer-executable instructions that, when executed, cause one or more processors to perform operations including: receiving a first trajectory and a second trajectory from a first computing device, wherein the first trajectory is based on a reference trajectory and the second trajectory deviates from the reference trajectory by less than or equal to a steering threshold; determining by a second computing device whether the first trajectory is predicted to cause a collision; and controlling a vehicle based on the second trajectory, at least in part based on the determination that the first trajectory is predicted to cause a collision. G: According to one or more non-transitory computer-readable media as described in paragraph F, controlling the vehicle includes: controlling the vehicle based on the second trajectory, at least in part, based on determining that the first trajectory is predicted to cause a collision and that the second trajectory is associated with the minimum collision probability among a plurality of alternative trajectories, wherein the plurality of alternative trajectories includes the second trajectory and a third trajectory configured to control the vehicle to stop. H: According to one or more non-transient computer-readable media as described in paragraph G, the operation further includes: the second computing device determining the third trajectory by determining a stopping point along the third trajectory. I: The operation further includes using one or more non-transitory computer-readable media according to any one of paragraphs F–H: controlling the vehicle based on the second trajectory, at least in part, based on determining that the probability of the first trajectory being predicted to cause a collision within a threshold time period is below a probability threshold. J: According to one or more non-transitory computer-readable media as described in paragraph I, the operation further includes determining the probability based on at least one of the following: the speed of the vehicle, environmental characteristics of the environment of the vehicle, the deceleration profile of the vehicle, a collision time measure, a collision distance measure, or a classification of objects associated with the predicted collision. K: According to one or more non-transitory computer-readable media as described in paragraph I or J, the operation further includes: determining the probability based on a predicted trajectory associated with an object, the object being associated with a predicted collision. L: The operation further includes performing vehicle control based on the second trajectory based at least in part on determining that the probability of the first trajectory causing a collision within a threshold time period is less than a probability threshold, and that a fourth trajectory has not been received from the first computing device after the first trajectory has been received. M: One or more non-transitory computer-readable media as described in any of paragraphs F–L, wherein the second trajectory includes a stopping profile associated with controlling the vehicle to stop. N: One or more non-transitory computer-readable media according to any one of paragraphs F–M, wherein the second computing device includes at least one of a kinematic-based model or a dynamics-based model for evaluating whether at least one of the first trajectory or the second trajectory is predicted to intersect with the predicted trajectory of the object within a time window. O: One or more non-transitory computer-readable media according to any one of paragraphs F–N, further comprising: determining a lane width associated with the lane of the vehicle; and determining the steering threshold based on the lane width. P: A method comprising: receiving a first trajectory and a second trajectory from a first computing device, wherein the first trajectory is based on the reference trajectory and the second trajectory deviates from the reference trajectory by less than or equal to a steering threshold; determining by a second computing device whether the first trajectory is predicted to cause a collision; and controlling a vehicle based on the second trajectory, at least in part based on the determination that the first trajectory is predicted to cause a collision. Q: According to the method described in paragraph P, controlling the vehicle includes: controlling the vehicle based on the second trajectory, at least in part, based on determining that the first trajectory is predicted to cause a collision and that the second trajectory is associated with the minimum collision probability among a plurality of alternative trajectories, wherein the plurality of alternative trajectories includes the second trajectory and a third trajectory configured to control the vehicle to stop. R: The method described in paragraph Q further includes: the second computing device determining the third trajectory by determining a stopping point along the third trajectory. S: The method according to any one of paragraphs P–R further includes: controlling the vehicle based on the second trajectory, at least in part, based on determining that the probability of the first trajectory being predicted to cause a collision within a threshold time period is lower than a probability threshold. T: The method described in paragraph S further includes determining the probability based on at least one of the following: the speed of the vehicle, environmental characteristics of the environment of the vehicle, the deceleration profile of the vehicle, a collision time measure, a collision distance measure, or a classification of objects associated with the predicted collision. in conclusion Although one or more examples of the techniques described herein have been described, various modifications, additions, substitutions, and equivalents thereof are included within the scope of the techniques described herein. In the description of the examples, reference is made to the accompanying drawings, which form part of the invention, illustrating specific instances of the claimed subject matter by way of illustration. It should be understood that other examples may be used, and changes or modifications, such as structural alterations, may be made. Such examples, changes, or modifications do not necessarily deviate from the scope of the claimed subject matter. While the steps herein may be presented in a specific order, in some cases the order may be changed so that specific inputs are provided at different times or in different orders without altering the functionality of the system and method. The disclosed processes may also be performed in different orders. Furthermore, it is not necessary to perform the various calculations herein in the disclosed order, and other examples using alternative orderings of calculations can be readily implemented. In addition to being reordered, calculations may also be decomposed into sub-computations having the same result.
Claims
1. A system comprising: One or more processors; as well as One or more non-transitory computer-readable media storing computer-executable instructions, which, when executed, cause the one or more processors to perform operations including: A first trajectory and a second trajectory are received from a first computing device, wherein the first trajectory is based on a reference trajectory, and the second trajectory deviates from the reference trajectory by a turning threshold less than or equal to the turning threshold. The second computing device determines whether the first trajectory is predicted to cause a collision; and The vehicle is controlled based on the second trajectory, at least in part, based on the determination that the first trajectory is predicted to cause a collision.
2. The system according to claim 1, wherein, Controlling the vehicle includes: The vehicle is controlled based on the second trajectory, which is at least in part based on the determination that the first trajectory is predicted to cause a collision and the second trajectory is associated with the minimum collision probability among a plurality of alternative trajectories, wherein the plurality of alternative trajectories include the second trajectory and a third trajectory configured to control the vehicle to stop.
3. The system according to claim 2, wherein the operation further includes: The third trajectory is determined by the second computing device by determining the stopping point along the third trajectory.
4. The system according to any one of the preceding claims, wherein the operation further comprises: The vehicle is controlled based on the second trajectory, at least in part, based on the determination that the probability of the first trajectory causing a collision within a threshold time period is lower than a probability threshold.
5. The system according to claim 4, wherein the operation further includes: The probability is determined based on at least one of the following: the vehicle's speed, environmental characteristics of the vehicle's environment, the vehicle's deceleration profile, a collision time measure, a collision distance measure, or a classification of objects associated with the predicted collision.
6. The system according to claim 4, wherein the operation further includes: The probability is determined based on a predicted trajectory associated with an object, which is associated with a predicted collision.
7. The system according to any one of the preceding claims, wherein the operation further comprises: The vehicle is controlled based on the second trajectory, at least in part, based on determining the following: The probability of the first trajectory causing a collision within a threshold time period is predicted to be lower than the probability threshold, and The fourth trajectory has not been received from the first computing device after the first trajectory was received.
8. The system according to any one of the preceding claims, wherein, The second trajectory includes a stopping profile associated with controlling the vehicle to stop.
9. The system according to any one of the preceding claims, wherein, The second computing device includes at least one of a kinematics-based model or a dynamics-based model for evaluating whether at least one of the first trajectory or the second trajectory is predicted to intersect with the predicted trajectory of the object within a time window.
10. The system according to any one of the preceding claims further comprises: Determine the lane width associated with the lane of the vehicle; as well as The steering threshold is determined based on the lane width.
11. A method comprising: A first trajectory and a second trajectory are received from a first computing device, wherein the first trajectory is based on a reference trajectory, and the second trajectory deviates from the reference trajectory by a turning threshold less than or equal to the turning threshold. The second computing device determines whether the first trajectory is predicted to cause a collision; and The vehicle is controlled based on the second trajectory, at least in part, based on the determination that the first trajectory is predicted to cause a collision.
12. The method according to claim 11, wherein, Controlling the vehicle includes: The vehicle is controlled based on the second trajectory, which is at least in part based on the determination that the first trajectory is predicted to cause a collision and the second trajectory is associated with the minimum collision probability among a plurality of alternative trajectories, wherein the plurality of alternative trajectories include the second trajectory and a third trajectory configured to control the vehicle to stop.
13. The method of claim 12, further comprising: The third trajectory is determined by the second computing device by determining the stopping point along the third trajectory.
14. The method according to any one of claims 11-13, further comprising: The vehicle is controlled based on the second trajectory, at least in part, based on the determination that the probability of the first trajectory causing a collision within a threshold time period is lower than a probability threshold.
15. A non-transitory computer-readable medium having instructions stored thereon, which, when executed by one or more processors, cause the one or more processors to perform the method according to any one of claims 11-14.
Citation Information
Patent Citations
Trajectory generation using temporal logic and tree search
US11360477B2
Perception collision avoidance
US20200148201A1
Collision avoidance system with trajectory validation
US20200189573A1
Collision avoidance system
US20200211394A1
Collision avoidance perception system
US20210096566A1