文章直接搬过来,原文:https://gieseanw.wordpress.com/2012/10/21/a-comprehensive-step-by-step-tutorial-to-computing-dubins-paths/

原文图不全,可以看PDF:https://gieseanw.files.wordpress.com/2012/10/dubins.pdf

大学教程http://planning.cs.uiuc.edu/node821.html

Imagine you have a point, a single little dot on a piece of paper. What’s the quickest way to go from that point to another point on the piece of paper? You (the reader) sigh and answer ”A straight line” because it’s completely obvious; even first graders know that. Now let’s imagine you have an open parking lot, with a human standing in it. What’s the quickest way for the human to get from one side of the parking lot to the other? The answer is again obvious to you, so you get a little annoyed and half-shout ”A straight-line again, duh!”. Okay, okay, enough toss-up questions. Now what if I gave you a car in the parking lot and asked you what was the quickest way for that car to get into a parking spot? Hmm, a little harder now.

You can’t say a straight line because what if the car isn’t facing directly towards the parking space? Cars don’t just slide horizontally and then turn in place, so planning for them seems to be a lot more difficult than for a human. But! We can make planning for a car just about as easy as for a human if we consider the car to be a special type of car we’ll call aDubin’s Car. Interested in knowing how? Then read on!


In robotics, we would consider our human from the example above to be a type of holonomic agent. Don’t let this terminology scare you; I’ll explain it all. A holonomic agent can simply be considered an agent who we have full control over. That is, if we treat the human as a point in the x-y plane, we are able to go from any coordinate to any other coordinate always. Humans can turn on a dime, walk straight forward, side-step, walk backwards, etc. They really have full control over their coordinates.
A car however, is not holonomic because we don’t have full control over it at all times. Therefore we call a car a type of nonholonomic agent.
Cars can only turn about some minimal radius circle, therefore they can’t move straight towards a point just barely to their left or right. As you can imagine, planning paths for nonholonomic agents is much more difficult than for holonomic ones.

Let’s simplify our model of our car. How about this: it can only move forwards — never backwards, and it’s always moving at a unit velocity so we don’t have to worry about braking or accelerating. What I just described is known as a Dubin’s car, and planning shortest paths for it is a well studied problem in robotics and control theory. What makes the Dubin’s car attractive is that its shortest paths can be solved exactly using relatively simple geometry, whereas planning for many other dynamical systems requires some pretty high level and complicated matrix operations.

The Dubin’s Car only moves forward, never backwards, even if reversal leads to a shorter path.

The Dubin’s Car was introduced into the literature by Lester Dubins, a famous mathematician and statistician, in a paper published in 1957. The cars essentially have only 3 controls: “turn left at maximum”, “turn right at maximum”, and “go straight”. All the paths traced out by the Dubin’s car are combinations of these three controls. Let’s name the controls: “turn left at maximum” will be L, “turn right at maximum” will be R, and “go straight” will be S. We can make things even more general: left and right turns both describe curves, so lets group them under a single category that we’ll call C (”curve”). Lester Dubins proved in his paper that there are only 6 combinations of these controls that describe ALL the shortest paths, and they are:RSR, LSL, RSL, LSR, RLR, and LRL. Or using our more general terminology, there’s only two classes:CSC andCCC.

Despite being relatively well studied, with all sorts of geometric proofs out there and qualitative statements about what the shortest paths look like, I could not find one single source on the internet that described in depth how to actually compute these shortest paths! So what that we know the car can try to turn left for some amount of time, then move straight, and then move right — I want to know exactly how much I need to turn, and how long I need to turn for. And if you’re like me in the least, you tend to forget some geometry that you learned in high school, so doing these computations isn’t as “trivial” for you like all the other online sources make it out to be.

If you’re looking for the actual computations needed to compute these shortest paths, then you’ve come to the right place. The following will be my longest article to-date, and is basically a how-to guide on computing the geometry required for the Dubin’s shortest paths.

Overview

This blog post was originally written in \LaTeX and then transcribed here to WordPress. If you’d like a more portable, possibly easier to read version, then download the PDF version here (You may also cite this pdf if you’re writing a bibliography).

Let’s first talk about the dynamics of our system, and then describe in general terms what the shortest paths look like. Afterwards, I’ll delve into the actual calculations. Car-like robots all have one thing in common — they have a minimum turning radius. Think of this minimum turning radius as a circle next to the car that, try as it might, the robot can only go around the circle’s circumference if it turns as hard as it can. The radius of this circle,r_{min} is the car’s minimum turning radius. This radius is determined by the physics of the car\gets the maximum angle the tires can deviate from “forward”, and the car’s wheelbase, or the length from the front axle to rear axle.Marco Monster has a really good descriptive article that talks about these car dynamics.

Car Dynamics

