今日の一言
2010/09/01(Wed) 時間の進みが早すぎる [長年日記] 編集 22:00現在弱いにわか雨 29℃
_ [雑記][Debian][Linux]Dell Precision M4400上のDebianで無線Lanを動かす
使われているチップセットの確認
以下のコマンドを実行する。
$ lspci | grep Wireless
すると、
0c:00.0 Network controller: Intel Corporation Wireless WiFi Link 5100
といったメッセージが表示されるので、「Intel Corporation Wireless WiFi Link 5100」用のドライバを用意すればいいことが分かる。
ドライバのインストール
手っ取り早く済ませたい場合は、こちら(http://wiki.debian.org/iwlagn )にかかれている方法を実行すればいい。
*ただし、カーネルが2.6.32になってしまうので、カーネル依存のモジュールやプログラムがある場合には使用できない。
まず、「/etc/apt/sources.list」に以下の2行を追加する
# Backported packages for Debian Lenny deb http://www.backports.org/debian lenny-backports main contrib non-free
そして、
# aptitude update # aptitude -t lenny-backports install debian-backports-keyring
で更新し、
# aptitude -t lenny-backports install linux-image-2.6-$(uname -r | sed 's,.*-,,') firmware-iwlwifi wireless-tools
で、適切な2.6.32カーネルイメージとドライバ、ツールをインストールする。
あとは、再起動して、新しくできた2.6.32カーネルのDebianを起動すれば、NetworkManagerに無線Lanが追加されているはず。
*うまくモジュールが組み込めていない場合は、
# modprobe iwlagn
として、手動で組み込む。
また、デバイスの状態は、
# iwconfig
で得られる。
接続及び切断は、
# ifconfig wlan0 up
# ifconfig wlan0 down
である。
2010/09/02(Thu) ちょあー [長年日記] 編集 1:00現在曇 27℃
_ [Debian][Linux][Choromet][雑記]Debian(Lenny)にufwをインストールする
以前の記事(http://robotics.naist.jp/~akihiro-i/dialy/?date=20100114#p01)で、DebianやUbuntuでは、ファイアーウォールの設定にはufwが便利と書いたが、Lennyではufwがパッケージから削除されており、aptではインストールできない。
なので、ここでは.debをDLして手動でインストールする。
(参考:http://www.lamiscela.net/2010/04/03/installing-ufw-in-debian-5/)
ufwをインストールする際に0.6.11以上のpython-centralが求められるのだが、apt-getで入れられるのは、0.6.8である。
よって、先にこちら(http://http.us.debian.org/debian/pool/main/p/python-central/python-central_0.6.14+nmu2_all.deb)から「python-central_0.6.14」をDLし、
# dpkg -i python-central_0.6.14+nmu2_all.deb
でインストールしておく。
つぎに、こちら(http://ftp.us.debian.org/debian/pool/main/u/ufw/ufw_0.29.3-1_all.deb)からufwをDLし、
# dpkg -i ufw_0.29.3-1_all.deb
でインストール。
以上!
_ [Debian][Ubuntu][FC][Linux][Choromet][研究関係][雑記]HRP2-m Chorometを使うその1 環境の構築
ユーザーズガイドで何ヶ所か詰まったので、メモっておく。メモなので、間違ってても知らん。
(ネットワークケーブルを使っての)ログイン
ケーブルの差し方等はマニュアルを参照のこと。また、電圧は8V程度(9Vを超えると故障するので注意)
ホストPCの設定
まず、ユーザーズガイドに従い、ケーブルを接続する。
出荷時のChorometの設定では、「/etc/hosts」に
192.168.201.222 hrp3host
と登録されているので、ホストPC側のIPアドレスを「192.168.201.222」に変更する。
*Debianの場合、デフォルトのnetworkmanagerが有線ネットワークの切り替えに対応していないっぽい。
なので、自分の場合は「/etc/network/interfaces」を用途ごとに別名(チョロメテ用:interfaces.choromet,ネット用:interfaces.dhcp)で作成しておき、
# /sbin/ifconfig eth0 stop # cp /etc/network/interfaces.choromet /etc/network/interfaces # /sbin/ifconfig eth0 start
ってな感じで切り替えている。
スクリプトにしておくと、特に不自由も感じないと思われ。
※(11/03/23)以下のコマンドを打つだけでいいっぽい。
$ ifconfig eth0:0 192.168.201.222
telnetでログイン
デフォルトのChorometのIPアドレスは「192.168.201.110」なので、
[hrp3host $] telnet 192.168.201.110
とすればログインできる。
*ホストPC側の「/etc/hosts」に
192.168.201.110 hrp3
と書いておくことで、
[hrp3host $] telnet hrp3
でログインできるようになる。
*ユーザー名やパスワードはユーザーズマニュアル参照のこと。
NFSマウントの設定
まずホストPC側に「nfs-kernel-server」をインストール。
[hrp3host #] apt-get install nfs-kernel-server
マウントするディレクトリを作成し、
[hrp3host #] cd /home [hrp3host #] mkdir export [hrp3host #] chmod 777 export
以下の一行を「/etc/exports」に追記。
/home/export hrp3(rw,no_root_squash)
で、NFSサーバを(再)起動する。
Debian系
[hrp3host #] /etc/init.d/nfs-kernel-server restart
Vine
[hrp3host #] /etc/init.d/nfs restart
*エラーが出る場合は、ファイアーウォールをいじる必要があるかもしれない。
で、うまくマウントできたら、デフォルトでnfsサービスが起動するように以下の設定を行う
Debian
[hrp3host #] /usr/sbin/sysv-rc-conf nfs on
*もし入っていない場合は、
[hrp3host #] apt-get install sysv-rc-conf
でインストールできる。
Ubuntu
[hrp3host #] /sbin/sysv-rc-conf nfs on
Vine
[hrp3host #] /sbin/chkconfig nfs on
GrxUIの環境を整える
面倒なので、Debian(Ubuntu)の場合のみ書く。
まず、「/etc/apt/sources.list」に以下を追加。
deb http://javadesktop.org/lg3d/debian stable contrib
で、インストール。
[hrp3host #] apt-get update [hrp3host #] apt-get install sun-java6-bin [hrp3host #] apt-get install sun-java6-fonts [hrp3host #] apt-get install sun-java6-jdk [hrp3host #] apt-get install libreadline-java
これに加え、Java3Dのインストールが必要。
まず、こちら(https://java3d.dev.java.net)から「java3d-1_4_0_01-linux-i586.bin」をDL。(1.5以上だと無理っぽい)
で、手動で配置し、インストール。
[hrp3host #] mkdir /usr/share/lg3d-jdk [hrp3host #] mkdir /usr/share/lg3d-jdk/jre [hrp3host #] cp java3d-1_4_0_01-linux-i586.bin /usr/share/lg3d-jdk/jre/ [hrp3host #] cd /usr/share/lg3d-jdk/jre [hrp3host #] sh java3d-1_4_0_01-linux-i586.bin
さらに、ゼネラルロボティックスのサポートページ(http://www.generalrobotix.com/support/support.htm)から「vrml97.jar」をDLし、「/usr/share/java」以下にコピーする。
[hrp3host #] cp vrml97.jar /usr/share/java/
で、javaをgciからjdk6に切り替える。
[hrp3host #] update-java-alternatives -s java-6-sun
最後に、シンボリックリンクを作成する。
[hrp3host #] ln -s /usr/bin/java /usr/java
制御ソフトウェアのインストール
ゼネラルロボティックスのサポートページ(http://www.generalrobotix.com/support/support.htm)から「OpenHRP Controller Module for Choromet」をDL。
で、DLした「CHOROMETyyyymmdd.tgz」を「/home/export」以下に配置。
[hrp3host $] cp CHOROMETyyyymmdd.tgz /home/export [hrp3host $] cd /home/export [hrp3host $] tar zxvf CHOROMETyyyymmdd.tgz
次に、「sHrpsys/Make.rules」の以下の部分を環境に合わせて編集する(場合によっては不要)。
[OPENHRPHOME] ・・・ OpenHRP3を利用する場合にそのインストールディレクトリを指定。 [JDK_DIR] ・・・ Java のインストールディレクトリ。 [JAVA_EXTDIR_FLAGS] ・・・ Java3D や JMF、VRML97.jar のパスを指定。
Make.rules 編集後、以下のディレクトリで Make し、config.sh を生成する。
[hrp3host $] cd sHrpsys/robot/CHOROMET/bin/ [hrp3host $] make
以上!
環境の構築終わり!
*使い方については、ユーザーズガイドだけで十分と思われ。なので省略〜。
_ [Debian][Ubuntu][FC][Linux][OpenHRP3][Choromet][OpenRTM][研究関係][雑記]OpenHRP3(3.0.7)のインストール
完っ全に需要がなさそうな情報ですな。まあ、個人的なメモだからどうでもいいが。
OpenHRP3のインストール方法は前の日記(http://robotics.naist.jp/~akihiro-i/dialy/?date=20091118#p01)でも書いたが、バージョンが上がって色々変更されているっぽいので、もう一度書いておく。
今回使うのはVer.3.0.7。
グラフィック能力を確認
OpenHRP3は割とグラフィカルなソフトので、パソコンで3Dグラフィックスが正常に動作するかをまず確認。
端末を開いて次のコマンドを実行。
$ glxinfo | grep rendering
結果が "direct rendering: Yes" であれば、問題なく使える。
NOの場合は、頑張って3Dアクセレレーション機能をサポートするグラフィックドライバを導入する。
OpenHRP3のDL
こちら(http://www.openrtp.jp/openhrp3/jp/index.html)から「OpenHRP-3.0.7.zip」をDLし、
$ cd $ mkdir src $ cd src $ unzip (ソースパッケージダウンロード先)/OpenHRP-xxx.zip
*OpenHRP3のインストール先は、「sHrpsys/Make.rules」で指定した場所と一致させる必要がある。なので、「sHrpsys/Make.rules」をヴァージョンに合わせて書き直し、再Makeしておく。
パッケージ導入スクリプトの実行
Ubuntuの場合、公式ページにある通り、
$ cd ~/src/OpenHRP-xxx/util $ ./installPackages.sh packages.list.ubuntu.8.04
を行うだけでいいが、Debianの場合、別にOpenRTMを入れる必要がある。
こちら(http://www.openrtm.org/OpenRTM-aist/html/FrontPage.html)から、「OpenRTM-aist-1.0.0-RELEASE」をDLしインストールするのだが、こだわりがなければ、ビルド済みパッケージから「Debian 一括インストール・スクリプト(pkg_install_debian.sh)」をDLし、実行した方がはるかに便利である。
# sh pkg_install_debian.sh
また、tvmetについても、こちら(http://www.openrtp.jp/openhrp3/download/tvmet_1.7.1-1_i386.deb)からDLしてdpkgで入れる必要がある。
コンパイルの準備
まず、コマンドライン上でOpenHRP3のソースディレクトリへ移動。
$ cd ~/OpenHRP/OpenHRP-xxx
で、設定ファイル"Make.vars"をコピー。
$ cp Make.vars.ubuntu.8.04 Make.vars
今までデフォルトの設定をしていた場合はこれでOK。
で、祈りを込めて、
$ make
これでOpenHRP3のインストールは終了!
_ [Debian][Ubuntu][FC][Linux][OpenHRP3][OpenRTM][Choromet][研究関係][雑記]HRP2-m Chorometを使うその2 OpenHRP3(3.0.3)を使ったシミュレーション
*上記のOpenHRP3(3.0.7)ではchorometのシミュレーションが動かないっぽい。
基本的には3.0.7と同じだが、「OpenRTM-aist-0.4.2-RELEASE」を使う点に注意。
*しかも、リポジトリから0.4系のOpenRTMがなくなっており、一括スクリプトが使えない!
頑張ってソースをコンパイルすべし。
*自分の場合、「rtm/Properties.h 」に
#include <limits.h>
を、「rtm/ConfigAdmin.cpp」に
#include <string.h>
を加えるだけでよかったので、そんなに面倒ではないかも?(依存関係の問題が起きなければ)
サンプルシミュレーションの実行
こちら(http://www.openrtp.jp/openhrp3/jp/simulate_sample_3_0.html)を試してみて正常に動けばOK。
動かなければ、自力でガンバレ。
GrxUI上でChorometのシミュレーションを行う
とりあえず、ライセンスファイル(license.dat)は取得済みとして、それを「sHrpsys/robot/CHOROMET/bin.x86」以下に置く。
そして、「/sHrpsys/robot/CHOROMET/bin.x86/」下で、
$ ./GrxUI.sh
を実行。
あとはユーザーズマニュアルを見ながらガンバレ!
2010/09/03(Fri) SRWL、イクサー1て! [長年日記] 編集 15:30現在晴 33℃
_ [C++][Debian][FC][Linux][Ubuntu][研究関係][雑記]GTK+を使ってGUIアプリケーションを作る その0
とりあえず、環境を整える。
# apt-get install libgtk2.0-dev libgtk2.0-doc
以上!
*勉強には、「GTK+/GNOMEによるGUIアプリケーションプログラミング」のサイト(http://www.iim.ics.tut.ac.jp/~sugaya/books/GUI-ApplicationProgramming/)で公開されているプログラムソースを読むのがいいと思われ。
サンプルがあれば、使い方や書き方は大体わかるはず。
(もちろん、本もあった方がいいと思うが)
2010/09/07(Tue) 今週が山場!? [長年日記] 編集 16:00現在曇 30℃
_ [Linux][Ubuntu][Debian][FC][研究関係][雑記][OpenCV] OpenCV2.1で、IEEE1394カメラを使う(録画も出来るようにする)
・・・なんか、このメモ、前にも書いた気がする・・・。
*やっぱりここ(http://robotics.naist.jp/~akihiro-i/dialy/?date=20100520#p01)で書いてました。どうもOpenCVタグをつけ忘れていたっぽい。
なので、今回のメモで動かない場合は、過去のを見たほうがいいと思われ。
*反省して即、適当なことを書いている件についてはスルーしてください。
IEEE1394カメラを使える環境を整える
まず、ここ(http://damien.douxchamps.net/ieee1394/coriander/)からcorianderをDLし、「make install」。
*「coriander2.0」だと、「libdc1394 version 2.0.2」を要求されるので、OpenCV1.x系の場合は注意したほうがいいかも。
(OpenCV1.x系はlibdc1394-13-devでないと動かなかった気がする)
corianderのmakeに必要なもの
$ sudo apt-get install libgnomeui-dev $ sudo apt-get install libxv-dev $ sudo apt-get install libraw1394-dev $ sudo apt-get install libdc1394-22-dev ( $ sudo apt-get install libdc1394-13-dev ) 1.x系の場合 $ sudo apt-get install libsdl-dev $ sudo apt-get install ftplib-dev
他に足りないのがあれば、./configureをしたときに教えてくれるはず。
後は普通に
$ ./configure $ make # make install
し、
# coriander
で、IEEE1394カメラが使えることを確認する。
OpenCV(2.1)のインストール
まず、必要なものを集めておく。
($ sudo apt-get install cmake ) $ sudo apt-get install cmake $ sudo apt-get libavcodec-dev $ sudo apt-get install libavformat-dev $ sudo apt-get install libswscale-dev $ sudo apt-get install libgstreamer-plugins-base0.10-dev $ sudo apt-get install libmlx4-dev
で、ここ(http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.1/)から「OpenCV-2.1.0.tar.bz2」をDLして解凍し、
$ cmake . $ make # make install
後はこの辺(http://opencv.jp/sample/video_io.html)のを試して録画出来ればOK!
_ [Debian][Ubuntu][Linux][研究関係][雑記]Debian(lenny)にnvidiaのドライバを入れて、デュアルディスプレイにする
Debianでは自動でディスプレイを認識してくれないっぽい?ので、手動で設定する。
まず、apt-getでnon-freeなパッケージもインストール出来るように、「/etc/apt/sources.list」を以下のように書き直す
deb http://ftp.jp.debian.org/debian/ lenny main contrib non-free deb-src http://ftp.jp.debian.org/debian/ lenny main contrib non-free
*「 contrib non-free」を書き加えただけ
で、
# apt-get updata # apt-get install nvidia-kernel-2.6-686 nvidia-glx nvidia-settings nvidia-xconfig
でインストールし、
$ nvidia-xconfig --keyboard=jp106
と打って設定ファイルを作る。
(とりあえずここで再起動?)
*この際、キーボードの設定が変わってしまうことがあるので、適宜修正する。
後は、
$ nvidia-settings
とすれば、GUI上で設定が出来るはずなのだが、自分の場合は、外付けのディスプレイが読み込めないのか、ディスプレイが1つしか認識されていなかった。
なので、設定ファイルを書き直して、無理やりディスプレイ出力させた。
「/etc/X11/xorg.conf」のScreenセクションにTwinViewのオプションを追加する。
Option "TwinView" Option "TwinViewOrientation" "CRT-0 LeftOf DFP-0"
この場合、、メインが右、サブが左という設定になる。
*反対にする場合は"CRT-0 RightOf DFP-0"。
これで、再起動後は、nvidiaのドライバを使って立ち上がるはず。
2010/09/08(Wed) 肉が食いたい [長年日記] 編集 0:00現在曇 28℃
_ [Debian][Ubuntu][FC][Linux][Choromet][研究関係][雑記]1つのNICに複数のIPアドレスを割り当てる(HRP2-m Chorometを使う おまけその2)
例えば、デフォルト設定のchorometの場合、ホストPC側のIPアドレスを「192.168.201.222」にする必要がある。
もちろん、ホストPCに合わせてchorometの方の設定ファイルを変更してもいいが、DHCP等で自動割り当てされており、固定IPでない場合には、これは使えない。
そういった場合には、DHCPにより割り当てられるIP以外に、chorometと接続する用のIPアドレス「192.168.201.222」を割り当てておく方が便利だ。
1つのNICに複数アドレスを割り当てるには、ifconfigコマンドの持つ、IPエイリアスという機能を利用する(http://www.itmedia.co.jp/help/tips/linux/l0494.html)。
# ifconfig eth0:0 192.168.1.12
この場合、メインとなるインターフェイス名「eth0」の次に「:」とエイリアス番号(通常は0から始まるエイリアスの連番)を指定している。
これで、
# ifconfig
を打つと、通常の「eth0」に加え、「eth0:0」という仮想的なインタフェースが現れるようになる。
意外と便利なのでぜひお試しあれー。
以上!
_ [C++][雑記]配列を引数にとる関数についてのメモ(sizeofの結果が4バイトになってしまう話)
具体的には、以下のようなプログラムを書いた場合に、引数とした配列のサイズを関数内で得ようとしたときに、sizeofの結果が4となる理由についてのメモ。
*これが原因でセグメンテーションフォルトを起こしていたので、反省の意味も込めて書いておく。
*より詳しく知りたい人は、こちら(http://www.cc.kyoto-su.ac.jp/~yamada/ap/array.html#argument)とか、こちら(http://www.jpcert.or.jp/sc-rules/c-arr01-c.html)を見た方がいいかも。
#include <stdio.h> int test_sizeof( char* str) { int n; n = sizeof(str); printf("func: size=%d %s\n",n,str); return 0; } int main() { int n; char str[] = "――――I am the bone of my sword."; n = sizeof(str); printf("main: size=%d %s\n",n,str); test_sizeof(str); return 0; }
結果:
main: size=39 ――――I am the bone of my sword. func: size=4 ――――I am the bone of my sword.
printfでは、同じ39文字の文字列が表示されるにも関わらず、関数内でのsizeof()の結果は4。
で、なぜ、こういう結果が出るのかであるが、端的に言うと、配列を引数にとった場合、実際にはポインタが渡される為である。
上のプログラムを見れば分かるが、文字列「str」はポインタ変数として渡されている。
その為、関数内で「str」のサイズを得ようとしてsizeof(str)としても、得られるのは、ポインタ変数1個分のサイズ(4バイト)である。
とまあ、非常に単純な話なのだが、ここで問題を分かりにくくしているのが、
int test_sizeof( char* str)
ではなく、
int test_sizeof( char[] str)
と書いてもコンパイル出来る点である。実際にはポインタなのに、あたかも配列のように扱えるため、こんな間違いを犯してしまう。
結局何が言いたいかというと、これを考えずに、sizeofの結果を使ってmallocでメモリを確保すると、後で原因が分からなくなって大変困る、ということだ。
以上!