ROS1 noetic 环境下 利用 QT 进行界面开发的一些经验

利用QT在ROS1 Noetic 环境下进行开发,蒋程扬老师的系列课程讲解得很详细,这里仅给出笔者在学习过程中踩过的坑,以及一些使用经验。

9fcc654d17fe434bafc862d996986cc0.png


目录

课程链接

Noetic环境下的配置

按钮 功能实现


课程链接

优快云博客(免费)

ROS Qt5 librviz人机交互界面开发一(配置QT环境)-优快云博客

https://blog.youkuaiyun.com/qq_38441692/category_9863968.html

古月居课程(付费)

https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_5eba414d58533_Uh4XTbPi  

https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_5ec490a8d7bd7_b7ucPqUs  

https://class.guyuehome.com/p/t_pc/course_pc_detail/column/p_5edf2d27a1942_foy4nqci

上述为ROS1 C++开发,以下为Python开发。

https://class.guyuehome.com/p/t_pc/goods_pc_detail/goods_detail/p_649e9a60e4b0b0bc2bfa365c?古月居里也有ROS2开发的版本,笔者没有找到。


Noetic环境下的配置

蒋师的教程使用的是ROS Melodic,环境配置阶段不适合Noetic。

Noetic在安装时就已包含QT相关组件,笔者并未进行相关环境的配置,而是直接导入蒋师提供的模板包进行开发。

根据前述提供的第一篇教程,下载如下ROS功能包,并放入工作空间。

https://github.com/chengyangkj/ros_qt_demo

可以根据里面的说明进行包名的修改。

ceaac07a8a1e492a9d8f64dfca5c8f02.png导入后,进行编译,如果出错,可以查看教程,里面给出了一些解决办法,笔者成功编译通过。 

启动roscore,打开qtcreator,上述操作可直接在命令行进行,执行前可以先source一下。

roscore
source ./devel/setup.bash 
qtcreator

768db904535d4474ab192d8c0dae3e6d.png

文件->打开项目->选择工作空间下的CMakeLists.txt,注意是工作空间下src文件夹下的,与功能包同级。

8052c8a8db434242962dbb75b5934a98.png

左栏,项目,Imoprted Kit 和 桌面 下的 build 页,将构建目录改为工作空间中的build文件夹。

b67dbbfba26f453a9d840bde62f5e2e9.png

c433c185d21e42768a4044addebc3121.png

如果出现Imported Kit与桌面CMake配置冲突的情况,如下,按照Imported Kit的来,在Imported Kit下选择Apply Changes...。

c79341a59cb94f46892a0a2f65e99baf.png

 构建->执行CMake,成功通过。

注意,如果出现以下问题,也即找不到catkin包

16:59:17: 为项目Project执行步骤 ...
16:59:17: 正在启动 "/usr/bin/cmake" --build . --target all

CMake Error at CMakeLists.txt:65 (message):
  find_package(catkin) failed.  catkin was neither found in the workspace nor
  in the CMAKE_PREFIX_PATH.  One reason may be that no ROS setup.sh was
  sourced before.


-- Configuring incomplete, errors occurred!
See also "/home/zhongren/ROS_Learning/build/CMakeFiles/CMakeOutput.log".
make: *** [Makefile:558: cmake_check_build_system] Error 1
16:59:17: 进程"/usr/bin/cmake"退出,退出代码 2 。

 也是因为前述的Imported Kit与桌面CMake配置冲突,需要手动设置 CMAKE_PREFIX_PATH 。

打开终端,输入:

echo $CMAKE_PREFIX_PATH

 复制这个路径,在build中手动添加,注意在Imported Kit与桌面下都需要添加。

key填 CMAKE_PREFIX_PATH , value填 上面的路径。

 然后点击下方的Apply...,再次执行CMake即可。

Noetic版本到此结束,无需进行后续配置,点击左下角三角标即可成功运行。

运行前需要先打开roscore,建议将右下角两行勾上,免得手动输入。

9fcc654d17fe434bafc862d996986cc0.png

初步配置结束。

后续再根据自己的需要,对这个包进行修改即可,具体可参照蒋师教程。 


按钮 功能实现

双击main_window.ui,打开图形化设计界面。

拖动左侧栏组件,添加按钮到合适位置,并在右侧属性中修改名称。也可添加水平弹簧,美化布局。

 右侧栏有很多属性参数,可直接修改按钮上显示的文字。

ctrl+r,编译运行,可以看到新加的按钮。

ctrl+q,退出,编辑main_window.cpp文件,需要在此函数中添加内容。

 QT中采用事件-信号-响应机制。点击按钮事件会发出信号,利用槽函数来响应这个信号,并执行所需操作。

所以我们需要将事件、信号、响应函数联系起来,用到 connect 函数。

按F1可以查看函数说明,需要传入 发送者,信号,接收者,槽函数。

这里的发送者就是按钮,信号是点击,接收者是主窗体本身,槽函数自定义为 mybutton_clicked()。

connect(ui.mybutton,SIGNAL(clicked(bool)),this,SLOT(mybutton_clicked(bool)));

F4跳至头文件,补充对槽函数的声明。

F4,跳回,在源文件中补充槽函数的具体实现,这里简单将其文字改为clicked,作为响应。

void MainWindow::mybutton_clicked(bool)
{
    ui.mybutton->setText("clicked");
}

编译运行,成功实现对按钮按下事件的响应。

这里仅实现了简单的功能,按钮的事件还有很多,可自行尝试实现。


 祝科研有进,前程似锦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值