rosrunでバイナリの実行ファイルがcannot launch nodeになるときは
devel/lib/(rospackage)/(executable) がちゃんと存在して、実行属性もついてて、絶対パスなら動くのに、
ERROR: cannot launch node of type [(rospackage)/(executable)]: can't locate node [(executable)] in package [(rospackage)]
などとエラーになって動かなかった。
だいたいこういうのはcatkin_makeのあとのsource devel/setup.bashを忘れているのだが、改めてこれを実行しても直らない。
ところであなたはワークスペースをシンボリックリンクにしていないか。
私はこのとき、ゆえあって~/catkin_ws_xxxを~/catkin_wsにシンボリックリンクしていた。
ふと思い立ってシンボリックリンクを削除し、~/catkin_ws_xxxを~/catkin_wsにリネームすると、嘘のようにエラーが消えた。