File Exchange Pick of the Week

Our best user submissions

Model-Based Autonomous Traffic Simulation

Today's post is by Kathi Kugler, who is part of MathWorks Academic Engineering Team.

This week’s Pick is MOBATSim by Mustafa Saraoglu.

Did you know that you can simulate traffic, where you can customize the behavior of every single vehicle in that traffic? That is what MOBATSim is for! Let’s go ahead and try it. Let’s say we have a map, which is a digraph where nodes are the waypoints, and the edges are the routes. As shown below, you can also run the 3D animation of the map if you have already built the WRL file of it, in the MATLAB built-in tool V-realm.

Now let’s imagine we want to start ten different vehicles from ten different starting points and make them find their way to ten other different destination points. How can they do that? Simply by localizing themselves on the map, using algorithms like A* to find a path from their initial waypoint to their destination waypoint. Do you think they can do that without colliding with each other? That is what V2X communication and sensors are for. They will simply avoid a collision, obey the rules of the intersection, and slow down if their preceding vehicle suddenly slows down. How it slows down or should it even slowdown is up to you and the algorithm that you put into the “Platoon Controller” subsystem of the vehicle. How do other more complicated algorithms work? Instead of subsystems, they use MATLAB System Blocks to execute any algorithm that you can write as a MATLAB script in a conventional way. The animation shows how to navigate from your full model into a vehicle subsystem and finally to one of the MATLAB System Blocks.

To learn more and try it for yourself, you can download it from the File Exchange or simply fork it from GitHub and contribute! Let us know what you think here or leave a comment for Mustafa. Also, take a look at this technical article by Mustafa.

  • print


To leave a comment, please click here to sign in to your MathWorks Account or create a new one.