ROSのlaunchファイルの書き方
launchファイルとは
launchファイルを使うと、rosの複数のプログラムを同時に立ち上げることができるので楽ができる
launchファイルの場所
立ちあげたいプログラムが入っているパッケージに、launchディレクトリを作成.
この中に .launchファイルを作成する
launchファイルの中身
具体例
<launch> <node pkg="パッケージの名前" name="ノードの名前" type="実行ファイルの名前"\> . . . <launch>
実行方法
どのディレクトリからでも実行できる。
$ roslaunch ./launch/ hoge.launch
その他
roslaunch にオプション –screenをつけると、出力を直接見ることができる。
ファイルのバイト数を数えるCプログラム
概要
- 引数に指定したファイルの中身が何バイトあるかをカウントするCのプログラム
- ファイルがバイナリでもテキストでもOK
プログラム
#include<stdlib.h> #include<stdio.h> int main(int argc,char *argv[]) { FILE *fp; unsigned bite = 0; if ( (fp = fopen(argv[1],"rb")) == NULL) { printf("ファイルを開けません\n"); exit(1); } while(! feof(fp)) { fgetc(fp); if(!feof(fp)) bite++; } printf("ファイルの内容は %u バイト\n",bite); return 0; }
使用例
ファイルの中身を確認
$ cat hoge.txt hoge
実行
$ ./a.out hoge.txt ファイルの中身は5バイト
4文字プラス改行文字?で5バイトみたいです
確認
ファイルのメモリ上のスペース数を調べるlinuxコマンド du を使う
-bオプションで単位はバイトになる
$ du -b hoge.txt 5 hoge.txt
合ってるみたいですね
もちろん
使えるならduを使ったほうがいいですね。
C言語でバイナリもテキストも読み書きする方法
概要
- Cを使うと、バイナリファイルもテキストファイルも同じやり方で読み書きできる
- ファイルの中身を1バイトづつchar型の変数にコピーして用いれば良い
- 引数に指定したファイルの中身を、もう一つのファイルの中に書き込むプログラムを作成
- ファイルがバイナリでもテキストでも関係なく実行できる
具体例
./a.out photo.png text.txt
と実行するとtext.txtの中身がphoto.pngに書き換わる(テキストファイルが画像ファイルになる)
プログラム
/* バイナリであれテキストであれ引数に指定したファイルをコピー ferror()を用いてエラー検査を行う */ #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[]) { FILE *from,*to; char ch; if((from = fopen(argv[1],"rb"))==NULL) { printf("コピー元ファイルを開けません\n"); exit(1); } if((to = fopen(argv[2],"wb"))==NULL) { printf("コピー先ファイルを開けません\n"); exit(1); } while(!feof(from)) { ch = fgetc(from); if(ferror(from)) { printf("コピー元ファイルの読み込みエラー\n"); exit(1); } if(!feof(from)) fputc(ch,to); if(ferror(to)) { printf("コピー先ファイルの書き込みエラー\n"); exit(1); } } fclose(from); fclose(to); return 0; }
.vimrcの設定
自分のvimの設定をメモ。
- vimの設定はホームディレクトリにある .vimrc というファイルの中身を書き換えることで行う。
$ vim ~/.vimrc
とコマンドを送ると編集できる。- ‘=’ の左右にスペースがあってはいけない。
- set tabstop=4 … タブ文字の長さが半角スペース4つぶんになる。(デフォルトだと8つ)
- set expandtab … タブキーを押した時、タブ文字の代わりに複数のスペースが入力されるようになる *1
- set autoindent … 改行時に自動インデント
- set shiftwidth=4 … ヴィジュアルモードで範囲を指定した後、[<],[>]キーでインデントを入れることができる。この時何文字ぶんインデントするかを決める
- set nu … 左サイドに行数が常に表示されるようになる
- set clipboard=unnamedplus … カットやヤンクした内容がクリップボードにも保存されるようになる*2
- set cryptmethod=blowfish2 … :Xコマンドで暗号化する際のアルゴリズムをblowfish2(強力なアルゴリズム)にする
- nmap <C-c> :%s/./&/g … :Ctrl+C で文字数をカウントできるようにする
*1:タブ文字を入力したい場合は ctrl+b を押してから[tab]
*2:普通のvimだとできない katorinax.hatenablog.com