整合Caffe和ROS

Caffe是非常流行的深度学习库,ROS是当下使用最广泛的机器人库(我觉得叫操作系统有些过),把Caffe和ROS一起使用就很方便地将深度学习技术应用到机器人上,但是现在的Caffe各种fork(通常都是对基本的卷积神经网络扩展),所以使用Caffe最方便的还是从源码(和fork)编译。所以这里记录如何将Caffe作为ROS模块的库使用。

 

首先要安装ROS和Caffe需要库:

# Install Caffe dependencies
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
sudo apt-get install libatlas-base-dev

创建ROS工作环境,创建ROS模块,并添加Caffe为git子模块:

catkin_create_pkg caffe_example
cd caffe_example

git init .
mkdir lib
cd lib
git submodule add https://github.com/NVIDIA/caffe  # 这是NVIDIA的fork,原 https://github.com/BVLC/caffe
echo 'add_subdirectory(caffe)' >> CMakeLists.txt

cd ..
echo 'add_subdirectory(lib)' >> CMakeLists.txt

roscd # to devel directory
cd ..
catkin_make

 

但是编译会有如下错误:

CMake Error at caffe_example/lib/caffe/src/gtest/CMakeLists.txt:1 (add_library):
  add_library cannot create target "gtest" because another target with the
  same name already exists.  The existing target is a shared library created
  in source directory "/usr/src/gtest".  See documentation for policy CMP0002
  for more details.

原因是Caffe自带了gtest源码,与ROS使用的Ubuntu系统中的冲突,需要修改一下cmake文件:src/caffe_example/lib/caffe/src/gtest/CMakeLists.txt
将第一行从 add_library(gtest STATIC EXCLUDE_FROM_ALL gtest.h gtest-all.cpp)
改为 add_library(caffe_gtest STATIC EXCLUDE_FROM_ALL gtest.h gtest-all.cpp)
并添加一行 set_target_properties(caffe_gtest PROPERTIES OUTPUT_NAME gtest)

注:如果想编译Caffe CPU版本,需要修改 src/caffe_example/lib/caffe/CMakeLists.txt
将 caffe_option(CPU_ONLY "Build Caffe without CUDA support" OFF) 中的OFF 改为 ON
再重新编译

# clean and build
rm devel -rf
rm build -rf
catkin_make
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值