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.
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.
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
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.
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 😁
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
Really helpful. Thanks for putting this together. Video topic suggestion: Books, Courses or a study plan for building skills in robotics software engineering
@@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!
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
Yes, Computer Vision is highly used in Perception tasks, multi target tracking tasks, manipulation tasks, and sometimes SLAM if you're using visual SLAM.
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!
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?
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 ...
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.
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.
Thankyou for sharing your insights,Please continue your videos. KUDOS
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!
Thank you for making this gem of a video! Please continue making videos on Robotics and Software Engineering
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
Karissa, this video was a blast and full of great info. Keep up great work.
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.
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 😁
Inspirational, thank you for going through these
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
Really helpful. Thanks for putting this together. Video topic suggestion: Books, Courses or a study plan for building skills in robotics software engineering
Wow thats a lot, thanks
Really didnt feel like a 46 min video just wow.
This is so helpful
Great vid
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
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
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.
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.
whattt? only 465 likes?? 😲
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
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?
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 ...
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 ❤️