くいでのあるあし

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

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というコマンドで日本語をローマ字変換できると知って思いついて書きました.

放置している日常

マジで現在 なう

yabai
shareni naranai

最近

  • Amazon Student年額1900円で,prime video見れるのとkindle本が無料で読めるのやばくないですか(D4 student)
  • フランス産のRBDynとSpaceVecAlg超便利.RobOptimはもしかしたらGoogleのSeres Solverでもいいような…
  • もっと面白くいろいろシたいけれど,体力が常に黄色い

Vim でコマンドを打つとき,ファイル名が欲しい

また

備忘録です

例えば

texだのプログラムだのVimを使ってソースを書いているのですが,

$ make
$ catkin_make #ROSですね
$ platex hoge.tex

みたいにコマンドを打ちたくなった時,よその端末にマウスで移動したり,Ctrl+zで一度端末に戻ったり,:!commandしていたりすると思います.

玄人の方はいろいろスマートにやっているのでしょうが,わたしはとりあえず上のみっつです.

で,tex を書いてる時にわたしはよく,

$ platex hoge.tex && dvipdfmx hoge.dvi && evince hoge.pdf

みたいなワンライナーを叩きます.シェル芸というほどでもないですが.

これはtexのソースをコンパイルして,成功したら出てきたdviファイルをpdfに変換して,またまた成功したらpdfを閲覧するというものです.一回書いてしまえばコマンドの履歴からそのまま使いまわしてしまいます.

これをVimで:!から叩くとき,そのまま書いてしまってもいいのですが, 以下のように,現在Vimで開いているファイル名を取得して実行することができます.

!:platex % && dvipdfmx %:r.dvi && evince %:r.pdf

ファイル名を%で取得したり,%:rで拡張子抜きで取得できるみたいです.他にもフルパス取得とか拡張子のみ取得などいろいろあるようです.

他にもわたしが覚えててちょくちょく使うのが

:view %
:e #

のように,現在見ているファイルをread onlyにするとか,間違って変なファイルを開いた時に前に開いていたものに戻るとかです.

文章力が低くて読みにくいけどいいか

ubuntu14.04でEscapeを叩いた時,日本語入力をオフにする

わたしの仕事ではありませんが,タイトルの通りの記事です

qiita.com

こちらの記事へのリンクを貼らせていただきます.必要になって探したので備忘録として.

なんでタイトル的なことが必要か?

Vimで日本語入力を打つとき,挿入モードとコマンドモードの切り替えで苦しむからです. これを設定すれば挿入モードからコマンドモードに移るときに,よっぽどの省エネこだわり派でなければエスケープキーを連打する癖をつけとけば楽になると思います.

あと,vimrcの設定が正直素人のわたしにはよくわからないので,そちら経由で解決をしたくなかったという理由がありました.

ubuntu14.04とあるのは,わたしの環境でしか試してないからです.

設定できたら...

図のようになります."入力メソッドをオフに" で Escape が設定されています. f:id:shishimy:20170106154517p:plain

258 日くらい前に書いて放置してたけど,公開することにした

アウトプットができない人間になってしまったので,練習を兼ねて何かを公開したい

過去の記事はお試しで書いて,非公開にして放置していた.

Vimにはじめてプラグインを突っ込んだ話

詳しくは知らない

Vimには各種プラグインが突っ込めて,なんか補完とかいろいろ便利に使えるらしい.
Vim自体にキチンとしたというか純正の突っ込み方があるのだろうとは思うけど,調べてみると大体の例で,

.vimrcにNeoBundleを一行足して...

って書いてあってなんだそりゃと.

" .vimrc
Neobundle 'foo/bar'

こんなので動くのかと.
試してみたら動いたのでメモ.インストールは簡単だった.

 $ curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh > install.sh
 $ sh ./install.sh

