当分析到cartographer前端的核心类:LocalTrajectoryBuilder时,其正是进行局部地图构建和轨迹构建的关键,而在该类的轨道建设工作中,有一个重要成员(std:: unique_ptr < PoseExtrapolator > extrapolator_),其在LocalTrajectoryBuilder2D(3D)中功能简单的来说就是保持一段时间的pose并估计线性速度和角速度以推断运动(旋转...
1)取点云获取的时间为基准初始化PoseExtrapolator 如果不使用IMU,就初始化位姿推断器,由于cartographer中...
1)取点云获取的时间为基准初始化PoseExtrapolator 如果不使用IMU,就初始化位姿推断器,由于cartographer中...
imu数据:imu数据(包含 两个方向的线加速度,角速度)——> 预处理 (ImuTracker)——> 姿态外推器 ——>扫描匹配 2、姿态外推器 (PoseExtrapolator) 用于给扫描匹配 (Scan Matching)提供初值。 输入:odom、imu、上一次前端匹配完成的 last_pose 输出:下一次前端匹配的初始pose 处理思路: odom和old_odom 计算 (...
先看一下PoseExtrapolator的实现: 解释一下它的功能:保持某个时间段内的位姿以估计线速度和角速度;用速度来推测运动;如果使用了IMU或者odometry则可以改善推测效果。 pose_extraplator.h classPoseExtrapolator :publicPoseExtrapolatorInterface {public:explicitPoseExtrapolator(common::Duration pose_queue_duration,doubleim...
先看一下PoseExtrapolator的实现: 解释一下它的功能:保持某个时间段内的位姿以估计线速度和角速度;用速度来推测运动;如果使用了IMU或者odometry则可以改善推测效果。 pose_extraplator.h class PoseExtrapolator : public PoseExtrapolatorInterface { public:
use_pose_extrapolator = true, -- true改为false,不使用里程计数据 use_odometry = false, use_nav_sat = false, use_landmarks = false, -- 0改为1,使用一个雷达 num_laser_scans = 1, -- 1改为0,不使用多波雷达 num_multi_echo_laser_scans = 0, ...
use_pose_extrapolator = on, TRAJECTORY_BUILDER.collate_landmarks = on 里面的horizontal_laser_link,改成自己激光雷达的frame_id,我的是laser,一般都是laser,其余的不要动。 三、修改demo_revo_lds.launch文件 定位到文件路径: ~/catkin_google_ws/src/cartographer_ros/cartographer_ros/launch/demo_revo_lds...
lua_parameter_dictionary->GetBool("use_pose_extrapolator"); }returnoptions; } AI代码助手复制代码 上面的程序是根据lua字典中的参数, 生成protobuf的序列化数据结构, 结构体NodeOptions定义在头文件中,其中有个元素为::cartographer::mapping::proto::MapBuilderOptions map_builder_options;是proto类型,在上述程序...
移动滤波max_time_seconds =5.,--2帧激光最小间隔max_distance_meters =0.2,--2帧激光最小距离max_angle_radians =math.rad(1.),--2帧激光最小角度},-- TODO(schwoere,wohe): Remove this constant. This is only kept for ROS.imu_gravity_time_constant =10.,--imu的重力常数pose_extrapolator = ...