The control system for a wheeled mobile robot can be written in the general form q-dot equals G of q times u, where q is the n-dimensional configuration, u is the m-dimensional control input, and the m columns of the G matrix are the control vector fields associated with each control input. For the canonical nonholonomic robot, the specific form is shown here, where g_1 is the forward motion vector field and g_2 is the spin-in-place vector field. This equation of motion means that no velocity is possible in the sideways direction. We would like to know if this constraint on the velocity of the chassis integrates to a constraint on its configuration. Equivalently, we ask whether following the system vector fields allows us to locally reach a full-dimensional subset of the configuration space. If so, then the robot is at least small-time locally accessible, or STLA, and the velocity constraint is not integrable to a configuration constraint. If the initial configuration of the robot is q, and we follow the forward vector field g_1 for time epsilon, the final configuration is written F_epsilon^g_1 of q. After following g_2 for time epsilon, the final configuration is F_epsilon^g_2 of the previous configuration. If we reverse the order of following the vector fields, we end up at a different configuration. Therefore, we say the two vector fields do not commute. When the order of the 2 vector fields does not matter to the final configuration, then the vector fields are said to commute. The noncommutativity of the vector fields plays an important role in determining the controllability of a nonlinear control system, because we may be able to generate approximate motion in constrained directions by switching between vector fields. In general, we can calculate the noncommutativity of two vector fields, as epsilon goes to zero, using a four-step sequence. To illustrate it, let's use the two vector fields of the canonical nonholonomic robot. First, we flow for time epsilon along g_i. The new configuration is F_epsilon^g_i of q. Second, we flow for time epsilon along g_j. Third, we flow for time epsilon along minus g_i. And finally, we flow for time epsilon along minus g_j. The net change in configuration is Delta q. To calculate Delta q for small epsilon, we can use a Taylor expansion. After the first flow, the configuration q at time epsilon is the initial configuration q at time zero plus the initial velocity times epsilon plus one-half epsilon-squared times the initial acceleration plus terms of order epsilon-cubed. Since epsilon is small, third- and higher-order terms are dominated by the terms that are first- and second-order in epsilon. We can rewrite this as the zeroth-order term plus the first-order term, replacing q-dot with the vector field g_i evaluated at the initial configuration, plus the second-order term, where, by the chain rule, the acceleration q-double-dot is equivalent to d-g_i d-q times g_i, plus terms of order epsilon-cubed. After the second flow, the configuration is the zeroth-order term, plus two first-order terms in g_i and g_j, plus two second-order terms in g_i and g_j, plus one more second-order term, epsilon-squared times d-g_j d-q times g_i. Unlike the previous terms, this term depends on the order the vector fields are applied. If we continue the Taylor expansion, after the fourth flow the first-order terms have canceled and we are left only with a second-order term, called the Lie bracket of the vector fields g_i and g_j, written open-bracket, g_i, comma, g_j, close-bracket. The Lie bracket of two vector fields is itself a vector field, expressing the approximate motion obtained by switching between the vector fields. Using the Lie bracket notation, we can write the net motion as epsilon-squared times the Lie bracket. The Lie bracket sequence for the canonical mobile robot is illustrated here. We can calculate the Lie bracket of g_1 and g_2 using the formula we just derived. Plugging in the expressions for g_1 and g_2 and evaluating the derivatives with respect to the configuration q, we see that the Lie bracket vector field is zero, sine phi, minus cosine phi, which is a vector field describing a sideways translation to the right. The actual net motion, as seen in the figure, consists of a translation to the right of epsilon-squared times the Lie bracket plus a small forward translation of order epsilon-cubed. The Lie bracket vector field of g_1 and g_2 effectively "breaks" the constraint that the robot cannot slide sideways, ensuring that the velocity constraint does not integrate to a configuration constraint.