https://blog.csdn.net/LOVE1055259415/article/details/80575432

基于ROS的QT界面开发史上最强教程

使用ROS下的QT插件开发基于ROS界面的程序

1、安装ROS下的ros_qtc_plugin插件及git、gitk工具

1.1.官方指导教程

https://ros-industrial.github.io/ros_qtc_plugin/_source/How-to-Install-Users.html

1.2.坊间流传教程【参考我之前的博文】

ROS下QT环境搭建: https://blog.csdn.net/love1055259415/article/details/80219749

QT导入ROS工程:https://blog.csdn.net/LOVE1055259415/article/details/80066519

1.3.git、gitk工具安装

https://mp.csdn.net/postedit/8029079

注意,此方式是在本地仓库上创建代码版本库进行管理,未上传到自己的github。安装git:sudo apt-get install git,接着配置请戳http://www.codexiu.cn/GIT/blog/39420/

2、开发环境配置与开发实例说明【必备参考资料】

https://blog.csdn.net/lightrain0/article/details/71642103

http://www.cnblogs.com/casperwin/p/6206193.html

2.1.最重要的是下面两个pkg的安装配置,基于系统版本,indigo或者是kinect版本

http://www.cnblogs.com/casperwin/p/6206193.html  中第四条4) Qt Dependances needed in ROS

sudo apt-get install ros-indigo-qt-create   [sudo apt-get install ros-kinetic-qt-create ]

sudo qpt-get install ros-indigo-qt-build    [sudo apt-get install ros-kinetic-qt-build ]

注意:记住该安装方法,在以后的开发过程中,如果有报错的,需要安装相应的包来解决。

2.2. 创建QTROS代码模板

Createa QtROS GUI template

$cd src

$catkin_create_qt_create qtros

$ source devel/setup.bash

where“qtros” is the package name you created.

Normally,it will show you as

2.3 运行调试

添加ROS Attach和ROS run

2.4. “官方”Tutorial及其他参考教程

【重要】“官方”教程

http://www.cnblogs.com/casperwin/p/6206193.htm

github中其他参考模板

https://github.com/stonier/qt_ros

2.5.工程写法与注意事项

仿照qnode.hpp、qnode.cpp分别实现各个节点的功能,最终生成一个启动文件,在devel/lib/${project}/目录下

可能出现的问题:

(1)可能出现找不到opencv相关的函数、找不到opencvCmake.txt文件等错误(即使你已经定义好、装好opencv、也找的到相关cmake文件)

此时,修改节点配置文件CMakeList.txt,添加OpenCV,同时加上:

find_package( OpenCV  REQUIRED)  【其他地方的这种问题也可以这样解决】

find_package(catkin REQUIRED COMPONENTS qt_build roscpp std_msgs cv_bridge image_transport OpenCV)

(2)BOOST库的问题

解决办法:https://blog.csdn.net/h321654/article/details/54582341

参考工程demo:https://github.com/xpharry/ROSCppGUI/tree/master/QtROS_GUI。尤其注意回调函数的写法:

声明:

定义:

2.6.节点间编译实现方式、顺序

2.6.1 star函数与ros::star()函数

2.6.2 添加好自己的节点之后,编译无错误,但是如何让自己的节点运行呢?

2.6.3 节点类是在哪里实例化?

2.6.4 mainwindow中的信号槽?窗口移动与固定大小?

2.6.5 mainwindow中实例化节点时候,报错,节点初始化函数找不到解决办法:

回到终端,找到项目工程路径,然后手动catkin_make,编译通过

2.6.6 ros中定时器回调函数的触发方式

ros中设置定时器后,依靠ros::spin()方法和ros::spin()方法来出发定时器事件!只有在执行到这两句话之后才会触发回调函数[不仅仅是定时器回调,还包括其他回调]。spin会在回调函数队列中死循环,不执行下一句话,spinOnce会执行一次回调函数,然后接着执下面的代码。关于二者详细的比较可以参照这篇博客https://blog.csdn.net/LOVE1055259415/article/details/79553663 。

2.7 终端调用

2.7.1 终端调用的几种形式

(1)   &表示执行此终端调用后可以执行其他终端调用或者响应,这里不加&的话,执行roscore会闪退。

  system("gnome-terminal  -x bash -c ' roscore '&");

(2)  limited:=true'&表示的含义是??

  system("gnome-terminal  -x bash -c ' roslaunch usb_cam usb_cam-test.launch limited:=true'&");

(3) sim:= true' &表示的含义是??

  system("gnome-terminal -x bash -c 'source /home/ubuntu/turtlebot/devel/setup.bash;roslaunch turtlebot_rviz_launchers view_navigation.launch sim:=true'&");

2.7.2

3、Linux下串口设备别名及赋予读写权限

在机器人开发过程中,发现串口号经常变,每次插入不同的位置,串口号都可能会变化,如果每次都在程序中修改串口号就太麻烦 了, 因此重新给串口设置别名,利用第二个名字来在程序中读取,就可以避免这种问题了

https://blog.csdn.net/zong596568821xp/article/details/78579734

sudo gedit /etc/udev/rules.d/rplidar.rules

添加以下内容:

KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0777", SYMLINK+="rplidar"

4、QT下使用C++和Python混合编程

https://www.cnblogs.com/xia-weiwen/p/7932379.html

5、socket图传,C++与Python混合编程

6、qt编程学习

