mpu-9250 を Raspberry Pi 3 model B [ubuntu 14.04] ROS indigo で動かす
【ホストPC】
ubuntu14.04LTS, ROS indigo,
【ラズパイ】
ubuntu14.04CUI, ROS indigo,
【センサ】
mpu-9250
【他】
プロキシ環境下
mpu-9250を使うまでの手順.
qiita.com
大筋はこれ通り.
まず,i2cを使えるように設定する.
http://openrtm.org/openrtm/ja/content/pirt-unit_with_i2cdevicesopenrtm.org
desktop-linux.namakemono345.com
これらを参考にラズパイをいろいろ設定.
$ sudo -E apt-get update
$ sudo -E apt-get install i2c-tools python-smbus
$ sudo vi /boot/config.txt
# enable i2c
dtparam=i2c_arm=on
デフォルトでONになっている気もする.
$ sudo vi /etc/module
i2c-dev
最終行に追加
/etc/modules-load.d/modules.conf はない.
$ sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — — — — — — — — —
70: — — — — — — — —
ここから新しくやること.
MPU-9250に配線を施す.ブレッドボードを駆使せよ.
docs.microsoft.com
MPU-9250は仕様書に書いてある.
アドレス確認
$ sudo reboot
$ sudo i2cdetect -y 1
68が出てくるはず.
ここからはこちらのサイト.
qiita.com
次にドライバーである RTIMULib2 をインストールする.その前に書き換え.
$ sudo vi /etc/ld.so.conf
include /usr/local/lib
を追記.
githubから持ってくる.
$ git clone ~~~~
ZIPでもいい./usr/local/lib/に置く.(ホームディレクトリでもいいみたいだ)
$ cd ~/RTIMULib2/RTIMULib
CMakeLists.txtにIMUDrivers/RTIMUMPU9250.cpp書いてなかったけどいいのか?
viでIMUDrivers/RTIMUMPU9150.cpp の下に追記.
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig
ディレクトリによっては権限ないとか言われるのでそのたびにsudoしよう.
$ source devel/setup.bash
($ "source /devel/setup.bash" >> ~/.bashrc して $ source ~/.bashrc してもいい)
これを忘れずにやる.
ついでに/RTIMULib2/Linux/pythonもbuildする.
$ cd ~/RTIMULib2/Linux/pythont
$ python setup.py build
$ sudo python setup.py install
ここで $ python Fusion.py を実行するとセンサデータが(正常なら)排出される.
ついでに/RTIMULib2/Linux/RTIMULibCalもmakeする.
$ cd ~/RTIMULib2/Linux/RTIMULibCal
$ make -j4
$ sudo make install
なぜか知らないけれどcpして別ディレクトリにする必要があるらしい.
$ cp -r /home/ubuntu/RTIMULib2/RTEllipsoidFit /home/ubuntu
$ cd /home/ubuntu/RTEllipsoidFit
$ RTIMULibCal
で実行.何をしているのかというと,これでIMUのキャリブレーションを行っている.
mを押したりeを押したりaを押したりしてその都度ぐるぐるimuをぶん回せば適当にキャリブレーションしてくれる.
sを押すとディレクトリ直下にRTIMULib.iniというファイルが生成される.これがキャリブレーションファイル.
さて,値を読むことができた.ではROSのノードに渡そう.
RTIMULib_ROS という便利なものがある.
$ cd catkin_ws/src/
$ git clone ~~~~
ちなみに私のラズパイはネットワークが繋がっていないので,直接ページからDonwload ZIPして所定ディレクトリに解凍した.これでもいい.
$ cd catkin_ws/src/rtimulib_ros
catkin_makeする前にconfigをいじる.
$ vi config/RTIMULin.ini
なんか長ったらしいものが出てくるが,とりあえず MPU-9250 settings を探す.
以下を書き換える.
# I2C Bus (between 0 and 7)
I2CBus=1
これは以下のコマンドでわかる.
$ ls -l /dev/i2c*
crw-rw-rw- 1 root i2c 89, 1 Jan 1 00:00 /dev/i2c-1
たぶん小さな差異はあるかもしれないけれど,この1がi2cbusを表している.らしい.
こちらは任意で.
# Gyro sample rate (between 5Hz and 1000Hz plus 8000Hz and 32000Hz)
MPU9250GyroAccelSampleRate=30
# Compass sample rate (between 1Hz and 100Hz)
MPU9250CompassSampleRate=30
80Hzもいらない30Hzで十分だと思ったらこんな感じ.
書き換えたらcatkin_make
$ cd ..
$ catkin_make -DCMAKE_BUILD_TYPE=Release --pkg rtimulib_ros
オプションについては正直自信ない.これでいいのか?
$ roslaunch rtimulib_ros rtimulib_ros.launch
同時にroscoreが起動される.
$ rostopic list
/rosout
/rosout_agg
/rtimulib_node/imu
$ rostopic echo /rtimulib_node/imu
ちゃんと取れているのがわかる.
$ rosbag record /rtimulib_node/imu
もちろんrosbagも対応.
myenigma.hatenablog.com
rosbagをcsvに変換するやつも対応できているので,これで研究生活が捗る.
可視化するならrvizで.
github.com
IMUプラグインを導入する.
$ git clone https://github.com/ccny-ros-pkg/imu_tools.git
$ cd ros_catkin_ws/indigo/src/imu_tools/rviz_imu_plugin
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
$ sudo make install
$ sudo ldconfig
$ source devel/setup.bash
ついでに全体もcatkinする.
$ cd ~/ros_catkin_ws/indigo
$ catkin_make --pkg imu_tools
$ rosrun rviz rviz
あとは画像の通りに設定するだけ.
質問ありましたらTwitterかこちらのコメントまで.