Hanjie's Blog

一只有理想的羊驼

Dependencies

1
sudo apt-get install libcholmod3.0.6 libsuitesparse-dev freeglut3 freeglut3-dev freeglut3-dbg libqglviewer-dev libqglviewer-dev libeigen3-dev qtdeclarative5-dev qt5-qmake

Build

1
2
3
4
5
6
7
git clone https://github.com/RainerKuemmerle/g2o.git
cd g2o
mkdir build
cd build
cmake ..
make -j8
sudo make install

Test

1
./../bin/curve_fit
1
2
3
4
5
6
Target curve
a * exp(-lambda * x) + b
Iterative least squares solution
a = 1.98894
b = 0.406972
lambda = 0.201044

Tshock1是一个第三方的terraria开服工具。在这里,我们尝试在VPS搭建Tshock服务。

SWAP

查看系统内存:

1
free -h
1
2
3
4
             total       used       free     shared    buffers     cached
Mem: 489M 441M 48M 404K 55M 159M
-/+ buffers/cache: 227M 262M
Swap: 0B 0B 0B

由于Tshock建议需要2GB的内存,但我的VPS只有489M的物理内存。幸好有人测试使用swap也可以2,于是根据指南3尝试对Swap进行设置。

注意,只有XEN、KVM架构的VPS可以设置SWAP交换分区

创建swap文件

1
dd if=/dev/zero of=/swapfile count=2048 bs=1M

bs是每块的大小,count是块的数量,bs * count,就是swap文件的大小了,这里就是1M * 2048=2G。

测试:

1
2
ls / | grep swapfile
swapfile
激活swap文件

设置权限:

1
chmod 600 /swapfile

配置:

1
mkswap /swapfile

开启:

1
swapon /swapfile

测试:

1
2
3
4
5
6
free -m

total used free shared buffers cached
Mem: 489 481 7 0 36 213
-/+ buffers/cache: 231 258
Swap: 2047 0 2047

开机启动:

1
nano /etc/fstab

文件添加:

1
/swapfile   none    swap    sw    0   0

Mono4

1
2
3
4
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/ubuntu $(lsb_release -c --short) main" | sudo tee /etc/apt/sources.list.d/mono-official.list
sudo apt-get update
sudo apt-get install -y mono-complete mono-devel

Tshock

下载TShock中文版5

1
2
wget -O tshock.zip 'https://github.com/mistzzt/TShock/releases/download/cn-v3.1/tshock_cn_release.zip'
unzip tshock.zip -d ~/tshock

运行:

1
2
cd shock
MONO_THREADS_PER_CPU=50 mono TerrariaServer.exe

  • 型号:Thinkpad T460p
  • 显卡:GeForce 940MX
  • 系统:Ubuntu 16.04.4 LTS
  • 内核:4.13.0-45-generic

为SLAM系统开发配置环境,使用ZED MINI CAMERA。

Ubuntu 16.04

1
2
3
4
5
6
7
8
9
uname -r
4.13.0-36-generic

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.4 LTS
Release: 16.04
Codename: xenial
换源
1
2
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
sudo gedit /etc/apt/sources.list

填入:

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse

终端:

1
2
sudo apt-get update
sudo apt-get upgrade
1
sudo apt-get install build-essential vim
安装NVIDIA驱动
1
2
3
4
5
sudo apt-get remove --purge nvidia*
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FCAE110B1118213C
sudo apt-get update
sudo apt-get install nvidia-396

重启电脑,终端执行:

1
2
3
ls /dev/nvidia*

/dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm
1
2
3
4
cat /proc/driver/nvidia/version

NVRM version: NVIDIA UNIX x86_64 Kernel Module 396.24 Thu Apr 26 00:10:09 PDT 2018
GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)

安装CUDA 9.1

官网下载CUDA cuda_9.1.85_387.26_linux.run。

1
2
chmod +x cuda_9.1.85_387.26_linux.run
sudo sh ./cuda_9.1.85_387.26_linux.run

只安装CUDA 9.1 Toolkit。

重启,配置环境:

1
sudo gedit ~/.bashrc

添加:

1
2
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

刷新:

1
source /etc/profile

重启:

1
2
3
4
5
6
nvcc -V

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
Building Samples (optional)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /NVIDIA_CUDA-9.1_Samples/1_Utilities/deviceQuery
make
./deviceQuery

CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GeForce 940MX"
CUDA Driver Version / Runtime Version 9.2 / 9.1
CUDA Capability Major/Minor version number: 5.0
Total amount of global memory: 2004 MBytes (2101870592 bytes)
( 3) Multiprocessors, (128) CUDA Cores/MP: 384 CUDA Cores
GPU Max Clock rate: 1242 MHz (1.24 GHz)
Memory Clock rate: 1001 Mhz
Memory Bus Width: 64-bit
L2 Cache Size: 1048576 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Supports Cooperative Kernel Launch: No
Supports MultiDevice Co-op Kernel Launch: No
Device PCI Domain ID / Bus ID / location ID: 0 / 2 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 9.2, CUDA Runtime Version = 9.1, NumDevs = 1
Result = PASS

安装OpenCV 3.4.0

官网下载sources。

1
2
3
4
5
6
7
8
9
10
sudo apt-get install build-essential git cmake git yasm libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev python-dev python-numpy python-tk libtbb2 libtbb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libdc1394-22-dev libswscale-dev libopenexr-dev libeigen2-dev libeigen3-dev libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev

mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_EXAMPLES=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D WITH_GTK_2_X=ON -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j8
sudo make install

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig

安装ROS Kinetic (optional)

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

sudo apt-get update
sudo apt-get install ros-kinetic-desktop-full

sudo rosdep init
rosdep update

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

sudo apt-get install python-rosinstall

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc之后,系统的opencv版本会变成Kinetic自带的3.3版本,所以必要时不要添加此句。

安装ZED SDK

官网下载ZED_SDK_Linux_Ubuntu16_v2.4.0.run。

1
2
chmod +x ZED_SDK_Linux_Ubuntu16_v2.4.0.run
./ZED_SDK_Linux_Ubuntu16_v2.4.0.run

输入 q 退出 license agreement。

To accept the license simply press Tab key until the 'O.k.' is highlighted when installing the ttf-mscorefonts-installer

测试:

1
/usr/local/zed/tools/ZED\ Explorer

zed camera test
0%