• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)

人工智能 蒋程扬 1953次浏览 0个评论

在前面几篇教程中我们已经实现了订阅map话题,这篇我们主要就是实现rviz中的设置目标点和初始点的功能。

 

其实核心代码也就两三句,但是目前网上关于librviz的资料少之又少,连官方都没有api说明,只有最简单的一个demo。我也没找到实现类似功能的开源项目,于是我只能通过读rviz的源代码,找出了相关api,读了rviz的源代码不得不说rviz是如此强大。

  
现在分享出来供大家参考~~文章末尾有完整项目地址哦~

一,实现效果:

在地图上选点后librviz就会自动进行变换,发布目标点信息。

  
实现如下:

ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)

 

可以发现控制台提示已经发布了位置点话题:

在这里插入图片描述

二,核心代码

首先通过rviz控制对象获取ToolManager工具对象

//初始化rviz控制对象
manager_=new rviz::VisualizationManager(render_panel_);
//获取当前rviz控制对象的 tool控制对象
tool_manager_=manager_->getToolManager();

 

之后就能通过工具对象选取导航目标点

//设置机器人导航目标点
void QRviz::Set_Goal()
{
    //添加工具
   current_tool= tool_manager_->addTool("rviz/SetGoal");

   //设置goal的话题
   rviz::Property* pro= current_tool->getPropertyContainer();
   pro->subProp("Topic")->setValue("/move_base_simple/goal");

   //设置当前frame
   manager_->setFixedFrame("map");

   //设置当前使用的工具为SetGoal(实现在地图上标点)
   tool_manager_->setCurrentTool( current_tool );

   manager_->startUpdate();
}

 

设置机器人初始点也是同理:

//设置机器人导航初始位置
void QRviz::Set_Pos()
{
    //获取设置Pos的工具
    //添加工具
    current_tool= tool_manager_->addTool("rviz/SetInitialPose");

    //设置当前使用的工具为SetInitialPose(实现在地图上标点)
    tool_manager_->setCurrentTool( current_tool );
    manager_->startUpdate();

    // tool_manager_->setCurrentTool()
}

 


ToolManager的所有类别名
其实也就是rviz地图顶上一行

ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)

 

需要其他的功能自行添加即可:

"rviz/MoveCamera";
"rviz/Interact";
"rviz/Select";
"rviz/SetInitialPose";
"rviz/SetGoal";

 

三,完整开源项目

在我自己学习的过程中目前发现没有相关类似完整开源项目,为了帮助其他人少走弯路,我决定将自己的完整项目开源:
github

 

转载自:

蒋程扬的部落格


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ROS Qt5 librviz人机交互界面开发七(发布导航目标点和原点位置)
喜欢 (0)

您必须 登录 才能发表评论!

加载中……