Thanks for a great video! We are taught to use DH tables and although they can provide some shortcuts, your approach is so much more intuitive and was very easy to follow! I am now applying your technique to my own robot project.
Hi Sidney! Thank you so much :) As my professor once said "People like to do DH tables since they think they are kind of the universal way to solve robots but then there are many ways of doing the DH table and suddenly you realize, there is no universal way." I am glad you found this approach more intuitive. Would love to hear updates on your robot project.
Once you understand how to perform forward kinematics of robots, it's quite easy to do it using any software. Be it MATLAB or even doing it using Python.
I mean that when the initial structure is made by homogenous matrix initially every angle is at 0 degree then we give whatever orientation and change the end effector point
Hello, thanks for the video. When I tried the codes with your order ı took an error "sym/cat>catMany" error and [resz, ranges] = checkDimensions(sz,dim); Can you help for this?
I have no idea what that error is. One suggestion that I have is that you try 'Debug Using Run to Here' command in MATLAB and see exactly which line is producing the error. You can view a few methods of error debugging here: www.mathworks.com/help/matlab/matlab_prog/debugging-process-and-features.html
Zain can you please tell me that is the initial structure of the robot has nothing to do with the angles, are the coordinates we put in each H matrix the main part of the 3D structure ?
The angles of the robots are related to how much the motors have rotated at each of the joints. The coordinates that we put in the H matrix consists of the rotation matrix and the displacement vector- these are based on the current position and orientation of the robot.
@EngineeringSimplified but the problem is that I made a Kinematic model which is for a quad robot leg but It's only giving the right end point when I take its initial position as 0 degree through Cordinate in H Matrix and then start to give angle
Thanks, Alto! If you mean to interpret the orientation just by looking at the forward kinematics matrix, then it's impossible. On the other hand, the displacement vector can be simply extracted for the end-effector FK matrix. Does that answer your question?
Zain can please tell me how to take the angle measurement manually in 3D, pls give any solution beacuse in 2D we follow the trail of prev X axis and start the angle from their
In 3D, the angle measurement is non-intuitive. There are three angles involved, one about each axis -X,Y and Z. They are often called yaw, pitch and roll. If you are given just a reference frame in space and asked to determine it's yaw, pitch and roll then its a dumb question. It's complex and holds little importance. For 3D real world cases, let's say an industrial robot arm with 6 DOF, you will see that they have a revolute joint at each of the joints so they are only revolving about one-axis per joint. So, by reading the angle of rotation off from the motors, you can easily see how much each joint has rotated. Does that make sense and help clarify your issue?
@EngineeringSimplified a servo motor moves 0 to 360 degree now I want to know that if the angle on 1st DOF around x axis is 60 deg which we also put in H1 matrix so the motor is simply gonna rotate from its 0 deg to 60 deg I just wanted to know in 3D is it simple like this because in 2D we give angle to the matrix wrt a specific axis
@@abdulrafaykhan8537 Yup, you are correct. If there is just one motor at a joint (which is the case in reality), then in your Homogenous transformation, you put in the degrees that the motor has turned about the respective axis. If a motor turns 60 degrees about X axis, then your rotation matrix will be X(60) or [1 0 0; 0 cos(60) -sin(60); 0 sin(60) cos(60)].
The coordinate of each homogenous matrix is taken from the previous displacement. For H2, you have already applied the H1 transformation and so you will take the coordinates accordingly. For H3, you have already applied H1 & H2 so you are now at the location of 'theta 2' joint so in order to go to the location of the 'theta3' joint, you will need to go -ve in the x direction and +ve in the z direction. Does that help solve your confusion?
@EngineeringSimplified Zain does this means that in 3D the coordinates of next Homogeneous Matrix is according to the previous Homogeneous matrix just like you did in 2D
Branko353 is correct. The 'x1' is just the distance of the joint2 in the x-direction from joint1 (which is the base frame). Similarly, the 'z1' is the distance of the joint2 in the z-direction from joint1. Does that clear out your confusion, karamjirjees8353?
It would slightly change your homogenous transformation H2 since H2 currently includes a translation about both x1 and z1. But the initial coordinate frame (base frame) is assumed to be at 2nd joint, then you won't need to translate by x1 and z1. Does that make sense?
There isn't. You can have 20 homogeneous matrices or 3, it doesn't matter. Think of it like traveling in a car from point A to point B. It doesn't matter how many stops you take in between, which path you follow. All that matters is that you end up at B. The analogy sits well with homogeneous transform of a robot's end-effector. All you need to do is to express the end-effector frame in the fixed frame. You can multiply out as many H that you want as long as they help you achieve what you want. In short, it doesn't matter how many homogeneous transformation matrices you multiply out, your final Forward Kinematics matric (which is a homogeneous transform) should come out the same.
Why is theta 3 positive in clock wise and negative in anti clock wise this is my last question I am very sorry This would be so annoying Actually I am researching on Kinematics and working in HAPTICs NED
See the schematic that I made on the right hand side at 11:53 . I have marked the theta 3 being positive in anticlockwise. I did make a mistake when marking it on the actual robot's picture so you can ignore that. Hope that helps to clear out the confusion. Best of luck for your research!
It depends on your interest mainly. Mechatronics will involve a little more hardware and electronics while robotics will involve more programming and AI.
There are many robot simulators available. If you have MATLAB, you can download their robotics toolbox and see if that has the robot that you want to simulate. There is a very good simulator that I use which is called 'ROBODK'. You can download it and give it a shot. It has a 30-day trial but it has hundreds of robots available and you can change the joint angles and see the robot move. Lastly, if you are doing research, then it helps to write your own code in MATLAB and simulate it. I do it when researching since doing that, I can change various parameters and see the impact of them such as changing the length of links, the # of joints, the location of the base, etc. If you are curious, here's a brief info about my research which has videos of the simulation that I produced: www.zainullah.com/project/path-planning-for-industrial-robots-working-collaboratively-on-a-task/ In a nutshell, I would recommend that unless you are researching, you stick with easy-to-use robot simulators like RoboDK or its tuned down free version RokiSim.
@@alessioleoni1 No, I am not using any toolbox. Perhaps the reason for the difference is that you might be using a normal script while I am using a live script. Try using a live script and that might give the format of the matrix.
@@alessioleoni1 To create a live script in the Live Editor, go to the Home tab and click New Live Script . You also can use the edit function in the Command Window. For example, type edit penny.mlx to open or create the file penny.mlx. To ensure that a live script is created, specify a .mlx extension. See MATLAB documentation here: www.mathworks.com/help/matlab/matlab_prog/create-live-scripts.html
Yeah sure. I will recommend these books. If you are just getting started into the world of robotics, try starting with the first one. - Introduction to Robotics: Analysis, Control and Applications, Niku, Wiley - Introduction to Robotics: Mechanics and Control, Craig, Pearson (a very widely used textbook, a real pain at times) - Modern Robotics: Mechanics, Planning and Control, Lynch & Park, Cambridge (prepare for your head to spin)
Hello Zain 👋, what a great technical content! I would like to ask you a question. In previous videos, you mentioned that we can combine or split Homogeneous Transformation matrices. And I did it for our example. However, when I compare them, the final forward kinematics matrices are unequal. I have added the .mlx file below. I hope you can find time and clear up my confusion 😅 Thank you Link: drive.google.com/file/d/1ae8RFBvZau2dSIURF63sadygwj9U9LDG/view?usp=sharing
Hi Oben, firstly thanks for the appreciation. I just checked your matlab live script and I have figured out what the error in your logic is. Let me provide an explanation that should help clear out the confusion. The way homogenous transforms works is that they have both a displacement vector and a rotation matrix combined. However, within the homogenous transform, the way it is read (and it works) is that it is FIRST displaced and THEN rotated. Now, in your working: - In the first method, H1 represents no displacement and a rotation about the Zaxis which is correct. - In the second method, H1 represents first displacement in x1 and z1 directions and THEN rotation in Zaxis about this new point. Hope you do realize that this new location is not the point where the rotation about the Zaxis is taking place. Hence, the answer from this method is wrong. Does that clear out the confusion? Let me know if you need any more help. Thanks.
@@EngineeringSimplified Yes you have the right 🙂 My transformation matrices describe a completely different robot 😅 I understood my mistake better with the IRB 120 robot FK equation that you explained in future videos. Thank you so much, instructor! 🤓