Student Lounge

Sharing technical and real-life examples of how students can use MATLAB and Simulink in their everyday projects #studentsuccess

Snake-like Robot Modeling and Navigation

How did we come across this project?

My research is centered around the motion control of snake robots. I’ve been drawn to the idea of tackling this challenge through Simscape, which allows for the physical representation and visualization of the robots without delving into the detailed dynamics. One day, during a MathWorks workshop on digital twin technology hosted at the Indian Institute of Technology Guwahati (IIT Guwahati), I had the opportunity to engage with Dr. Monalisa Pal. Our conversation about my research led to her proposing the Snake-like Robot Modeling and Navigation project, which is a part of MATLAB and Simulink Challenge Projects Hub. This project opened a new perspective for my work.

Who are we?

This work is carried out by me (Bhavik M. Patel). I am a Ph.D. student at the Mechatronics and Robotics Lab, Department of Mechanical Engineering, IIT Guwahati. I am working on the dynamics and motion control of the underwater snake robot under the supervision of Prof. Santosha K. Dwivedy.

What motivated me to study this topic?

I’m immersed in the exciting field of bio-mimetic robotics, which aims to emulate the adaptability of living creatures in uncertain environments. Current research on bio-mimetic robots includes motion study, modeling motion dynamics, biological control schemes, bioinspired optimization algorithms, etc. My focus in this study is on the serpentine motion and its control, as snakes are one of the diversified creatures found on land, water, and air. My objective here is to understand their motion dynamics and control by utilizing Simscape to simulate a real-time virtual testing ground for these robots.

A little bit about snake-like robots

Generally, we can observe the snake’s characteristic serpentine or lateral undulation motion while it moves on land or underwater. This motion is used for the development of the snake robot in this project. Within the robot, actuators play a crucial role in generating joint motion. Achieving a coordinated serpentine motion requires all joints to operate in sync, necessitating the use of a controller for joint motion control. It’s worth mentioning that snake robots with N links possess joints and (N + 2) degrees of freedom, resulting in an under-actuated system, which presents an intriguing control challenge.

Snake-like robot model

This section provides an overview of the Simscape model of the robot and its associated controllers that I developed as a part of this project. I referred to the literature [1-4] to obtain the physics behind the snake robot. It explains that the motion of the snake robot is sensitive to environmental conditions, specifically friction. The mathematical formulation of the snake’s behavior, subjected to nonlinear environmental conditions, is explained in the literature. In this work, I focused on a snake robot, comprising of links of uniform size, and on its planar motion.

Links and Joints

The underlying modeling of the snake robot block, with links and joint connections, is illustrated in Figure 1. I used a revolute joint between subsequent links, where each link is made from the solid-block function. This link-joint structure makes up the under-actuated system which has 9 links, 8 joints, and 11 degrees of freedom.
Figure 1: Snake modeling in Simscape

Interaction between snake and surface

For real-world scenarios, I considered joint frictions within the Simscape revolute joint blocks. This friction represents the interaction between the snake robot’s links and the surface and is responsible for driving the robot’s motion. This frictional force is inherently nonlinear and can be applied to each link through the planar joint, which essentially acts as a point of contact between the robot’s links and the surface.

Frame of reference

A transform sensor is used for measuring the states of each link. The measurement is considered in the world frame for the simplicity of the explanation.

Controller Design

Figure 2 illustrates the model to control the motion of the snake robot. As input to this model, the head’s reference angle is provided by the user via a Simulink knob block. The remaining links of the robot follow the head’s movements.
Figure 2: Controller modeling in Simulink
The controller is the brain of the robot. It decides how a robot should move in the various environments based on the received feedback in terms of states. Here, different control logics are used for two different aspects of the robot (Joint Control and Head Control), both contributing to its motion.

Joint Control

