Fault Diagnosis and Fault-tolerant Control of Robotic and Autonomous Systems