Thanks a lot for sharing your expertise. Software robotics' learning curve is steep and job opportunities are quite few. As much as this topic is important, it's always overlooked. As you mentioned, teams are not strictly divided and separated, a team is usually responsible on various related tasks and teams always work together. For example, one company I've worked for has the following teams: - mathematics (solves any problem related to math, mostly sensor fusion) - AI (anything related to a AI - mostly Computer Vision) - Embedded Systems ( programming smaller computation unites mostly sensors) - Embedded Systems ( testing new components, mostly drivers) - HMI (Software Application) You always see people from different teams collaborate on a certain task.
Pretty complete indeed. What I'm missing is maybe 'behavior Engineer ', someone who makes sure the robot does the things it's supposed to, handles fallback behaviors in case something fails. This person builds big state machines or behavior trees etc.
@@LoyvanBeek interesting, thanks for the note! I'm curious what behaviors you're meaning that wouldn't be handled by path planning, manipulation, or human computer interaction? Or are you meaning behaviors at a higher level that handle all of them?
@@karissastisser exactly that. Stuff like: get an order from the ordering system, navigate to the pickup point, see where the item to get is exactly, try to make a manipulation plan, grab the item, nav to the drop point, plan for the arm again etc (ech of those steps can fail in various ways). Has been a significant part of my last job, where o made some libraries if bits of behavior that could be composed together to make high level stuff. This stuff gets even harder when human interaction is involved.
@@LoyvanBeek that makes sense. Robots I've worked on have had each "purpose" like path planning or localization or tracking be completely separate nodes, triggered by a message potentially from another node, so the behavior is handled internally, but I could see it making sense to make the architectural choice to have a separate behavior node that handles the high level behaviors, leveraging functionality within each of the other nodes. Thanks for the feedback! I'll add a note in the description.
Good note from OP. Where you have (correctly imo) added the manipulation stage as Path Planning-> Manipulation-> Actuation Control, there is an intermediary stage, HCI-> Behaviour Optimization/Task Scheduling-> Path Planning. More of a dark art atm than a standardised stage but definitely applicable to generalized, field and cooperative mobile robotics. Some additional notes, this is generally concerned with sequential logic (i.e., what is the optimal set of tasks to be performed and in what order). Like OP said behaviour trees may be applied but also the more advanced Linear Temporal Logic. Another noteworthy differentiation from a cooperative robotics perspective is that Manipulation would deal with decentralised, robot-specific tasks, while behavior control would deal with centralised, overall-system-specific tasks like (task allocation and event scheduling). P.S. your list should be published and standardized 😁
Awesome video. I'm not even in Robotics but watched it end to end instead of working. Great presentation! I hope you continue making these videos - I'm not sure that I have any advice re: how to increase viewership, if that's a goal :) But the content's there.
It really is incredible what it takes to develop modern mechatronic systems and robotics. I'm a mechanical engineer- so other than the controls part, which I partially understand, I never really realized how many sub-branches are within the software portion of robotics engineering as a whole. Same with cars and aircraft- the amount of software engineers needed on modern cars and vehicles is also insane. It makes sense you mentioned controls engineering being simpler generally than other subfields of software engineering in robotics. That's what I felt with the controls topics we dabbled into in mechanical engineering school vs. me trying to get a 2nd BS in CS, which didn't last, as I quickly discovered it got way more in depth quickly and went so far beyond mechatronic controls. I dropped CS like a hot potato, went back to ME haha
Absolutely loved this video! It's incredibly informative and valuable for those trying to specialize in the robotics software department. Thank you so much for sharing your expertise
Make milestones for your videos, so people can skip ahead; i.e. 3:30: Mapping. People might stick around longer if they can easily skip to which portion they want.
Really helpful. Thanks for putting this together. Video topic suggestion: Books, Courses or a study plan for building skills in robotics software engineering
Is there a particular part of robotics software engineering that you're most interested in? It's hard to build a study plan without having a focused goal since there are so many different avenues in robotics software.
I have a question like I have started building projects in ROS2 with python(bcz of its simple syntax) but then why as robotics software engineer we need to know two programming languages i.e. Python and C++ both have their pros and cons like python is slow and have user friendly syntax where as C++ is fast and have complicated syntax and we can do DSA in any language we want so the problem is whether should I learn C++ as I know the fundamentals of it
Yes, it is important to learn C++ for a few reasons. Many companies in industry are using it, so if you don't know C++, there's a good chance you won't get the Job. They're using it because you're able to make code run faster. I'm complex systems like autonomous systems running fast code is really important to avoid any type of collisions. Also, many useful libraries are already implemented in C++ that are useful, like Ceres. The biggest reason is Python just doesn't run and process fast enough for real time critical or complex systems.
As a Robotics engineer I feel like you do a handful of each of these at once. Some days I focus on path planning. Others I maybe implementing simulation features and other days I may be working on controls. Learn C, Simulink, Matlab and Python. (Edited to correct Matlab spelling)
@@karissastisserI work at a larger company that is well established but is working towards developing mobile robotics of their own in their sector. I would consider my role Guidance and Controls. Previously I worked GNC at a defense contractor on Autonomous Aircraft.
I’m into marine robotics and want a career with a 50-50 mix of fieldwork and office work, exploring the unknown (like deep-sea mapping or navigation). Should I focus on ROV/AUV operation, SLAM engineering, or something else? Any advice is appreciated!
@@llyr_ Marine robotics is a fascinating topic! What I would suggest, as this is very specific, look for the top 3-5 companies that you'd like to work for based on location, and look at the capabilities of those robots and potentially where the company is heading. Some will have autonomous movement, but others will have remote movement with sensing capabilities. I would try to pick a topic that is represented in the companies you'd like to work for, then try to create a project. Finding a dataset may be challenging, but it looks like there's a ntnu-arl/underwater-datasets repo you may be able to leverage. 3D map reconstruction using sonar data would be what would interest me, but I don't know how prevalent in industry that is as it's somewhat niche, and the sensor is expensive. Good luck!
Would you recommend studying ce over cs for robotics software engineering? This way you understand the hardware, physics, and maths. Also, I saw a video where they use a exoskeleton to manual create "data" doing a certain task. And use that to train the robot, like how chatgpt is trained on data. How could an individual get into a job like that?
It's a good question, I'm biased towards CS as that's what I did and found it really useful. If you do CE, you'll likely be stronger in the areas you mentioned but weaker at some of the CS concepts, and vice versa. For instance, for CS you'll want to be strong at threading, design patterns, debugging, object oriented class architecture, etc. You don't want spaghetti code if you don't spend enough time on CS. I would recommend focusing on which areas either you need to be stronger or the areas you feel like you'll need more help learning. You can always learn the other on the side. Also, certain jobs need you to be stronger like controls or pathplanning needs to be strong in physics, executor and any architecture/algorithm writing needs to be strong in CS. So, pick what suits you best
@marvetoons1625 I'd have to say Graham have some good recommendations when I posted this on LinkedIn for a map of skills: engineeringmedia.com/map-of-control I would also recommend the TH-cam channel James Bruton's channel and Steve Brunton's channel. You'll likely need C++, physics, mechanical and electrical theory, and math like linear and nonlinear algebra, PDEs, and modeling/design. Controls has not been my focus, so admittedly I still have plenty to learn myself there, but hopefully that helps and I wish you luck!
@@harshilaron yes, absolutely! You'll frequently have to put together algorithms yourself using data structures, and the better you know data structures and how to write your algorithm optimally, the better algorithms you'll have. Some of the standard algorithms you'll never write because they're already implemented in the standard libraries, like sort or search, but understanding the concepts helps you write nonstandard algorithms. I have a board game I invented and sell that highlights data structure concepts. I'll have a video on this soon, so stay tuned! Also look into design patterns!
@@vladkuz6974 yes, there is definitely a need for strong ML/MLOps engineers in robotics, in some cases it can be helpful to know about the hardware, but it many cases it's not necessary
Which of the 19 types are you most interested in? The point of the video is you can focus on what's necessary for one job rather than all of them, so it's hard to answer without knowing your focus. I've never done Udacity, but have had a great experience with Coursera, which can be free. You get what you put into it, especially in regards to projects.
@@undeadpresident I feel like that would be really painful. There are a lot of libraries that are leveraged that are already optimized in C++, object oriented code allows for much more complex and organized architectures, and large code bases get complex. I would not want to attempt it. Best of luck!
@@karissastisser Thank you. I hope you don't mind me asking one more question. Are the kinds of libraries you must use more like sets of tools, or are they comprehensive interfaces with their own abstractions that you have to memorize and always work with? I ask this because the most painful thing I've dealt with since I began programming is OpenGL I have little difficulty creating my own functions for things like 3d transformations, pathfinding, physics etc while doing game development, but the structure of OpenGL is such that everything must be specific to it's structure. Simply sending data to the GPU can turn into an ordeal because it must be done in very specific ways that require reading pages of documentation about the intricacies of the API. This is due to it being an comprehensive interface that you have to adapt everything to.
@@undeadpresident it depends on the library. You choose a library based on the functionality it provides. Someone else has developed the libraries you are trying to use. Sometimes they have wildly different styles of coding. Sometimes they provide good documentation and sometimes they don't. You are using someone else's code, so you are accepting whatever they've made and need to figure out how to work with it. Eigen comes to mind as a difficult library to work with syntactically, but provides a lot. Good luck!
Yes, Computer Vision is highly used in Perception tasks, multi target tracking tasks, manipulation tasks, and sometimes SLAM if you're using visual SLAM.
It's a great way for some people to start, but not the end goal as most production code is C++, though I've seen a variety of languages across companies.
@@karissastisser Yes 🙂There’s no denying that C++ is the go-to language in a lot of production robot software, especially for performance-critical components. But Python still has a lot going for it-especially in the rapid prototyping and algorithm exploration phases. It’s super handy for quickly spinning up scripts and testing out ideas, and, with ROS, Python nodes can integrate pretty seamlessly alongside C++ nodes... and.. i only know python ...
Implementing projects were my best form of learning. Search what you don't know. I have a few products at Slamivait I'm working on to help this, but it'll take some time to complete. Feel free to subscribe to my newsletter on slamivait.com to be notified of new products. This also sounds like a video request for a roadmap. Which type of job interests you most?
@slamivait, based on my company name. I just updated descriptions of videos so anyone can connect or follow via Instagram, Linkedin, Patreon, or check out my company website. I'm fairly new on Instagram and Patreon, but will continue to post over time. Thanks for watching!
I don't think I've ever found such an amazing video regarding Robotics Engineering. Thank you for uploading this video.
Thanks a lot for sharing your expertise.
Software robotics' learning curve is steep and job opportunities are quite few. As much as this topic is important, it's always overlooked.
As you mentioned, teams are not strictly divided and separated, a team is usually responsible on various related tasks and teams always work together. For example, one company I've worked for has the following teams:
- mathematics (solves any problem related to math, mostly sensor fusion)
- AI (anything related to a AI - mostly Computer Vision)
- Embedded Systems ( programming smaller computation unites mostly sensors)
- Embedded Systems ( testing new components, mostly drivers)
- HMI (Software Application)
You always see people from different teams collaborate on a certain task.
Thankyou for sharing your insights,Please continue your videos. KUDOS
Karissa, this video was a blast and full of great info. Keep up great work.
May I suggest a video on MUST read books for ROBOTICS and Why. Thanks for your wonderful contents!
Thank you for making this gem of a video! Please continue making videos on Robotics and Software Engineering
Pretty complete indeed. What I'm missing is maybe 'behavior Engineer ', someone who makes sure the robot does the things it's supposed to, handles fallback behaviors in case something fails. This person builds big state machines or behavior trees etc.
@@LoyvanBeek interesting, thanks for the note! I'm curious what behaviors you're meaning that wouldn't be handled by path planning, manipulation, or human computer interaction? Or are you meaning behaviors at a higher level that handle all of them?
@@karissastisser exactly that. Stuff like: get an order from the ordering system, navigate to the pickup point, see where the item to get is exactly, try to make a manipulation plan, grab the item, nav to the drop point, plan for the arm again etc (ech of those steps can fail in various ways). Has been a significant part of my last job, where o made some libraries if bits of behavior that could be composed together to make high level stuff. This stuff gets even harder when human interaction is involved.
@@LoyvanBeek that makes sense. Robots I've worked on have had each "purpose" like path planning or localization or tracking be completely separate nodes, triggered by a message potentially from another node, so the behavior is handled internally, but I could see it making sense to make the architectural choice to have a separate behavior node that handles the high level behaviors, leveraging functionality within each of the other nodes. Thanks for the feedback! I'll add a note in the description.
Good note from OP. Where you have (correctly imo) added the manipulation stage as Path Planning-> Manipulation-> Actuation Control, there is an intermediary stage, HCI-> Behaviour Optimization/Task Scheduling-> Path Planning. More of a dark art atm than a standardised stage but definitely applicable to generalized, field and cooperative mobile robotics. Some additional notes, this is generally concerned with sequential logic (i.e., what is the optimal set of tasks to be performed and in what order). Like OP said behaviour trees may be applied but also the more advanced Linear Temporal Logic. Another noteworthy differentiation from a cooperative robotics perspective is that Manipulation would deal with decentralised, robot-specific tasks, while behavior control would deal with centralised, overall-system-specific tasks like (task allocation and event scheduling). P.S. your list should be published and standardized 😁
Your video is super useful and it's quite important for those who want to know how to get into the world of robotics based on their expertise.
This is super helpful! I wish I had seen this 2 years ago 😂
Thanks for sharing this with us Karissa. Very informative video.
Awesome video. I'm not even in Robotics but watched it end to end instead of working. Great presentation! I hope you continue making these videos - I'm not sure that I have any advice re: how to increase viewership, if that's a goal :) But the content's there.
It really is incredible what it takes to develop modern mechatronic systems and robotics. I'm a mechanical engineer- so other than the controls part, which I partially understand, I never really realized how many sub-branches are within the software portion of robotics engineering as a whole. Same with cars and aircraft- the amount of software engineers needed on modern cars and vehicles is also insane. It makes sense you mentioned controls engineering being simpler generally than other subfields of software engineering in robotics. That's what I felt with the controls topics we dabbled into in mechanical engineering school vs. me trying to get a 2nd BS in CS, which didn't last, as I quickly discovered it got way more in depth quickly and went so far beyond mechatronic controls. I dropped CS like a hot potato, went back to ME haha
Absolutely loved this video! It's incredibly informative and valuable for those trying to specialize in the robotics software department. Thank you so much for sharing your expertise
Inspirational, thank you for going through these
Make milestones for your videos, so people can skip ahead; i.e. 3:30: Mapping. People might stick around longer if they can easily skip to which portion they want.
Thanks for the suggestion, I think they're added now. Thanks for watching!
Really helpful. Thanks for putting this together. Video topic suggestion: Books, Courses or a study plan for building skills in robotics software engineering
Is there a particular part of robotics software engineering that you're most interested in? It's hard to build a study plan without having a focused goal since there are so many different avenues in robotics software.
Wow thats a lot, thanks
Great vid
I have a question like I have started building projects in ROS2 with python(bcz of its simple syntax) but then why as robotics software engineer we need to know two programming languages i.e. Python and C++ both have their pros and cons like python is slow and have user friendly syntax where as C++ is fast and have complicated syntax and we can do DSA in any language we want so the problem is whether should I learn C++ as I know the fundamentals of it
Yes, it is important to learn C++ for a few reasons. Many companies in industry are using it, so if you don't know C++, there's a good chance you won't get the Job. They're using it because you're able to make code run faster. I'm complex systems like autonomous systems running fast code is really important to avoid any type of collisions. Also, many useful libraries are already implemented in C++ that are useful, like Ceres. The biggest reason is Python just doesn't run and process fast enough for real time critical or complex systems.
@@karissastisser Thank you for the advice
As a Robotics engineer I feel like you do a handful of each of these at once. Some days I focus on path planning. Others I maybe implementing simulation features and other days I may be working on controls. Learn C, Simulink, Matlab and Python. (Edited to correct Matlab spelling)
@@wilsonlysford5268 interesting, where do you work? What size company at what stage is it?
@@karissastisserI work at a larger company that is well established but is working towards developing mobile robotics of their own in their sector. I would consider my role Guidance and Controls. Previously I worked GNC at a defense contractor on Autonomous Aircraft.
I’m into marine robotics and want a career with a 50-50 mix of fieldwork and office work, exploring the unknown (like deep-sea mapping or navigation). Should I focus on ROV/AUV operation, SLAM engineering, or something else? Any advice is appreciated!
@@llyr_ Marine robotics is a fascinating topic! What I would suggest, as this is very specific, look for the top 3-5 companies that you'd like to work for based on location, and look at the capabilities of those robots and potentially where the company is heading. Some will have autonomous movement, but others will have remote movement with sensing capabilities. I would try to pick a topic that is represented in the companies you'd like to work for, then try to create a project. Finding a dataset may be challenging, but it looks like there's a ntnu-arl/underwater-datasets repo you may be able to leverage. 3D map reconstruction using sonar data would be what would interest me, but I don't know how prevalent in industry that is as it's somewhat niche, and the sensor is expensive. Good luck!
This is so helpful
Really didnt feel like a 46 min video just wow.
Would you recommend studying ce over cs for robotics software engineering? This way you understand the hardware, physics, and maths. Also, I saw a video where they use a exoskeleton to manual create "data" doing a certain task. And use that to train the robot, like how chatgpt is trained on data. How could an individual get into a job like that?
It's a good question, I'm biased towards CS as that's what I did and found it really useful. If you do CE, you'll likely be stronger in the areas you mentioned but weaker at some of the CS concepts, and vice versa. For instance, for CS you'll want to be strong at threading, design patterns, debugging, object oriented class architecture, etc. You don't want spaghetti code if you don't spend enough time on CS. I would recommend focusing on which areas either you need to be stronger or the areas you feel like you'll need more help learning. You can always learn the other on the side. Also, certain jobs need you to be stronger like controls or pathplanning needs to be strong in physics, executor and any architecture/algorithm writing needs to be strong in CS. So, pick what suits you best
If I want to learn towards the Control Engineering part what tools and skills do I need to learn?
@marvetoons1625 I'd have to say Graham have some good recommendations when I posted this on LinkedIn for a map of skills:
engineeringmedia.com/map-of-control
I would also recommend the TH-cam channel James Bruton's channel and Steve Brunton's channel.
You'll likely need C++, physics, mechanical and electrical theory, and math like linear and nonlinear algebra, PDEs, and modeling/design. Controls has not been my focus, so admittedly I still have plenty to learn myself there, but hopefully that helps and I wish you luck!
Please make video on guidance for career in robotics
@@Dhananjay-IITBHILAI what is cariour?
@@karissastisser I am really sorry I didn't notice it was misspelled.
Hi🎉 Tengo el presentimiento de que voy a amar tu canal
is DSA(Data Structures and Algorithm) important as a Robotics Software Engineer like doing DSA questions on LeetCode , HackerRank ?
@@harshilaron yes, absolutely! You'll frequently have to put together algorithms yourself using data structures, and the better you know data structures and how to write your algorithm optimally, the better algorithms you'll have. Some of the standard algorithms you'll never write because they're already implemented in the standard libraries, like sort or search, but understanding the concepts helps you write nonstandard algorithms. I have a board game I invented and sell that highlights data structure concepts. I'll have a video on this soon, so stay tuned! Also look into design patterns!
@@karissastisser ok Thank you for the valuable advice
Can you get into robotics as an ML/MLOps engineer who doesn't really know much about hardware?
@@vladkuz6974 yes, there is definitely a need for strong ML/MLOps engineers in robotics, in some cases it can be helpful to know about the hardware, but it many cases it's not necessary
What courses I need to take to land job as robotics engineer? Are udacity nanodegrees worth the hype?
Which of the 19 types are you most interested in? The point of the video is you can focus on what's necessary for one job rather than all of them, so it's hard to answer without knowing your focus. I've never done Udacity, but have had a great experience with Coursera, which can be free. You get what you put into it, especially in regards to projects.
How feasible is just using C for the things you mention using C++ for?
@@undeadpresident I feel like that would be really painful. There are a lot of libraries that are leveraged that are already optimized in C++, object oriented code allows for much more complex and organized architectures, and large code bases get complex. I would not want to attempt it. Best of luck!
@@karissastisser Thank you. I hope you don't mind me asking one more question.
Are the kinds of libraries you must use more like sets of tools, or are they comprehensive interfaces with their own abstractions that you have to memorize and always work with?
I ask this because the most painful thing I've dealt with since I began programming is OpenGL
I have little difficulty creating my own functions for things like 3d transformations, pathfinding, physics etc while doing game development, but the structure of OpenGL is such that everything must be specific to it's structure.
Simply sending data to the GPU can turn into an ordeal because it must be done in very specific ways that require reading pages of documentation about the intricacies of the API.
This is due to it being an comprehensive interface that you have to adapt everything to.
@@undeadpresident it depends on the library. You choose a library based on the functionality it provides. Someone else has developed the libraries you are trying to use. Sometimes they have wildly different styles of coding. Sometimes they provide good documentation and sometimes they don't. You are using someone else's code, so you are accepting whatever they've made and need to figure out how to work with it. Eigen comes to mind as a difficult library to work with syntactically, but provides a lot. Good luck!
@@karissastisser thank you
whattt? only 465 likes?? 😲
what about computer vision?
Yes, Computer Vision is highly used in Perception tasks, multi target tracking tasks, manipulation tasks, and sometimes SLAM if you're using visual SLAM.
Python & ROS ❤😅
It's a great way for some people to start, but not the end goal as most production code is C++, though I've seen a variety of languages across companies.
@@karissastisser Yes 🙂There’s no denying that C++ is the go-to language in a lot of production robot software, especially for performance-critical components. But Python still has a lot going for it-especially in the rapid prototyping and algorithm exploration phases. It’s super handy for quickly spinning up scripts and testing out ideas, and, with ROS, Python nodes can integrate pretty seamlessly alongside C++ nodes... and.. i only know python ...
Where to learn these 😢?
Implementing projects were my best form of learning. Search what you don't know. I have a few products at Slamivait I'm working on to help this, but it'll take some time to complete. Feel free to subscribe to my newsletter on slamivait.com to be notified of new products. This also sounds like a video request for a roadmap. Which type of job interests you most?
Can you add chapters to the video?
Yes, first time, I believe I added them, let me know if you still have an issue, thanks for watching!
Promo SM ❤️
what's her ig?
@slamivait, based on my company name. I just updated descriptions of videos so anyone can connect or follow via Instagram, Linkedin, Patreon, or check out my company website. I'm fairly new on Instagram and Patreon, but will continue to post over time. Thanks for watching!