I already mentioned that the Dubin’s car could only move forward at a unit velocity, and by “forward” I mean it can’t change gears into reverse. Let’s describe the vehicle dynamics more formally. A Car’s configuration can be describe by the triplet\langle x, y, \theta \rangle . Define the car’s velocity (actually speed, because it will be a scalar quantity) asv. When a car is moving at velocityv about a circle of radiusr_{turn} , it will have angular velocity

\omega = \frac{v}{r_{turn}}

Now let’s define how our system evolves over time. If you know even just the basics of differential equations, this will be cake for you. If not, I’ll explain. When we want to describe how our system evolves over time, we use notation like\dot{x} to talk about how our x coordinate changes over time.

In basic vector math, if our car is at position A = \left(x_1, y_1\right) with \theta = \theta_1 , and we move straight forward for a single timestep, then our new configuration is B = \left(x_1+vcos\left(\theta_1\right), y_1+vsin\left(\theta_1\right), \theta_1\right) Note how our x coordinate changes as a function ofcos\left(\theta\right). Therefore, we’d say that\dot{x} = cos\left(\theta\right). A full system description would read like this:

\dot{x} = cos\left(\theta\right)

\dot{y} = sin\left(\theta\right)

\dot{\theta} = \omega = \frac{v}{r_{turn}}

I’d like to point out that this equation is linear in that the car’s new position is changing to be some straight line away from the previous one. In reality, this is not the case; cars are nonlinear systems. Therefore, the dynamics I described above are merely an approximation of the true system dynamics. Linear systems are much easier to handle, and if we do things right, they can approximate the true dynamics so well that you’d never be able to tell the difference. The dynamics equations translate nicely into update equations. These update equations describe what actually happens each time you want to update the car’s configuration. That is, if you’re stepping through your simulator, at each timestep you’d want to update the car. As the Dubin’s car only has unit velocity, we’ll replace all instances of v with1.

x_{new} = x_{prev} + \delta*cos\left(\theta\right)

y_{new} = y_{prev} + \delta*sin\left(\theta\right)

\theta_{new} = \theta_{prev} + \frac{\delta}{r_{turn}}

Note that I actually replaced instances of v with the symbol\delta. What’s with that? Well, remember when I said that our dynamics are a linear approximation of a nonlinear system? Every time we update, we are moving the car along a line. If we only move a very short amount on this line, then we approximate turns more finely. Think of it this way: You are trying to draw a circle using a series of evenly-spaced points. If you only use 3 points, you get a triangle. If you use 4 you get a square, and 8 you get an octagon. As you add more and more points you get something that more closely resembles the circle. This is the same concept.\delta essentially tells us the amount of spacing between our points. If it is really small, then the points are close together and we get overall motion that looks closer to reality.

High-level Description of Dubin’s curves

In this section I’ll briefly go over what each of the 6 trajectories (RSR, LSR, RSL, LSR, RLR, LRL) looks like. (Disclaimer:I do not claim to be an artist, and as such the figures you see that I drew in the following sections are NOT to scale; they merely serve to illustrate all the geometry being discussed.)

CSC Trajectories

The CSC trajectories include RSR, LSR,RSL, andLSR — a turn followed by a straight line followed by another turn (Shown in Figure 1).

RSRTrajectory

Figure 1. A RSR Trajectory

Pick a position and orientation for your start and goal configurations. Draw your start and goal configurations as points in the plane with arrows extending out in the direction the car is facing. Next, draw circles to the left and right of the car with radius r_{min} . The circles should be tangent at the location of the car. Draw tangent lines from the circles at the starting configuration to the circles at the goal configuration. In the next section I’ll discuss how to compute this, but for now just draw them.

