Ubuntu stick for installation to MacBook Pro

맥북프로에 Ubuntu를 사용하기 위해, USB 외장 드라이브를 필요때마다 연결해서 사용하고 있다. 이렇게 사용하기 위해선 grub2를 부트로더로 설치해야 하는데, Mac이나 Ubuntu에서 시동디스크를 만들면 EFI가 기본으로 되어버린다.

따라서, 윈도우 환경에서 unetbootin을 사용하면 깔끔하게 모든게 해결된다. (예전에 겪고서도 또 한두시간 삽질하게 만든 내용..)

Setting a persistent hostname on MacOS

macOS를 새로 설치하고 난 다음,  DCHP로 무선랜을 연결하고 나니 컴퓨터 이름(hostname)이 자동으로  IP와 연동하여 바뀌는 증상이 나타났습니다.

그냥 사용하는데는 큰 문제가 없으나, hostname을 사용하는 다른 부분에서 문제가 발생할 수 있으므로, 고정된 이름으로 설정할 필요가 있습니다.

System Preferences > Sharing > Computer Name을 적절히 설정합니다. 이미 설정되어 있는 이름을 사용해도 무방합니다. 다만 빈칸이나 별표 등 특수문자는 허용되지 않습니다. Edit 버튼을 눌러 Use global dynamic hostname의 체크를 해제합니다.

다음으로, 터미널을 열어 다음과 같이 입력합니다.

$ sudo scutil --set HostName byeongkyu-macbook-pro

이제 터미널을 종료하고, 다시 열거나 재부팅하면 hostname이 변하지 않고 고정되어 있습니다.

Install Electron using homebrew on macOS High Sierra

Install homebrew (https://brew.sh).

Install node.js v8.9.4

$ brew install node@8 -v
$ echo 'export PATH="/usr/local/opt/node@8/bin:$PATH"' >> ~/.bash_profile

Install Electron

$ npm install -g electron

Check installation

$ electron
  Electron 1.8.2 - Build cross platform desktop apps with JavaScript, HTML, and CSS
  Usage: electron [options] [path]

  A path to an Electron app may be specified. It must be one of the following:
    - index.js file.
    - Folder containing a package.json file.
    - Folder containing an index.js file.
    - .html/.htm file.
    - http://, https://, or file:// URL.

  Options:
    -d, --default         Run the default bundled Electron app.
    -i, --interactive     Open a REPL to the main process.
    -r, --require         Module to preload (option can be repeated).
    -v, --version         Print the version.
    -a, --abi             Print the Node ABI version.

Restore .bashrc to default for Ubuntu

환경변수 세팅 중 .bashrc 파일을 건드리는 경우나, 혹여는 잘못해서 파일을 지워버렸거나 했을 경우에 초기값으로 돌리는 방법.

Ubuntu의 경우엔 /etc/skel에 사용자를 생성할때 사용하는 기본 파일들이 존재함.

byeongkyu@deeply-cares-2:/etc/skel$ ll
total 40
drwxr-xr-x   2 root root  4096 Aug  1  2017 ./
drwxr-xr-x 144 root root 12288 Feb 21 11:36 ../
-rw-r--r--   1 root root   220 Sep  1  2015 .bash_logout
-rw-r--r--   1 root root  3771 Sep  1  2015 .bashrc
-rw-r--r--   1 root root  8980 Apr 20  2016 examples.desktop
-rw-r--r--   1 root root   655 May 17  2017 .profile

.bashrc를 기본값을 돌리고 싶으면 위 디렉토리에서 복사해 오면 됨.

$ cp /etc/skel/.bashrc ~/
$ source ~/.bashrc

Build OpenCV with CUDA

Get source from OpenCV official repository

Extract each file.

$ cd ~/Downloads
$ tar zxf opencv-3.4.0.tar.gz
$ tar zxf opencv_contrib-3.4.0.tar.gz

$ cd opencv-3.4.0
$ mkdir build
$ cd build

cmake using this options.

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.0/modules -D FORCE_VTK=ON -D WITH_TBB=ON -D WITH_V4L=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -D CUDA_NVCC_FLAGS="-D_FORCE_INLINES" -D WITH_GDAL=ON -D WITH_XINE=ON -D BUILD_EXAMPLES=ON -D CUDA_FAST_MATH=-ON ..

Build & install

$ make -j8
$ sudo make install

Check you PATH environment, append /usr/local/bin

$ echo 'export PATH=/usr/local/bin:$PATH' | tee -a ~/.bashrc
$ source ~/.bashrc

Check installation

$ opencv_version
3.4.0
$ which opencv_version
/usr/local/bin/opencv_version

Electron 개발환경 구축

Electron은 Javascript, HTML, CSS로 데스크톱 앱을 작성할 수 있는 개발 플랫폼이다. 장점으론 한번 개발해 놓으면 다양한 플랫폼에 별도의 코드 수정없이 사용이 가능하나, 단점으론 메모리 소비가 크고, 속도가 느리다.

개발환경 구축은 Node.js 설치부터 시작. 운영체제는 Ubuntu 16.04LTS. 기본 패키지는 4.x 버전이므로 현재 LTS 버전인 8.9.4를 설치하기 위해 다음과 같이 입력,

$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs

이제 npm (Node.js Package Manager)를 이용해서 electron 설치

$ sudo npm install -g electron --unsafe-perm=true --allow-root

이렇게 하면 기본적인 개발환경 구축은 끝.

Install Gazebo9 from source with DART physics engine

기존에 설치된 것 제거

$ sudo apt-get remove '.gazebo.' '.sdformat.' '.ignition-math.' '.ignition-msgs.' '.ignition-transport.'

의존 패키지 설치

$ wget https://bitbucket.org/osrf/release-tools/raw/default/jenkins-scripts/lib/dependenciesarchive.sh -O /tmp/dependencies.sh 
$ ROSDISTRO=kinetic . /tmp/dependencies.sh
$ sudo apt-get install $(sed 's:\\ ::g' <<< $BASE_DEPENDENCIES) $(sed 's:\\ ::g' <<< $GAZEBO_BASE_DEPENDENCIES)

DART 설치

$ sudo apt-add-repository ppa:dartsim
$ sudo apt-get update
$ sudo apt-get install libdart6-dev
$ sudo apt-get install libdart6-utils-urdf-dev

옵션 패키지

$ sudo apt-get install xsltproc
$ sudo apt-get install ruby-ronn

의존 패키지#2 설치

$ sudo apt install graphviz-dev libignition-fuel-tools-dev libsdformat6-dev libignition-transport4-dev

빌드

$ cd /tmp/gazebo
$ hg pull && hg update gazebo9
$ mkdir build 
$ cd build 
$ cmake ..
$ make -j8
$ sudo make install

Gazebo 실행 테스트

$ gazebo -e dart --verbose

라이브러리 문제가 발생하면?

$ echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/gazebo.conf
$ sudo ldconfig

ROS와 연동하기 위한 패키지 설치

$ sudo apt install ros-kinetic-ros-control ros-kinetic-ros-controllers
$ cd ~/catkinws/src 
$ git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git
$ catkin build

테스트

$ roslaunch gazebo_ros empty_world.launch physics:=dart

참고사이트

끝!.