Xenomaiを導入する(途中) | にゅくすの電ドラブログ

にゅくすの電ドラブログ

回路も機械もプログラミングも全然できるようになりません。困りました。


テーマ:
皆さんお久しぶりですニュムです.
学振通ったら博士に進学してもいいかなと思いつつ就活してます.
まぁ行き当たりばったりな人生ですからなるようになるでしょう.

さて本題です.
みなさんロボットを制御するためにパソコンを積んで制御したいですよね.
というわけでXenomai導入についていろいろと問題ありますが途中までまとめました.

<作っているロボットの方針>
・ロボット本体にNUCを搭載し,ROSとか使いながらロボットを動かしたい
・「その場でトルクオフ」とか「一度しゃがんでシャットダウン」とかの指示はwifiとかで無線コンから送りたい

<今後の課題>
・「sudo eclipse」でeclipseを起動したときに日本語を入力できないのを直したい
(またはrootでないユーザーでもXenomaiAPIを使ったプログラムを実行できるようにしたい)
・CMakeを使ってXenomaiを使ったプログラムをMakeできる環境を作りたい
・RTnetを使ってPC-マイコン間で通信して,マイコンからサーボモータを動かしたい
・ロボットをwifiで操縦できるようにしたい
・PC起動時に自動でプログラムが走るようにしたい
・バッテリでNUCを動かしたい
・バッテリの電圧が下がってきたら自動でシャットダウンするようにしたい


以下本題--------------------------------
・導入環境
・CPU:i7,Celeron,その他Xenomaiが対応してる奴
(Ubuntuが走るintel製のCPUなら多分大丈夫)
(Xenomai対応ハードウェアを見てください)
・NIC:intel製NIC,その他RTnetが対応してる奴(オンボードでもPCI,PCIe拡張でも可)
(RTnet対応ハードウェアを見てください)
(Intel製のNICはどれでもいいようです)
(NICの確認はlspciでEthernetControllerのメーカーが見れて、lsmodでドライバの種類(?)が見れる)
(Intel製のNICで本当に対応してるかどうかを見るには,lsmodしてe1000とかe1000eとかの文字列があればいいはず)
・自分はintel純正NUCのDCCP847-DYEってやつと,EPSONが出してるendeavorっていうデスクトップ(オンボードNICがintel製だったから)で試しました。

