What your code is doing is added a global event handler to touch. That means any place you touch on the screen will trigger your “moveHero” function, which is why you are seeing the object move to where ever you tap.
Runtime:addEventListener("touch", moveHero)
Unless you have a reason to use the global handler, you will probably be better served by adding an eventlistener to your hero object instead.
hero:addEventListener("touch",moveHero)
You may need to use a global handler but from the code you posted, and the description of your problem, it doesn’t seem like you do.