ROSでCaffeを使うためにros_caffeパッケージをインストールしたときのメモ。このパッケージはカメラから画像トピックをcaffeで識別して、トピック/caffe_retをパブリッシュする。環境によってcaffeのビルドは苦労するかもしれないが、それ以外はとても簡単。
ウェブサイト
ハードウェア環境
- CPU: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz (6 core)
- GPU: NVIDIA GTX 1080Ti
- Memory: 32GB
ソフトウェア環境
- Ubuntu16.04
- ROS Kinetic
- CUDA8.0
- OpenCV3.4.0
- OpenCV ContribとCudaのモジュールが必要。
- インストールはここを参照。
ソースの取得
- $
cd ~/catkin_ws/src
- $
git clone --recursive https://github.com/tzutalin/ros_caffe.git
- $
cd ~/catkin_ws/src/ros_caffe
Caffeのビルド
- $ cd ~/catkin_ws/src/ros_caffe/caffe
- $ cp Makefile.config.example Makefile.config
- Makefile.configに以下を追加する
- INCLUDE_DIRS += /usr/include/hdf5/serial
- LIBRARY_DIRS += /usr/lib/x86_64-linux-gnu/hdf5/serial
- OPENCV_VERSION := 3
- USE_PKG_CONFIG := 1
- $ make all; make distribute
ROSパッケージのビルド
- ~/catkin_src/src/ros_caffe/CMakeLists.txtに以下を追加する。
- include_directories(/usr/include/hdf5/serial)
- ~/catkin_ws/src/ros_caffe/src/ros_caffe_test.cppの15行目を使用するカメラのトピック名に変更する。デフォルトはcamera/rgb/image_raw。
- const std::string RECEIVE_IMG_TOPIC_NAME = “/usb_cam/image_raw”;
- $ cd catkin_ws
- $ catkin_make
実行
- caffenetモデルをダウンロードする
- $ roscd ros_caffe
- $ cd data
- $ sh download_caffe_model.sh
- 端末を開いて次のコマンドを実行
- $ roscore
- もう一つ端末を開いて次のコマンドを実行
- $ rosrun ros_caffe ros_caffe_test
- 実行結果
Test default image under /data/cat.jpg
0.3134 - "n02123045 tabby, tabby cat"
0.2380 - "n02123159 tiger cat"
0.1235 - "n02124075 Egyptian cat"
0.1003 - "n02119022 red fox, Vulpes vulpes"
0.0715 - "n02127052 lynx, catamount"
Webカメラを使った実行
- $ sudo apt install ros-kinetic-usb-cam
- 端末を4つ開いて以下のコマンドを実行
-
- $
roscore
- $
rosrun usb_cam usb_cam_node
- $
rosrun image_view image_view image:=/usb_cam/image_raw
- $
rosrun ros_caffe ros_caffe_test
- $
-
ROSトピック
- 識別結果 /caffe_ret
以上