• Stars
    star
    247
  • Rank 164,117 (Top 4 %)
  • Language
    JavaScript
  • Created over 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Portfolio for 3D Point Cloud Processing from www.shenlanxueyuan.com China

Docker for 3D Point Cloud Analysis

This is the Docker image for open courseware 3D Point Cloud Analysis from www.shenlanxueyuan.com, China.

All source code are based upon public available resources and starter-code from www.shenlanxueyuan.com.


Environment

The solution has been tested on Ubuntu 18.04 using Docker version 19.03.9, build 9d988398e7

To install Ubuntu on your existing Windows or Mac laptop, you can purchase

  • One additional SSD disk My Own Choice
  • One data bus for external disk connection My Own Choice
  • Disk holder (Without this when the disk is detached from the bus your machine would die :P) My Own Choice

And

  • Install the Ubuntu on the additional disk
  • When you want to use Ubuntu, change the boot option to USB boot during startup.

This will keep your native system intact. Personally, I don't recommend native Ubuntu installation. If you choose to bootstrap your native Windows/Mac with Ubuntu and your Ubuntu somehow broke your whole system would be TOTALLY DAMAGED.


Build Images

Set Up Docker

Add Current User to Docker Group

In order to use docker without sudo, current user must be added to Docker group as follows:

sudo usermod -aG docker $USER

Enable IPv4 Forwarding

In order to use networking inside Docker, IP forwarding should be enabled. You can check current IP forwarding config using the command below:

# check ip forwarding, 1 means enabled and 0 means disabled
sudo sysctl net.ipv4.ip_forward

To enable IP forwarding once, set the flag using the following commands:

# enable IP forwarding:
sysctl -w net.ipv4.ip_forward=1
# check config status. 1 means it has been successfully enabled.
cat /proc/sys/net/ipv4/ip_forward

If you want to enable it for all, change the configuration in /etc/sysctl.conf:

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
# See http://lwn.net/Articles/277146/
# Note: This may impact IPv6 TCP sessions too
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4(UNCOMMENT THE LINE BELOW)
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
#net.ipv6.conf.all.forwarding=1

Build Environment

The environment can be built with docker-compose as follows:

# this will build both cpu and gpu environment
docker-compose build

Environment Configuration

Docker Compose (For CPU Environment ONLY. NVIDIA Docker is NOT Supported Yet)

You can change configuration for cpu environment using docker-compose inside here (click to follow the link)

Volume Mounting

Local directories for source code and data are configured below. This will map your native workspace into into Docker.

    volumes:
      # assignments:
      - ${PWD}/workspace/assignments:/workspace/assignments  
      # data volume:
      - ${PWD}/workspace/data:/workspace/data

Network Port Mapping

Config port mappings for supervisord monitor and VNC client access as follows. This will map internal service ports to your native machine. Make sure the native port is not occupied.

    ports:
      # standard vnc client:
      - 45901:5900
      # supervisord admin:
      - 49001:9001

Docker Run (For GPU Environment)

You can change configuration for gpu environment inside this launch script (click to follow the link). Here docker run is used because so far docker-compose still doesn't support NVIDIA runtime, which is a must for GPU docker instance.

Volume Mounting

Local directories for source code and data are configured below. This will map your native workspace into into Docker.

  -v ${PWD}/workspace/assignments:/workspace/assignments \
  -v ${PWD}/workspace/data:/workspace/data \

Network Port Mapping

Config port mappings for supervisord monitor and VNC client access as follows. This will map internal service ports to your native machine. Make sure the native port is not occupied. The additional port 6006 is for Tensorboard.

  -p 49001:9001 \
  -p 45901:5900 \
  -p 46006:6006 \

Up and Running

Launch VNC Instance

# for cpu environment, launch with docker-compose:
docker-compose up workspace-vnc-cpu
# for gpu environment, launch with nvidia-docker:
./launch-workspace-vnc-gpu.sh

Health Check

Access supervisord monitor to make sure all processes have been started: http://[HOST_IP]:49001

Supervisord Health Check

VNC Access:

You can access the desktop with standard VNC client

VNC Client

On the system you can use

  • Remmina on Ubuntu
  • TightVNC Viewer on Windows

to create a VNC session to connect to: http://[HOST_IP]:45901

First, create a new VNC connection as follows. Make sure you have

  • Select the correct protocol VNC
  • Select the correct port on your local machine

