Linux-ROS-Qt

之前学习过一年左右的ROS,基础虽然不能说打得很结实,但还是成功地制作出了导航小车,bilibili上有演示视频。前几天看到大四的师兄们答辩,觉得很是感触,再加之这段时期一直观看漫威电影,钢铁侠对科技的创新力也给我很大启发,我觉得应该重拾ROS,再进行一番深入的学习!之前的学习,都是通过命令台与文本的方式进行代码的编写、编译与验证,并且是无界面的,这开发效率着实是低了那么一些些,虽然知道ROS可以通过Qt来进行开发,但是却不知道从何下手。如今,我们的嵌入式课程是需要Qt来进行开发的,那么我觉得这是一个契机,也是一个跳板,可以帮助我在ROS方面的学习,于是我进行了尝试。

Qt有很多个版本,如今高级的开发已经到了Qt5了,我也并不清楚其中的差别有多大;其次,ROS也是有多个版本的,ubuntu的更新促使ROS更新,也就是一个ubuntu版本对应着一个ROS版本,而创客智造里面的Qt设置教程是ubuntu14.04的,我的ubuntu是16.04的,照搬照抄必然会出错。所以我搜索了一下,发现这位大神成功实现了16.04的Qt搭建,网址如下:
沐棋 Ubuntu16.04为ROS搭建Qt开发环境

我参照着大神的操作撸了一番之后,发现问题:
① Qt是开起来了,编译无反应
② 创建的包中 CMakeLists 内容没有写完整
③ 编译成功无输出

也就是大神的最后并没有告诉我们Qt的使用方法,于是我开始了(xia ji ba)操作直到成功,所以才写此文进行记录。可以参照创客智造的文章ROS与C++入门教程-搭建开发环境(QT+ros_qtc_plugin)

首先在Qt中打开或者创建工作空间

然后新建一个包名为test1的功能包,在包中src目录下新建一个basic node的C++文件,取名为node1。

修改test1下的CMakeLists.txt文件,而不是工作空间的CMakeLists.txt文件。全文如下:

cmake_minimum_required(VERSION 2.8.3)
project(test1)

find_package(catkin REQUIRED COMPONENTS
  roscpp
)

catkin_package( )

include_directories(
  ${catkin_INCLUDE_DIRS}
)

add_executable(node1 src/node1.cpp)
target_link_libraries(node1
  ${catkin_LIBRARIES}
)

这时候,按键盘 ctrl_alt_t 打开终端,才工作空间下输入 catkin_make 编译。
100%表示编译成功。

如果没有执行上面在终端的编译,下面这一步可能找不到相关的文件内容。回到Qt,按照下面两图进行操作


此时已经完成了对Qt的使用,即完成
① 工程的创建,包的创建
② CMakeLists.txt 构建文档的编写
③ Qt 编译准备(编译方法,工作内容,Qt 运行准备(运行内容,编译内容,输出位置)

点击运行

运行之后发现报错,红色一般都是报错的情况。返回查看代码:

代码是INFO输出,而不是ERROR输出,那么再次肯定是报错,而不是来自我们编写的代码。那么哪里出问题了呢?

我记得ROS的书籍,无论新版还是旧版,教我们在终端打的第一条代码永远都是
“roscore” 为什么呢?因为我们需要启动一个主节点,那么这里很明显的报错就是缺少主节点。我们打开一个终端,输入roscore;回到Qt,点击运行。可以看到,系统自动为我们打开了一个终端,并且输出了“Hello world!”。

最后,大家可以尝试一下:
① 用 printf() 输出"helloworld",对比与INFO输出有什么区别
② 把INFO替换成WARM,ERROR,对比有什么区别

本文主要说明了在Qt下如何进行ROS的开发,包括CMakeLists的编写以及Qt的相关配置,还有一些小细节的注意。最后成功实现ROS “helloworld” 的输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金三亲

用现在的金钱换取未来的金钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值