Assume I am recruited by a startup company whose mission is to develop autonomous vehicles. Teams of individuals are working on various aspects of its autonomy, such as situational awareness, control, etc. How does a mission planning software engineer begin their work when there is little more than a simulator in which only the controls (forward, reverse, turn, etc.) are implemented? How can I begin implementing mission planning when the simulator cannot distinguish between a tree and a person (because the situation awareness engineers have not implemented it)? How does the industry begin implementing such a problem?

EDIT: I appreciate the answer and I have the following question: How does one start implementing the high level task/mission planner when there's not much to work with? I am talking about the "High level: Task assignment and ordering" as discussed in the answer here: Software for mission planning in multi-robot systems


1 Answer 1


You start by implementing something simple, say a Path Planner that takes your robot from point A to point B consistently, you test it rigorously so that you are sure of its performance, and then you add more complexity to it as you go, with obstacle detection, course correction, situational awareness, and so on.

If you are using a framework like ROS 2, which due to its inherently distributed nature, allows you to compose nodes which have a dedicated functionality, you can develop an overall architecture of your software first (this book by Martin Fowler is a very good resource), and once the architecture is well defined, the implementation would become very simple. Also, other components such as situational awareness and course correction would be easy to integrate into your final application.

You would also have to think about how the user would interact with the robot, i.e., what constitutes a mission, and given a particular mission, how can you break it down into smaller components that you can execute in order. This is the essence of planning, and to some extent, Task based control. You can take a look at how PDDL describes a problem, this might help you to understand mission management a bit further.

TL;DR Start with a simple path planner that takes your robot from A to B. Keep adding stuff as you go further.

  • $\begingroup$ What about writing the software for the actual mission planner? For example, should it be behaviour trees, MDP, state machines or anything else more complicated? How does one start implementing that when there's not much to work with? $\endgroup$
    – Ship
    Commented Sep 5, 2023 at 7:32
  • $\begingroup$ You could try and play around with behaviour trees. You should also take a look at multi-agent path planning, which would give you an idea of how to do the traffic management, and when you add on the layer that parses the order it can simply plug this information in to your mullti-agent path planhner as constraints to the planning problem. $\endgroup$
    – ssarkar
    Commented Sep 6, 2023 at 8:07
  • $\begingroup$ That's the thing, what if I know that I will need a very complicated system for the high level task assignment? Behaviour trees won't cut it for me. How do I start working on that then when Im lacking input from the other nodes (situational awareness and what not)? $\endgroup$
    – Ship
    Commented Sep 7, 2023 at 9:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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