Try replacing the following lines:
Code:
link.setPos(targets['home']['position'])
link.setEuler(targets['home']['rotation'])
with:
Code:
link.setOffset(targets['home']['position'])
link.postEuler(targets['home']['rotation'],target=viz.LINK_ORI_OP)
The setPos and setEuler operators will overwrite the source data with the specified value. The setOffset and postEuler operators will offset the source data instead.