Skip to content

mithi/hexapod-robot-simulator

Repository files navigation

🕷️ Mithi's Hexapod Robot Simulator

Twisting turning and tilting Adjusting camera view
STATUS FEATURE DESCRIPTION
🎉 Forward Kinematics Given the angles of each joint, what does the robot look like?
🎉 Inverse Kinematics What are the angles of each joint to make the robot look the way I want? Is it even possible? Why or why not?
🎉 Uniform Movements If all of the legs behaved the same way, how will the hexapod robot as a whole behave?
🎉 Customizability Set the dimensions and shape of the robot's body and legs. (6 parameters)
🎉 Usability Control the camera view, pan, tilt, zoom, whatever.
🎉 Simplicity Minimal dependencies. Depends solely on Numpy for calculations. Uses only Plotly Dash for plotting, Dash can be safely replaced if a better 3d plotting library is available.
Stability Check (WIP) If we pose the robot in a particular way, will it fall over?
Fast Okay, it's not as fast as I wanted, but when run locally, it's okay
Bug-free Fine, right now there's still room for improvement
Well-tested Yeah, I need to compile test cases first

🕷️ Preview

image image
image image

🕷️ Requirements

  • Python 3.8.1
  • Plotly Dash 1.10.0
  • Plotly Dash Daq 0.4.0
  • Numpy 1.18.1
  • See also ./requirements.txt

🕷Run

$ python index.py
Running on http://127.0.0.1:8050/

⚠️ Known Issues

🕷️Conventions and Algorithms

🕷️ Screenshots

Kinematics
IK

🕷️ Notes

  • Now live on https://hexapod-robot-simulator.herokuapp.com ! BUT (and a big one) I highly suggest that you run it locally. When run locally, it's pretty speedy! On the other hand, the link above is barely usable. Might convert this to to be a fully client-side Javascript app later, maybe?

  • This implementation uses matrices, NOT quaternions. I'm aware that quaternions is far superior in every single way. In the (un)forseeable future, maybe?

  • Honestly, My IK algorithm is just something I came up with based on what I remember back in college plus browsing through the Mathematics Stack Exchange. It's just the most intuitive that I can think of. If you want something closer to the state-of-the-art, maybe checkout Unity's Fast IK or ROS IKFast.

  • I believe that the idea that it's best if we are kind to one another shouldn't be controversial. And I shouldn't be afraid to say that. Contributor Covenant

🤗 Contributors