ORB-SLAM2程序的准备工作及编译(途中解决各种疑难杂症)
第一步(Prerequisites):准备各种库和预备包
1.首先要确定是否安装了C++11或者C++0x编译器
没有安装的,可以用命令:
1.1 更新包列表:
sudo apt update
1.2 安装build-essential软件包:
sudo apt install build-essential
这个命令会安装一堆新包,包括gcc,g++和make,耐心等待即可。
1.3最后可以验证GCC编译器是否成功安装:
gcc --version
输出:
gcc (Ubuntu 7.4.0-1ubuntu1~18.04) 7.4.0
Copyright © 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2.下载Pangolin包,
2.1参考这个链接(可以现在windows上下载号tgz,再解压成文件复制到ubutun里)
或命令(推荐):
git clone https://github.com/stevenlovegrove/Pangolin.git
2.2 编译安装
cd Pangolin
mkdir build
cd build
cmake ..
make -j4
sudo make install
(1)在执行make -j4的时候可能会遇到如下问题:No package 'xkbcommon’
解决这个问题,执行如下命令:
sudo apt-get install libxkbcommon-dev
(2)也可能遇到问题:No package ‘wayland-protocols’ found
解决方法:
sudo apt-get install wayland-protocols
然后依次执行上面的命令,make -j4执行成功如下图所示:
3.依赖项:
c++11
OpenGL (Desktop / ES / ES2)
sudo apt install libgl1-mesa-dev
Glew
sudo apt install libglew-dev
CMake (for build environment)
sudo apt install cmake
Python2 / Python3, for drop-down interactive console
sudo apt install libpython2.7-dev
Wayland
pkg-config
sudo apt install pkg-config
Wayland and EGL
sudo apt install libegl1-mesa-dev libwayland-dev libxkbcommon-dev wayland-protocols
Building
git clone https://github.com/stevenlovegrove/Pangolin.git
cd Pangolin
mkdir build
cd build
cmake ..
cmake --build .
Python
sudo python -mpip install numpy pyopengl Pillow pybind11
git submodule init && git submodule update
The python module pypangolin must be on your python path, either through installation, or by setting it explicitly:
(输入自己的pypangolin路径)
import sys
sys.path.append('path/of/pypangolin.so')
4.下载并安装OpenCV(至少是2.4.3版本以上的,这里下载的是OpenCV 3.2 source)
也可以通过指令下载:
git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
(一定要下载对应的opencv_contrib)!!!(我就是下载了不对应的报了若干若干若干的错误!!!!)
这个过程需要等待一段时间,具体依赖与你的网速啦,下载成功后,可以在你的home目录下看见opencv和opencv_contrib两个文件夹,将opencv_contrib目录移到opencv目录下。
在下载的过程中,我们可以添加opencv所需要的依赖库:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
以上步骤完成后,我们进入opencv目录,创建build目录:
cd opencv
mkdir build
进入build目录,开始编译,执行(注意后面的两个点不能少):
cd build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..
在执行cmake指令的时候,需要下载一个ippicv_linux_20151201.tgz文件,如果网不好,可能会卡在:
ICV: Downloading ippicv_linux_20151201.tgz…
这时候可以单独下载 ippicv_linux_20151201.tgz文件:文件大小36.5MB,下载链接:https://raw.githubusercontent.com/Itseez/opencv_3rdparty/81a676001ca8075ada498583e4166079e5744668/ippicv/ippicv_linux_20151201.tgz
下载后放到 ‘/opencv-3.2.0/3rdparty/ippicv/downloads/linux-808b791a6eac9ed78d32a7666804320e/’ 文件夹下再重新cmake就行了。
5.ROS的下载(可选可不选):RGB-D,stereo等样例要用到ROS。
第二步(Building):建立ORB-SLAM2库
1.克隆储存库:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
若git指令没找到,即出现:
运行:
sudo apt install git
继续运行上面的git指令:
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
执行:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
在这里出错了:
真正的问题是:configure: error: no acceptable C compiler found in $PATH
解决方法:执行 yum install gcc-c++
然后继续make 可以正常执行。
所以安装:yum
1.1 打开终端,首先安装build-essential程序包,输入命令:
apt-get install build-essential
已满足。
1.2 接着安装yum,输入命令:
apt-get install yum
1.3 安装完成,但是没有源,不能直接使用yum来安装软件,于是尝试着把fedora上的源放到ubuntu上使用。首先进入网址下载fedora-163.repo和fedora-updates-163.repo这两个文件, 并复制到/etc/yum/repos.d/目录下。
利用cd进入下载的文件夹,复制:
sudo cp fedora-163.repo /etc/yum/repos.d/
sudo cp fedora-updates-163.repo /etc/yum/repos.d/
1.4 复制完成后编辑这两个文件,将$releasever全部替换成17(其他的数字也可以,这个表示fedora的发行版本)。替换命令为:起始行,终止行s/被替换内容/替换内容/g,即
1,29s/$releasever/17/g
1,29s/$releasever/g
这时候,出现了文件只允许读,不允许写的状况。
所以打开文件(为这里用的vim),编辑结束后,加上:
:w !sudo tee %
输入密码
一直按enter键确认
完成编辑
1.5 最后运行命令:
yum makecache
来生成缓存。之后就可以使用yum了,但是如果你想直接使用yum安装软件可要小心点,因为你的系统并不是fedora,最多相当于一个没有安装任何软件的fedora。
这时候出现了一个致命的错误:
Error: Cannot retrieve repository metadata (repomd.xml) for repository: fedora
在CSDN and google上查阅了大量资料,根本无济于事,误人子弟。这个问题其实就是链接打不开
下面介绍解决措施:
1.5.1 删除路径/etc/yum.repos.d/下的fedora-163.repo和fedora-updates-163.repo文件,然后在/etc/yum.repos.d目录中建立fedora.repo文件。
Tip:删除文件的命令:
强制删除文件夹并提示
sudo rm -r 文件夹名
强制删除文件夹不提示 (最暴力)
sudo rm -rf 文件夹名
可按照配置生成器进行repo文件的生成,并根据提示保存配置,
在fedora.repo文件中输入:
[fedora]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
[fedora-debuginfo]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/releases/$releasever/Everything/$basearch/debug/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
[fedora-source]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/releases/$releasever/Everything/source/SRPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
[updates]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/updates/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
[updates-debuginfo]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/updates/$releasever/$basearch/debug/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
[updates-source]
name=Fedora $releasever - $basearch
baseurl=http://mirrors.zju.edu.cn/fedora/updates/$releasever/SRPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch
显然这个baseurl不能用,所以换用国内的源(镜像站点),推荐中科大、阿里云、浙大、网易等的源。
1.5.2 查找对应的路径:
1.5.3 替换baseurl:
[fedora]
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/x86_64/os/
[fedora-debuginfo]
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/x86_64/debug/
[fedora-source]
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/source/SRPMS/
[updates]
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/
[updates-debuginfo]
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/x86_64/debug/
[updates-source]
name=Fedora $releasever - $basearch
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/source/SRPMS/
1.5.4 运行命令:
yum makecache
成功。
继续运行命令:
cd ORB_SLAM2
chmod +x build.sh
./build.sh
报错:
google上的解决措施
这实际上是Opencv的版本的问题,还记得我说过opencv版本要对应,于是下载opencv 3.4.1:
命令:
get -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip官网
安装依赖库:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
在opencv-3.4.1文件夹的目录下创建编译文件夹build,进入~/opencv-3.4.4/build,执行cmake
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..
执行make
sudo make
执行make install命令
sudo make install
配置OpenCV的编译环境,目的是让系统找到OpenCV的库的路径,打开编写一个空白的文件opencv.conf
sudo gedit /etc/ld.so.conf.d/opencv.conf
在opencv.conf中添加如下内容
/usr/local/lib
使刚配置路径生效
sudo ldconfig
打开bash文件,配置bash
sudo gedit /etc/bash.bashrc
在打开的bash.bashrc的最末尾添加如下代码
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存关闭文件,使刚才的配置生效
2.安装Eigen
使用命令
sudo apt-get install libeigen3-dev
官网:Egien
3.进入ORB_SLAM2目录,给build.sh文件可执行权限,编译ORB-SLAM2,运行如下命令
cd ORB_SLAM2
chmod +x build.sh
./build.sh
编辑bash文件
sudo gedit ~/.bashrc
将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加的内容如图所示
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201012214541408.png#pic_center
第三步(Running):编译与调试
问题一:usleep问题(致命)
解决usleep问题:在ORB-SLAM2中的include文件夹里面的system.h加入#include<unistd.h>
打开Thirdparty/g2o/g2o/solvers/linear_solver_eigen.h
将以下代码:
template <typename MatrixType>
class LinearSolverEigen: public LinearSolver<MatrixType>
{ public: typedef Eigen::SparseMatrix<double, Eigen::ColMajor> SparseMatrix;
typedef Eigen::Triplet<double> Triplet;
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, SparseMatrix::Index> PermutationMatrix;
修改为:
template <typename MatrixType>
class LinearSolverEigen: public LinearSolver<MatrixType>
{ public:
typedef Eigen::SparseMatrix<double, Eigen::ColMajor> SparseMatrix;
typedef Eigen::Triplet<double> Triplet;
typedef Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic, int> PermutationMatrix;
或运行时出现如下错误
解决办法:在~/home/crown/Desktop/ORB_SLAM2/Examples/ROS/ORB_SLAM2/文件夹下修改CMakeLists.txt文件,在set(LIBS…)后面添加如下的一句话,井使它生效
-lboost_system
问题二:install cimpiler error:killed(program cciplus)
直接关机重启就好了。
问题三:
ERROR: cannot download default sources list from:
https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
Website may be down.
解决办法:
1.直接运行sudo chmod 777 /etc,避免出现mkdir无法创建该包的错误.,如下图
2.自己相应文件夹下/etc/ros/rosdep/sources.list.d去创建目录 20-default.list
效果如下:
问题5.在home打开终端继续执行命令,会出现另外的错
ERROR: default sources list file already exists:
/etc/ros/rosdep/sources.list.d/20-default.list
Please delete if you wish to re-initialize
解决办法:sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
问题5:
/src/ros_rgbd.cc:35:
/home/mango/catkin_ws/src/ORB_SLAM2/Examples/ROS/ORB_SLAM2/…/…/…/Thirdparty/g2o/g2o/types/…/core/jacobian_workspace.h:30:10: fatal error: Eigen/Core: No such file or directory
#include <Eigen/Core>
^~~~~~~~~~~~
compilation terminated.
分别将se3_ops.h、se3quat.h…等等出现问题的XXX.h文件找到,打开将里面的
#include <Eigen/Core>
改为:
#include <eigen3/Eigen/Core>
问题6:出现error:'usleep’问题(最多的!)
解决办法:根据提示哪个文件有这个问题,将它找到,在引入头文件地方添加如下
#include<unistd.h>
或者在/home/crown/ORB_SLAM2/include/system.h
添加
#include<unistd.h>
问题7:在编译ORB-SLAM2时,出现cpp项目编译时报错: c++: internal compiler error: Killed
原因是内存不够,并且没swap,增加swap
解决办法
sudo -s
dd if=/dev/zero of=/tmp/newdisk bs=1M count=8000
du -sh /tmp/newdisk
mkswap -f /tmp/newdisk
free -m
chmod 0600 /tmp/newdisk
swapon /tmp/newdisk
free -m
下载数据集
有TUM、KITTI、EuRoC三种数据集,本实验使用TUM数据集,从下载序列并解压缩。
编译
PATH_TO_SEQUENCE_FOLDER为数据集的存储路径,并将tumx.yaml与下载的数据集对应,比如TUM1.yaml,TUM2.yaml 和TUM3.yaml 分别对应 freiburg1, freiburg2 和 freiburg
我的数据集放在/home/crown/Desktop/Dataset-slam目录下
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/mango/catkin_ws/src/rgbd_dataset_freiburg1_xyz
执行以下命令。KITTIX.yaml分别将序列0到2、3和4到12 更改为KITTI00-02.yaml,KITTI03.yaml或KITTI04-12.yaml。更改PATH_TO_DATASET_FOLDER未压缩的数据集文件夹。更改SEQUENCE_NUMBER为00,01,02,…,11。
运行步骤和上面一样:
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTIX.yaml PATH_TO_DATASET_FOLDER/dataset/sequences/SEQUENCE_NUMBER
上面青色就是要修改的部分,其中“PATH_TO_DATASET_FOLDER”就是要找到你要运行的数据集的位置,你要找到你下载的数据集关键文件夹“dataset/sequences/”在哪。然后一步步执行。我保存并运行的是序列00数据,且保存在Data/KITTI目录下
所以就是
./Examples/Stereo/stereo_kitti Vocabulary/ORBvoc.txt Examples/Stereo/KITTI00-02.yaml Data/KITTI/data_odometry_gray/dataset/sequences/00
Tip:
1.(font)字体
infinality字体渲染
The default font is ugly. Copy Microsoft’s truetype font is not a good method, it’s nasty.(默认字体不是很好看,而且复用微软的真实类型字体不是一个好方法,这很不好。)
I use infinality. Though the website don’t update anymore.
First, download fontconfig-infinality and freetype-infinality:
(使用无限式。 虽然网站不再更新。首先,下载fontconfig-infinality和freetype-infinality)
wget http://www.infinality.net/fedora/linux/20/noarch/fontconfig-infinality-1-20130104_1.noarch.rpm
wget http://www.infinality.net/fedora/linux/20/x86_64/freetype-infinality-2.4.10-1.20120615_01.fc17.x86_64.rpm
然后使用rmp指令安装:
sudo rpm -ivh fontconfig-infinality-1-20130104_1.noarch.rpm freetype-infinality-2.4.10-1.20120615_01.fc17.x86_64.rpm
可以手动的解决…
then, set the font renderr style using infinality script. I choose osx style. the command is:(然后选择一个风格:)
sudo /etc/fonts/infinality/infctl.sh setstyle
MONACO字体
用MONACO作为等宽字体。
wget http://jsdx.sc.chinaz.com/Files/DownLoad/font2/908.rar # 下载MONACO字体
sudo yum install unrar # 下载unrar:
unrar x 908.rar # 解压
cd 908
sudo mkdir -p /usr/share/fonts/my_font
sudo mv MONACO.TTF /usr/share/fonts/my_font/
sudo mkfontscale
sudo mkfontdir
sudo fc-cache -fv # 更新字体缓存
opencv
用指令下载opencv:
yum list *opencv*
或者也可以使用合适的安装包去下载:
sudo yum install opencv-core opencv opencv-devel opencv-python
close SELinux
SELinux is useless for common people. Just close it.(SELinux是基本无用,还不如减少内存,关了它)
sudo vim /etc/selinux/config
改变目录:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # here we modify "enforcing" to "disabled"
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
chrome
First, download chrome. I don’t like using a repo for chrome, since every time the system updates, it speed down.
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm
then use yum to download depences:
yum install redhat-lsb
yum install libXScrnSaver
now let’s install chrome:
sudo rpm -ivh google-chrome-stable_current_x86_64.rpm
python
这里配置了python、python-devel以及pip
sudo dnf install python python-devel python-pip
然后创建pip的用户自配置文件,使用阿里云的源来加速访问,即创建并编辑~/.pip/pip.conf,内容为:
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
git
git配置ssh
ssh-keygen -t rsa -C "zchrissirhcz"//注意。zchrissirhcz为用户名
//然后三次回车
cat /home/forwhat.cn/.ssh/id_rsa.pub
//复制cat出来的内容
然后到github上个人账户设置中配置SSH Keys:把cat出来的内容贴上去
vim
I use vundle to manage my vim plugins.
sudo yum install vim
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
mkdir -p workspace/gitwhat
cd workspace/gitwhat
git clone https://github.com/zchrissirhcz/dotfiles
mkdir -p ~/.vim/colors
cp molokai.vim ~/.vim/colors
then open vim and do bundle install:
:BundleInstall
fcitx输入法
不必卸载默认的ibus。
sudo yum install fcitx-pinyin
sudo yum install fcitx-configtool
sudo yum install im-chooser
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
im-chooser
弹出的对话框中选择fcitx。重启后可以使用。
配置: 使用 fcitx-configtool 进行配置。
在全局配置的快件键->显示高级选项中,我把切换激活/非激活输入法设定为左shift,输入法切换键设定为Ctrl+Space。
如果ctrl+空格无法设定,结果显示是LCtrl,也就是左Control键。这种情况是你的Ctrl+Space被别的程序捕获了,比如我在系统设置->全部设置->键盘->快捷键->打字->切换至下个输入源,这里设定为了Ctrl+Space,这里改掉,fcitx那里就可以设定Ctrl+Space来激活输入法了。
快捷键
配置开启终端快捷键
设置->键盘->快捷键->自定义快捷键->添加:
name:terminal
command:/usr/bin/gnome-terminal
#按键设定为Ctrl+Alt+T
配置截屏快捷键
mkdir ~/bin
cd ~/bin
vim screenshot
添加如下内容:
#!/bin/bash
gnome-screenshot -ai
添加软链接并添加可执行权限:
sudo ln -sf /home/chris/bin/screenshot /usr/bin/screenshot
chmod +x ~/bin/screenshot
最后到:设置->键盘->快捷键->自定义快捷键->添加:
name:screenshot
command:screenshot
#按键设定为Ctrl+Alt+Q
美化终端显示[(安装Arc GTK主题(7k+))]
1.直接在 Ubuntu 16.04 LTS 的「终端」中使用如下命令先行添加 Arc GTK theme 源之后进行安装:
sudo sh -c "echo 'deb http://download.opensuse.org/repositories/home:/Horst3180/xUbuntu_16.04/ /' >> /etc/apt/sources.list.d/arc-theme.list"
2.要让 Arc GTK 主题源难免正常工作并定期收到主题更新,还需要安装在终端中执行如下命令安装软件源的密钥,不然无法正常使用:
wget http://download.opensuse.org/repositories/home:Horst3180/xUbuntu_16.04/Release.key
sudo apt-key add - < Release.key
3.上面第一行代码会自动下载 Arc GTK theme repository key,第二行代码会导入并启用软件 repo,当系统提示「OK」时表示已经导入成功,此时使用如下命令便可开始安装 Arc GTK 主题:
sudo apt update
sudo apt install arc-theme
4.主题安装好之后,我们还是使用 Unity Tweak Tool 来对其进行激活使用。Ubuntu 16.04 LTS 的官方源中已经提供了 Unity Tweak Tool,使用如下命令进行安装:
sudo apt install unity-tweak-tool
5.打开 Unity Tweak Tool 工具,在「主题」选项的 GTK 主题列表中选择喜欢的 Arc GTK 主题系列(Arc、Arc-dark 或 Arc-darker 主题)即可。
取消终端下光标闪烁
gsettings set org.gnome.desktop.interface cursor-blink false
virtualbox虚拟电脑目录的移动
比如原来放在$HOME下,现在空间不够了,但是/opt是有空间的。怎样移动过去呢?
先用命令移动整个目录到目标位置
再设置全局的虚拟电脑目录(管理-》全局设定-》默认虚拟电脑位置)
(可能要修改/etc下的一个vbox配置文件)
然后发现原来的vbox都报错了打不开 刷新也没用
在vbox主界面中删除原有的vbox
在vbox主界面 控制-》注册-》选择新位置的vdi文件
vdi文件扩容
VBoxManage modifyhd <uuid>|<filename> [--resize <megabytes>|--resizebyte <bytes>]
比如:
vboxmanage modifyhd fedora22.vdi --resize 20480
然后进入系统(你当然是要在关闭它时候才修改vdi文件大小的。。),发现还是原来容量,但是有了一块‵空闲区域`。
fdisk命令已经不太会用了。不过gparted很好用:
sudo yum install gparted
在终端中打开文件夹,以及在文件夹中打开终端
sudo dnf install nautilus-terminal nautilus-open-terminal