【问题标题】:Reading external 2D Laser Scan Data in mrpt在 mrpt 中读取外部 2D 激光扫描数据
【发布时间】:2016-06-21 07:39:33
【问题描述】:

我正在尝试读取激光扫描数据,然后将其用于构建地图 环境。

我的问题是,我不明白必须以什么格式将数据提供给 CObservation2DRangeScan 对象。

我试过了:

X,Y,X,Y,...
Y,X,Y,X,...
X,X,Y,Y,...
Y,Y,X,X,...

我将数据写入 rawlog 文件,然后在 rawlog 查看器中查看。 我使用了 [1,1],该点出现在 X=-1 和 Y=0 处。这是为什么呢?

这是来自 rawlog 查看器的数据

Timestamp (UTC): 2016/06/21,07:22:42.166880
(as time_t): 1466493762.16688
(as TTimestamp): 131109673621668800
Sensor label: ''

Homogeneous matrix for the sensor's 3D pose, relative to robot base:
1.00000 0.00000 0.00000 0.00000
0.00000 1.00000 0.00000 0.00000
0.00000 0.00000 1.00000 0.00000
0.00000 0.00000 0.00000 1.00000(x,y,z,yaw,pitch,roll)
(0.0000,0.0000,0.0000,0.00deg,-0.00deg,0.00deg)
Samples direction: Right->Left
Points in the scan: 2
Estimated sensor 'sigma': 0.010000
Increment in pitch during the scan: 0.000000 deg
Invalid points in the scan: 0
Sensor maximum range: 80.00 m 
Sensor field-of-view ("aperture"): 360.0 deg
Raw scan values: [1.000 1.000 ]
Raw valid-scan values: [1 1 ]

这是我正在使用的代码:

CSensoryFrame SF;

CActionCollection actionCol;

CPose2D actualOdometryReading(0.0f, 0.0f, DEG2RAD(.0f));

// Prepare the "options" structure:
CActionRobotMovement2D                      actMov;
CActionRobotMovement2D::TMotionModelOptions opts;

opts.modelSelection = CActionRobotMovement2D::mmThrun;
opts.thrunModel.alfa3_trans_trans = 0.10f;

// Create the probability density distribution (PDF) from a 2D odometry reading:
actMov.computeFromOdometry(actualOdometryReading, opts);

actionCol.insert(actMov);

CObservation2DRangeScanPtr myObs = CObservation2DRangeScan::Create();


myObs->scan = scan; // = [1,0]
myObs->validRange = vranges; // = [1,1]
myObs->aperture = 2 * M_PI;


SF.insert(myObs);

【问题讨论】:

    标签: c++ sensors robotics slam


    【解决方案1】:

    我并不完全熟悉 MRPT 的激光数据类的详细信息,但在使用过其他机器人框架后,我可以告诉您,激光扫描通常表示为 范围 值的集合,而不是比笛卡尔 (x,y) 坐标。事实上,reference 表示CObservation2DRangeScan 成立

    具有所有范围测量值(以米为单位)的浮点值向量。

    你的程序输出显示:

    Raw scan values: [1.000 1.000 ]
    

    即 1m 距离的两个范围测量。由于您的传感器配置为具有 360 度视野,因此第一次测量将在传感器姿势的 -180° 方向上进行。您的传感器面向 +X,因此该激光射线瞄准机器人“后面”,从而为您提供坐标 (−1, 0)。第二条(也是最后一条)测量光线朝向 +180°,给出相同的坐标。

    尝试传入 1 米的 360 度测量范围列表,您应该会看到与圆圈相对应的东西。

    【讨论】:

    • 那么问题来了,如何使用点形式的激光扫描数据,而不是距离测量。
    • 你可能想使用CSimplePointsMap之类的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多