前までやってたとおりにrviz上でvisualization_msgsのMarkerを表示させようとしたら表示されない. よくよく見てみると

Contains invalid quaternions (length not equal to 1)!

ってエラーメッセージが書いてある…なにこれ.

エラー
エラー

Quaternionのエラーらしいく, 大きさが0じゃないといけないらしい. visualization_msgs/Markerのメンバ変数のposeはgeometry_msgs/Pose型で, Quaternion型のorientationというメンバ変数を持っている. これが0じゃないといけないらしい.
こうじゃなくて

visualization_msgs::Marker marker;
marker.pose.orientation.x = 0.0;
marker.pose.orientation.y = 0.0;
marker.pose.orientation.z = 0.0;
marker.pose.orientation.w = 0.0;

こういう風にするべきとのこと.

visualization_msgs::Marker marker;
marker.pose.orientation.x = 0.0;
marker.pose.orientation.y = 0.0;
marker.pose.orientation.z = 0.0;
marker.pose.orientation.w = 1.0;

前まで問題なく出来てたのにおかしいなーと思ったら, quaternionsをチェックするプルリクが2017年の12月頃にマージされたみたい. 通りで前と勝手が変わったわけだ.
Quaternionがよくわからないので調べてみる. Quaternionによる3次元の回転変換 - Qiitaによれば, 無回転の場合は w = 1.0 にすればいいみたい. 素人には全然感覚がわからないので難しい….