将KOBUKI在kinect上的配置移植到melodic-ros

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的文件,发送给你。

猜你喜欢

转载自blog.csdn.net/SimileciWH/article/details/81484767
今日推荐