ROS(Kinetic)インストール
ようやくROS入門スタート。ROSをRaspberry Pi3@Ubuntu16.04LTS に入れる。手順は以下
$ sudo -s # echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list # Ctrl-D $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 $ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop
ここでしばらく時間かかる。
完了したら、~/.bashrcにsource /opt/ros/kinetic/setup.bashを追加する。
その後、source .bashrcをして、roscd などの ROSコマンドが見える事を確認する。
rosdepも忘れず処理。
sudo rosdep init rosdep update
最後に roscore と入力して、無事にstart すればOK!
ROSワークスペース作成
ワークスペース catkin_ws を作成しておく
$ mdkir catkin_ws $ cd catkin_ws $ mkdir src $ cd src $ catkin_init_workspace
この後、~/catkin_ws ディレクト上で "catkin_make" をしてエラーがでない事を確認しておく。
純正ラズパイカメラを使う
Ubuntuでラズパイカメラを使える様にしてみる。(有りものの有効活用)
こちらのサイトを参考にさせて頂いた
純正ラズパイカメラをROSで使えるraspicam_nodeというパッケージがあるそうです。
https://github.com/UbiquityRobotics/raspicam_node/tree/indigo_safe
ここのステップに従ってすすめる。
$ cd ~ $ git clone https://github.com/raspberrypi/userland.git $ cd ~/userland $ ./buildme $ sudo apt-get install ros-kinetic-compressed-image-transport $ sudo apt-get install ros-kinetic-camera-info-manager $ cd ~/catkin_ws/src $ git clone https://github.com/UbiquityRobotics/raspicam_node.git $ git clone https://github.com/UbiquityRobotics/ubiquity_launches.git $ cd ../ $ catkin_make
エラーなくcmake完了する事を確認する。
次に video groupに/dev/vchiq を追加する。
$ sudo -s $ echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"' > /etc/udev/rules.d/10-vchiq-permissions.rules $ usermod -a -G video `whoami` $ sudo shutdown -r now
その後、下記コマンドを追加する
$ cd ~ $ sudo apt-get install -y curl $ sudo curl -L --output /usr/bin/rpi-update https://raw.githubusercontent.com/Hexxeh/rpi-update/master/rpi-update && sudo chmod +x /usr/bin/rpi-update $ sudo rpi-update $ sudo reboot
ついでにBootカメラを有効 & GPUのメモリ割り当てを変更するため、/boot/config.txtを書き換えます。(gpu_memのdefaultは64MB)
start_x=1 gpu_mem=128
ここで再起動すれば設定完了、のはず。
動かし方
最初のターミナルで
roscore
を起動。その後、別のコンソールで以下を実行
source ~/catkin_src/devel/setup.bash rosrun raspicam raspicam_node
を実行。これでカメラノードが立ち上がる。正しく動いていそうか簡易確認をするため、以下を実行する
camera.yamlがないとか怒られたので、camera1_128x720.yaml をcamera.yamlにコピー。
しかし、
mmal: mmal_component_create_core: could not find component 'vc.ril.camera'
mmal: Failed to create camera component
[INFO] [1444257925.655477127]: init_cam: Failed to create camera component
Segmentation fault
で停止。困った。。。一旦保留。
カメラ設定はやっぱ大変だ。。。
USBカメラを使う
仕方ないので、汎用のUSBカメラを使う方向に変更。 手持ちのWebカメラ(Logicool製)を使用。
いわゆる、UVC(USB Video Class)に準拠していれば問題ないと思われます。
まずは、
$ lsusb $ ls /dev/video*
で、カメラが認識されているか調査。/dev/video0 が表示されていればOK!
その後に、ROSパッケージをインストール
$ sudo apt-get install ros-kinetic-usb-cam $ sudo apt-get install ros-kinetic-compressed-image-transport $ sudo apt-get install ros-kinetic-image-view
完了したら、別のターミナルで roscoreした状態で下記を設定。
$ rosrun usb_cam usb_cam_node $ rostopic list ここで /usb_cam/image_raw , /usb_cam/image_raw/compressed が表示されればOK
画面上では"No accelerated ……"などのエラーログが表示されるが一旦無視。
別ターミナルで
$ rosrun image_view image_view image:=/usb_cam/image_raw
としてカメラ映像が表示できていればミッション完了!
次回は、いよいよロボット制御!の前に、もう少し画像認識の環境を掘り下げてみます!(こっちのプラットホーム構築の方が大変なので。。。)