Still today, in industry, most industrial robot tasks are position-controlled and hence require a structured environment. This implies that both the robot's tools and the work pieces geometry are accurately known. Reduction of the programming effort and an increase in robot's autonomy can be achieved by measuring the positions and the contact forces during a (human) demonstration of the task. The analyzed sensor data are translated into a sequence of contact situations that can be executed by a robot in a slightly modified environment. This type of programming is called Programming by Demonstration. Application areas include service robotics and industrial assembly tasks. This book focusses on the areas of contact modelling and model reduction. Model reduction (using Kalman and particle flitering) leads towards a gain in computational efficiency and presents a higher level description of the generalized elementary contact model. The computational efficiency is further improved byselecting an adapted hardware architecture that fully exploits concurrency in the computations (FPGA).