rplidar & hector slam without odometry
接上一篇:1.rplidar测试
方式一:测试使用rplidar A2跑一下手持的hector slam,参考文章:用hector mapping构建地图
但是roslaunch exbotxi_bringup 2dsensor.launch 和 roslaunch exbotxi_nav hector_mapping_demo.launch
这两个文件都没有搜索到。需要更新exbot_xi开发包。https://github.com/yuanboshe/exbot_xi/tree/hydro/exbotxi_bringup/launch
cd ~/catkin_ws/src/exbot_xi
git pull
如果出现 Already up-to-date. 的提示,则更新成功。如果对包有所修改,可能有些情况下无法更新,那么可以使用
git reset --hard
reset一下,然后再使用 git pull 更新。
之后编译。
cd ~/catkin_ws/
catkin_make
修改rplidar_2d_sensor.launch.xml 文件,/home/exbot/catkin_ws/src/exbot_xi/exbotxi_bringup/launch/includes/rplidar_2d_sensor.launch.xml,修改
<node name="exbot_rplidar" pkg="rplidar_ros" type="rplidarNode" output="screen">
完整文件:(奇怪,端口<arg name="laser_port" default="/dev/ttyUSB1" />似乎也应该改啊,改成/dev/ttyUSB0,没改居然也没问题)
<launch>
<arg name="scan_topic" default="scan" />
<arg name="laser_frame" default="laser_link" />
<arg name="laser_port" default="/dev/ttyUSB1" /> <node name="exbot_rplidar" pkg="rplidar_ros" type="rplidarNode" output="screen">
<param name="com_path" type="string" value="$(arg laser_port)" />
<param name="com_baudrate" type="int" value="" />
<param name="frame_id" type="string" value="$(arg laser_frame)" />
<param name="range_min" type="double" value="0.18" />
<param name="range_max" type="double" value="6.0" />
<remap from="scan" to="$(arg scan_topic)"/>
</node>
</launch>
修改hector_mapping.launch.xml文件,/home/exbot/catkin_ws/src/exbot_xi/exbotxi_nav/launch/includes/hector_mapping.launch.xml
<param name="base_frame" value="base_frame" />
<param name="odom_frame" value="base_frame" />
完整文件:
<launch> <arg name="scan_topic" default="scan" /> <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_frame" />
<param name="odom_frame" value="base_frame" />
<param name="map_resolution" value="0.05" />
<param name="map_size" value="" />
<param name="laser_max_dist" value="3.9" />
<param name="tf_map_scanmatch_transform_frame_name" value="odom_laser" />
<remap from="scan" to="$(arg scan_topic)"/>
</node>
</launch>
编译之后按照 用hector mapping构建地图 文章中的步骤:
roscore
roslaunch exbotxi_bringup fake_exbotxi.launch
roslaunch exbotxi_bringup 2dsensor.launch
roslaunch exbotxi_nav hector_mapping_demo.launch
roslaunch exbotxi_rviz view_navigation.launch
新建5个终端,让rplidar水平移动,会出现建图结果。


