Skip to content

Slam-Interface is a UI interface that can interact with the ROS system, supporting users to encapsulate common ROS system operations into simple UI interface operations.

Notifications You must be signed in to change notification settings

Tompson11/SLAM_interface

Repository files navigation

Slam-Interface

[ 简体中文 | English ]

Slam-Interface 是一个能够与ROS系统进行交互的UI界面,支持用户将常用的ROS系统操作(如:ROS程序的打开/关闭,ROS话题的监听,ROS服务的调用等)封装为简单的UI界面操作,方便自身,尤其是方便其他对ROS系统不了解的人使用ROS系统的相关功能。

目录

  1. 背景
  2. 环境要求
  3. 安装
  4. 使用
  5. 致谢

1.背景

Slam-Interface 源于作者在实验室所做的SLAM相关项目。当时,作者常常需要在实验室的手持设备上运行一些SLAM算法,每次都需要在终端里输入若干指令来开启手持设备上IMU,LiDAR,Camera等传感器的ROS驱动程序以及SLAM程序。此外,如果要把SLAM结果传送到中央监视器上更好的显示时,通常还需要在bashrc文件中进行相应的配置以实现ROS的主从机制。这一系列操作对于作者这样的ROS高手来说自然不在话下,但当作者碰巧偷懒不去实验室,而实验室碰巧有小白同学想要玩玩SLAM设备或者向其它参观者展示我们的傲人成果时,问题就来了,我该如何让他在没有我的情况下也能顺利上手呢?无疑,我可以写一个文档(我曾经也是这样做的),文档以傻瓜式的叙述一步步地告诉他如果打开终端,输入什么指令,应当看到什么结果。但这种不优雅的解决方式始终令作者耿耿于怀,终于,作者决定以自己绵薄的码力,写一个勉强能用的UI界面来简化涉及到的操作,于是就有了如今的Slam-Interface

2. 环境要求

2.1 Ubuntu and ROS

  • Ubuntu >= 16.04
  • ROS >= Melodic

2.2. Qt

  • Qt >= 5.12.8。 Qt5的其它版本可以尝试,但不保证能够正常运行。

3. 安装

  • 下载:在下载页面内,选择合适的版本下载。
  • 解压:将下载好的压缩包进行解压。
  • 安装:在解压的目录下,打开命令行终端,运行安装脚本:
sudo bash setup.sh

4. 使用

在ubuntu菜单中找到SlamInterface的图标,点击它即可打开界面:

整个界面如下图所示,从上到下共由四大模块组成:

  • Roscore模块:配置Roscore基本设置
  • Sensors模块:配置传感器ROS驱动程序
  • SLAM&Tools模块:配置其它ROS程序
  • Command模块:配置常用的CMD指令

4.1 基础使用

4.1.1 配置Roscore

由于ROS系统的通信由Roscore进行管理,我们需要先在 Roscore模块 中对Roscore进行配置才能使得整个ROS系统正常运行。

  • 配置ROS安装目录:为使程序内部能够调用ROS的setup.bash,配置相应的ROS环境,需设置ROS的安装目录(作者的安装目录为/opt/ros/noetic)。
  • 配置ROS主从机:若需配置ROS主从机,则在主机和从机上都需设置环境变量ROS_MASTER_URI为主机的IP。在主机上,点击按钮USE LOCAL IP即可填入自身IP(对于从机则可以手动输入主机IP)。而如果不设计主从机,则可以点击按钮USE LOCALHOST使用本地回环地址(localhost, 即127.0.0.1)。
  • 打开ROSCORE:Roscore是ROS程序运行的基础,当配置好ROS安装目录和ROS_MASTER_URI变量后,便可点击Roscore模块的滑动按钮开启Roscore。开启成功和失败都会由对应的提示弹出。

4.1.2 配置传感器

