现在melodic已经可以通过命令行模式安装kobuki了(2019-02-02更新)
可以不通过下面的方式安装了。
————————————————————————————————————————————————————
1 下载KOBUKI需要的PKG以及依赖关系
link:http://wiki.ros.org/kobuki
经过多次失败的配置,确定了PKG按照以下方法依次配置成功。
下载需要的库文件,libusb,libudev-dev,libtfdi-0.20(注意版本不要下载错误)。查看我之前的BLOG,
传送门:https://blog.csdn.net/SimileciWH/article/details/81475206
2 先安装ecl*这类的PKG
3 安装kobuki*和yocs_msgs*和yujin_ocs*的pkg,
$ cd ~/catkin_ws
$ catkin_make
会出现这个问题:
-- Checking for one of the modules 'libusb'
CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:645 (message):
None of the required 'libusb' found
Call Stack (most recent call first):
kobuki_core-melodic/kobuki_ftdi/CMakeLists.txt:7 (pkg_search_module)
-- Checking for one of the modules 'libftdi'
CMake Error at /usr/share/cmake-3.10/Modules/FindPkgConfig.cmake:645 (message):
None of the required 'libftdi' found
Call Stack (most recent call first):
kobuki_core-melodic/kobuki_ftdi/CMakeLists.txt:8 (pkg_search_module)
提示, 1、None of the required 'libusb' found
查看提示对 kobuki_core-melodic/kobuki_ftdi/CMakeLists.txt:7 (pkg_search_module)做出修改如下:
# pkg-config packages
find_package(PkgConfig)
pkg_search_module(libusb-1.0 REQUIRED libusb-1.0)
pkg_search_module(libftdi REQUIRED libftdi)
因为安装的libusb在编译后会自动生成一个带-1.0这样编号的文件,早期版本是不带的,所以要在此处修改。
这个问题解决后,会报如下问题:
缺少geometry_msgs_gencpp,nav_msgs_gencpp,......***********_gencpp等的依赖关系。
根据提示,发现需要修改yocus_ocs*/下所有提示缺少依赖关系的文件夹下的CmakeLists.txt文件里面修改如下
以yocs_navigator为例,将yocs_navigator/CmakeLists.txt文件改成:
#add_dependencies(yocs_basic_move_controller yocs_msgs_gencpp geometry_msgs_gencpp nav_msgs_gencpp)
add_dependencies(yocs_basic_move_controller ${catkin_EXPORTED_TARGETS})
原理就是,将认为缺失的依赖关系,改为${catkin_EXPORTED_TARGETS},具体原因查看ROS官网,在此就不细细解释了。
4 构建时提示usb.h no such file
是因为usb.h只在早起版本中有,因此需要按装
$ sudo apt-get install libudev-dev
就会解决了,可以通过如下指令查看
$ whereis usb.h
usb: /usr/include/usb.h
5 如果出现None of the required 'libftdi' found,这说明你的libftdi的版本下载的不是0.2的版本,因为上了1.0版本,编译后都会在libftdi后追加版本号,比如libftdi1这样,而CMakeLists.txt里面是这样配置的,
find_package(PkgConfig)
pkg_search_module(libusb-1.0 REQUIRED libusb-1.0)
pkg_search_module(libftdi REQUIRED libftdi)
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS ecl_command_line
DEPENDS libusb-1.0 libftdi
)
如果你非要使用高版本的libftdi那么就需要改成这样,
find_package(PkgConfig)
pkg_search_module(libusb-1.0 REQUIRED libusb-1.0)
pkg_search_module(libftdi1 REQUIRED libftdi1)
catkin_package(
INCLUDE_DIRS include
CATKIN_DEPENDS ecl_command_line
DEPENDS libusb-1.0 libftdi1
)
这样就可以正常找的文件的位置了。
6 提示ftdi.h No such file
导致这个问题的原因是/usr/include/lib下没有ftdi.h文件,这是因为在编译libftdi的时候,虽然安装成功但是,在/usr/include/lib头文件在文件夹libftdi或者libftdi1(这与你安装的libftdi版本有关)文件夹下,你可以将头文件软链接到/usr/include/lib目录下,或者以root下直接粘贴出来。或者复制到这个工程的include文件加下,都可以解决。
7 如果你懒得自己做这些配置,或者遇到了我没有列出的问题,你又无法解决,可以联系我([email protected]),我会把我调试ok的文件,发送给你。