・Ubuntu14.04LTS(UEFI,x64)をインストール
日本語版を入れておくとキーボードの設定とかが楽かも。
コマンドウィンドウとかは英語に設定したほうがググラビリティが高い。
一定時間操作がないときのスリープモードとかディスプレイオフの設定はいざという時にバグるので切っておくことをおすすめします。
以上ご自由にどうぞ。
・LinuxカーネルソースDownload
https://cdn.kernel.org/pub/linux/kernel/v3.x/linux-3.14.17.tar.xz
(RTnetとXenomaiが対応してるのが3.14.17)
・Xenomai2.6.4 Download
https://xenomai.org/downloads/xenomai/stable/xenomai-2.6.4.tar.bz2
(RTnetの対応がXenomai2.6.4まで)
・ipipe Download
https://xenomai.org/downloads/ipipe/v3.x/x86/older/ipipe-core-3.14.17-x86-6.patch
(https://xenomai.org/downloads/ipipe/v3.x/x86/older/)
(x86以外の場合は適当に対応してください。今のところ僕にはx86以外のハードウエアは無理でした。)
・srcにコピー(Downloadsとかの変な場所で作業してるとパスがよくわからなくなったりするのでココで作業する)
sudo tar xvf xenomai-2.6.4.tar.bz2 -C /usr/src
sudo cp ipipe-core-3.14.17-x86-6.patch /usr/src/xenomai-2.6.4/ksrc/arch/x86/patches
sudo mkdir /usr/src/linux-xenomai-source
sudo tar xvf linux-3.14.17.tar.xz -C /usr/src/linux-xenomai-source

・RTnet Download
cd /usr/src
sudo git clone git://git.code.sf.net/p/rtnet/code rtnet-code
(この手順で/usr/srcに置かないと何故かPermission Deniedされる)
・RTnet Patch Download
https://sourceforge.net/p/rtnet/mailman/attachment/548fe484eab803.95654079%40wp.pl/1/
sudo cp 0001-Fix-compilatin-issues-on-kernel-above-3.10.patch /usr/src/rtnet-code
(https://sourceforge.net/p/rtnet/mailman/message/33151881/)
(https://sourceforge.net/p/rtnet/mailman/message/32034653/)



・Xenomaiのコンパイルに必要なものをインストール
sudo apt-get install devscripts debhelper dh-kpatches findutils
sudo apt-get install libncurses5-dev
・Xenomaiコンパイル・インストール
cd /usr/src/linux-xenomai-source/linux-3.14.17
sudo /usr/src/xenomai-2.6.4/scripts/prepare-kernel.sh --linux=./
sudo make localmodconfig
(この時点でなんか聞かれたら全部デフォルトにしておく。オプションでできるかも)
sudo make menuconfig
general>localversion>type"xenomai"
(http://www.intel.com/content/dam/www/public/us/en/documents/white-papers/multicore-real-time-linux-xenomai-paper.pdf)
Device Drivers ---> USB support ---> OHCI HCD support
Device Drivers ---> USB support ---> UHCI HCD (most Intel and VIA) support
Device Drivers ---> USB support ---> EHCI HCD (USB 2.0) support
Device Drivers ---> USB support ---> USB Mass Storage support
Device Drivers ---> Serial ATA (prod) and Parallel ATA (experimental)drivers ---> AHCI SATA support
Processor type and features ---> Preemption Model ---> (Preemptible Kernel(Low-Latency Desktop))
Processor type and features ---> Processor family ---> (Core 2/newer Xeon)
Enable loadable module support ---> Module versioning support ---> disable
Device Drivers ---> IOMMU Hardware Support ---> disable
Bus options (PCI etc.) ---> Message Signaled Interrupts (MSI and MSI-X) ---> disable
Bus options (PCI etc.) ---> PCCard (PCMCIA/CardBus) support ---> disable
Bus options (PCI etc.) ---> Support for PCI Hotplug ---> disable
Device Drivers ---> Memory Technology Device (MTD) support ---> disable
Device Drivers ---> Fusion MPT device support ---> disable
Device Drivers ---> I20 device support ---> disable
Device Drivers ---> Network Device Support ---> ISDN support ---> disable
(リアルタイム性をより良くするにはCPU PowerManagementとかのオプションを切れと書いてあるが、切るとカーネルがシングルスレッドでしか動かない。)
sudo make -j8
sudo make -j8 modules
sudo make -j8 deb-pkg
(sudo rm ./../*.deb)
sudo dpkg -i ./../linux-image-3.14.17xenomai_3.14.17xenomai-2_amd64.deb
sudo dpkg -i ./../linux-headers-3.14.17xenomai_3.14.17xenomai-2_amd64.deb
※消すとき
sudo dpkg -r linux-headers-3.14.17xenomai
sudo dpkg -r linux-image-3.14.17xenomai
sudo dpkg -purge linux-headers-3.14.17xenomai
sudo dpkg -purge linux-image-3.14.17xenomai
・Xenomaiカーネルで再起動
・Xenomai configuration tool,xenomai-runtimeを入れる
cd /usr/src/xenomai-2.6.4/
./configure --enable-shared --enable-smp --enable-posix-auto-mlockall --enable-x86-sep
make -j8
sudo make install
sudo apt-get install xenomai-runtime
・細かいことをする
sudo gedit /etc/default/apport
「enabled=1」を「enabled=0」に変更する。[保存]をクリックする。
sudo apt-get update
sudo apt-get upgrade
・再起動
・Xenomai動作確認
sudo xeno-test
(CPUが全スレッド認識されてるか,とかを確認できるはず)
→Xenomaiが入った





・RTnetのソースにパッチを当てる
cd /usr/src/rtnet-code
sudo patch -u -p1 -d ./ < 0001-Fix-compilatin-issues-on-kernel-above-3.10.patch
・RTnetをコンパイル・インストール
sudo make menuconfig
Real-Time Extended Linux Kernel (/usr/src/linux-xenomai-source/linux-3.14.17)
Add-ons ---> Realtime capturing support ---> enable
Examples---> path to the config-tool (/usr/xenomai/bin/xeno-config)
make -j8
sudo make install

・RTnet動作確認(https://xenomai.org/rtnet-installation/)
sudo gedit /usr/local/rtnet/etc/rtnet.conf
TDMA_MODE="master"
RT_DRIVER="rt_e1000e"
IPADDR="127.0.0.2"
NETMASK="255.255.255.0"
TDMA_SLAVES="127.0.0.2"

ifconfig
sudo ifconfig eth0 down
sudo rmmod e1000e
(sudo modprobe -r e1000e)

cd /usr/local/rtnet/sbin
sudo mknod /dev/rtnet c 10 240
sudo ./rtnet start
sudo ./rtping 127.0.0.2
sudo ./rtnet stop

sudo insmod e1000e
(sudo modprobe e1000e)
sudo ifconfig eth0 up

・CMake入れる
(http://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04)

・最低限の状態でeclipseをインストール
sudo apt-get -y install default-jdk
sudo apt-get -y install gdb
・eclipse 4.4.1 Platform Runtime Binary(linux 64bit)をダウンロード
(http://archive.eclipse.org/eclipse/downloads/drops4/R-4.4.1-201409250400/download.php?dropFile=eclipse-platform-4.4.1-linux-gtk-x86_64.tar.gz)
sudo tar xvf eclipse-platform-4.4.1-linux-gtk-x86_64.tar.gz -C /usr/lib
・eclipseコマンドで実行できるようにする奴
sudo ln -s /usr/lib/eclipse/eclipse /usr/bin

・eclipse日本語化(ググラビリティが下がるので特に日本語にこだわりがなければやらないほうがいいと思います)
(日本語化プラグイン:https://mergedoc.osdn.jp/)Pleiades プラグイン・ダウンロード ---> 安定版 ---> pleiades_?.?.?.zip(srcじゃない方)
eclipseコマンドで1回eclipseを起動して閉じる
sudo unzip pleiades_1.6.0.zip -d /usr/lib/eclipse/
sudo gedit /usr/lib/eclipse/eclipse.ini
最後の行に追加
-Xverify:none
-javaagent:/usr/lib/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
eclipse -clean
(http://d.hatena.ne.jp/toshiyuki_saito/20090213/1234529385)
(参考:http://qiita.com/iNaoya/items/a849a02288069a79729f)
(参考:http://linuxserver.jp/ソフトウェア/ide/eclipse/インストールと日本語化)
(http://eclipse.az-prolog.com/install/eclipse_linux_install/)


・eclipseに必要なものを入れていく
Eclipse CDT(+ Eclipse CDT SDK)
(参考:http://www.st.itc.keio.ac.jp/ja/faq_linux_eclipse_add_cdt_st.html)(marsじゃなくてlunaなので注意)
Eclipse color theme

・その他ご自由に
文字コード変更(全部UTF-8にすれば良いと思います)
(http://qiita.com/yyyske/items/8084998d5e4e8108c6a4)

CMake Editor
(http://www.cthing.com/CMakeEd.asp)
(https://cmake.org/Wiki/CMake_Editors_Support)

AutoTools
(https://eclipse.org/linuxtools/projectPages/autotools/)

・Autotoolsで作ったサンプルプロジェクト.正弦波のようなものが見れる
https://drive.google.com/open?id=0B5gDsyv-EwZBelJ6NWN6czlnN1E
(「sudo eclipse」でeclipseを起動しないと実行できません.)

・Autotoolsのプロジェクトをeclipseに取り込む方法
(先のAutoToolsのプラグインが必要)(https://eclipse.org/linuxtools/projectPages/autotools/)
 Project Explorer上で右クリック
 →Import
  →C/C++ >> Existing Code as Makefile Project
   →Browse >> 該当するプロジェクトを選び,
    Toolchain for Indexre Settingで「GNU Autotools Toolchain」を選択
    →Finish

2016/05/11:追記----
https://gist.github.com/cfpperche/2e68ac44a081aaa0628b
こちらの方が同じことをもう少ししっかりまとめていらっしゃいました.
近いうちに試してみようと思います.

ニュムさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります

Ameba人気のブログ

Amebaトピックス