2016年1月23日土曜日

起動時にプログラムを自動実行してみる

ubuntuの乗ったPCを制御器としてロボットを制御する.ディスプレイは使用しないので起動スイッチを押したら自動的にログインして自動的に目的のプログラムを実行する.

前にやったときはオートログインやオートスタートはlightdm.confやautostartに記述する必要があったが,今はUIがちゃんと用意されているみたいで.

オートログインは
システム設定 -> ユーザーアカウント -> 自動ログインタブをオン

オートスタートはここで自動起動で検索して

自動起動するアプリケーションで追加をし

コマンドの参照から自動実行したいシェルスクリプトのパスを選択し追加.

以上でubuntuを起動すれば自動でログインしてプログラムを自動で実行してくれる.簡単!

自動起動するアプリケーションの設定はターミナルから
$ gnome-session-properties
で起動することも可能.
登録した内容は
~/.config/autostart/*.desktop
を参照.

2016年1月22日金曜日

シェルスクリプトと実行権限

シェルスクリプトの書き方と実行権限
■書き方

・1行目は必ず
#!/bin/sh
と書く.おまじない.(#!以降で書かれたプログラムでスクリプトを実行するという意味らしい)

・2行目以降に実行したいプログラムを一応フルパスで記述する.
/home/username/programs_dir/a.out

・echoでターミナルに文字列を表示
echo "hogehoge"

・sleepでスリープ.
sleep 3s

など.詳しくは他のサイトを参照すること(もしかしたら今後増えるかもしれないが自分で使ったコマンドしか書きません).

■実行権限
書いたシェルスクリプトtest.shを実行する時は
./test.sh
なのだが,エラーが出る.ユーザに実行権限が無いからだ.そこで
chmod u+x test.sh
で権限を変更する.

PixhawkとPCを接続する際のボーレート

自作ドローンでよく使われるPixhawk.中身の書き換えも出来るけれども,より複雑な処理をしようとなるとPCと接続する必要が出てくる.Pixhawkに乗せるファームには主にardupilotとautopilotがあるが後者のautopilotの方が拡張性が高い.serial通信でPCと接続しよう.

大抵のことは公式に書かれているのだけれど,うまくいかなかった部分がある.

前提としてPixhawkのTELEM2とPC(Ubuntu14.04)のUSBポート接続する.もちろん要serial変換(私はマルツのMFT232RLを使用している).

問題はボーレート.TELEM2を使う場合はボーレートを921600にすると書いてあるが,これではうまくいかなかった.
そこでボーレートを57600に変更したら上手くいった,というそれだけの話.

Ubuntuを電源ボタンでシャットダウン処理

Ubuntuを乗せたPCをロボット制御に使う際,マイコンであれば電源をそのまま切れば良いけれど,PCだとそれはちょっと…電源ボタンを押しての強制終了も嫌だ…ちゃんとシャットダウンしたい.ということで電源ボタンを押してシャットダウン処理したい.Ubuntuはデフォルトで電源ボタンを押せば,シャットダウン/リブートの選択,または何もしなければ60秒後にシャットダウンしてくれる.でも,サクッとシャットダウンしたい.ということで

/etc/acpi/events/powerbtn
を編集する.内容は

event=button[ /]power
action=/etc/acpi/powerbtn.sh
となっている.2行目のactionをコメントアウトして以下に修正すればOK.

event=button[ /]power
#action=/etc/acpi/powerbtn.sh
action=shutdown -h now

あとは再起動すれば適用される.

2015年8月27日木曜日

gnuplotでy軸を2軸で表示する方法

y軸を2軸表示する方法です.細かい好みの設定込みです.
line colorは赤(1)・緑(2)にするより,赤(1)・青(3)にする方が良いです(色盲の人に配慮して).

$ set ytics nomirror
$ set y2tics
$ set xlabel "{/=30 xlable}"
$ set ylabel "{/=30 ylable}"
$ set y2label "{/=30 y2label}"
$ set logscale x
$ set xrange [x1:x2]
$ set yrange [y11:y12]
$ set y2range [y21:y22]
$ p "./file.txt" u 1:2 w linespoints lt 1 lc 1 lw 4 pt 1 ps 3 title "title", "./file.txt" u 1:3 w lp lt 1 lc 3 lw 4 pt2 ps 3 title "title2" axes x1y2

タイトルの内容で重要なのは1,2行目と最後の行の最尾です.

2014年6月7日土曜日

gnuplotで棒グラフを描く

gnuplotで棒グラフを描くコマンドです.棒グラフなのでx軸は数値ではなく項目という設定で行います.データの形式を
「項目    数値」
とします.

$ set style fill solid
$ set boxwidth 0.5
$ plot [-0.5:n+0.5][:] "data.txt" using 0:2:xtic(1) with boxes notitle

一行目は棒グラフの塗りつぶしを指定します.
二行目は棒グラフの幅を指定します.1だと隣の項目と接してしまい見辛いかと思います.
三行目がプロットです.x軸の表示を±0.5しておくと見やすいです.xtic(1)でx軸の項目名をデータの一列目に指定します.with boxesが棒グラフの指定です.

2014年6月5日木曜日

Gnuplotで指定範囲の背景を塗りつぶす

グラフを描く時に,y軸方向にこの範囲に数値が入っていれば良い,ということを伝える為に,グラフの指定範囲の背景に色を入れる.方法としてはその範囲に長方形オブジェクトを配置する.

$ set object 1 rect from graph 始点x, graph 始点y to graph 終点x, graph 終点y back linewidth 0 fillcolor rgb "cyan" fill solid 0.5

“set object 1 rect” で長方形の指定
“from graph 始点x, graph 始点y” で長方形の左下の頂点を指定
“to graph 終点x, graph 終点y” で長方形の右上の頂点を指定
頂点の指定はグラフ中の割合で行う.
“back” で背面に配置
“linewidth 0” は辺の線幅を指定
“fillcolor rgb "cyan"” で色指定
“fill solid 0.5” で透明度の指定