0
$\begingroup$

I am a PhD student, working on Sensor Fusion and estimation problems. I would like as I finish my PhD to have acquired sound knowledge in what seems to be the industry norm for working with real perception systems (irregardless of context) , modern C++. This is a required skill in literally any job post that I see. I do have basic knowledge and experience of how it works, but it just feels simpler, more time efficient, easier to visualise, and easier to debug for a researcher to test an algorithm on Python or Matlab. I totally understand the benefits of using a scripting language, but I feel that we as engineers are over-relying on such tools.

Say for instance you want to test a RANSAC algorithm. My go-to approach would be start writing lines in MATLAB, no compilation necessary, all the tools are available in a single-line call, immediate access to documentation, very informative error messages, customisable plots on-the-fly and the list grows on. At the same time, I don't even want to imagine how much time it would take me to achieve the same results in C++, while most of the time I would have to spent it fighting with segmentation errors. So this brings me back to my question: How do I, in the context of my everyday PhD life, systematically build sound software development experience in C++, within my domain of expertise?

$\endgroup$
2
$\begingroup$

I would say that in order to learn C++ up to an acceptable level there is no shortcut: you learn it by using it. And more often than not you learn it by using it together with others that know more than you. Then, I would assess three things:

  1. Are there C++ projects in my domain of expertise to which I’d like to contribute? This could be open-source ones, or some project colleagues in your lab always wanted to start.
  2. How many hours per week do I want to invest on this? You still need to do your research, and it just won’t get easier learning another thing on top. Limiting it to an hour per day will keep things healthy for you.
  3. There are plenty of free online resources for learning C++. Moreover, physical books are always helpful. Check these options.

More things:

  • Understand that this is simply going to take time. The amount depends on you.
  • Learn from the Masters! - check out videos of the best C++ conferences to learn the state of the art of things: Link to list of C++ conferences . Some conferences have “back to basics”-presentations which help beginners get engaged. Start with these ones before trying to tackle tougher ones.

Hope this helps.

| improve this answer | |
$\endgroup$
  • $\begingroup$ I appreciate your input, thanks a lot. $\endgroup$ – D Dim Jun 25 at 11:16
0
$\begingroup$

Robot Operating System is a great framework for robotics, there are lots of libraries for SLAM and Sensor Fusion in general.

You can program in python and c++. My ideia is to take the advantage of the libraries written in c++. What i do (doesn't work for anyone) is just erase code inside some functions and implement my own function and test within the library.

C++ is essential, because thats the language you typically use to implement the algorithms on the actual robot.

| improve this answer | |
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.