  Industrial robots typically require very structured and predictable working
environments, and explicit programming, in order to perform well. Therefore,
expensive and time-consuming engineering work is a major obstruction when
mediating tasks to robots. This thesis presents methods that decrease the
amount of engineering work required for robot programming, and increase the
ability of robots to handle unforeseen events. This has two main benefits:
Firstly, the programming can be done faster, and secondly, it becomes
accessible to users without engineering experience. Even though these methods
could be used for various types of robot applications, this thesis is focused
on robotic assembly tasks.
