====== Bipedal Robot Locomotion: Single Leg Quasi-static Gait ====== ---------------------------------------------------------------- Last week you used Optragen to generate an arbitrary trajectory for a chosen foot frame (relative to the **TORSO** frame). This week we'll begin building on that experience and take baby steps toward generating our full (quasi-static) walking gait. We'll break our walking gait up into multiple gait phases: **SWING** and **DOUBLE**. The gait phases will progress over time as **SWING (right)**, **DOUBLE (right-left)**, **SWING (left)**, **DOUBLE (left-right)** and then repeat. We'll assume that feet in contact with the ground do not slip/slide; hence, their frames serve as a good choice for the stance frame, w.r.t. motions of other parts of the body may be planned. During the **SWING (right)** and **SWING (left)** phases, the foot not in contact with the ground (ie. **RIGHT_FOOT** and **LEFT_FOOT**, respectively) will be 'swinging' to the next ground contact position from which the next phase of the gait (ie. **DOUBLE**) can continue. Why is the **DOUBLE** phase of the gait important to accomplish quasi-static walking? This week we'll focus on the **SWING (right)** phase of the gait. However, keep in mind the **SWING (right)** and **SWING (left)** phases should be symmetric; **LEFT_FOOT** and **RIGHT_FOOT** frames should move identically. Similarly, **DOUBLE (right-left)** and **DOUBLE (left-right)** will be symmetric (we will develop these in future weeks). **1.** Generate a feasible motion plan for the **SWING (right)** phase of the walking gait using Optragen. I suggest the following sequence of steps: ***a.)** Select your stance frame to the be the **LEFT_FOOT** frame ***b.)** Define an initial joint configuration for this phase of the gait. Both feet must be in contact with the ground. Further, the initial positions of both feet should not coincide; the **RIGHT_FOOT** frame should begin 'behind' the **LEFT_FOOT** frame - remember that this initial configuration must be identical to the final configuration of the **DOUBLE** (left-right) phase of the gait (since gaits are cyclic in nature). Because of this, you will have to consider and define the initial configuration of your biped such that it is 'mid-stride'. ***c.)** Design a trajectory (eg. set of waypoints) such that your **RIGHT_FOOT** frame begins on the ground (you can assume y = 0, w.r.t. your stance frame, is ground), lifts into the air, moves forward and steps back onto the ground. Remember that at the end of the trajectory, the **RIGHT_FOOT** frame orientation must be aligned such that the foot is level with the ground. ***d.)** You must consider additional constraints: ***(1)** the CoM projection onto the ground (expression you formulated last week) should remain within the bounds of the stance foot ***(2)** the knee should not invert (to remain humanly-realistic) ***(3)** your **RIGHT_FOOT** frame should not penetrate the ground ***e.)** Use Optragen/SNOPT to generate your trajectory The Optragen examples demonstrate path planning between an initial and final configuration. If you have more than 2 waypoints, you can run the relevant portions of your Optragen script multiple times (eg. in a loop), where each iteration generates the trajectory between consecutive pairs of waypoints. The final trajectory is the concatenation of the trajectory pieces generated during each iteration. **Please generate:** **a.** An animation of your biped model executing the **SWING (right)** phase of the gait. The biped and all relevant frames (eg. **TORSO**, **RIGHT_FOOT**, **LEFT_FOOT**) should be displayed along with the CoM. The animation should display the robot with respect to the stance frame (ie. **LEFT_FOOT**). **b.** A plot of all joint angles over time. Please remember to label your axes and title your plots!