At a high level, our project has two primary design requirements:
Robot must be able to balance and maintain its center of mass while maneuvering one leg onto an unknown surface
Complete a terrain evaluation based on a slippage estimate (using joint sensors) and strength estimate (using force sensors)
The high-level design requirements outlined above will enable the following functionality:
Ability to perform a terrain stability estimation and classify terrain as stable or not stable
Navigate across terrain if classified as stable
Navigate around terrain or avoid terrain if classified as unstable
The physical robot hardware used in this project was the Unitree A1 Robot. This hardware design choice was a good match for meeting our project requirements, as it came equipped with some important components:
Foot pressure sensors -- Each leg of the robot has a pressure sensor at the base of the foot. This makes calculating terrain stability possible, as the robot has the capability to measure the magnitude of contact force it encounters while operating.
Joint Feedback -- The low level control features of the robot enable us to collect important data about the robot's state. In particular, the coordinates of different joints in the robot's base frame are crucial to computing the robot's center of mass and recording data for a slippage estimation.
The above features are crucial to achieving our project requirements, but the selected hardware has features that would enable us to build on these requirements should future work on the project continue. Among other features, this includes:
High precision LiDAR and depth camera -- Would enable to dynamically build a map of our terrain and remember what terrain is stable or unstable in the present environment
Specific details on the high-level and low-level control modes that are available to us can be found in the A1 Software Guide
By actuating each of the feet towards the CoM position, the controller shifts the CoM back towards the desired CoM position, maintaining a CoM within the polygon formed by its grounded feet.
We need to actuate the 3 grounded legs to avoid the robot from toppling over while the estimator leg is performing a stability query.
By using some simple geometry and a PID controller, we can stabilize the CoM of the robot and prevent it from falling.
Use forward kinematics to determine the relative positions of each foot.
Determine a desired CoM using the centroid of these positions.
To shift the CoM towards the desired position, actuate each grounded foot towards the current CoM using inverse kinematics.
This controller is an important component of the design's robustness. The ability to balance on three legs dynamically, rather than hard-coded, fixed joint positions, allows the robot to have greater flexibility when performing a stability query. It also contributes towards a more generalized solution, allowing for more efficient operation in unknown environments when frequent stability queries would be required.
We need to actuate the 4th robot leg and use available sensors to perform the stability query
There are two high level components to completing the stability estimation: actuation and sensing
For actuation, the robot needs to generate trajectories to raise, extend, and lower the leg that is performing the stability query. To move to these different positions, joint sensors can be used to calculate target positions to move to in the robot's base frame, and inverse kinematics can be used to calculate the joint angles to actuate the leg to that position.
For sensing, there are two calculations that need to be made for classification of terrain stability: slippage and contact force
Slippage Estimate
While performing the force estimation, determining if the leg is slipping on the surface will help determine whether the terrain is stability. Using the robot's joint sensors, the corresponding joint positions in the robot's base frame can be used to determine if the robot is slipping on the surface.
Contact Force Estimate
While performing the force estimation, collecting sensor data from the foot pressure sensor will help determine if the terrain is stable and can support the robot. The robot's pressure sensors will enable us to determine the contact force that the robot is experiencing while performing the force test. This will allow us to determine the rigidity of the terrain, and whether it will break or otherwise deteriorate when a certain force is applied to it. We can combine this data with the slippage estimate to classify terrain stability.
This component of the overall design will enable the robot to reliably classify terrain stability. The dual use of slippage and contact force estimates will produce a reliable classification and add levels of redundancy, in the event that one component fails to collect accurate data or produce a conclusive classification.