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

本系列教程文章专栏:

ROS机器人GUI程序开发

本系列课程已上线古月学院,欢迎感兴趣的小伙伴订阅:

  1. ROS Qt开发环境搭建以及基础知识介绍
  2. ROS人机交互软件的界面开发
  3. ROS Rviz组件开发方法

在这里插入图片描述
开发交流QQ群: 797497206
完整项目代码:
github

前言

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

其实核心代码也就两三句,但是目前网上关于librviz的资料少之又少,连官方都没有api说明,只有最简单的一个demo。我也没找到实现类似功能的开源项目,于是我只能通过读rviz的源代码,找出了相关api,读了rviz的源代码不得不说rviz是如此强大。
现在分享出来供大家参考~~
文章末尾有完整项目地址哦~

一,实现效果:

在地图上选点后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地图顶上一行
在这里插入图片描述需要其他的功能自行添加即可:

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

三,完整开源项目

在我自己学习的过程中目前发现没有相关类似完整开源项目,为了帮助其他人少走弯路,我决定将自己的完整项目开源:
github
创作不易,如果本教程对你有帮助,关注或点个赞吧,或者github标个星哦~~
您的支持就是我最大的动力~

(转载请注明作者和出处:https://blog.csdn.net/qq_38441692 未经允许请勿用于商业用途)

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值