試したのはubuntu 14.04.git必須のようだ.windowsはgit cloneが必要っぽい.ubuntuでもgit cloneでいいだろうけど. 多分NeoBundleはGithub からプラグイン探して突っ込んでくる仕組みなんだろう. んで,端末に出てきた,これを.vimrcに突っ込んでねという内容を自分の.vimrcに突っ込んだ. 見逃したら,install.shを読めばいい.
幾つかプラグインをNeoBundle hogeの形で突っ込むことになる. "top of your .vimrc"って書いてるけど,下側に書いてみた.とりあえず動いてる.
そのあとVimを立ち上げたときに,

  • Shougo/neosnippet.vim
  • Shougo/neosnippet-snippets

とかさっき.vimrcに書き込んだプラグインをインストールするかどうか聞かれる.
とりあえずY押した. あとで,.vimrcの該当するNeoBundle 'foo/bar'を消せばなんとかなるらしい.
これで.vimrcへの一行でプラグイン導入ができるようになった.

vim-rosを入れてみた.

ROSはロボットのヒトに最近流行りのフレームワーク
vim-rosはVimでのROSによる開発を支援してくれるプラグイン
ROS公式Wikiでも紹介されている.IDEはわたしはROSではなんとなく使いたくない.
NeoBundleで導入するには

NeoBundle 'taketwo/vim-ros'

と.vimrcに書き込めばいい.Vimを立ち上げればたぶんインストールしてくれる. .vimrcにNeoBundlecheckと書いてあるのが味噌らしい.
だめだったら,Vimを立ち上げたあと,:NeoBundleInstall

でもこれだと,常にVimを立ち上げるたびにROS用になってるということになってうざくないか?
そう思って調べてみたら,NeoBundleLazyというのがあるそうだ.
これはあんまりプラグイン突っ込むとVimの立ち上げに時間がかかるからってことで, 普通に設定したもの以外はVimのスタートアップで導入しないというものらしい.

わたしはこう設定した.

NeoBundleLazy 'taketwo/vim-ros', {
\ 'autoload' : { 'commands' : [ "VimRos" ] }
\ }

これでVimを立ち上げた後に:VimRosってコマンドを叩くとvim-rosが使えるようになる.
ただ,わたしの環境の場合[neobundle] command VimRos is not found って出る.
でも動くよ.

使い道

:roscd package
:rosed package file:
:make

って叩いてパッケージのあるところに移動とかファイル開くとか.
tabによる補完も効く.
あとcatkin_make長すぎるので,パッケージ単一のmakeとか?
他にもいろいろあるのだろうとは思うけど,よくは知らない. ただ,catkin_ws/devel/setup.bashはきちんとsourceしないと 自分のワークスペースの中身を見てくれない. わたしは複数ワークスペース使うので,.bashrcでsourceしていないので 毎回手打ちでsourceしている.

あと,launchファイルもきちんと色付きにして表示してくれるよ!

Markdown記法 練習

はじめて

はてなブログの記法としては

というのがあるらしい.
Markdownで書くことにする.
理由はソースコード貼り付けのためと,MarkdownはGithubとかでも使えるらしいから.
texで書けたらそれでやったかもしれないけど.
記事を書き出したら,その記事の記法は変更できないみたい.
変えたら本文ごと消える.

あと改行するには半角空白スペース二つ.
段落分けには空行を入れる.
この半角空白スペースが地味にめんどい.
日本語打ちだと全角から半角にしないといけないし,デフォの編集エディタだと空白が見えない?
なんか他のエディタで書いて,シェル芸的な何かしらで上手く置換して投稿するみたいなやり方の方がいいのだろうか? Markdownなんて初めて書くからなんも知らない.

とりあえずソースも書いてみる.

#include <stdio.h>
int main (int argc, char *argv[])
{
    printf("Hello World");
}

c++でなくてcppとして設定しなければならない.
でないと色付きシンタックスハイライトにならない.

rosparam list | grep hoge | xargs -tL 1 rosparam get

ROSでたまに使うシェルのワンライナーbashでなくてshとして設定する.bashは無い.

書いてみて感じてるけど,htmlみたいにあくまでmarkdownは文章の構造を規定するもので,
実際どう見えるかっていうデザインは他に丸投げなんだね.
たしかに慣れればメモ書きに使える気がする.
そのまま何かにもってけばきれいな見た目になるし.