首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ROS rviz面板绘制3d场景?

如何使用ROS rviz面板绘制3d场景?
EN

Stack Overflow用户
提问于 2022-01-18 13:26:39
回答 1查看 380关注 0票数 0

我正在阅读rviz教程,并试图找出如何使用示例代码"teleop_panel“在3d场景中绘制。根据本教程,“RViz中的一个面板是一个图形用户界面小部件,可以停靠在主窗口或浮动。它不会在”显示“面板中显示属性,比如显示,但它可以在3D场景中显示东西。”但是我不知道如何修改源代码来将数据实际注入到3d场景中(比如IMUDisplay插件是如何工作的)。

我的用例是,我希望有一种方法来拥有某种形式的富qt面板(带有控件、指示器等),它可以连接到其他ROS主题并在主要的3d场景中绘制。我认为其他选项(比如显示插件)不可能做到这一点,但我可能错了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 19:21:42

从teleop_panel插件教程开始时,向TeleopPanel类添加以下成员:

代码语言:javascript
复制
Ogre::SceneManager* scene_manager_;
Ogre::SceneNode* childScene;
rviz::MovableText* helloWorldText;

接下来,将以下代码添加到onInitialize()方法中:

代码语言:javascript
复制
scene_manager_ = vis_manager_->getSceneManager();
childScene = scene_manager_->getRootSceneNode()->createChildSceneNode();

helloWorldText = new rviz::MovableText("Hello World!");
childScene->attachObject(helloWorldText);
helloWorldText->setColor(Ogre::ColourValue::Red);
helloWorldText->setCharacterHeight(2);
helloWorldText->setVisible(true);

最后,为了清理,添加以下析构函数:

代码语言:javascript
复制
TeleopPanel::~TeleopPanel() {
    // Destroy the child scene node since we don't need it anymore.
    scene_manager_->destroySceneNode(childScene);
}

现在,当您加载面板时,您应该看到"Hello!“在3D场景中的0.0。

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

https://stackoverflow.com/questions/70756336

复制
相关文章

相似问题

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