Constraints of embedded Artificial Intelligence for a robot
I think a big problem with intelligent robots is that the world is very dynamic and always changing and our techniques right now are still quite static and not really flexible. 

I myself come from a Computer Vision background and in this field I often see some limitations of one of the most promising approaches for AI right now (Deep Learning). For example in Computer Vision we are now able to teach image classification systems that are on the level of human performance (or better) thanks to Deep Learning. But still these classifiers are trained supervised with annotated data and should more be viewed as very smart filters instead of true AI. 

In a dynamic world a supervised trained model often fails in specific situations. For example you cannot always train to classify specific objects to specific predefined classes. There are corner cases or no clear boundaries between different classes in some situations that depend on the very specific situation.

An Example:

Consider an autonomous car that classifies between a road and no-road to see were it is able to drive. Most of the time this task is quite straight forward but in some sitations the road border gently transforms into a field of grass or something different that is not driveable. So where would you set the border between both classes i.e. how would you annotate your training data in such a situation? There is no unique solution to this problem. 

A supervised trained model would finally probably learn to set the border to somewhere in-between but it doesn't really tell you that there is a corner case or slight transition with a soft border or that it's not really sure about it at all.

So there is problem with the encoding/decoding of information in a neural network. We can apply a full image as an input into the network and that is fine but then we only get a static output of predefined classes or something similar which often is not sufficient information to describe the world to make proper decisions in every situation. I am pretty sure a neural net would be able to learn such rich information but right now there is no real good approach to encode or represent this wanted (dynamic) information in a static predefined network architecture (as far as I know).

And this also brings me to the next problem: there is no real good way to represent uncertainity. There are some approaches like Bayesian Deep Learning which tries to tackle this problem but (as far as I know) this is not really practical or good enough yet. And an intelligent robot should really know its own limits and capabilities to not becoming a serious danger for anyone or itself.

And finally, general learning is usually an ongoing process that means a really intelligent agent should keep learning while it is exploring the world and that best without a supervisor. There are some approaches to this like Deep Reinforcement Learning (where just a reward function is needed) which is also very promising but right now it is very sample inefficient and not easily generally applicable to every task so that it could update its behaviour in an online manner. 

Conclusion: 

The hard part about it is actually to develop a reliable robot that handles these rare or special cases realliably and/or is able to identify these with its own reliable uncertainity to fail savely. This state is not achieved yet.