くいでのあるあし

ロボットの研究とか そしてぜんぶがひとりごと

ROSのurdfの色にこだわる

たまに書く

たまに思い出したように書く

ROSのurdfのlinkとかの色

できものではなく,自分のロボットをROSの世界に持って行って仕事をするとき, 3D-CADのきちんとしたロボットの設計データがあればそのままURDFに使えるのだけれど, ファイルの形式がstlしか準備できなかったりすると,もとのCADの色データが反映されないので適当に色を設定することになる.

<material name="RED">
  <rbda color="1 0 0"/>
</material>

大抵こんな感じで設定している.ただこれだとたくさん色が欲しい時に手打ちで書いていくのが面倒だし, 簡単な数値で原色にしてしまうとRVizの座標軸の色とかぶったりしてやや見難い.

そこで綺麗で雅な色にしようと思ってシェル芸を書いてみた.

www.colordic.org

上記のサイトでは色見本としてRGB値を#RRGGBBの形式で書いている.curlして整形していく.

curl http://www.colordic.org/w|grep td|sed "s/>/> /g"|sed -e "s/<[^>]*>//g" -e "s/#\(..\)\(..\)\(..\)/0x\1 0x\2 0x\3/g"|xargs printf "%s %s %d %d %d\n"|awk '{$3=$3/255;$4=$4/255;$5=$5/255;$(NF+1)=1;cmd="echo "$2"|kakasi -Ha -i utf-8 -o utf-8";cmd|getline t;close(cmd);$(NF+1)=t;print "<!--"$1" "$2"-->\n<material name=\""$NF"\">\n  <rgba color=\""$3" "$4" "$5" "$6"\"/>\n</material>"}'|tr -d "'"

twitterで晒したヤツはnameの引用符忘れていた.あとawkの部分をまとめて少し短くしてみた.

ただもはやawkスクリプトだと思うコレ.

結果はこういうふうに出力されます.色見本wcで調べたら465種類ある.

</material>
<!--海松茶 みるちゃ-->
<material name="mirucha">
  <rgba color="0.352941 0.329412 0.294118 1"/>
</material>
<!--高麗納戸 こうらいなんど-->
<material name="kourainando">
  <rgba color="0.172549 0.309804 0.329412 1"/>
</material>
<!--紅藤色 べにふじいろ-->
<material name="benifujiiro">
  <rgba color="0.8 0.65098 0.74902 1"/>
</material>
<!--甚三紅 じんざもみ-->
<material name="jinzamomi">
  <rgba color="0.933333 0.509804 0.486275 1"/>
</material>
<!--香染 こうぞめ-->
<material name="kouzome">
  <rgba color="0.678431 0.490196 0.298039 1"/>
</material>

kakasiというコマンドで日本語をローマ字変換できると知って思いついて書きました.