slam
文章平均质量分 87
cabinx
这个作者很懒,什么都没留下…
展开
-
Cartographer_ros-0.3.0安装
参照cartographer官方安装流程:http://google-cartographer-ros.readthedocs.io/en/latest/index.html 。流程会依次安装proto3、ceres-solver、cartographer和cartographer_ros。安装过程需要根据实际情况(针对无法翻墙的环境)做少许修改,流程如下: 一、安装wstool...原创 2018-04-25 14:27:31 · 721 阅读 · 0 评论 -
robot_pose_ekf初始化odometry协方差矩阵
在使用robot_pose_ekf时,常遇到接收到的odometry数据格式错误的问题。一个可能的原因为底盘或其他设备发布odometry数据的协方差矩阵默认为0矩阵。解决的方法由两种:一种为在底盘将信息封装发布前对协方差矩阵进行初始化;另一种方法为在robot_pose_ekf中添加判断,如果接收到的odometry信息的协方差矩阵没有进行初始化,则进行初始化。 做工程...原创 2018-05-22 12:07:34 · 7280 阅读 · 9 评论 -
使用EKF融合odometry及imu数据
整理资料发现早前学习robot_pose_ekf的笔记,大抵是一些原理基础的东西加一些自己的理解,可能有不太正确的地方。当时做工程遇到的情况为机器人在一些如光滑的地面上打滑的情形,期望使用EKF利用imu对odom数据进行校正。就结果来看,机器人旋转性能得到改善,前进方向性能没有改善,符合程序原理。若需要提高前进方向的性能,可以考虑加入VO或gps模块。实际工程中应注意odom数据进行...原创 2018-05-22 11:11:04 · 39633 阅读 · 65 评论 -
cartographer离线利用pbstream生成ros标准格式地图
利用cartographer的cartographer_pbstream_to_rosmap节点写了个launch文件,功能为离线将pbstream文件转换成标准ros格式地图。在早些版本曾有过类似launch文件,后被开发者删除。该node的代码位于pbstream_to_ros_map_main.cc。<launch> <node name="cartogra...原创 2018-05-15 12:03:57 · 9607 阅读 · 15 评论 -
给cartographer_ros的NodeOptions新增属性项
在使用cartographer进行slam相关工作时遇到希望从外部传递自定义的新数据,即在cartographer_ros中设置能通过lua配置文件从外部进行配置的新的属性。 以实际处理的问题为例:希望设置一个flag,表明此次任务是建图还是pure_localization,以便在建图模式时进行地图的处理及保存。 在此种方法便是在此次任务的NodeOptions中...原创 2018-04-28 15:34:36 · 1272 阅读 · 1 评论 -
cartographer输出机器人相对地图位姿
cartographer(0.3.0版本)中机器人位姿是以tf的格式发布的。cartographer在关于位姿的tf_tree为:map->odom->base_footprint。其中odom->base_footprint理解为激光模拟的里程计信息,map->odom理解为对里程计数据的补偿,如消除累积误差等。在应用中推荐把provide_odom_frame...原创 2018-04-28 14:53:56 · 8041 阅读 · 14 评论 -
修改cartographer动态发布的网格地图
cartographer运行过程中动态发布的nav_msgs/OccupancyGrid格式的topic可作为地图用于navigation。但是amcl接收网格地图后对数据做了处理:AmclNode::convertMap( const nav_msgs::OccupancyGrid& map_msg ){ map_t* map = map_alloc(); ROS_...原创 2018-05-18 17:30:29 · 2789 阅读 · 12 评论 -
teb_local_planner安装及使用
在机器人导航实验时,传统的navigation里的路径规划策略性能不佳。在尝试了teb_local_planner后,发现机器人导航性能得到非常大的提升。虽然teb_local_planner是局部规划的plugin,但是其能根据实际的环境情况实时更新全局路径,使得机器人的运动将十分只能。 teb_local_planner的详尽资料(包括安装及导航,参数调节等)请参考其...原创 2018-05-04 17:42:08 · 16168 阅读 · 11 评论 -
range_sonar_layer在navigation中的使用
此方法仅适用于采用源码安装的navigation包。一、下载sonar_layer的代码:https://github.com/DLu/navigation_layers 实际只需要其中的range_sensor_layer 放到工作空间catkin_make需要的地方。二、将plugin插入ros系统。可以参考:http://www.cnblogs.com/W-cho...原创 2018-04-26 17:43:18 · 2264 阅读 · 4 评论 -
cartographer生成ros格式地图
cartographer建图时保存的地图格式默认为.pbstream。而机器人的navigation需要标准的ROS格式地图(.pgm+.yaml)。在此采用一种讨巧的方法,在保存.pbstream格式的地图后同时将其另存为标准的ROS格式地图。cartographer_ros中已有离线.pbstream格式地图转ros标准格式地图接口,据此写了个函数供建图时cartographer节点...原创 2018-04-26 10:57:47 · 5741 阅读 · 3 评论 -
cartographer的localization模式设置初始位姿
cartographer的localization模式机器人的初始位姿默认为建图时的起点位姿。理论上机器人运动一段时间后通过新局部子图与全局地图相匹配能获取较为理想的位姿,故无需考虑机器人启动位姿。如果能知道机器人启动时的初始位姿,对机器人的导航还是有所帮助。故在此还是提供一个设置初始位姿的方法。 主要调用了github上作者们提供的initial_pose的接口。个人的理解可能不够...原创 2018-04-25 16:20:26 · 10535 阅读 · 6 评论 -
判断amcl位置与地图匹配程度
navigation启动时,amcl为机器人新建并维护一个粒子滤波器,通过匹配分值判断当前机器人位置与地图的匹配程度。为amcl添加一个输出匹配分值的功能。为了滤除噪声,取1s内5个分值(0.2s间隔)作为该时间段的分值。新建线程,每秒统计一次分值量化判断机器人位置的丢失程度。 取出当前时刻分值(pf.c)。#include <assert.h>#include...原创 2018-06-04 16:10:00 · 6856 阅读 · 14 评论