1.首先安装Grid Map,采用apt命令直接安装到ros环境里
sudo apt-get install ros-melodic-grid-map
2.安装首先安装kindr(安装到anybotics工作空间)
git clone https://github.com/anybotics/kindr.git
mkdir build
cd build
cmake ..
sudo make install
3. 安装pcl点云库
在任意文件进行源码下载和编译,需要提前安装好Eigen库sudo apt-get install libeigen3-dev
git clone https://github.com/PointCloudLibrary/pcl.git
sudo apt-get install cmake
sudo apt-get install g++
sudo apt-get install libboost1.58-all-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libflann-dev
sudo apt-get install python
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libudev-dev
sudo apt-get install freeglut3-dev
sudo apt-get install doxygen
sudo apt-get install graphviz
sudo apt-get install libpng12-dev
sudo apt-get install libgtest-dev
sudo apt-get install libxmu-dev
sudo apt-get install libxi-dev
sudo apt-get install libpcap-dev
sudo apt-get install libqhull-dev
sudo apt-get install libvtk5-qt4-dev
sudo apt-get install python-vtk
sudo apt-get install libvtk-java
mkdir build
cd build
cmake ..
make
sudo make install
注:在进行PCL库编译的过程中会出现c++:internal compiler error:killked(program cclplus)错误,这里主要可能是内存不够,我一开始采用4G虚拟机内存编译,在更新为8G后顺利通过,当然也可以多次尝试
4. 建立新的catkin工作空间,下载首先安装kindr_ros和elevation mapping(安装到anybotics工作空间)
git clone https://github.com/ANYbotics/kindr_ros.git
git clone https://github.com/anybotics/elevation_mapping.git
进行catkin_make编译,这过程中可能会遇到如下问题:
(1)error: ‘PCL_MAKE_ALIGNED_OPERATOR_NEW’ does not name a type; did you mean
此时需要找到对应报错位置修改为EIGEN_MAKE_ALIGNED_OPERATOR_NEW
(2)fatal error: filters/filter_chain.hpp
此时需要找到对应保存位置将hpp修改为h
5.message_logger 报错
安装message_logger(安装到anybotics工作空间)
git clone https://github.com/ANYbotics/message_logger.git
6.编译工作空间
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build
7.turtle3测试
下载turtlebot3
sudo apt install ros-melodic-turtlebot3*
机器人类型
export TURTLEBOT3_MODEL=waffle
8. 运行Demo,在elevation mapping中有基于turtlebot3和RealSense的Demo
roslaunch elevation_mapping_demos turtlesim3_waffle_demo.launch
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
报错:rospkg等包没有
(1)首先是修改 elevation_mapping_demos /scripts/tf_to_pose_publisher.py
中的#!/usr/bin/env python3为#!/usr/bin/env python2.7这可能和我系统中安装的python版本有关
(2)修改launch载入的地图为
<arg name="world_name" value="$(find turtlebot3_gazebo)/worlds/turtlebot3_stage_2.world"/>
之后重新运行就不会报出tf的错误,同时Rviz中模型会正常显示机器人的渲染模型而不是白色STL,左下角的Realsense会显示正确的点云,在Rviz中勾选map的话题则可以看到正常的高程图数据:
通过键盘遥控可以看到机器人在运动中地图不断建立,因此后续只需要在全局地图中获取到局部高程图,并进一步计算落足点用于控制,但实际系统中可能会存在如下的问题:
(1)运算速度不够,资料中显示不采用GPU下能实现2~3Hz的刷新;
(2)真实传感器噪声比仿真大,地图建立不如上图效果那么好;
(3)需要增加代码提取局部高程图,并通过UDP或共享内存的方式发送给步态控制器;
(4)随着机器人的运动全局地图会越来越大,对于低成本处理器如我采用的Jetson nano可能无法支撑,如何修改这个库直接构建局部地图;
RTAB定位输出Odom,elevation mapping采用深度点云和里程计输出全局高程图
参考链接
grid_map(二):ubuntu16.04安装测试grid_map 1.6.0-1.6.2_biter0088的博客-CSDN博客