For each pair of circles (RR), (LL), (RL), (LR), there should be four possible tangent lines, but note that there is only one valid line for each pair (Shown in Figure 2. That is, for the RR circles, only one line extending from the agent’s circle meets the goal’s circle such that everything is going in the correct direction. Therefore, for any of theCSC Trajectories, there is a unique tangent line to follow. This tangent line makes up the ‘S’ portion of the trajectory. The points at which the line is tangent to the circles are the points the agent must pass through to complete its trajectory. Therefore, solving these trajectories basically boils down to correctly computing these tangents.

Figure 2. Valid tangent lines

CCC Trajectories

CCC Trajectories are slightly different. They consist of a turn in one direction followed by a turn in the opposite direction, and then another turn in the original direction, like theRLR Trajectory shown in Figure 3. They are only valid when the agent and its goal are relatively close to each other, else one circle would need to have a radius larger thanr_{min} , and if we must do that, then theCCC Trajectory is sub-optimal. For the Dubin’s Car there are only 2CCC Trajectories:RLR andLRL. Computing the tangent lines between RR or LL circles won’t help us this time around. The third circle that we turn about is still tangent to the agent and goal turning circles, but these tangent points are not the same as those from tangent line calculations. Therefore, solving these trajectories boils down to correctly computing the location of this third tangent circle.

Figure 3. Computing a RLR Trajectory

Tangent Line Construction

In this section, I will discuss the geometry in constructing tangent lines between two circles. First I’ll discuss how to do so geometrically, and then I’ll show how to do so in a more efficient, vector-based manner.

Given: two circles C_1 andC_2 , with radiir_1 andr_2 respectively.

Consider the center of C_1 asp_1 = \left(x_1, y_1\right), the center ofC_2 asp_2 = \left(x_2, y_2\right), and so on. (Figure 4).

Figure 4. Setup for computing tangents.

Method 1: Geometrically computing tangents

Inner tangents

1. First draw a vector \vec{V_1} fromp_1 top_2.\vec{V_1} = \left(x_2 - x_1, y_2 - y_1\right). This vector has a magnitude:

D = \sqrt{\left(x_2 - x_1\right)^2 + \left(y_2 - y_1\right)^2}
2. Construct a circle C_3 centered at the midpoint of \vec{V_1} with radius r_3 = \frac{D}{2}
That is,

p_3 = \left(\frac{x_1+x_2}{2}, \frac{y_1+y_2}{2}\right)

Figure 5. Steps 1 and 2.

3. Construct a circle C_4 centered atC_1’s center, with radius $latex r_4 = r_1 + r_2$

Figure 6. Step 3.

4. Construct a vector \vec{V_2} fromp_1 to the “top” point,p_t = \left(x_t, y_t\right) of intersection betweenC_3 andC_4 . If we can compute this vector, then we can get the first tangent point because\vec{V_2} is pointing at it in addition top_t . For visual reference, see Figure 7.

Figure 7. Step 4.

5. This is accomplished by first drawing a triangle from p_1 top_3 to pt like the one shown in Figure 8. The segments\overline{p_1p_3} and \overline{p_3p_t} have magnitude r_4 = \frac{D}{2} . The segment \overline{p_1p_t} has magnitude r_3 = r_1 + r_2 . We are interested in the angle \gamma = \angle{p_tp_1p_3}.\gamma will give us the angle that vector\vec{V_1} that would need to rotate through to point in the same direction as vector\vec{V_2} = \left(p_t - p_1\right). We obtain the full amount of rotation about the x axis, \theta for \vec{V_2} , by the equation \theta = \gamma + atan2\left(\vec{V_1}\right) (Note: the atan2() function first takes the y-component, and then the x-component) p_t is therefore obtained by traversing\vec{V_2} for a distance ofr_4 . That is,

x_t = x_1+\left(r_1+r_2\right)*cos\left(\theta\right)

y_t = y_1+\left(r_1+r_2\right)*sin\left(\theta\right)

Figure 8. Step 5.

6. To find the first inner tangent point pit1 on C1 , we follow a similar procedure to how we obtained pt — we travel along\vec{V_2} fromp_1 , but we only go a distance ofr_1 . Because we knowp_t , we are now able to actually compute\vec{V_2} = \left(p_t - p_1\right). Now, we need to normalize \vec{V_2} and
then multiply it by r_1 to achieve a vector $latex \vec{V_3}$ to $latex p_{it1}$ fromp_1. (Remember that, to normalize a vector, you divide each element by the vector’s  magnitude \to \vec{V_3} = \frac{\vec{V_2}}{\|V_2\|} * r_1.p_{it1} follows simply:

p_{it1} = p_1 + \vec{V_3}

It may be a bit of an abuse of notation to add a vector to a point, but when we add the components of the point to the components of the vector, we get our new point and everything works out.

7. Now that we have p_t , we can draw a vector  \vec{V_4} from p_t top_2 like in Figure 9. Note that this vector is parallel to an inner tangent betweenC_1 andC_2

\vec{V_4} = \left(p_2 - p_t\right)

We can take advantage of its magnitude and direction to find an inner tangent point onC_2 . Given that we’ve already calculatedp_{it1} , getting its associated tangent point onC_2 ,p_{it2} is as easy as:

p_{it2} = p_{it1} + \vec{V_4}

Figure 9. Step 7.

I hope this is clear enough for you to be able to compute the other inner tangent point. The trick is to use the “bottom” intersection point betweenC_3 andC_4 , and then work everything out exactly the same to getp_{it3} andp_{it4} , which define the other inner tangent line.

Outer tangents

Constructing outer tangents is very similar to constructing the inner tangents. Given the same two circlesC_1 andC_2 as before, and assuming r_1 \geq r_2 Remember how we started off by makingC_4 centered atp_1 with radiusr_4 = r_1 + r_2? Well this time around we’ll construct it a bit differently.C_4 is centered atp_1 as before, but this time it has radius r_4 = r_1 - r_2.

Follow the steps we performed for the interior tangent points, constructing C_3 on the midpoint of\vec{V_1} exactly the same as before. Find the intersection betweenC_3 andC_4 to getp_t just as before as well. After we’ve gone through all the steps as before up to the point where we’ve obtained\vec{V_2} , we can get the first outer tangent pointp_{ot1} by following\vec{V_2} a distance ofr_1 just as before. I just wanted to note that the magnitude of\vec{V_2} before normalization is r_4 > r_1 instead ofr_4 > r_1. To getp_{ot2} , the accompanying tangent point onC_2 , we perform addition:

p_{ot2} = p_{ot1} + \vec{V_4}

This is exactly the same as before. In essence, the only step that changes between calculating outer tangents as opposed to inner tangents is howC_4 is constructed; all other steps remains exactly the same.

Method 2: A Vector-based Approach

Now that we understand geometrically how to get tangent lines between two circles, I’ll show you a more efficient way to do so using vectors that has no need for constructing circlesC_3 orC_4 . We didn’t work through the example in the previous section for nothing– we had to work up to Step 7 so that you could have some intuition on why the following vector method works.

1. Draw your circles C_1 andC_2 as before (Figure 4).
2. Draw vector \vec{V_1} fromp_1 top_2 . This has magnitudeD as before.
3. Draw a vector \vec{V_2} between your tangent points. In this case, it’s easier to start with outer tangent points, which we’ll call pot1 and p_{ot2} . So,\vec{V_2} = p_{ot2} -p_{ot1}
4. Draw a unit vector perpendicular to \vec{V_2} . We’ll call it \hat{n} (normal vector).

Figure 10 depicts our setup. In the general case, the radii of C_1 andC_2 will not be equivalent, but for us it will. This method works for both cases.

Figure 10. Setup for computing tangents via the vector method

5. Let’s consider some relationships between these vectors.
• The dot product between \vec{V_2} and \hat{n} is 0 because the vectors are perpendicular.
• \hat{n} \cdot \hat{n} = 1 because \hat{n} is a unit vector.

• We can modify vector \vec{V_1} to be parallel to\vec{V_2} quite easily by subtraction:

\vec{V_1} -= \left(r_1-r_2\right) \cdot \hat{n}

Refer to Figure 10: Setup for computing tangents via the vector method.
Why does this work? For some intuition, consider Step 7 in the previous section: We drew a vector fromp_t toC_2 ’s center, and
then I stated that the vector was parallel to the vector between the tangent points. Well, both points were equidistant from their
respective tangents; we need to move p_t a distance ofr_2 to get to the first tangent point. Likewise we need to translatep_2 (the center of the other circle) ”down” the same amount of distance.

Using the head-to-tail method of vector addition, you can see that we modified \vec{V_1} to be this same vector! Now that I’ve convinced you that this modification causes \vec{V_1} to be parallel to\vec{V_2} , the following statement holds:

\hat{n} \cdot \left(\vec{V_1} - \left(\left(r_2-r_1\right) \cdot \hat{n}\right)\right) = 0

• Simplifying the above equation by distributing \hat{n}:
\hat{n} \cdot \vec{V_1} + r_1 - r_2 = 0

• Further simplifying the equation:
\hat{n} \cdot \vec{V_1} = r_2 - r_1

• Let’s normalize \vec{V_1} by dividing by its magnitude,D. This doesn’t change the dot product between\vec{V_1} and\hat{n} because the vectors are still perpendicular, but we also have to divide the right-hand side byD:
\frac{\vec{V_1}}{D} \cdot \hat{n} = \frac{r_2-r_1}{D}

I’ll refer to the normalized \vec{V_1} Simply as \hat{V_1} from here on.

• Now we can solve for \hat{n} because it is the only unknown in the equations:

• The dot product between two vectors \vec{A} and\vec{B} is defined as:
\vec{A} \cdot \vec{B} = \|A\|\|B\|cos\left(\theta\right)
Where \theta is the angle between them. Therefore, in the equation

\hat{V_1} \cdot \hat{n} = \frac{r_2-r_1}{D}

\frac{r_2-r_1}{D} is the cosine of the angle between\hat{V_1} and\hat{n}. Because it’s constant, and I don’t want to keep re-typing it, let’s definec = \frac{r_2-r_1}{D} (constant).

• All that remains now is to rotate \hat{V_1} through the angleacos(c), and it will be equivalent to\hat{n}. Rotating a vector is awell known operation in mathematics.

\hat{n} = \left(n_x, n_y\right) is, therefore:

n_x = v_{1_x}*c - v_{1_y}*\sqrt{1-c^2}

n_y = v_{1_x}*\sqrt{1-c^2} + v_{1_y}*c

Remember that c is the cosine of the angle between\hat{V_1} and\hat{n}, therefore the sine of the angle is\sqrt{1-c^2} because

cos^2\left(\theta\right) + sin^2\left(\theta\right) = 1
6. Knowing \hat{n} as well as \vec{V_2}(remember when we modified \vec{V_1}to be\parallelto\vec{V_2}?), allows us to very easily calculate the tangent points by first going from the center ofC_1 along n for a distance ofr_1, and then from there followingV_2 to get the second tangent point.
The other tangent points are easily calculated from this vector-based formalism, and it’s much faster to do than all the geometry transformations
we did with Method 1. Refer to freely available code online for how to actually implement the vector method.

Computing CSC curves

The only reason we needed to compute tangent points between circles is so that we could find the ‘S’ portion of ourCSC curves. Knowing the tangent points on our circles we need to plan to, computingCSC paths simply become a matter of turning on a minimum turning radius until the first tangent point is reached, travelling straight until the second tangent point is reached, and then turning again at a minimum turning radius until the goal configuration is reached. There’s really just one gotcha one needs to worry about this step, and that has to do with the directionality of the circles. When an agent wants to traverse the arc of a circle between two points on the circle’s circumference, it must follow the circle’s direction. That is, an agent cannot turn left (positive) on a right-turn-only (negative) circle. This can become an issue when computing the arc lengths between points on a circle. The thing about all your trigonometry functions is that they will only return you the short angle between things. With directed circles, though, very often you want to actually be traversing the long angle between two
points on the circle. Fortunately there is a simple fix.

Computing Arc Lengths

Given: A circle C_1 centered atp_1 with pointsp_2 andp_3 along its circumference, radiusr_1 , and circle directionalityd, which can be “left” or “right”.

Arc lengths of circles are computed by multiplying the radius of the circle by the angle\theta between the points along the circumference. Therefore arc length,L = r_1 * \theta, and\theta can be naively computed using the law of cosines
after you compute the Euclidean distance between the points. I say naively because this method will only give you the shorter arc length, which will not always be correct for your directed circles (Figure 11).

Figure 11. A scenario where the arc length on a directed circle is actually the larger of the two between the points.

A better strategy would be to generate vectors from the center of the circle to the points along the circumference. That is, \vec{V_1} = p_2 - p_1 and \vec{V_2} = p_3 - p_1 . Let’s assume that the arc you want to traverse is fromp_2 top_3 with directiond.

We can use the atan2() function to compute the small angle between the points as before, but the difference is thatatan2() gives us directional information. That is, \theta = atan2\left(\vec{V_3}\right) - atan2\left(\vec{V_2}\right) will be positive or negative depending on what direction \vec{V_1} rotated to end up at\vec{V_2} . A positive rotation is a “left” turn and a negative rotation is a “right” turn. We can check the sign of this angle againstd. If our angle’s sign disagrees with the direction we’d like to turn, we’ll correct it by either adding or subtracting 2\pi.

That is:


With a function like this to compute your arc lengths, you will now very easily be able to compute the duration of time to apply your “turn left” or “turn right” controls within a circle.

The geometry of CSC trajectories

RSR, LSL, RSL, and LSR trajectories are all calculated similarly to each other, so I’ll only describe theRSR trajectory (Figure 12).

Given starting configuration s = {x_1, y_1,\theta_1} and goal configuration g = {x_2, y_2, \theta_2} , we wish to compute a trajectory that consists of first turning right (negative) at a minimum turning radius, driving straight, and then turning right (negative) again at minimum turning radius until the goal configuration is reached. Assume that the minimum turning radius is r_min.

First, we must calculate the circles about which the agent will turn — a circle of minimum radiusC_1 to the “right” of s as well as a circle of minimum radiusC_2 to the “right” ofg. The center ofC_1 , becomes
p_{c1} = \left(x_1 + r_{min}*cos\left(\theta_1-\frac{\pi}{2}\right), y_1 + r_{min}*sin\left(\theta_1-\frac{\pi}{2}\right)\right)

Similarly, the center of C_2 becomes

p_{c2} = \left(x_2 + r_{min}*cos\left(\theta_2-\frac{\pi}{2}\right), y_1 + r_{min}*sin\left(\theta_2-\frac{\pi}{2}\right)\right)

Figure 12. Using what we’ve learned to compute a RSR Trajectory

Now that we’ve obtained the circles about which the agent will turn, we need to find the outer tangent points we can traverse. I demonstrated earlier how one would go about calculating all the tangent points given two circles. For an RR circle, though, only one set of outer tangents is valid. If you implement your tangent-pt computing function appropriately, it will always return tangent points in a reliable manner. At this point, I’ll assume you are able to obtain the proper tangent points for a right-circle to right-circle connection.

Your tangent point function should return points p_{ot1} andp_{ot2} which respectively define the appropriate tangent points onC_1 , the agent’s right-turn circle andC_2 , the query configurations’ right-turn circle.

Now that we’ve calculated geometrically the points we need to travel through, we need to transform them into a control the agent can understand. Such a control should be in the form of “do this action at this timestep”. For the Dubin’s car, this is pretty easy. If we define a control as a pair of (steering angle, timesteps), then we can define a RSR trajectory as an array of 3 controls: (-steeringMax,timesteps1), (0,timesteps2), and (-steeringMax,timesteps3). We still need to compute the number of timesteps, but this isn’t so bad.

We know (x_1,y_1) , the position of our starting configuration, as well asp_{ot1} our outer tangent point. Both of these points lie on the circumference of the minimum turning-radius “right-turn only” circle to the right of thes, the starting configuration. Now we can take advantage of our ArcLength function to compute the distance between the two points given a right-turn. Typically, simulations don’t update entire seconds at once, but rather some some\delta. This is a type of integration calledEuler integration that allows us to closely approximate the actual trajectory the car should follow,  though not perfectly so. Because we’ve defined the Dubin’s car’s update function as a linear function of the form

\dot{x} =cos\left(\theta\right)

\dot{y} = sin\left(\theta\right)

\dot{\theta} = \frac{1}{r_{turn}}
then we actually travel in a straight line from timestep to timestep. A big \delta therefore results in a poor approximation of reality. As \delta approaches 0, though, we more closely approximate reality. Typically a delta in the range of [0.01,0.05] is appropriate, but you may need finer or coarser control. Accounting for \delta, our update equations become:

x_{new} = x_{prev} + \delta*cos\left(\theta\right)

y_{new} = y_{prev} + \delta*sin\left(\theta\right)

\theta_{new} = \theta_{prev} + \frac{\delta}{r_{turn}}
Now that we have decided on a value for \delta, we can compute the number of timesteps to apply each steering angle. Given the length of an arc L (computed using the ArcLength function, or just simply the magnitude of the tangent line)

timesteps_x = \frac{L}{\delta}

Computing the other trajectories now becomes a matter or getting the right tangent points to plan towards. TheRSR andLSL trajectories will use outer tangents while theRSL andLSR trajectories use the inner tangents.

Computing CCC trajectories

Two of the Dubin’s shortest paths don’t use the tangent lines at all. These are theRLR andLRL trajectories, which consist of three tangential, minimum radius turning circles. Very often, these trajectories aren’t even valid because of the small proximity thats andg must be to each other for such an arrangement of the three circles to be possible. If the distance between the agent and query configurations’ turning circles is less than4r_{min} , then aCCC curve is valid. I say less than 4r_{min} , because if the distance were equal, then aCSC trajectory is more optimal.

For CCC trajectories, we must calculate the location of the third circle, as well as its tangent points to the circles near s and g. To be more concrete, I’ll address theLRL case, shown in Figure 13.

Consider the minimum-radius turning circle to the “left” of s to beC_1 and the minimum-radius turning circle to the “left” ofg to be toC_2 . Our task is now to computeC_3 , a minimum-radius turning circle tangent to bothC_1 andC_2 plus the pointsp_{t1} andp_{t2} which are respective points of intersection betweenC_1 andC_3 , and betweenC_2 andC_3 . Let p_1, p_2, p_3 be the centers of C_1, C_2, andC_3 , respectively. We can form the triangle \bigtriangleup{p_1, p_2, p_3} using these points. Because C_3 is tangent to bothC_1 andC_2 , we already know the lengths of all three sides.

Figure 13. Computing LRL trajectory

Segments \overline{p_1p_3}and\overline{p_2p_3} have length2r_{min} and segment\overline{p_1p_2} has lengthD = \sqrt{\left(x_2 - x_1\right)^2 + \left(y_2 - y_1\right)^2}. We are interested in the angle \theta = \angle{p_2p_1p_3} because that is the angle that the line between C_1 andC_2 (\vec{V_1} = p_2 - p_1) must rotate to face the center of C_3 , which will allow us to calculatep_3 . Using the law of cosines, we can determine that\theta =  cos^{-1}\left(\frac{D}{4r_min}\right)

In a LRL trajectory, we’re interested in a C_3 that is “left” ofC_1 . At the moment, we have an angle, \theta that represents the amount of rotation that vector \vec{V_1} = \left(p_2 - p_1\right) must rotate to point at the center of C_3 . However,\theta’s value is only valid if \vec{V_1} is parallel to the x-axis. Otherwise, we need to account for the amount\vec{V_1} is rotated with theatan2\left(\right) function —atan2\left(\vec{V_1}\right). For aLRL trajectory, we want to add \theta to this value, but for anRLR trajectory we want to subtract\theta from it to obtain a circle “to the
right” of C_1. (Remember that we consider left, or counter-clockwise turns to be positive.)

Now that theta represents the absolute amount of rotation, we can compute

p_3 = \left(x_1 + 2r_{min}cos\left(\theta\right), y_1 + 2r_{min}sin\left(\theta\right)\right)

Computing the tangent points p_{t1} andp_{t2} becomes easy; we can define vectors from thep_3 top_1 andp_2 , and walk down them a distance ofr_{min} . As an example, I’ll calculatep_{t1} . First, obtain the vector\vec{V_2} fromp_3 top_1;\vec{V_2} = p_1 - p_3. Next, change the vector’s magnitude tor_{min} by normalizing it and multiplying byr_{min} (or just dividing its components by 2, as its magnitude should already be 2r_{min}).
\vec{V_2} = \frac{\vec{V_2}}{\|V_2\|} * r_{min}

Next, compute p_{t1} using the new \vec{V_2};
p_{t1} = p_3 + \vec{V_2}

Computing p_{t2} follows a similar procedure. At this point we have everything we need for ourCCC trajectory! We have three arcs as before, from \left(x_1, y_1\right) top_{t1}. Fromp_{t1} top_{t2}, and fromp_{t2} to\left(x_2, y_2\right). One can compute arc lengths and durations as before to finish things off.

Conclusions

So now that we’ve computed all of the shortest paths for the Dubin’s Car, what can we do next? Well, you could use them to write a car simulator. The paths are very quick to compute, but are what’s known as ”open-loop” trajectories. An open-loop trajectory is only valid if you apply the desired controls exactly as stated – so a computer. Even if you used a computer to control your car, this would still only work perfectly in simulation. In the real-world we have all kinds of sources for error, that we represent as uncertainty in our controls. If a human driver tried to apply our Dubin’s shortest path controls, they wouldn’t end up exactly on target, would they? Perhaps in a later article I will discuss motion planning under uncertainty, but for now I defer you to the internet.

Another application we could use these shortest path calculations for would be something known as a rapidly exploring random tree, orRRT. An RRT uses the know-how of planning between two points to find reachable points in an environment that has obstacles. The resulting structure of points that are connected is a tree with a root at our start, and the paths one gets from the tree can look pretty good; imagine a car deftly maneuvering around things in its way. RRTs are a big topic of research right now, and Steven LaValle has a wealth of information about them.

Following from the Dubin’s RRT idea, you might one day use a much more complicated car-like robot. For this complicated car-like robot you may want to also use an RRT. Remember when I said that the resulting structure of an RRT looks like a tree with its root at our start? Well, to ”grow” this tree, one has to continue adding points to it, and part of that process is determining which point in the tree to connect to. Typically this is done by just choosing the closest point in the tree. ”Closest” usually means, ”the shortest line between myself and any point in the tree”. For a lot of robots (holonomic especially), this straight-line distance is just fine, but for car-like (nonholonomic) robots it may not be good enough, because you can’t always move on a straight line between start and goal. Therefore, you could use the length of the Dubin’s shortest path instead of the straight-line shortest path as your measure of distance! (We’re using the Dubin’s shortest paths as a ”distance metric”).

In reality, the Dubin’s shortest paths are not a true distance metric because they are not ”symmetric”, which means that the distance from A to B isn’t always the same as the distance from B to A. Because the Dubin’s car can only move forward, it isn’t symmetric. However, if you expanded the Dubin’s car to be able to move backwards, you’d have created aReeds-Shepp car, and the Reeds-Shepp shortest paths are symmetric.

Acknowledgement:

I’d like to thank my colleague Jory Denny for LaTeX sorcery and various grammar edits.

I’ve made the code (sans graphics stuff) available on my GitHub account: https://github.com/gieseanw/Dubins

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 做双眼皮后脸中间长

    ...

    2024/4/28 16:07:01
  2. 做双眼皮后脸比例变了

    ...

    2024/4/28 0:47:13
  3. 2017年暑期前端开发实习-阿里内推一面

    1. 自我介绍 2. 项目介绍 3. CSS 1)介绍一下css盒模型 盒模型基本成了面试必问的问题,有W3C的盒模型和IE浏览器下的盒模型,盒模型从外到里包括:margin、border、padding、content。 (1)W3C盒模型的宽度 co…...

    2024/4/21 14:57:47
  4. 新手配置vim

    原文地址:http://blog.sina.com.cn/s/blog_5ca785c30100dk6x.html Vim很好很完美是公认的了,但是对新手来说,上手毕竟不是很容易。Windows下程序员很多都很喜欢Source Insight这个工具来看代码,各种语法高亮看着很舒服。vim作为为程序员打造的编辑器,没有道理不可以通过配…...

    2024/4/20 16:01:32
  5. iptTable规范

    规范之HTML 先在当前页面放入几个表格设置按钮的html&#xff08;样式可能需重新调整&#xff09; <div class"bottom_nav1 ta_l" style"padding: 0;height: 32px;width: 300px;margin:4px auto 0;"><a class"qxfp" ng-click"addR…...

    2024/4/21 14:57:45
  6. 在计算机术语中 英文cad是指,CAD中英语词汇及命令大全

    CAD中英语词汇及命令大全对于从事CAD相关职业的朋友来说&#xff0c;加深认识CAD中英语词汇及命令是很有必要的&#xff0c;今天小编特意整理了这些东西&#xff0c;希望对大家有帮助!2D Solid 二维实体 2D 实面2D Wireframe 二维线框3D Array 三维阵列 3D 阵列3D Dynamic View…...

    2024/4/25 10:04:31
  7. 做做双眼皮后多久能要孩子吗

    ...

    2024/4/28 12:40:16
  8. settings PreferenceActivity网博收录

    《SharedPreferences和PreferenceActivity》 《Android之PreferenceActivity》 《在Android中Preferences数据存储的使用》 《Android的设置界面及Preference使用》 《OnPreferenceChangeListener分析,以及与OnPreferenceClickListener的区别》 《使用PreferenceActivity时,如…...

    2024/4/28 16:51:55
  9. 做双眼皮过程视频

    ...

    2024/4/20 15:10:20
  10. 做双眼皮感觉脸变大了

    ...

    2024/4/24 0:25:29
  11. 做做双眼皮多久能修复

    ...

    2024/4/19 17:12:35
  12. 整理学习:100多道前端面试题(一起加油,且行且珍惜)

    前言 当你准备去面试时&#xff0c;你不妨看一些面试的题目&#xff08;推荐掘金&#xff09;来提醒自己究竟掌握得怎么样&#xff0c;比如 题目 笔者最近一边写项目&#xff0c;一边整理前端面试题&#xff0c;打算完成项目就差不多去实习了… 没有特别宏大的目标&#xf…...

    2024/4/21 14:57:43
  13. 做双眼皮多久能上班

    ...

    2024/4/21 14:57:41
  14. 做双眼皮多久能化眼妆

    ...

    2024/4/21 14:57:41
  15. 极致 Web 性能 —— SPA 性能优化

    前言 前端框架时代&#xff0c;为开发体验、效率与页面性能带来&#xff0c;非常大的革命。大家纷纷拿起一系列打包工具(webpack/parcel etc.)&#xff0c;配合一系列加载器快速搭建起一个 SPA 页面。 SPA 应用带来的好处非常明显&#xff1b; 提升页面切换体验降低切换时间易…...

    2024/4/21 14:57:40
  16. 做双眼皮多久能抽烟

    ...

    2024/4/21 14:57:39
  17. 做双眼皮多久可以抽烟

    ...

    2024/4/23 15:52:41
  18. 做双眼皮的专业知识

    ...

    2024/4/22 19:49:11
  19. 做双眼皮的男生

    ...

    2024/4/21 14:57:37
  20. 做双眼皮的目的

    ...

    2024/4/21 14:57:34

最新文章

  1. UE5 GAS开发P41-43 永久效果,去除永久效果,伤害区域,EnumClass,开始重叠与结束重叠事件

    这一部分学习了怎么创建一个伤害性的地形(火焰地形,毒沼泽等都可以用这个方式创建) AuraEffectActor.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "GameplayEffect.h&q…...

    2024/4/28 18:03:42
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 图像处理相关知识 —— 椒盐噪声

    椒盐噪声是一种常见的图像噪声类型&#xff0c;它会在图像中随机地添加黑色&#xff08;椒&#xff09;和白色&#xff08;盐&#xff09;的像素点&#xff0c;使图像的质量降低。这种噪声模拟了在图像传感器中可能遇到的问题&#xff0c;例如损坏的像素或传输过程中的干扰。 椒…...

    2024/4/23 15:25:06
  4. #QT项目实战(天气预报)

    1.IDE&#xff1a;QTCreator 2.实验&#xff1a; 3.记录&#xff1a; &#xff08;1&#xff09;调用API的Url a.调用API获取IP whois.pconline.com.cn/ipJson.jsp?iphttp://whois.pconline.com.cn/ipJson.jsp?ip if(window.IPCallBack) {IPCallBack({"ip":&quo…...

    2024/4/27 7:37:41
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/28 13:52:11
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/28 13:51:37
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/28 15:57:13
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57