EAI激光雷达X4使用gmapping与laser_scan_matcher建图(一)

3 篇文章 2 订阅
3 篇文章 2 订阅

由于底盘部分没处理好,想了个偏门的法子,就是利用雷达扫描与周围环境匹配实现位姿估计,将位姿估计当做里程计提供给gmapping进行建图,经过博主测试,使用gmapping+laser_scan_matcher建图在环境特征比较明显的地方建图效果特别好,尤其是在比较复杂的室内环境,凌乱一点也行,缺点呢,在长廊这种特征环境不是特别明显的地方,建图的时候位姿估计得不是很精确,因为环境特征比较单一,容易出现机器人移动的距离与地图上估计的位置不匹配,从而使地图没有和真实环境完全匹配上。




在工作空间目录下下载gmapping与laser_scan_matcher以及依赖csm的源码包:

cd ~/eaix4_ws/src

git  clone https://github.com/ros-perception/slam_gmapping.git

git clone https://github.com/ccny-ros-pkg/scan_tools.git

git clone https://github.com/AndreaCensi/csm.git 

cd ..

catkin_make

如若报错

##############################################################################
-- Using these message generators: gencpp;genlisp;genpy
-- Checking for module 'openni-dev'
--   No package 'openni-dev' found
-- Checking for module 'openni-dev'
--   No package 'openni-dev' found
-- Checking for module 'openni-dev'
--   No package 'openni-dev' found
-- Checking for module 'csm'
--   No package 'csm' found
CMake Error at /usr/local/share/cmake-3.6/Modules/FindPkgConfig.cmake:424 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/local/share/cmake-3.6/Modules/FindPkgConfig.cmake:597 (_pkg_check_modules_internal)
  scan_tools/laser_scan_matcher/CMakeLists.txt:21 (pkg_check_modules)




-- Configuring incomplete, errors occurred!
See also "/home/ros/eaix4_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/ros/eaix4_ws/build/CMakeFiles/CMakeError.log".
Invoking "cmake" failed
错误原因:缺少依赖openni-dev,缺少csm这个package
解决方法:git clone https://github.com/AndreaCensi/csm.git


cd ~/catkin_ws/src
git clone https://github.com/ccny-ros-pkg/scan_tools.git
git clone https://github.com/AndreaCensi/csm.git




目前,laser_scan_matcher 这个packge在kinetic和树莓派的indigo下还没有可以apt-get 的包,要使用,必须要从源码编译,下面是我的编译方法:




1、sudo apt-get install libgsl0-dev


2、first install the package csm itself in directory /catkin_ws/src: git clone https://github.com/AndreaCensi/csm.git and package scan_tools: git clone https://github.com/ccny-ros-pkg/scan_...


3、in /catkin_ws do catkin_make


4、open: 
nano ~/.bashrc or sudo vim ~/.bashrc
and add to end of file as a variable PKG_CONFIG_PATH tssm.pk path to the file. In my case, this line looks like this:


export PKG_CONFIG_PATH=/home/edward/catkin_ws/src/csm/sm/pkg-config and make: 
source ~/.bashrc


5、Next, you must explicitly register in five file path to the header files:


in file /home/edward/catkin_ws/src/scan_tools/laser_scan_matcher/include/laser_scan_matcher/laser_scan_matcher.h replace #include '<'csm/csm_all.h'>' on #include '<'/home/edward/catkin_ws/src/csm/sm/csm/csm_all.h'> (without apostrophes, of course)
in file /home/edward/catkin_ws/src/csm/sm/csm/laser_data_json.h replace json-c/json.h and json-c/json_more_utils.h on /home/edward/catkin_ws/src/csm/sm/lib/json-c/json.h and home/edward/catkin_ws/src/csm/sm/lib/json-c/json_more_utils.h respectively


in file /home/edward/catkin_ws/src/csm/sm/csm/hsm/hsm_interface.h 
replace options/options.h on /home/edward/catkin_ws/src/csm/sm/lib/options/options.h
on file /home/edward/catkin_ws/src/csm/sm/csm/json_journal.h replace json-c/json.h and json-c/json_more_utils.h on /home/edward/catkin_ws/src/csm/sm/lib/json-c/json.h and /home/edward/catkin_ws/src/csm/sm/lib/json-c/json_more_utils.h respectivetly
Lastly, in file /home/edward/catkin_ws/src/csm/sm/csm/math_utils_gsl.h replace egsl/egsl.h on /home/edward/catkin_ws/src/csm/sm/lib/egsl/egsl.h


6、Finally, go to your /catkin_ws and do catkin_make 


   sudo vim ~/eaix4_ws/src/scan_Tools/src/scan_tools/laser_scan_matcher/include/laser_scan_matcher/laser_scan_matcher.h


修改:#include <csm/csm_all.h>为:
#include </home/pi/eaix4_ws/src/csm/sm/csm/csm_all.h>


   sudo vim ~/eaix4_ws/src/scan_Tools/src/csm/sm/csm/laser_data_json.h


修改:#include <json-c/json.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/json-c/json.h>


#include <json-c/json_more_utils.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/json-c/json_more_utils.h>


   sudo vim ~/eaix4_ws/src/scan_Tools/src/csm/sm/csm/hsm/hsm_interface.h


修改:#include <options/options.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/options/options.h>


    sudo vim ~/eaix4_ws/src/scan_Tools/src/csm/sm/csm/json_journal.h


修改:#include <json-c/json.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/json-c/json.h>


修改:#include <json-c/json_more_utils.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/json-c/json_more_utils.h>


    sudo vim ~/eaix4_ws/src/scan_Tools/src/csm/sm/csm/math_utils_gsl.h


修改:#include <egsl/egsl.h>为:
#include </home/pi/eaix4_ws/src/scan_Tools/src/csm/sm/lib/egsl/egsl.h>


最后回到工作空间根目录:
cd ~/eaix4_ws
编译:

catkin_make

编译成功

下一篇放出gmapping的launch和laser_scan_matcher的启动launch

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 19
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值