首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CObservation2DRangeScan中设置扫描角度?

如何在CObservation2DRangeScan中设置扫描角度?
EN

Stack Overflow用户
提问于 2021-05-08 04:44:34
回答 1查看 29关注 0票数 1

我正在尝试使用mrpt slam算法。我想将最初的"icp slam应用程序“改编为使用来自我的模拟的激光雷达扫描。如果我理解正确的话,我应该使用CObservation2DRangeScan类来包含激光雷达观测值。我的问题是我找不到如何设置扫描角度。我假设扫描必须使用极坐标,那么如果setScanRange以米为单位设置范围,我该如何设置角度?我在类中找不到合适的成员函数,我可能遗漏了什么。

到目前为止的代码示例:

代码语言:javascript
复制
    mrpt::obs::CObservation2DRangeScan::Ptr observation(new mrpt::obs::CObservation2DRangeScan);
    observation->resizeScan(i32NUM_POINTS);
    for(int32_t i = 0; i < i32NUM_POINTS; ++i)
    {
      observation->setScanRange(i, arrPoints[i].range);
      //here I must set the scan angle
      observation->setScanRangeValidity(i, true);
    }

mrpt版本: 2.2.1

提前谢谢你

马西莫

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 01:46:34

角度由向量内每个范围的索引隐式定义。我刚刚编辑了class docs以便更好地解释这一点。

请注意,此代码描述了索引和角度之间的确切关系:

代码语言:javascript
复制
float Ang = -0.5f * aperture;
float dA = aperture / (m_scan.size() - 1);
if (!rightToLeft)
{
 Ang = -Ang;
 dA = -dA;
}
return Ang + dA * idx;

另外:请注意,程序GridmapNavSimul已经允许您绘制网格地图世界,驱动机器人并生成模拟数据集,而无需编写任何代码……;-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67441475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档