http://www.icoolxue.com/album/show/282

6.1 qt使用web空间显示网页

注意,ROS下qt工程不同于普通ROS工程【项目配置文件是.pro文件】,是CMake工程【项目配置文件是CMakeList.txt文件】。.pto中添加的应该是QT += webkit;此时在CMakeList中添加的应该是

rosbuild_prepare_qt4(QtCore QtGui QtWebkit) # Add the appropriate components to the component list here

如果不添加,则会报错:QWebView::QWebView()未定义等。

附:普通qt的web工程应该是:

6.2

转载:ROS的QT界面 开发史上 最强教程相关推荐

  1. matlab 可视化界面,[转载]Matlab 的可视化界面设计(上)

    一个可发布的应用程序通常都需要具备一个友好的图形界面(比如,我们开课时或给学生上课而使用课件时,我们一般就会用到可视化界面).这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面 ...

  2. Qt + Python + OpenCV图标替换工具 之 Qt界面设计(四)

    目录 上一篇博文 程序的下载地址以及源码 Qt界面设计 上一篇博文 Qt + Python + OpenCV图标替换工具 之 Python调用dll(三) https://blog.csdn.net/ ...

  3. ROS项目开发实战(三)——使用QT进行ROS的GUI界面设计(详细教程附代码!!!)

    序 本篇博客主要介绍怎么使用qt对ros进行gui设计与调试,包括使用列表视图显示ROS话题发布与接收的消息,点击QT按钮按钮进行ros消息的发布. 在阅读本文之前没有安装QT与配置环境可以参考博文: ...

  4. 二、各模块的基本实现——1. 在Qt界面上显示树莓派摄像头捕获到的图像

    各模块的基本实现--1. 在Qt界面上显示树莓派摄像头捕获到的图像 本专题导航,Click Me 文章目录 各模块的基本实现--1. 在Qt界面上显示树莓派摄像头捕获到的图像 一些废话 一.思路 二. ...

  5. linux qt开发上位机,QT开发 ROS上位机界面

    前言 最近在给ROS机器人做上位机界面,因为有点C++的基础,也就选择了绿油油的QT来做.作为刚入门的小白,单单是配环境就折磨了我好几天(半路出家,好多坑得爬),做点笔记,但愿以后别重新踩坑,也希望能 ...

  6. halcon与QT联合:(5.1)瓶盖检测以及QT界面搭建

    halcon实现瓶盖检测与定位代码: dev_close_window() dev_open_window(0, 0, 1024, 1024, 'black', WindowHandle) list_ ...

  7. Matplotlib画图教程:在QT界面中嵌入三维图片

    Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制.因此就诞生了做这么一个小模块的想法 ...

  8. Qt文件编码转换工具(三) Qt界面设计

    目录 下载链接 上一节为C++判断文件编码 本节为Qt界面设计 下载链接 Realase打包版本下载: Qt文本转化工具 realase版本 https://download.csdn.net/dow ...

  9. qt界面嵌入web_使用Qt WebAssembly而不是JavaScript创建Web用户界面

    qt界面嵌入web 当我第一次听说WebAssembly以及使用Qt创建Web用户界面的可能性时(就像在普通C ++中一样),我决定更深入地研究该技术. 我的开源项目Pythonic完全基于Pytho ...

最新文章

  1. 团队作业第一次-团队团队展示
  2. DataTables选择多行
  3. ArcGIS客户端开发学习笔记(五)——ArcGIS REST API基础
  4. 第二课unit11 系统恢复技术
  5. 计算机网络第二章-物理层
  6. CSS3 选择器——属性选择器
  7. wamp xampp mysql端口冲突,xampp安装后apache 80端口被占用的解决方法
  8. “Talk is cheap, show me the code”你一行代码有多贵?
  9. 【51CTO/BBS】请教: SQL里有没有字符串分解Split的函数??
  10. 物联网卡行业目前存在哪些问题
  11. 初学者 | 分词的那些事儿
  12. python图片x轴数据过多_一个操作证明python数据可视化比excel强百倍:X轴刻度间隔显示...
  13. Rust:命令行参数与环境变量操作
  14. 深度之眼 alexnet_AlexNet带给了深度学习的世界
  15. STAMP:Short-TermAttention/MemoryPriorityModelfor Session-basedRecommendation
  16. windows10 计算机打不开怎么办,win10计算器打不开怎么解决|win10打开计算器的方法...
  17. 谈小学计算机教学,浅谈小学计算机教学方法
  18. 简单python教程视频_学习Python其实超简单:只需要看这套视频,即可轻松从入门到精通...
  19. 【pano2vr】网页Flash中简单实现炫酷的3D模型制作
  20. nginx 负载均衡安装及升级步骤

热门文章

  1. 虫师自动化测试robot Framework 框架的学习2
  2. vscode 找不到path路径
  3. 【C#】三种结构:顺序、分支(if、switch、条件运算符)、循环
  4. 静态库的冲突 duplicate symbol
  5. BZOJ4553/洛谷P4093 [HEOI2016/TJOI2016]序列 动态规划 分治
  6. 使用Qt生成第一个窗口程序
  7. Tomcat是如何将请求一步步传递到我们编写的HttpServlet类中的
  8. 关于sqlite3 top的查询
  9. .NET 实现自定义ContextUser的Identity和Principal实现自定义用户信息,权限验证。
  10. 如何检查列表是否为空?