You have created a robot simulation. You’ve added everything that you think you need — the robot model, the sensors, the end effector, the objects…
And the simulation is starting to look quite complex.
How complex should it be?
Do you need to add every detail of the setup?
What are the signs that your simulation is getting too complex?
Simulations are a great way to test your robot application before you even put your hands on a physical robot. They allow you to quickly try out new ideas, strategies, and hardware items in a safe way, without stealing valuable production time from the physical robot.
But, simulation can also be a bit of a black hole.
By which I mean, it can suck valuable time away from your work if you’re not careful.
One way that this often happens is when you add too much complexity to the simulation itself.
Why Robot Simulations Don’t Need Wallpaper
We encounter 3D simulations and animations all the time in our lives. Movies are filled with ever more realistic CGI, TV adverts increasingly use animations instead of real-life footage, and videos of engineering products often feature impressive animations of products and machines.
Naturally, we appreciate those simulations that look more realistic.
But, this love of computer-generated realism can lead us to make a costly mistake when we are creating simulations of our robot applications…
We prioritize the aesthetics of the simulation over the functionality.
It’s not uncommon to see robot simulations with complete replications of the entire factory. People add floors, walls, and all the other machines into their simulations. They even add models of workers into the simulation and waste valuable hours making those models move around.
This is the equivalent of pasting pretty wallpaper all over your CNC machine to “make it look better.” It won’t have any effect on the function of the machine and might even harm its performance.
The Only Complexity That’s Really Important in Simulations
The only reason that a robot simulation should be complex is if that complexity adds to the functionality of the robot application.
For example, let’s say you are creating a simulation to develop an offline program of your pick-and-place application. The only things that you should add to that simulation are the aspects that will contribute to the success of that application.
Everything else is just “wallpaper” and is probably unnecessary.
On one hand, if you want to be able to program the route of the robot automatically — avoiding collisions with objects in the workspace — this will add complexity by requiring more objects in the simulation and the use of a motion planner. However, it is a necessary level of complexity to achieve the functionality you need.
On the other hand, if you want to add all the other machines around the robot to your simulation, even though the robot never interacts with those machines, this is an unnecessary level of complexity and should be avoided.
In a recent update of RoboDK, we increased support for bigger, more complex project files.
But, just because you have this extra capacity now doesn’t mean you should always use it.
7 Complexities That Might Be Necessary for Your Simulation
Here are 7 aspects of a robot simulation that can increase complexity. Maybe your simulation needs them and maybe it doesn’t. Only you can decide.
1. Objects handled by the robot
Only include those objects in the simulation that the robot will handle or it will otherwise affect the robot’s task. Also, you don’t need to include highly-detailed models of those objects unless it is necessary. If the robot will only be grasping an object, for example, you might be able to simplify the object’s shape to only include suitable grasp points.
2. Furniture and other environment objects
We often include a table in our robot simulations. This is not always technically necessary but it does help the programmer to visualize the surface that the robot will be placing objects on. But, a table is often all that you need to achieve this — there’s no need to create a highly accurate model of your specific workbench.
The main purpose of including sensors into a simulation is for their functionality. You don’t usually need to have an accurate model of the sensor itself. For example, if you are using robot vision it might be acceptable to include just a simple camera object. You probably don’t need a fully-working, detailed model of your specific camera.
If you wanted to, you could spend hours developing textures for all of the models in your simulation. You could even go and take photos of the real items in your workspace and then painstakingly map these photos to custom-built 3D models of the workspace. While this might be necessary if you were creating a 3D movie, it’s a waste of time in robot simulation.
5. Programming complexity
The more complex your program, the more time and effort it will take to program, debug, and deploy to the robot. This complexity could show up in various ways including using extra libraries, adding many subroutines, and using more advanced features. As with everything else, only use the functionality that is absolutely necessary to get the job done right.
6. Multiple robots
If you are using multiple robots in your workspace, it might be necessary to include them all in the same simulation but it might not. If the robots will be interacting with each other then, yes, it does make sense to program them in the same simulation. However, if they will never interact with each other and their workspaces don’t interact, it might be simpler to simulate them separately.
7. Other machines
Similarly, it only makes sense to simulate those machines that the robot will be interacting with. If you are using the robot to tend a CNC machine then you might want to simulate that CNC machine — or approximate it as much as you need to program the robot — but you don’t need to simulate every machine in the workshop.
A Quick Tip to Avoid Simulation Overcomplexity
The key to creating a simulation that is not overly complex is to always think about what is actually necessary for achieving the task.
Each time you add something to your robot project, quickly ask yourself:
Does this really need to be here to achieve the functionality I need?
If not, it might not be necessary for your simulation.