Ubuntu Qt控制终端运行ros
文章目录
- gnome-terminal
- Qt 通过QProcess类
- Qt 通过system
gnome-terminal
在Ubuntu中可以使用man gnome-terminal命令查看gnome-terminal的使用指南,也可在ubuntu manuals查看:
NAMEgnome-terminal — 一个终端仿真应用.概要gnome-terminal [-e, --command=STRING] [-x, --execute ] [--window-with-profile=PROFILENAME] [--tab-with-profile=PROFILENAME] [--window-with-profile-internal-id=PROFILEID] [--tab-with-profile-internal-id=PROFILEID] [--role=ROLE] [--show-menubar] [--hide-menubar] [--geometry=GEOMETRY] [--working-directory=DIRNAME] [-?, --help]选项-e, --command=STRING在终端内执行此选项的参数。-x, --execute在终端内执行命令行的其余部分。--window-with-profile=PROFILENAME打开一个新窗口,其中包含具有给定配置文件的选项卡。 可以提供多个这些选项。--tab-with-profile=PROFILENAME在具有给定配置文件的窗口中打开一个选项卡。可以提供多个这些选项,以打开多个选项卡 。--window-with-profile-internal-id=PROFILEID打开一个新窗口,其中包含具有给定配置文件 ID 的选项卡。在内部用于保存会话。--tab-with-profile-internal-id=PROFILEID在窗口中打开具有给定配置文件 ID 的选项卡。 在内部用于保存会话。--role=ROLE为最后一次指定的窗口设置role;仅适用于一个窗口;可以为从命令行创建的每个窗口指定一次。--show-menubar打开最后指定的窗口的菜单栏;仅适用于一个窗口;可以为从命令行创建的每个窗口指定一次。--hide-menubar关闭最后指定的窗口的菜单栏;仅适用于一个窗口;可以为从命令行创建的每个窗口指定一次。--geometry=GEOMETRY指定窗口位置,每个要打开的窗口可以指定一次。--working-directory=DIRNAME将终端的工作目录设置为 DIRNAME。-?, --help显示帮助消息。
用法:
gnome-terminal [选项…] [-- 命令 …]
在终端中输出 gnome-terminal,就会自动弹出一个新的终端.命令执行完或者遇到错误后,这个新终端也会闪退。
在bash中 加上exec bash。这样新终端在执行完命令后也不会退出了,如:
gnome-terminal --bash -c 'python3;exec bash'
– bash -c后面写的是命令。
参数说明:帮助选项:-h, --help 显示帮助选项--help-all 显示全部帮助选项--help-gtk 显示 GTK+ 选项--help-terminal 显示终端选项--help-window-options 显示每个窗口的选项--help-terminal-options 显示每个终端的选项GTK+ 选项--class=类 窗口管理器所使用的程序类--name=名称 窗口管理器所使用的程序名--gdk-debug=标志 要设置的 GDK 调试标志--gdk-no-debug=标志 要取消的 GDK 调试标志--gtk-module=模块 装入额外的 GTK+ 模块--g-fatal-warnings 将警告变为严重--gtk-debug=标志 要设置的 GTK+ 调试标志--gtk-no-debug=标志 要取消的 GTK+ 调试标志Options to open new windows or terminal tabs; more than one of these may be specified:--window 打开包含默认配置下一个标签页的一个新窗口--tab 在最后一个打开的窗口中打开一个默认配置下的新标签页Window options; if used before the first --window or --tab argument, sets the default for all windows:--show-menubar 打开菜单栏--hide-menubar 关闭菜单栏--maximize 最大化窗口--full-screen 全屏幕窗口--geometry=几何形状 设置窗口大小;例如:80x24,或者 80x24+200+200(列x行+X坐标+Y坐标)--role=角色 设置窗口角色--active 将上次指定的标签页设定为所在窗口的当前标签页Terminal options; if used before the first --window or --tab argument, sets the default for all terminals:-e, --command 在终端中执行此选项的参数--profile=配置文件名 使用提供的配置文件而非默认配置-t, --title=标题 设置初始终端标题--working-directory=目录名 设置工作目录--wait 等待子进程退出--fd=文件描述符 转发文件描述符--zoom=缩放 设置终端的缩放系数(1.0 = 正常大小)应用程序选项:--load-config=文件 载入一个终端配置文件--preferences 显示首选项窗口-p, --print-environment 打印与终端交互的环境变量-v, --verbose 增加诊断详细程度-q, --quiet 抑制输出--display=显示 要使用的 X 显示-t, --title=标题 为打开终端设置初始的标题,便于区分。-c,--command: -c是指cmd ,后面是要执行的命令,双引号中可以为多个命令命令以分好为结束符号,如果执行多个命令,可以用分号隔开,如:"test1.sh; test2.sh"& 如果需要同时并行启动多个脚本可以在命令行后面加 & 符号,使命令后台运行.-e excute: 可以出现多次,要注意 -e 后面只能有一个参数,也就是说 -e 后面的所有需要用引号括起来。如:-e 'bash -c "pwd; exec bash;"'如:gnome-terminal -e 'bash -c "ls; exec bash"'exec bash: 是让打开的终端在执行完脚本后不关闭一直存在。 如果直接写bash也行,相当于开了一个子shell。 --window: 表示打开一个终端窗口。如:gnome-terminal --window --window #打开两个终端如:gnome-terminal --window --tab --window --tab --tab #打开两个终端,第一个两个tab,第二个3个tab--tab: 在其中新开辟一个标签页,如果还想要更多标签页就就继续加--tab。--profile=配置文件名 使用提供的配置文件而非默认配置--working-directory=目录名 设置工作目录--wait 等待子进程退出--fd=文件描述符 转发文件描述符--zoom=缩放 设置终端的缩放系数(1.0 = 正常大小)$
因为 -x 和 -e 已经被弃用了。所以被取而代之的是 -- 符号,还有就是 bach -c这条命令,因为是在新启动的终端里执行bash -c,即启动子shell。改之后如:gnome-terminal --tab -- bach -c "ls"&"gnome-terminal --tab -- bash -c " pwd; exec bash;"[终端启动后自动执行命令]有两个参数可以实现这个功能,-e 和 -x,这两个区别在于:-e 可以出现多次。如果在所有 --window 前面,表示对所有 window 和 tab 起作用。如果在 --window 或者 --tab 后面,表示只针对这个 tab 执行;注意: -e 后面只能有一个参数, 也就是说如果有空格,需要用引号-x 只能出现一次,在-x后面的所有内容,均认为是要执行的命令,所以可以出现空格。这些命令是针对所有tab都执行的.注意: \ 连续符号后面不能跟 注释,否则注释后面的内容执行不到。
例子:
gnome-terminal --window --window #打开两个
gnome-terminal --window --tab --window --tab --tab #打开两个,第一个两个tab,第二个3个tab
gnome-terminal -- bash -c "ls; cd ~/lzk; exec bash" #打开一个终端,然后进入某一子目录
Qt 通过QProcess类
QProcess *process=new QProcess;
process->start("bash"); //启动终端(Windows下改为cmd)
process->waitForStarted(); //等待启动完成
process->write("命令"+‘\n’); //向终端写入命令,注意尾部的“\n”不可省略
Qt 通过system
system("gnome-terminal -x bash -c '设置环境变量; 命令'&");
例子
system("gnome-terminal -- bash -c 'source /opt/ros/melodic/setup.bash ;roscore'&");system("gnome-terminal -- bash -c 'source /opt/ros/melodic/setup.bash ;rosrun turtlesim turtlesim_node'&");system("gnome-terminal -- bash -c 'source /opt/ros/melodic/setup.bash ;rosrun turtlesim turtle_teleop_key'&");
system("gnome-terminal -x bash -c 'source ~/my_ws/devel/setup.bash;roslaunch my_package file.launch'");
注意:system函数中务必添加 source ~/catkin_ws/devel/setup.bash;目的是确保能找到所有相关联的包(Package);否则将不能运行launch文件;
source /opt/ros/melodic/setup.bash 是配置环境变量
#!/bin/bash
# 脚本名称: takeoff_land
# 脚本描述: 该脚本为起飞&降落控制demo启动脚本,包含PX4 SITL,Gazebo仿真环境,无人机控制节点以及起飞&降落控制节点gnome-terminal --window -e 'bash -c "roscore; exec bash"' \
--tab -e 'bash -c "sleep 5; roslaunch prometheus_gazebo sitl_outdoor_1uav.launch; exec bash"' \
--tab -e 'bash -c "sleep 6; roslaunch prometheus_uav_control uav_control_main_outdoor.launch; exec bash"' \
--tab -e 'bash -c "sleep 7; roslaunch prometheus_demo takeoff_land.launch; exec bash"' \
#--tab -e 'bash -c "sleep 7; rosrun prometheus_demo takeoff_land.py; exec bash"' \
sleep命令可以让脚本暂停执行一段时间,其基本语法为:
sleep <seconds>
相关文章:
Ubuntu Qt控制终端运行ros
文章目录 gnome-terminalQt 通过QProcess类Qt 通过system gnome-terminal 在Ubuntu中可以使用man gnome-terminal命令查看gnome-terminal的使用指南,也可在ubuntu manuals查看: NAMEgnome-terminal — 一个终端仿真应用.概要gnome-terminal [-e, --c…...
mysql 性能调优参数配置文件
########################################################################### ## my.cnf for MySQL 8.0.x # ## 本配置参考 https://imysql.com/my-cnf-wizard.html # ## 注意: …...
windows右键新建文件没有txt文本文档怎么办?
我碰到此问题,按照以下方法改了注册表, 重启之后就正常了(没有注销,只是单纯重启)。以下方法来自AI: 如果在注册表的 .txt 路径下没有找到 ShellNew 键,你可以尝试手动创建这个键和所需的值来恢…...
已读不回,我又玻璃心了
最近有点上火,3个询盘给我整我无语了,难道我还没修炼到家?玻璃心又出来作祟了? 客户A急火火的发我一个文件,需求内容ios客户端调整,让我按照需求给找个人处理下,我收到后抓紧时间摇人࿰…...
面试经典150题(105-107)
leetcode 150道题 计划花两个月时候刷完之未完成后转,今天(第2天)完成了3道(105-107)150 105.(191. 位1的个数)题目描述: 编写一个函数,输入是一个无符号整数(以二进制串的形式&am…...
javaWebssh药品进销存信息管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计
一、源码特点 java ssh药品进销存信息管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOM…...
计算机设计大赛 深度学习实现语义分割算法系统 - 机器视觉
文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…...
Linux系统编程(六)高级IO
目录 1. 阻塞和非阻塞 IO 2. IO 多路转接(select、poll、epoll) 3. 存储映射 IO(mmap) 4. 文件锁(fcntl、lockf、flock) 5. 管道实例 - 池类算法 1. 阻塞和非阻塞 IO 阻塞 IO:会等待操作的…...
Python与FPGA——全局二值化
文章目录 前言一、Python全局128二、Python全局均值三、Python全局OTSU四、FPGA全局128总结 前言 为什么要进行图像二值化,rgb图像有三个通道,处理图像的计算量较大,二值化的图像极大的减少了处理图像的计算量。即便从彩色图像转成了二值化图…...
《Docker极简教程》--Docker的高级特性--Docker Compose的使用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许开发人员通过简单的YAML文件来定义应用程序的服务、网络和卷等资源,并使用单个命令来启动、停止和管理整个应用程序的容器。以下是关于Docker Compose的一些关键信息和优势: 定义…...
tidyverse去除表格中含有NA的行
在tidyverse中,特别是使用dplyr包,去除含有NA的行可以通过filter()函数结合is.na()和any()或all()函数来实现。dplyr是tidyverse的一部分,提供了一系列用于数据操作的函数,使数据处理变得更加简单和直观。 以下是一个简单的例子&…...
开源爬虫技术在金融行业市场分析中的应用与实战解析
一、项目介绍 在当今信息技术飞速发展的时代,数据已成为企业最宝贵的资产之一。特别是在${industry}领域,海量数据的获取和分析对于企业洞察市场趋势、优化产品和服务至关重要。在这样的背景下,爬虫技术应运而生,它能够高效地从互…...
使用SMTP javamail发送邮件
一、SMTP协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。使用javamail编写发送…...
Hello C++ (c++是什么/c++怎么学/c++推荐书籍)
引言 其实C基础语法基本上已经学完,早就想开始写C的博客了,却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的,后来考虑了一下还是算了,等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…...
最新的前端开发技术(2024年)
关于作者: 还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas࿰…...
GCN 翻译 - 2
2 FAST APROXIMATE CONVOLUTIONS ON GRAPHS 在这一章节,我们为这种特殊的的图基础的神经网络模型f(X, A)提供理论上的支持。我们考虑一个多层的图卷积网络(GCN),它通过以下方式进行层间的传播: 这里,是无…...
HBase 的安装与部署
目录 1 启动 zookeeper2 启动 Hadoop3 HBase 的安装与部署4 HBase 高可用 1 启动 zookeeper [huweihadoop101 ~]$ bin/zk_cluster.sh start2 启动 Hadoop [huweihadoop101 ~]$ bin/hdp_cluster.sh start3 HBase 的安装与部署 (1)将 hbase-2.0.5-bin.tar.…...
236.二叉搜索树的公共祖先
236.二叉树的公共祖先 思路 看到题想的是找到两个点的各自路径利用stack保存,根据路径长度大小将两个stack的值对齐到同一层,之后同时出栈节点,若相同则找到祖先节点。但是效率不高 看了大佬代码,递归思想很难理解。 根据大佬…...
【论文精读】大语言模型融合知识图谱的问答系统研究
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...
LabVIEW高精度天线自动测试系统
LabVIEW高精度天线自动测试系统 系统是一个集成了LabVIEW软件的自动化天线测试平台,提高天线性能测试的精度与效率。系统通过远程控制测试仪表,实现了数据采集、方向图绘制、参数计算等功能,特别适用于对天线辐射特性的精确测量。 在天线的…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
