作者:mobiledu2502935431 | 来源:互联网 | 2023-08-08 21:05
有时候跑一个ros的应用,需要启动多个ros launch文件,搞得人心烦意乱。这里参考网上给出的做法,利用qt creator,制作一个简单ui,通过点击按钮,同时启动多个launch文件。过程如下:
一、Ubuntu 16.04安装qt Creator 5.7.0
http://download.qt.io/archive/qt/
首先要cd进入软件安装包的目录,然后取得安装权限,进行图形化安装,如下:
cd /home/keith/soft
chmod +x qt-opensource-linux-x64-5.7.0.run
./qt-opensource-linux-x64-5.7.0.run
二、解决无法支持中文
1.sudo apt-get install fcitx-frontend-qt5 安装语言包
2.dpkg -L fcitx-frontend-qt5 查看安装路径
3.将这个文件
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so
复制到~/Qt5.7.0/Tools/QtCreator/lib/Qt/plugins/platforminputcontexts 和 /home/nielsen/Qt5.7.0/5.7/gcc_64/plugins/platforminputcontexts下
4.重启Qt
三、 创建一个带按钮的简单UI
创建一个新的工程(Qt Widgets Application)
![](https://img8.php1.cn/3cdc5/18600/bdf/e45a938e9e26364d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MjQxMzI1,size_16,color_FFFFFF,t_70)
然后一路next,
![](https://img8.php1.cn/3cdc5/18600/bdf/18783cd902a576e3.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MjQxMzI1,size_16,color_FFFFFF,t_70)
初始情况下,工程结构如下:
![](https://img8.php1.cn/3cdc5/18600/bdf/145876dfaba611ed.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MjQxMzI1,size_16,color_FFFFFF,t_70)
编辑UI,选中.ui文件
![](https://img8.php1.cn/3cdc5/18600/bdf/9811f638275b555c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MjQxMzI1,size_16,color_FFFFFF,t_70)
为按钮添加动作(slot),点击按钮,右键--goto slot
![](https://img8.php1.cn/3cdc5/18600/bdf/7abce0d57a65dcb2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI1MjQxMzI1,size_16,color_FFFFFF,t_70)
此时,会在.h文件中添加
private slots:
void on_pushButton_clicked();
然后,我们在.cpp中实现该方法:
void MainWindow::on_pushButton_clicked()
{
system("gnome-terminal -x bash -c 'source ~/coffeeusb/devel/setup.bash; roslaunch micros_storage storage_node.launch'&");
system("gnome-terminal -x bash -c 'source ~/coffeeusb/devel/setup.bash; rosrun rviz rviz'&");
exit(0);
}
这里的~/coffeeusb是我的工作空间,大家可以替换成自己工作空间(workspace或者某_ws)的路径 ,micros_storage是我创建的package,大家换成自己的package以及对应的launch文件。
这里只是给出一个例子,告诉大家怎么通过GUI来一次性启动多个launch文件,来避免大量的手工输入或者粘贴。
3. 编译工程,运行文件
build all
run
然后点击按钮,会启动rviz和storage_node的app。