我正在研究 rviz 教程,并試圖弄清楚如何使用示例代碼“teleop_panel”來繪制 3d 場景。根據教程,這應該是可能的“RViz 中的面板是一個 GUI 小部件,可以停靠在主視窗中或浮動。它不像顯示那樣在“顯示”面板中顯示屬性,但它可以在3D場景。” 但我不知道如何修改源代碼以將資料實際注入 3d 場景(如 IMUDisplay 插件的作業原理)。
我的用例是我想有一種方法來擁有某種形式的豐富 qt 面板(帶有控制元件、指示器等),可以連接到其他 ROS 主題并在主 3d 場景中繪制。我不相信其他選項(例如顯示插件)可以做到這一點,但我可能是錯的。
uj5u.com熱心網友回復:
從 teleop_panel 插件教程開始時,將以下成員添加到 TeleopPanel 類:
Ogre::SceneManager* scene_manager_;
Ogre::SceneNode* childScene;
rviz::MovableText* helloWorldText;
接下來將以下代碼添加到 onInitialize() 方法中:
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);
最后清理添加以下解構式:
TeleopPanel::~TeleopPanel() {
// Destroy the child scene node since we don't need it anymore.
scene_manager_->destroySceneNode(childScene);
}
現在,當您加載面板時,您應該會看到“Hello World!” 在 3D 場景中為 0.0。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/417433.html
標籤:
下一篇:Qt創建者洗掉了檔案并且無法恢復