另外的实现方式:从原始代码编译hector_slam,参考 http://blog.csdn.net/eaibot/article/details/51044718
编译hector_slam过程中出现Cmake Error,好像是找不到Find cmake_modules.cmake什么的。猜想是cmake_modules包没有安装。
解决方法。
exbot@ubuntu:~$ cd ~/catkin_ws/src
exbot@ubuntu:~/catkin_ws/src$ git clone https://github.com/ros/cmake_modules.git
Cloning into 'cmake_modules'...
remote: Counting objects: 344, done.
remote: Total 344 (delta 0), reused 0 (delta 0), pack-reused 344
Receiving objects: 100% (344/344), 61.88 KiB | 34 KiB/s, done.
Resolving deltas: 100% (191/191), done. exbot@ubuntu:~/catkin_ws/src$ cd ..\
>
exbot@ubuntu:~/catkin_ws$ catkin_make --pkg cmake_modules
之后按照参考文献的步骤,可以实现同样的结果。
在rplidar_ros/launch/目录下添加hector_mapping_demo.launch文件,内容如下:
<launch> <node pkg="hector_mapping" type="hector_mapping" name="hector_mapping" output="screen">
<!-- Frame names -->
<param name="pub_map_odom_transform" value="true"/>
<param name="map_frame" value="map" />
<param name="base_frame" value="base_link" />
<param name="odom_frame" value="base_link" /> <!-- Tf use -->
<param name="use_tf_scan_transformation" value="true"/>
<param name="use_tf_pose_start_estimate" value="false"/> <!-- Map size / start point -->
<param name="map_resolution" value="0.05"/>
<param name="map_size" value="2048"/>
<param name="map_start_x" value="0.5"/>
<param name="map_start_y" value="0.5" />
<param name="laser_z_min_value" value = "-1.0" />
<param name="laser_z_max_value" value = "1.0" />
<param name="map_multi_res_levels" value="2" /> <param name="map_pub_period" value="2" />
<param name="laser_min_dist" value="0.4" />
<param name="laser_max_dist" value="5.5" />
<param name="output_timing" value="false" />
<param name="pub_map_scanmatch_transform" value="true" />
<!--<param name="tf_map_scanmatch_transform_frame_name" value="scanmatcher_frame" />--> <!-- Map update parameters -->
<param name="update_factor_free" value="0.4"/>
<param name="update_factor_occupied" value="0.7" />
<param name="map_update_distance_thresh" value="0.2"/>
<param name="map_update_angle_thresh" value="0.06" /> <!-- Advertising config -->
<param name="advertise_map_service" value="true"/>
<param name="scan_subscriber_queue_size" value="5"/>
<param name="scan_topic" value="scan"/>
</node> <node pkg="tf" type="static_transform_publisher" name="base_to_laser_broadcaster" args="0 0 0 0 0 0 /base_link /laser 100"/> <node pkg="rviz" type="rviz" name="rviz"
args="-d $(find hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/> </launch>
ros命令
roslaunch rplidar_ros hector_mapping_demo.launch
roslaunch rplidar_ros rplidar.launch
rplidar & hector slam without odometry的更多相关文章
- 【ros】rplidar Hector Slam
想用rplidar跑一下hector slam,在网上发现了几个教程写的都不错,但是亲测发现都有点不足,综合了一下,进行补充. 1. 安装ros 和 创建工作空间 http://blog.csdn.n ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- 基于视觉的 SLAM/Visual Odometry (VO) 开源资料、博客和论文列表
基于视觉的 SLAM/Visual Odometry (VO) 开源资料.博客和论文列表 以下为机器翻译,具体参考原文: https://github.com/tzutalin/awesome-vis ...
- Hector SLAM解读(1)原文翻译
一种带有3D运动状态估计的slam系统 A Flexible and Scalable SLAM System with Full 3D Motion Estimation 摘要: 在许多应用场景 ...
- 【Hector slam】A Flexible and Scalable SLAM System with Full 3D Motion Estimation
作者总结了SLAM前端和后端的区别 While SLAM frontends are used to estimate robot movement online in real-time, the ...
- 2D激光SLAM算法比较+cartographer
Hector slam: Hector slam利用高斯牛顿方法解决scan-matching问题,对传感器要求较高. 缺点:需要雷达(LRS)的更新频率较高,测量噪声小.所以在制图过程中,需要rob ...
- SLAM的现在与未来
http://geek.csdn.net/news/detail/202128 作者:高翔,张涛,刘毅,颜沁睿. 编者按:本文节选自图书<视觉SLAM十四讲:从理论到实践>,系统介绍了视觉 ...
- GitHub 上优秀的开源SLAM repo (更新中)
GitHub 上优秀的开源SLAM repo (更新中) 欢迎 watch/star/fork 我们的 GitHub 仓库: Awesome-SLAM, 或者follow 项目的主页:Awesome- ...
- 制作自己的ros机器人(navigaion)前提--22
摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 一.要求: 1.大家已经对ROS的基本概念(进程间通讯topic service 数据类型 m ...
随机推荐
- 简述Linux命令初使用
.cd 命令 cd 命令经常使用来改变目录 root@test:~# cd /home/user/Desktop root@test:~# cd .. 返回上一级目录 root@test:~# cd ...
- 移动WEB前端开发资源整合
meta篇 1.视窗宽度 <meta name="viewport" content="width=device-width,initial-scale=1.0,m ...
- 【MongoDB】5.MongoDB与java的简单结合
1.首先 你的清楚你的MongoDB的版本是多少 就下载对应的架包 下载地址如下: http://mongodb.github.io/mongo-java-driver/ 2.新建一个项目 把架包 ...
- WPF,textBox默认是失去焦点绑定值才改变,怎么做到输入框值一改变就改变绑定值. Text="{Binding EvaluationContent,UpdateSourceTrigger=PropertyChanged}"
如果用户提出只要textBox1的文本改变slider1的滑块立刻响应,那就设置Binding的UpdateSourceTrigger属性.它是一个UpdateSourceTrigger类型枚举值,默 ...
- Codeforces Round #354 (Div. 2)
贪心 A Nicholas and Permutation #include <bits/stdc++.h> typedef long long ll; const int N = 1e5 ...
- 【原】iOS学习之控制器的创建
本次博客是一篇总结性质的博客,总结的是各种创建控制器的方式以及一些需要注意的操作. 1.通过storyboard创建控制器 正如我上一篇博客中所说,当 Main Interface 没有选定的时候,我 ...
- 洛谷 P2737 [USACO4.1]麦香牛块Beef McNuggets Label:一点点数论 && 背包
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- Hadoop生态圈
1.Hadoop是什么? 适合大数据的分布式存储与计算平台 HDFS: Hadoop Distributed File System分布式文件系统 MapReduce:并行计算框架 解决的问题: HD ...
- mongodb用子文档做为查询条件的两种方法
{ "_id": ObjectId("52fc6617e97feebe05000000"), "age": 28, "level& ...
- AJAX实现跨域的三种方法
由于在工作中需要使用AJAX请求其他域名下的请求,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地的资源,而不能跨域访问. 比如说你的网站域名是aaa.com,想要通过AJAX请 ...