VLP-16配置
安装vlp驱动:
sudo apt-get install ros-melodic-velodyne
- 将velodyne的控制模块通过网线与电脑联连接,电源线接通电源,过一会雷达开始转动。
velodyne的控制模块如下:
连接参考视频
https://v.qq.com/x/page/m0181y3etxj.html? - 配置本地连接
编辑有线连接,设置:
IP地址:192.168.1.x(x可以为1到254除开201以外的所有值,因为201是激光雷达的IP),参考:192.168.1.70
子网掩码:255.255.255.0
网关:192.168.1.1或者不设置
参考设置连接
注:设置有线连接,不影响无线联网,可以使用无线上网。 - 在浏览器中网址处输入192.168.1.201查看雷达配置信息
- 启动ros master
roscore
- 启动vlp16 velodyne_pointcloud 发布pointsCloud2 topic
roslaunch velodyne_pointcloud VLP16_points.launch
- 执行
rviz
打开rviz
将Global Options下的Fixed Frame 改成velodyne,若没有velodyne,执行7
或直接执行rviz -f velodyne
可以直接设置Fixed Frame
手动add topic pointsCloud2,此时会显示点云数据
vlp 16 velodyne_pointcloud 发布pointsCloud2 点云坐标系,是北东天(前左上)
VLP16 运行gmapping测试
参考链接:Velodyne VLP-16 gmapping 建图
-
手动发布base_link velodyne之间的转换,相当于机器人和雷达的坐标转换关系
rosrun tf static_transform_publisher 0 0 0 0 0 0 base_link velodyne 10
-
启动gmapping
rosrun gmapping slam_gmapping
-
启动 laser_scan_matcher_node,并指定 fixed_frame 为 odom:即使用 laser_scan_matcher作为前端里程计,即使 laser_scan_matcher发布odom tf,gmapping接收odom tf,发布map tf
rosrun laser_scan_matcher laser_scan_matcher_node _fixed_frame:=odom
如果没有安装gmapping,使用以下命令安装
sudo apt install ros-melodic-gmapping
-
查看tf树下frame关系是否完整
rosrun rqt_tf_tree rqt_tf_tree
-
rviz add from topic map显示map信息
遇到错误:
[ WARN] [1580994954.426403779]: MessageFilter [target=odom ]: Dropped 100.00% of messages so far. Please turn the [ros.gmapping.message_notifier] rosconsole logger to DEBUG for more information.
总结此类问题,大多是frame之间的转换关系缺少导致,
使用 rosrun rqt_tf_tree rqt_tf_tree参看tf树下frame关系是否完整,如下:
https://blog.csdn.net/weixin_44827364/article/details/104202536
https://answers.ros.org/question/246928/messagefilter-dropped-100-of-messages/
VLP-16 运行LOAM
LOAM安装运行:
mkdir -p catkin_velodyne/src
cd catkin_velodyne/src
git clone https://github.com/ros-drivers/velodyne.git
cd ..
rosdep install --from-paths src --ignore-src --rosdistro indigo -y
catkin_make
source devel/setup.bash
- 运行vlp
roslaunch velodyne_pointcloud VLP16_points.launch
- 运行loam
roslaunch loam_velodyne loam_velodyne.launch
如遇到multiScanRegistration错误,将loam_velodyne/CMakeLists.txt,下面删除第35行,add_definitions(-march = native),重新编译
结果图:
增加了path topic及tum轨迹保存代码:https://gitee.com/nie_xun/loam_velodyne.git
轨迹的保存位置,可以在
loam_velodyne/ launch / loam_velodyne_xsens.launch文件中更改。
轨迹显示及评测工具可以使用evo。测评工具evo安装与使用
evo安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple evo --upgrade --no-binary evo
轨迹绘制:
evo_traj tum traj_tumxxx.txt -p
便可显示轨迹。
VLP-16 运行A-LOAM
A-LOAM安装:
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
- 运行vlp
roslaunch velodyne_pointcloud VLP16_points.launch
- 运行A-LOAM
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch
运行结果图:去掉点云地图,只显示路径,不得不说loam真的是一种实时性及准确性都很好的算法。
A_LOAM建图同时构建栅格地图
sudo apt-get install ros-kinetic-octomap-ros #安装octomap
sudo apt-get install ros-kinetic-octomap-msgs
sudo apt-get install ros-kinetic-octomap-server
sudo apt-get install ros-kinetic-octomap-rviz-plugins
OccupancyGrid:显示三维概率地图
OccupancyMap:显示二维占据栅格地图。
DEMO-lidar编译问题
opencv 编译问题参考:ubuntu1804 编译opencv2问题及解决办法
DEMO_RGBD在UBUNTU16.04上运行的一些修改
个人遇到的一些问题
no matching function for call to ‘cv::Mat::Mat(IplImage*&)
问题出现在featureTracking.cpp中的
Mat imageShowMat(imageShow);
if (showCount == showSkipNum) {
//Mat imageShowMat(imageShow);
Mat imageShowMat(cv::cvarrToMat(imageShow));
bridge.image = imageShowMat;
bridge.encoding = "mono8";
sensor_msgs::Image::Ptr imageShowPointer = bridge.toImageMsg();
imageShowPubPointer->publish(imageShowPointer);