The Power Of Coding And Robotics
Meet Kajal Gada
Robotics Software Engineer @ Brain Corp
San Diego, California
Kajal Gada is a UMD Alumna, currently working as a Robotics Software Engineer at Brain Corp in San Diego, CA.
In her free time, she interviews professionals from various fields and publishes it on her youtube channel. She aims to inspire people to overcome challenges and reach their full potential.
What inspired you to pursue a career in robotics?
It was a video that my mentor showed me, back in 2013. It was a drone doing backflips autonomously.
My first reaction was - wow that is so cool, is it really doing it on its own?
I had just begun to code so that video represented what was possible. From then on I started researching more about robotics and was amazed by all the possibilities - from drones to autonomous vehicles.
The more I read, the more I knew I wanted to do this.
It is one thing to code on a computer and sees it print hello world and a completely different thing to see your code move a physical robot.
How did you become a Robotics software engineer?
The first step was learning to code, then I started working on small projects with Arduino.
I still remember my first project - a line follower.
I then moved to the USA to pursue a Masters in Robotics from the University of Maryland - College Park. During my Masters, I did a winter internship that led to a co-op and eventually a full-time position after graduation.
Through a series of jobs, today I work as Robotics Software Engineer at Brain Corp in San Diego, CA.
Define what is the Robot Operating System (ROS) and what is the importance of robotics?
Robotics is a multidisciplinary field where you have the body (mechanical structure, motors & actuators), sensors (such as LiDARs and cameras), and then the brain (processing unit).
Next, you need a communication system so they can all interact with each other and that is where ROS comes in.
It provides a communication infrastructure that helps you connect different subsystems. So you could have a LiDAR running on one node at one frequency and a camera running on another the node at another frequency and they can all still communicate with your brain.
Again, running a robot involves multiple factors - mapping, navigation, perception, etc. But no one person or company has to solve all the problems.
Different people can contribute to different parts and collaborate their work with the help of ROS.
Do you have any Robotics simulation engine used the most?
You know when most people think of robotics, they imagine either a humanoid or a big bulky machine such as Spot from Boston Dynamic. That is also what ends up scaring a lot of people to try and program their own robot.
So let me talk about something simple, to encourage a reader to try it out. A line follower - it was my first project.
Do try it and if you can’t do a physical robot, do it in simulation.
V-rep and Gazebo are both simple to use. Here is what you need - a body (chassis and wheels), a motor (to drive your robot), a microcontroller (I used Arduino), a power source, an IR proximity sensor, and colored tape to represent your line on the floor.
We defined the task - follow the line on the floor. Next, you need to give your robot power to sense the world around it. One way to do it is by using an IR sensor. The principle is simple, it emits light and detects the reflected light. Based on the surface or color of the surface, the reflected light would have different values.
Next, you need to come up with a logic for it to detect the line it should follow. As you know, different colors reflect different light, your logic is to stay close to the value of reflected light from your line.
Lastly, you want to give out motor commands for your robot to move such that it stays close to the line. You use the reflected light values to determine if the robot should drive straight, left, or right. It is that simple.
Here is a summary:
Define a task for your robot
Give it sensing power to gather data needed for the task
Code a logic for it to convert data to information and make decisions
Return commands to execute the task
I would say the most challenging part is thinking about the edge cases. So in our scenario, what happens if the robot encounters multiple lines?
What happens if the room’s brightness increases?
Cause it will change the value of your reflected light. It is also what makes programming in general fun, thinking about the edge cases.
Explain what is path planning and navigation algorithms?
As the name suggests, it is finding a path from point A to point B.
A factor that plays an important role in this: do you have a map?
Let’s say you are in a maze and you have to find a way out. Keep things simple, it is a grid with left or right turns. As you don’t know the map, you are going to randomly make decisions on going left or right.
Given enough time, you will find a way out. But depending on your luck, it might take a while. Not wanting to depend on your luck, you decide to follow along the left wall. And voila, you found a way out. Also, you just created a path planner with the simplest rule - follow the left wall.
Next, you think okay what if I start to keep track of my decisions?
So each time you encounter a left or right choice, you pick one but make a note of the other option. Wanting to keep things simple, you create a bias for the left turn.
Every time you encounter a choice, you will evaluate left first and if it doesn’t work out, you will come back and evaluate right.
With each turn, it is possible, you will encounter more left or right decisions. You decide that you will evaluate each choice all the way to the end. In other words, you will keep taking left turns until you hit a dead-end or reach the goal.
If you hit a dead end, you will trace back your steps to the last decision you made and try out the right turn option. That is nothing but a simple Depth First Search algorithm. It does require you to have a memory compared to the wall following method.
This is what path planning algorithms are about. You want to find a path from point A to point B in a smart way.
And there are techniques that can be used to speed up the process.