Create New VNC Connection

When you enter the desktop, click the button to make the window fit to your screen:

Adjust Screen Display

Finally,

VNC through VNC Client

Python Package Installation

You can create new virtual environment using conda and install packages inside the environment using either conda or pip.

Conda

See Anaconda official tutorial.

Pip

Here TsingHua source is used for Python package index.

Install Large Packages

When you install large packages such as Tensorflow, use the following command to extend timeout:

pip install tensorflow-gpu==2.2.0 progressbar2 --default-timeout=1000

This command helps when you have unstable network connection.


BE REVOLUTIONARY! Keep Learning & Keep Programming!

Bonne JournΓ©e!


More Repositories

1

Sensor-Fusion

Sensor Fusion for Localization & Mapping
C++
187
star
2

Sensor-Fusion-for-Localization-Courseware

Multi-sensor fusion for localization courseware, 深蓝学陒, China
C++
135
star
3

Motion-Planning-for-Mobile-Robots

Course Assignment Solutions for Motion Planning for Mobile Robots
C++
84
star
4

Visual-Inertial-Odometry

Visual Inertial Odometry from www.shenlanxueyuan.com
C++
24
star
5

Auto-Car-04-Planning-01-Trajectory-Planning-Robotics-Approach

Trajectory planning for highway situation with classic robotics approach.
C++
12
star
6

Auto-Car-03-SLAM-00-Algorithms

Algorithm tutorial for visual SLAM
C++
12
star
7

Multi-Sensor-Fusion-for-Perception

C++
9
star
8

GNSS-INS-SIM-Extended

gnss-ins-sim extended for deterministic error simulation
Python
8
star
9

Deep-Learning-Codebase

Codebase for fast prototyping of deep learning applications
Jupyter Notebook
7
star
10

Perception-for-Autonomous-Vehicles

Multi-sensor perception for autonomous vehicles
C++
5
star
11

Coding-Interview-Prep

Repo for coding interview prep based on assignments from www.jiuzhang.com
C++
4
star
12

3D-Point-Cloud-KITTI-Evaluation

KITTI evaluation toolkit for 3D Point Cloud Analytics
C++
3
star
13

Auto-Car-02-Estimation-and-Control-04-PID-Steering-Control

Lane keeping through PID steering control
C++
2
star
14

Emerging-Automotive-Technologies

Workspace for ChalmersX's Emerging Automotive Technologies MicroMaster from edX
MATLAB
2
star
15

Cloudera-Training-01-Hadoop-Administration

Hands on exercises from Hadoop Administration
Jupyter Notebook
2
star
16

Robotics-03-Perception-03-3D-Perception

3D perception for pick & place.
C++
2
star
17

Image-Based-3D-Reconstruction

Reference solution to Image Based 3D Reconstruction, ShenLanXueYuan
C++
1
star
18

Auto-Car-02-Estimation-and-Control-01-Extended-Kalman-Filter

Extended Kalman filter for radar & lidar sensor fusion.
C++
1
star
19

MS-in-IOT-UMass-Amherest--ECE697-MIPS-Simulation

MIPS Simulation using CPP
C++
1
star
20

Artificial-Intelligence-01-Graph-Search-02-Pacman

Graph search for UCB Pacman.
Python
1
star
21

Auto-Car-01-Vision-03-Behavioral-Cloning

Behavioral cloning for end-to-end autonomous driving
Jupyter Notebook
1
star
22

Graph-Neural-Network

Sandbox for graph neural network learning.
Jupyter Notebook
1
star
23

Auto-Car-05-System-Integration-01-Udacity-Capstone

Udacity capstone project
Python
1
star
24

Auto-Car-02-Estimation-and-Control-05-Model-Predictive-Control

Lane keeping through Model Predictive Control(MPC)
C++
1
star
25

Auto-Car-02-Estimation-and-Control-02-Unscented-Kalman-Filter

Unscented Kalman filter for non-linear motion tracking.
C++
1
star
26

ROS-Engineer

Workspace for ROS-Theory and Practice, 深蓝学陒 and Robo Software Engineer, Udacity
CMake
1
star
27

Auto-Car-02-Estimation-and-Control-03-Particle-Filter-Localization

Localization through particle filter.
C++
1
star
28

Artificial-Intelligence-01-Graph-Search-03-Random-Heuristics

Random search through simulated annealing & genetic algorithm.
Jupyter Notebook
1
star