ros地图显示在android,ROS与QT语言入门教程-显示ROS发布的地图消息_scry.info的博客-程序员秘密

技术标签: ros地图显示在android  

ROS与QT语言入门教程-显示ROS发布的地图消息

说明:

在ROS QT GUI模板,实现显示ROS发布的地图消息

编辑ui文件:

main_window.ui文件:

拖入两个按钮控件,分别命名为romap和mapping

a89242770152174d0aa986f1225ef92d.png

mapp.ui文件:

拖入五个按钮分别对应前后左右停止,并拖入按钮mapping用来显示地图,按钮quit退出

dfb34e47a3b5a3a9812762bcfd3725b1.png

romap.ui文件:

拖入按钮display用来显示地图,按钮quit退出

1225e08a5f96d360d6004a32890bee1a.png

编辑主窗口:

main_window.hpp头文件:

private slots:

void on_pushButton_clicked();

void on_btn_mapping_clicked();

main_window.cpp源码:

void robomap::MainWindow::on_pushButton_clicked()

{

RoMap *map = new RoMap;

map->show();

}

void robomap::MainWindow::on_btn_mapping_clicked()

{

MAPP *mapp=new MAPP;

mapp->show();

}

代码解释:

定义并实现了两个槽函数

编辑地图:

mapp.h头文件:

private slots:

void on_btn_map_clicked();

void on_btn_quit_clicked();

void on_btn_back_pressed();

void on_btn_back_released();

void on_btn_left_pressed();

void on_btn_right_pressed();

void on_btn_forward_pressed();

void on_btn_stop_clicked();

private:

Ui::MAPP *ui;

rviz::VisualizationManager *manager_;

rviz::RenderPanel *render_panel_;

rviz::Display *map_;

QTimer *m_timer;

代码解释:

声明了对应的槽函数

声明可视化管理类VisualizationManager,并初始化,就可以不断更新

声明rviz的RenderPanel,这个面板类最终继承QWidget

mapp.cpp源文件:

void MAPP::on_btn_map_clicked()

{

manager_->removeAllDisplays();

rviz::Display *map_=manager_->createDisplay("rviz/Map","adjustable map",true);

ROS_ASSERT(map_!=NULL);

map_->subProp("Topic")->setValue("/map");

rviz::Display *robot_=manager_->createDisplay("rviz/RobotModel","adjustable robot",true);

ROS_ASSERT(robot_!=NULL);

robot_->subProp("Robot Description")->setValue("robot_description");

rviz::Display *laser_=manager_->createDisplay("rviz/LaserScan","adjustable scan",true);

ROS_ASSERT(laser_!=NULL);

laser_->subProp("Topic")->setValue("/scan");

laser_->subProp("Size (m)")->setValue("0.1");

}

代码解释:

创建了显示createDisplay(),然后添加topic值,加载地图

void MAPP::on_btn_left_pressed()

{

ros::NodeHandle node;

cmdVelPub = node.advertise<:twist>("/cmd_vel", 1);

ROS_INFO("move_turtle_goforward cpp start...");

geometry_msgs::Twist speed;

speed.linear.x = 0;

speed.angular.z = 0.05;

cmdVelPub.publish(speed);

}

代码解释:

向前、向后、向左、向右、停止的函数大同小异,主要修改speed.linear.x和speed.angular.z

为这个进程的节点创建一个句柄node

在/cmd_vel 话题发布一个geometry_msgs/Twist的消息

控制信号载体Twist message

设置线速度为0m/s,正为前进,负为后退 (0)

设置角速度为0.05rad/s,正为左转,负为右转 (0.5)

将刚才设置的指令发送给机器人cmdVelPub.publish()

运行效果:

7e6cccc52c034460eddcf51037391feb.png

参考资料

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_35282782/article/details/117615104

智能推荐

用python做算法题的一些小技巧_python 算法题 技巧_kevin_Junjie的博客-程序员秘密

heapqa[k] &lt;= a[2k+1] and a[k] &lt;= a[2k+2],(k从0开始),则这个列表是小顶堆(不存在的元素被视为无限大)heapq库是python自带的最小堆实现常用方法:heapq.heappush(heap,item)当插入一个元素时,该方法会自动调堆中元素的位置。比如插入一个比堆顶还小的元素,则新加入的节点会依次向父节点进行比较,然后调整...

第十周 任务三 3-1 先声明点类,在派生出圆类 圆柱类_dizzy12的博客-程序员秘密

* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:先声明点类,在派生出圆类 圆柱类* 作    者:  张启立                           * 完成日期:  2012年 4 月 16 日* 版 本 号: 10-3-1   #include

java 若要增加菜单分割线可使用方法_java课程总结_柯一颗的博客-程序员秘密

一、数据类型:1、基本数据类型;(1)数值型:整数类型:byte,short,int,long;浮点型:float,double;(2)字符型:char;(3)布尔型:boolean;2、引用数据类型:类;接口;数组;二、变量使用规则:先声明再使用;可以在声明的同时进行初始化;变量中每次只能赋一个值,但可以修改多次;变量名使用中文无语法错误,但不建议使用;三、自动类型转换需满足的条件目标类型能与源...

malloc/free VS new/delete_lanzily99的博客-程序员秘密

1.malloc和new  malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符,它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数,由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函

贪心--HOJ-1062-数列极差问题_数列极差问题题意_代码敌敌畏的博客-程序员秘密

数列极差问题题意:N个正整数组成的一个人数列,并进行如下操作:每次擦去其中的两个数a和b,然后在数列中加人一个数a*b+1,如此下去直至剩下一个数,按这样的方式最后得到的数中 最大为max,最小为min,极差的定义为max-min;请你编程求极差;输入格式:输入有多组数据,第一个数N表示长度(0--50000),随后是N个正整数。31 2 368 6 5 9 7 1输出:23672分析:max是每...

白兵机器人怎样连接_面部识别+App互动,UBTECH 优必选 星球大战系列 智能语音白兵机器人..._沐云希的博客-程序员秘密

这款UBTECH Star Wars First Order Stormtrooper Robot with Companion App优必选 智能语音白兵机器人,属于星球大战系列,黑科技AR(增强现实)模式,可进行App互动体验,高度还原星球场景,通过语音下达行动指令,控制机器人执行相应指令,机器人通过手机Wifi互连,安全可靠,兼容iOS和Android系统。带有面部生物识别技术,可自定义存储...

随便推点

[ 物联网篇 ] 14 - 联发科MTK8516 Yocto技巧_程序手艺人的博客-程序员秘密

MTK8516 提供的SDK通过Yocto来进行构建, 由于Yocto入门门槛较高,刚开始也才过不少坑,这里记录下.Yocto中相关.bb文件中如何添加打印在recipes中加入打印信息,有两种方式第一是Python形式,该形式可在console上打印出来: bb.plain, bb.note, bb.warn, bb.error, bb.fatal, bb.debug另一种是bash形...

聊城大学c语言实验报告,c语言程序设计(包云)c第1章概述.ppt_范不易cool的博客-程序员秘密

c语言程序设计(包云)c第1章概述.pptC语言程序设计,讲授包云 单位聊城大学计算机学院,第1章 C语言概述,3,主要内容,1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展及其特点 1.4 简单的C程序介绍 1.5 C程序的上机步骤与方法,4,1.1什么是程序设计,什么是程序 为了解决某一特定问题用某一种计算机语言编写的指令序列称为程序。 什么是程序设计 程序是程序设计的...

仪表识别之数字表识别_yy2yy99的博客-程序员秘密

转自:https://blog.csdn.net/huneng1991/article/details/82049207这篇文章讲述了仪表上的数字表的识别,看图片效果还是挺好的,这里记录一下备用。2.识别检测方法这篇文章主要用的方法是机器学习中的检测+传统方法的颜色分割。流程如下:       1)仪表检测       2)数字区域分割       3)数字检测 2...

【科普】CAN总线介绍及FPGA实现方案简介_碎碎思的博客-程序员秘密

【科普】CAN总线介绍及FPGA实现方案简介这里我们先逆推一下CAN总线的一些特点。第一,CAN总线分层结构我们根据can总线具有的一些特性可知:CAN总线肯定具有分层结构,而且参考OSI...

透露一下我分享文章的几个平台(附PDF文章下载)_strongerHuang的博客-程序员秘密

置顶/星标公众号,不错过每一条消息!1.写在前面首先说下,为什么写本文?很多朋友反映,微信公众号阅读体验不怎么好。看图文内容效果不好,查找历史文章不方便。偷偷告诉大家,在...

Ubuntu18.04+ZED SDK安装+ZED Python API+zed ros wrapper安装 手把手详细教程_CVplayer111的博客-程序员秘密

Ubuntu18.04+ZED SDK安装+ZED Python API+zed ros wrapper安装 手把手详细教程

推荐文章

热门文章

相关标签