The joint motion is controlled by a PD controller. PD control receives feedback from the snake robot joint in terms of angle. There is a need for the reference joint position to track the joint position of the snake robot. The joint reference position is generated using the following simple sine wave equation.
where i represents the particular joint and the phase angle of the generated serpentine motion.
The head link reference joint can be generated using the following equation.
where is an offset angle. To change the overall direction of the robot, the offset angle of the head link needs to be adjusted. Then, all the subsequent links will then follow accordingly.
The PD controller for each joint is considered as given below.

Head Control

A dedicated controller approach is devised specifically for the head link to control the robot’s direction. This controller is designed based on a head error tracking-based control scheme [1], and the equation for the head controller is given below.
where represents the error between the actual head angle and reference head angle (given by the user via the Simulink knob in Figure 2).

Results and Discussions

The snake robot moves on given reference head angle.

Visualizing the snake’s motion

The 3D visualization of the generated motion is shown in Figure 3.
Figure 3: 3D Visualization of the Motion of the Snake Robot Model

Head link position in X-Y frame

The head link position of the snake robot is given shown in Figure 4. Here, I considered the reference angle with respect to the global X-axis. I moved the knob first to a positive angle, then to zero, then to a negative angle, and once again to zero. The head of the snake robot moves in the reference head angle and the entire robot moves in that direction.
Head link position in X-Y frame
Figure 4: Head link position in X-Y frame

Head angle error tracking

Figure 5 shows the error tracking in head angle. The spikes show the sudden changes of the knob. The designed head angle tracking controller is much more robust which makes error tracking to zero prompt. The zero error depicts that the head of the snake robot is moved to the reference head angle. This way, the robot gets turned into an XY plane.
Head angle error tracking
Figure 5: Head angle error tracking

Torque on the head link joint

Figure 6 shows the torque applied on to the head link joint. The variation in torque due to change in reference joint head angle. This would help a robot for turning.
Torque on the head link joint
Figure 6: Torque on the head link joint


A Simscape model for the snake robot has been designed, where friction forces are applied to each link via planar joints. A PD controller manages joint movements, and a separate dedicated controller steers the robot. The Simulink knob functions like a remote, determining the head’s direction, with the rest of the robot following in a train-trail motion.
Using this platform, we could easily test the model with different control strategies for various environmental conditions without explicitly implementing the snake robot dynamics. Hence, it is more user-friendly to implement real-world scenarios using Simscape.
We would like to extend this project to virtual reality, in the future, where a vision-based controller can be designed.
MathWorks Challenge Projects Program helped me a lot in my research work. Apart from this project, I also learned how to work with GitHub. The discussion with Dr. Roberto Valenti was insightful and helped me a lot to complete this project. My overall experience with this program is excellent and I also recommend many of my friends to participate in this.


I thank Dr. Roberto G. Valenti for continuous support and discussion on improving the snake robot control scheme and Dr. Monalisa Pal for introducing this amazing project.
The comments for the improvement are welcome. Contact: Bhavik M. Patel (;


  1. Kohl, A. M., Kelasidi, E., Mohammadi, A., Maggiore, M., & Pettersen, K. Y. (2016). Planar maneuvering control of underwater snake robots using virtual holonomic constraints. Bioinspiration & biomimetics, 11(6), 065005.
  2. Mohammadi, A., Rezapour, E., Maggiore, M., & Pettersen, K. Y. (2015). Maneuvering control of planar snake robots using virtual holonomic constraints. IEEE Transactions on Control Systems Technology, 24(3), 884-899.
  3. Mukherjee, J., Mukherjee, S., & Kar, I. N. (2017). Sliding mode control of planar snake robot with uncertainty using virtual holonomic constraints. IEEE Robotics and Automation Letters, 2(2), 1077-1084.
  4. Patel, B. M., &, Dwivedy, S.K. (2023). Virtual holonomic constraints based super twisting sliding mode control for motion control of planar snake robot in the uncertain underwater environment. Proceedings of the Institution of Mechanical Engineers, Part I: Journal of Systems and Control Engineering, 237(8),1480-1491.

  • print


To leave a comment, please click here to sign in to your MathWorks Account or create a new one.