由于作者研究方向为SLAM,不可避免地与各种传感器打交道,故把传感器单独设置为整个界面的一个 Sensors模块 。即使你不接触传感器,也建议你阅读此节,因为您同样可以把你的ROS程序“假装”当作一个特殊的传感器,并在这个模块进行设置,毕竟它们在底层都是一句roslaunch的事。

  • 添加传感器:点击模块里的+按钮来创建新的传感器,并给其取上你喜欢的名字。
  • 配置传感器:点击相应传感器的CONFIGURE按钮来配置启动传感器ROS驱动的launch文件。配置时,你必须提供该launch文件的命名,工作空间和具体文件目录,不可缺少其中任意一项,否则你无法从配置界面全身而退。
  • 开启/关闭传感器:若roscore已经打开,点击模块里的滑动按钮就可开启传感器。传感器开启后,再次点击模块里的滑动按钮就可关闭传感器。
  • 监控传感器:传感器开启后,可以选择特定的话题名监视其消息频率,以便判断传感器数据流是否稳定。为此,可以点击Topic后的下拉菜单,选择要监视的话题,并勾选Hz按钮。此外,若想查看程序运行中标准输出流中的内容,可以点击传感器图标右下角的红色数字进行查看。
  • 删除传感器:点击相应传感器模块右上角的x按钮便可删除传感器,若此时传感器正在运行,则会有相应提示窗弹出,此时你可以选择关闭传感器程序并删除。

4.1.3 配置其它ROS程序

为了方便和整洁,界面又单独划出了一个 SLAM&Tools模块 ,在这里,你可以配置你常用的其它ROS程序(我们统称为“TOOLS”)以及作者常接触的SLAM程序。本质上,它们和上一小节的传感器程序是一样的,因而相关操作请参见4.1.2

4.1.4 配置常用CMD指令

有的时候,我们需要利用CMD指令与ROS系统进行交互,获取相应信息。为避免每次打开命令行终端且输入冗长指令的繁琐操作,可以在 Command模块 中,将常用的指令进行配置,使得后续执行时只需点击相应按钮即可。

  • 添加指令:点击模块里的+按钮来创建新的指令,新创建的指令小模块将出现在+按钮左侧。
  • 配置指令滚轮(中键) 点击指令小模块可以重命名相应的指令。右键点击指令小模块来配置指令的具体内容。配置时,你必须输入相应的指令;输入结束后,你可以勾选wait on exit按钮来在指令最后添加read;语句,确保指令执行结束时命令行窗口不会立刻关闭。
  • 执行指令:若roscore已经打开,点击相应的指令小模块便可执行相应指令。
  • 删除指令:将鼠标移到相应的指令模块上,其右上方将出现红色x按钮,点击它即可删除相应指令。

4.1.5 关闭界面

点击主界面右上方的x按钮,将会弹出第一个询问框,确认是否关闭界面,若点击yes,则会弹出第二个询问框,确认是否保留界面此时的配置,若点击yes,则将会自动保存此时的页面配置,使得下次打开时能够自动加载当前的配置。

4.2 进阶使用

本节介绍一些稍微花梢但也可能有用的功能。

4.2.1 子模块重命名

对于Sensors模块SLAM&Tools模块中的子模块,可以直接在其标题栏里键入你喜欢的名字。而对于Command模块中的子模块,正如4.1.4中提到的,可以用滚轮(中键) 点击相应模块进行重命名。

4.2.2 子模块移动

对于Sensors模块SLAM&Tools模块Command模块中的子模块,可用鼠标左键长按子模块并进行左右拖动来改变其位置,释放左键将其固定。

4.2.3 修改Roslaunch的参数

ROS的launch文件提供了<param>和<arg>标签来设置相应的ROS参数。这就意味着在调参时,我们需要去找到相应的launch文件并进行修改,这样的操作对于作者来说是不愿面对的。为了免去麻烦,我们的界面也提供了修改参数的功能:

  • 打开参数界面:当选择好相应的launch文件(或者说ROS程序)后,右键点击相应的下拉菜单,即会划出参数设置界面。界面里以树状图的形式列出了该launch文件各层命名空间下对应的arg和param。
  • 修改参数:双击要修改的参数value,即可输入要设置的新值,且新值将会显示为红色(请注意:这里的修改只是运行时的修改,并不会改写原launch文件的任何内容)。如果要恢复原始值,则点击相应参数的reset按钮,若要恢复某命名空间下的所有参数的原始值,则点击相应命名空间的reset按钮。若当前launch文件中有参数被修改,则相应的项目名('Sensor','Tool'或‘Algorithm')将会显示为红色。

4.2.4 紧凑布局

如果你是在小屏幕下使用该界面,或者你不喜欢作者设计的丑陋布局,那作者也提供了另一个选项——紧凑布局。触发它的开关就藏在**Sensors模块**右上方compact按钮,轻轻点击一下,界面就啪地一下变紧凑了,再点击一下就又恢复如初了。

5. 致谢

在界面的设计实现中,我们大量用到了qt-material-widgets,这里由衷地致以感谢!

About

Slam-Interface is a UI interface that can interact with the ROS system, supporting users to encapsulate common ROS system operations into simple UI interface operations.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages