Posts

My Introduction for all fellow MUSAFIRS!

Image
 Hi! Beginning with a small introduction of myself. I'm a second year Computer Science Undergraduate student at the University Institute of Technology - The University of Burdwan. An avid programmer at high school, I've been an AWS AI/ML Scholarship recipient, '22, along with getting myself inducted into the Advanced Scholarship for the top 500 students in 2023. My interest in robotics grew from an early age, with the ever difficult, yet not impossible dream of having a companion like Doraemon. However, things started taking a more defined turn when I got introduced to 'Indro' (a humanoid robot developed in India), back in 2017. With the internet at my fingertips, (Jio came into the market) upon researching about the pre-requisites to make a robot, "AI" crossed my eyes and that's how things got started, skipping the rest of the story...  In this blog, I'm going to document my journey of learning ROS2, along with posting my first robot build out her...

Ep 6: Machine Vision (Intro)

Image
(Note for the reader: You may skip the first 3 paragraphs to jump right into the main part. Thank you!) Pardon folks! Took a break to revise the previous stuff that I had covered, and most importantly... digging down the rabbit hole of stuff learnt in the past. You see, Machine Vision is something I have been working on for the past 2-3 years, be it from my scholarship term at AWS (Udacity) or from free stuff, available online (So far, I haven't spent a penny on all the stuff I learnt! Self-bragging, but it's worth it at times. :)).  However, I tried digging deeper and the topic of machine vision in robotics couldn't have come at a better point in my life, with me getting to learn more on how images actually work (represented digitally) inside a computer, and how as AI engineers we can process them for decision making in fields, like robotics... Coordinate system in machine (computer) vision:- Note: For an image, any point in 3D space is actually a pixel. 3D coordinate (or ...

Ep 5: Inverse Kinematics

Image
Tried summarizing the entire thing in the 3 points given below:- Over the first few blogs, we got our heads around what we call, "Forward Kinematics". In inverse kinematics, as the name suggests, we reverse the process previously studied in forward kinematics.  In Forward Kinematics, (considering the structure of the robotic arm we are currently working with) we'd been calculating the coordinates (the x, y, & z of the displacement vector) of the end defector from the homogeneous matrix of the end defector frame with respect to the base frame.  In Inverse Kinematics, however, we are given the coordinates, the end defector needs to be in, and we are supposed to calculate the various parameters (theta and alpha for revolute joints, or r and d for prismatic joints)  required to reach that desired point. Note: The above points have been summarized from my understanding. Always refer to official documentation to clear confusion, or comment them down below.

Ep 4: Denavit-Hartenberg method of finding homogeneous matrices.

Image
  In the last post, I mentioned Homogeneous matrices. To be honest, they are a lifesaver. However, as we will learn at the end of this blog, the process of finding them is pretty trivial. In other words, we have a shorter process for finding these matrices, known as "The Denavit Hartenberg method."  In this process, we don't calculate the rotation matrices and displacement vectors for each of the individual frames, and later calculate the homogeneous matrices from the base frame to the end effector by repetitive multiplications. Rather, we make a parameter table to calculate the values (elements) for the respective homogeneous matrices. Points to be noted:- The number of columns in the parameter table is 4. The reason? The number of parameters being considered is 4. Namely, 'theta', 'alpha', 'r', and 'd'. Where theta and alpha are rotation parameters, while r and t are linear parameters. The number of rows is equal to n-1, where n is the nu...

Ep 3: Kinematics (Displacement Vectors)

Image
Previously, when working with rotational motion, we dealt with rotation matrices. However, what about translational motion? Well, as stated in the previous post, we use something called, 'displacement vectors'. Hence: Rotational motion: Rotation matrices. Translational motion: Displacement vectors. In our case, when we consider the example of the 3 or 6-DOF robotic arm, what the displacement vector does is, give the 'coordinates' of the end defector, which really helps us determine the position of the robot. However, unlike the rotation matrices, wherein we determined the rotation (with respect to the base frame) of the end defector, by multiplying the preceding rotational matrices from 0 (or base frame) to n-1 frame; where n is the end defector frame, one cannot get the displacement vector of the end defector (with respect to the base frame displacement vector) by plain multiplication.  To compensate for that, we consider the case of Homogeneous matrices: Fig 1: The ab...

Ep 2: Kinematics (Rotation matrices)

Image
  Getting started with Kinematics, the first thing 2 things one needs to remember, are:  Rotations of a rigid body (robot in our case) are determined by rotation matrices. Positions are represented by displacement vectors. Fig 1: Rotation matrices for rotation along x, y, and z axes respectively. For simplicity, we shall consider rotation along the z-axis only in this blog. Upon rotation of an axes, we consider the projection of that (rotated) axis at an angle theta to the original axis (for example: we consider the projection of X1 on X0, Y1 on Y0, and so on). Fig 2 At the end of the lesson, I calculated the rotation matrices or frames of the respective joints in a 6 DOF (Degree Of Freedom) robotic arm. Fig 3: I have calculated the first 2 rotation matrices here.  However, similar processes are repeated when calculating the others, as well. Note: Always consider the Z-axis as the rotation axis (No matter what, you gotta be doing that!). When marking the axes of successiv...

Ep 1: Getting started...

 Writing after quite a long time. More than a year to be honest... Did I make any significant progress? The answer mayn't sound very affirmative. 2024 wasn't a great year to start anything new, at least from my end. However, some things did end up quite well with my team bagging the first prize in the college internal hackathon for Smart India Hackathon, '24, and then proceeding to participate in the finals on an all-expenses paid trip to Bhopal.  As for ROS, I started making some little yet concrete steps after the conclusion of my 3rd-semester examinations.  Day 1: Setting things up. Installed Docker. Cloning the repository, I'm learning from, into the system. Created a new workspace for the exercises. Before moving on to the next step, I would like you to know that one can't run the docker container directly, after the previous step. Run the command, "xhost +" onto your terminal to give display permission to the containers. Post all the previous steps, ...