保護中: Deep Learning Hackathon
ロボット知能工学特論 演習1
この記事は私が担当している講義ロボット知能工学特論用です。ウェイポイントナビゲーションのプログラムを作りましょう。なお、この世界モデルを使って、MCLを実装していきます。
以下のチュートリアルも参考にしてください。
ソース
// 本プログラムは // http://wiki.ros.org/ja/navigation/Tutorials/SendingSimpleGoals // を改変しています。 #include <ros/ros.h> #include <geometry_msgs/PoseWithCovarianceStamped.h> #include <move_base_msgs/MoveBaseAction.h> #include <actionlib/client/simple_action_client.h> typedef actionlib::SimpleActionClient<move_base_msgs::MoveBaseAction> MoveBaseClient; struct MyPose { double x; double y; double yaw; }; int main(int argc, char** argv){ MyPose way_point[] = {{-0.15, -0.54, 0.0 * M_PI}, {1.6, -0.6, M_PI}, {1.6, 1.5, 0.0 * M_PI},{999, 999, 999}}; ros::Publisher pub; ros::init(argc, argv, "simple_goal"); ros::NodeHandle nh; pub= nh.advertise<geometry_msgs::PoseWithCovarianceStamped>("initialpose", 2, true); // 時間の取得 ros::Time tmp_time = ros::Time::now(); //create msg geometry_msgs::PoseWithCovarianceStamped initPose; // 初期位置の設定 turtlebot3_worldの初期位置が(-2.0, -0.5)なのでそれに設定 initPose.header.stamp = tmp_time; // 時間 initPose.header.frame_id = "map"; // フレーム initPose.pose.pose.position.x = -2.0; initPose.pose.pose.position.y = -0.5; initPose.pose.pose.position.z = 0; initPose.pose.pose.orientation.w = 1.0; // パブリッシュ amclパッケージに初期位置を送る pub.publish(initPose); // アクションクライアンを作成。1番目の引数は接続するアクションサーバー名。 // アクションサーバーが立ち上がっていないとだめ。 // 2番目の引数はtrueならスレッドを自動的に回す(ros::spin()。 MoveBaseClient ac("move_base", true); // アクションサーバーが起動するまで待つ。引数はタイムアウトする時間(秒)。 // この例では5秒間待つ(ブロックされる) while(!ac.waitForServer(ros::Duration(5.0))){ ROS_INFO("Waiting for the move_base action server to come up"); } ROS_INFO("The server comes up"); move_base_msgs::MoveBaseGoal goal; // base_link座標系(ロボット座標系) goal.target_pose.header.frame_id = "base_link"; // 現在時刻 goal.target_pose.header.stamp = ros::Time::now(); int i = 0; while (ros::ok()) { // ROSではロボットの進行方向がx座標、左方向がy座標、上方向がz座標 goal.target_pose.pose.position.x = way_point[i].x; goal.target_pose.pose.position.y = way_point[i].y; goal.target_pose.pose.orientation.w = 1; ROS_INFO("Sending goal: No.%d", i+1); // サーバーにgoalを送信 ac.sendGoal(goal); // 結果が返ってくるまで30.0[s] 待つ。ここでブロックされる。 bool succeeded = ac.waitForResult(ros::Duration(30.0)); // 結果を見て、成功ならSucceeded、失敗ならFailedと表示 actionlib::SimpleClientGoalState state = ac.getState(); if(succeeded) { ROS_INFO("Succeeded: No.%d (%s)",i+1, state.toString().c_str()); } else { ROS_INFO("Failed: No.%d (%s)",i+1, state.toString().c_str()); } i++; } return 0; }
- packageのディレクトリ毎、圧縮したファイル
- 展開・ビルド方法
- $ cp simple_goal.tar ~/catkin_ws/src
- $ cd ~/catkin_ws/src
- $ tar xvf simple_goal.tar
- $ cd ~/catkin_ws
- $ catkin_make
演習
- 上で展開したsimple_goalを次の要領で実行しよう。
- まず、geditで~/.bashrcを開き、最後の行に以下を追加し保存する。これにより、毎回入力する手間がはぶける。
- export TURTLEBOT3_MODEL=burger
- まず、端末を開き次のコマンドを実行。
- $ roslaunch turtlebot3_gazebo turtlebot3_world.launch
- 演習6で作成した地図を使います。ROS演習6ができていない場合はこのmap.tarファイルをダウンロードして、次のようにホームディレクトリで展開してください。
- 2個目の端末を開き次のコマンドを実行。
- roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/mymap.yaml
- 3個目の端末を開きrvizを起動する。
- rosrun rviz rviz -d `rospack find turtlebot3_navigation`/rviz/turtlebot3_nav.rviz
- 4個目の端末を開き、catkin_makeして生成したsimple_goalノードを起動する。
- $ rosrun simple_goal simple_goal
- まず、geditで~/.bashrcを開き、最後の行に以下を追加し保存する。これにより、毎回入力する手間がはぶける。
ハンズオン
- もう少し規模の大きい建物内でのナビゲーションを考えましょう。以下のワールドファイルを使い、ロボットの初位置から右奥にあるポールまでウェイポイントナビゲーションをするプログラムをつくりましょう。
- 準備
$ cd
$ mkdir downloads
- turtlebot3_fmt_world.tarをダウンロードして~/downloadsの中に保存。
$ cd downloads
$ tar xvf turtlebot3_fmt_world.tar
$ cd turtlebot3_fmt_world
$ sudo cp turtlebot3_fmt_world.launch ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/launch
$ sudo cp fmt.world ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models
$ cp -r fmt ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models
$ roslaunch turtlebot3_gazebo turtlebot3_fmt_world.launch
- 下のような建物とロボットが表示されたら終わり。右奥のボールがゴール。
- クイズ:Turtlebot3の初期位置が悪く、スタート地点(x = 0, y =0)にはいないのでロボットは表示されません。turtulebot3_fmt_world.launchの中をみてスタート地点を(0, 0)に設定してください。なお、向きも進行方向に対して右を向いているので、ヨー軸まわりにπ/2回転させてください。
Yolo学習用データセットの作成ツール:labelImg
Yolo学習用データセットの作成法のメモ。Yoloの学習データを作成するときは、画像からオブジェクトの領域を矩形で指定する必要がある。そのためのツールとしては、BBox-Label-Toolがあるが、使いづらい上に、矩形領域のテキストファイルをYolo用に変更しなければならず手間が多い。Yolo用のテキストファイルも生成できるtzutalinさんのlabelImgを紹介する。
GitHubリポジトリ
インストール (Ubuntu16.04, python3)
- cd src
- git clone https://github.com/tzutalin/labelImg.git
- sudo apt install pyqt5-dev-tools
- sudo apt install python3-pip
- sudo pip3 install lxml
- cd labelImg
- make qt5py3
事前準備
- 一枚の画像に一つのオブジェクトだけが写っている画像を多く準備する。一オブジェクトについて千枚程度は必要。
- ここでは、20オブジェクトを準備して次のディレクトリに配置した。
- ~/data/robocup
- robocupディレクトリの中に各オブジェクト名のディレクトリを作成する。この例では次のディレクトリを作成した。
- 1doritos, 2pringles, 3potato_chips, 4lays, 5milk_tea, 6pepsi, 7apple_juice, 8dr_pepper, 9cup_noodle, 10meal_block, 11sandwich, 12lemon, 13avocado, 14paprika, 15cascade_pod, 16spoon, 17fork, 18cup, 19bowl, 20dish
実行方法
- 好きなエディタを使ってクラスのラベルテキストファイルclass.txtを作る。一行に一つのクラスラベルにする。つまり、20クラスある場合は、20行になる。以下はコマンド例。この例では~/data/robocupに画像ディレクトリがあるものとする。この例のclass.txtはここ。
- cd ~/data/robocup
- gedit class.txt
- 作業しやすいようにlabelImg/dataディレクトリ内にコピーする。
- cp class.txt ~/src/labelImg/data/predefined_classes.txt
- 実行コマンドは次のとおり。私の環境では画像ファイルのあるパスとクラスのラベルテキストファイルを指定しないとうまく動作しない場合があつた。
- python3 labelImg.py [画像ファイルのあるパス]
- 以下は実行例。labelImgはラベルイメージなのでl(エル)の次は大文字のI(アイ)。打ち間違いに注意。
- cd ~/src/labelImg
- python3 labelImg.py ~/data/image
- [重要] 左にあるツールバーの下矢印をクリックして、隠れているツールを出す。標準ではPascal/VOCとなっている箇所をクリックしてYoloにする。これでYolo用のファイルができる。
- なお、Yolo用の設定では、右にある[default class]、[diffcult]は無効となる。
- GUI操作でもデータを作成できるが、作業を効率化するための設定をする。上のメニュー[View]をクリックして、[Auto Saving]と[Single Class Mode]にチェックを入れる。
- アノテーションファイルを保存する場所を設定する。左メニューのChange Save Dirをクリックして保存するディレクトリをセットする。前回、作業したディレクトリがセットされているので、必ずこの作業が必要。
- 領域を選択するために「wキー」を押す、縦、横の直線が出たら始点を合わせて左マウスボタンをクリックして、そのままオブジェクト領域の終点までカーソールを移動して指を離す。先ほど、Auto Savingモードに設定したので、この時点でファイルが保存される。最初だけ保存先を聞かれるので画像ファイルと同じディレクトにする。
- 次の画像にするために「dキー」を押す。画像が変わったら「wキー」を押して領域を選択できるようにし、マウス操作で矩形領域を決める。なお、ご本家様の説明にはないが、「dキー」と「wキー」を同時に押すとこの作業を高速化できる。以下ひたすらこの繰り返し。
キー操作
Ctrl + u | ディレクトリからすべての画像ファイルを読み込む |
Ctrl + r | アノテーションのディレクトリを変更 |
Ctrl + s | 保存 |
Ctrl + d | 現在のラベルと矩形をコピー |
Space | 現在の画像を検証したとフラグをつける |
w | 矩形の生成 |
d | 次の画像 |
a | 前の画像 |
del | 選択した矩形の消去 |
Ctrl++ | ズームイン |
Ctrl– | ズームアウト |
↑→↓← | 矢印キー:選択した矩形の移動 |
- 終わり。お疲れ様!
Ubuntu16.04: RealSense R200を使う
RealSense R200をUbuntu16.04toROS Kineticで使った時のインストールメモ。IntelRealSenseのGithubのとおり行ったらエラーが出てハマった。ROS Wikiのとおり実施したら解決した。
環境
- Alienware 15 R4
- Ubuntu16.04
- Kernel 4.13.0-43-generic
インストール法
以上
VOC xmlファイルをYOLO annotaitonファイルへ変換
VOC xmlファイルをYOLO annotationファイルへ変換する方法は以下を参照。
準備
cd ~/src
git clone https://github.com/SsaRu/convert2Yolo.git
sudo pip3 install -r requirements.txt
~/src/convert2Yolo$ python3 example.py --datasets VOC --img_path ~/data/hackathon180611/18cup.img --label ~/data/hackathon180611/18cup.txt --convert_output_path ~/data/hackathon180611/18cup.txt2 --img_type ".jpg" --manipast_path ~/data/hackathon180611/18cup.manifest --cls_list_file ~/data/hackathon180611/class.name
YOLO V3 インストールメモ
Alienware 15が修理から戻ってきたので、再インストールしたときのメモ。
上の例では、処理時間がV2が18.9[ms]、V3が22.7[ms]と多少遅くなっているが、予測確率が80%台から90%台と10%近く向上している。
- 環境
- DELL Alienware 15 R4
(CPU: Intel i7-8750H, Memory:16GB, GPU: Nvidia GTX 1070) - Xubunut16.04.4
- Kernel 4.13.0-45-generic
- gcc/g++ 5.4.0
- DELL Alienware 15 R4
- Darknetのインストール
- この指示にしたがいDarknetをインストールする
- cd ~/src
- git clone https://github.com/pjreddie/darknet.git
- cd ~/src/darknet
- makefileの該当行を以下に変更
- GPU=1
- CUDNN=1
- OPENCV=1
- ARCH= -gencode arch=compute_61,code=[sm_61,compute_61]
- make -j 6
- Yoloのウェイトのダウンロードと実行
- cd ~/src/darknet
- 学習済みのウェイト(パラメータ)ファイルをダウンロード
- wget http://pjreddie.com/media/files/yolov3.weights
- サンプルの実行
- ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
- 実行方法
- ノートPC内蔵カメラ
- ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights
- 動画ファイル
- Webm形式の動画ファイルは問題なく動作する。
- ./darknet detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights <video file>
- ノートPC内蔵カメラ
- テスト
- 下図はノートPC内蔵カメラで壁を撮ったときの識別結果。私の環境では約28フレーム/秒でリルタイムで識別でき、時計の確率は98%、カレンダーに写っている女性はpersonの確率61%で、時々、birdと識別された。
以上
UR5をGazeboで動かす
UR5+Robotiq GripperをGazeboで動作させたときのメモ。https://bundle-archive.plex.tv/utecrobotics/ur5を参考にした。
- ROS バージョン: Kinetic
- 必要なパッケージのインストール
- sudo apt install ros-kinetic-ros-control ros-kinetic-ros-controllers
- sudo apt-get install ros-kinetic-gazebo-ros-control
- sudo apt-get install ros-kinetic-moveit
- UR5 Robot + a Robotiq gripperパッケージのインストール
- このウェブサイト(https://bundle-archive.plex.tv/utecrobotics/ur5) のインストラクションに従う。
- $ cd ~/catkin_ws/src
- $ git clone https://github.com/utecrobotics/ur5
- $ git clone https://github.com/utecrobotics/robotiq
- $ cd ..
- $ catkin_make
- このウェブサイト(https://bundle-archive.plex.tv/utecrobotics/ur5) のインストラクションに従う。
- Rvisでの表示
- $ roslaunch ur5_description display_with_gripper.launch
- Gazeboでのシミュレーション
- コマンドでの実行
- グリッパーの開閉(valueは0.8が開、0が閉)
- rosrun ur5_gazebo send_gripper.py –value 0.5
- 関節。send_joints.pyの中で各関節の角度が指定されているので、それらを変更すると好きな姿勢に指定できる。
- rosrun ur5_gazebo send_joints.py
- グリッパーの開閉(valueは0.8が開、0が閉)
以上
Razer Blade 15 環境設定メモ (Xubuntu16.04.2, Cuda9.2)
現時点では、15インチのゲーミングノートPCでは世界最小といわれているRazer Blade 15 にxubuntu16.04.2, Cuda9.2をインストールしたときのメモ。Alienware 15と比較すると非常にコンパクト、スリムでライトウェイト(1kg以上も軽い)。これなら、モバイルできる。
- 環境
- Razer Blade 15
(CPU: Intel i7-8750H, Memory:16GB, GPU: Nvidia 1070 Max-Q Design, Memory: 8GB) - xubuntu 16.04.2 (DVDメディアでインストールし、upgrade後は16.04.05)
- Kernel 4.15.0-30-generic
- gcc/g++ 5.4.0
- Razer Blade 15
- CAPS LOCKとCTRLキーの入れ替え
- /etc/default/keyboardのXKBOPTIONS=”ctrl:nocaps”と変更する。
- ホームディレクトリにある日本語ファイル名を英語に変換
- 次のコマンドを端末で実行
LANG=C xdg-user-dirs-gtk-update
- ウインドウが開くので右下の[Update Names]をクリックして変更し、再起動する。
- 再起動するとBluetooh関連のBluemanが”/home/ユーザー名/ダウンロード”というディレクトリがないとエラーを吐くので次のコマンドでBlueman mangerを起動する。
sudo blueman-manager
- 表示->ローカルサービス->転送->転送設定のIncoming FolderでDownloadsを選び、Applyをクリックし、closeをクリックしウインドウを閉じる。
- 次のコマンドを端末で実行
- すぐ使うソフトウェアのインストール
- sudo apt install emacs git
- sudo apt install emacs git
- 準備
- NVIDIAのドライバをインストールしていないので、起動するとIntelのGPUでXが起動する。Ctlr+Alt+F1でXを落とす
- sudo apt update
- sudo apt upgrade
- sudo service lightdm stop
- NVIDIAドライバのインストール
- sudo add-apt-repository ppa:graphics-drivers/ppa
- sudo apt update
- sudo apt install nvidia-390 nvidia-settings
- sudo reboot
- NVIDIAのウェブサイトからCuda9.2のインストール
- Linux->x86_64->ubuntu->16.04->dev(local)を選択
- Download (1.2GB)をクリックし、ダウンドードが完了するまで待つ。
- sudo dpkg -i cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
- sudo apt-key add /var/cuda-repo-9-2-local/7fa2af80.pub
- sudo apt-get update
- sudo apt-get install cuda
- .bashrcに以下を追加し、CUDAのパスを通す
export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}
- NVIDIAのウェブからcuDNNのインストール
- nvidiaのdeveloperに登録しないとダウンロードできないので登録する。
- Download cuDNN v7.2.1 for CUDA9.2をクリック
- cuDNN v7.1.4 for Runtime Library for Ubuntu16.04 (Deb)とcuDNN v7.1.4 Developer Library for Ubuntu16.04 (Deb)をダウンロードする。
sudo dpkg -i libcudnn7_7.2.1.38-1+cuda9.2_amd64.deb
sudo dpkg -i libcudnn7-dev_7.2.138-1+cuda9.2_amd64.deb
- OpenCV3.4.0のインストール
- ROS Kineticのインストール
- YOLO V3のインストール
終わり
RealSense D435をROSで使う

RealSense D435をROSで使うメモ。RealSense SDKはaptでインストールできるのでとても簡単だった。ROSのラッパーもすでに提供されているのですぐ使える。このメモはカラー画像の表示まで。
環 境
- Razer Blade 15
- Ubuntu16.04
- ROS Kinetic
- RealSense SDK 2.0
- ROS Wrapper: build 2.0.3
RealSense SDKのインストール
- このページのとおり実施すればよい。以下の手順はその簡単な日本語訳。
- サーバーの公開鍵を登録
- sudo apt-key adv –keyserver keys.gnupg.net –recv-key C8B3A55A6F3EFCDE || sudo apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv-key C8B3A55A6F3EFCDE
- リポジトリにIntelサーバーを追加
- sudo add-apt-repository “deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo xenial main” -u
- アップグレードするときは、以下を実行する。今回は初めてインストールするので、以下は実行しない。
- sudo rm -f /etc/apt/sources.list.d/realsense-public.list
- リポジトリのリストと使えるパッケージをリフレッシュする
- sudo apt update
- デモを実行できるようにインストールする
- sudo apt install librealsense2-dkms
- sudo apt install librealsense2-utils
- 開発用に追加のパッケージをインストールする
sudo apt install librealsense2-dev
sudo apt install librealsense2-dbg
RealSenseのUSBケーブルを抜き差しして以下のコマンドを実行する。ウインドウが開くので、左サイドバーにあるStereo Moduleをoffからonにすると、上のような画像が現れる。
- realsense-viewer
- realsense-viewer
ROSラッパーのインストール
- https://github.com/intel-ros/realsense/releases からSource code (realsense-2.0.3.tar.gz)を~/catkin_ws/srcにダウンロードする
- cd ~/catkin_ws/src
- tar xvzf realsense-2.0.3.tar.gz
- cd ~/catkin_ws
- catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
- usr/lib/libusb.aがないと怒られたら、次のコマンドを実施する。
- sudo apt install libusb-dev
- usr/lib/libusb.aがないと怒られたら、次のコマンドを実施する。
- catkin_make install
実行
roslaunch realsense2_camera rs_camera.launch
- 解像度は640×480 pixel。変更したいときはrs_camera.launchの中を書き換える。
rosrun image_view image_view image:=/camera/color/image_raw
- 画像が表示されれば成功。
トピック
~/catkin_ws$ rostopic list
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/extrinsics/depth_to_color
/camera/extrinsics/depth_to_infra1
/camera/extrinsics/depth_to_infra2
/camera/infra1/camera_info
/camera/infra1/image_rect_raw
/camera/infra1/image_rect_raw/compressed
/camera/infra1/image_rect_raw/compressed/parameter_descriptions
/camera/infra1/image_rect_raw/compressed/parameter_updates
/camera/infra1/image_rect_raw/compressedDepth
/camera/infra1/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra1/image_rect_raw/compressedDepth/parameter_updates
/camera/infra1/image_rect_raw/theora
/camera/infra1/image_rect_raw/theora/parameter_descriptions
/camera/infra1/image_rect_raw/theora/parameter_updates
/camera/infra2/camera_info
/camera/infra2/image_rect_raw
/camera/infra2/image_rect_raw/compressed
/camera/infra2/image_rect_raw/compressed/parameter_descriptions
/camera/infra2/image_rect_raw/compressed/parameter_updates
/camera/infra2/image_rect_raw/compressedDepth
/camera/infra2/image_rect_raw/compressedDepth/parameter_descriptions
/camera/infra2/image_rect_raw/compressedDepth/parameter_updates
/camera/infra2/image_rect_raw/theora
/camera/infra2/image_rect_raw/theora/parameter_descriptions
/camera/infra2/image_rect_raw/theora/parameter_updates
/camera/realsense_ros_camera_manager/bond
/camera/realsense_ros_camera_manager/parameter_descriptions
/camera/realsense_ros_camera_manager/parameter_updates
/rosout
/rosout_agg
/tf_static
以上
ubuntuでonedriveを使用
今まで、自分のPCではLinuxとWindowsを両方とも使わなければならないのでデュアルブートをしていた。デュアルブートでは2つのOSを同時に使うことはできないし、ハードディスクの使用も無駄があるので、試験的にubuntuにvmwareを入れて、そのゲストOSとしてWindows10をインストールして使い始めた。
そこで、問題になるのがOneDriveである。常にオンライン環境ではないので、ローカルPCにもOneDriveの全てのフアイルを保存し、同期して作業をしている。これらのファイルをどこに保存するか考えたところ、仮想マシン上よりubuntu上の方が、LinuxからもWindowsからもアクセスが容易なことからubuntu上に保存することにした。
OneDriveのLinuxクライアントを調べたところ、このウェブサイトに方法が記載されていたので、それに従った。ただ、makeでエラーが出てコンパイルできないので、このサイトのReadme.mdに従ってインストールした。以下はその作業のメモ。
環 境
- Ubuntu 16.04.4
- Windows10.1
準 備
- sudo apt install build-essential
- sudo apt install libcurl4-openssl-dev
- sudo apt install libsqlite3-dev
- curl -fsS https://dlang.org/install.sh | bash -s dmd
コンパイル
- source ~/dlang/dmd-2.081.2/activate
- cd ~/src
- git clone https://github.com/abraunegg/onedrive.git
- cd onedrive
- make
- sudo make install
クライアントの使用
- onedrive –synchronize
- マイクロソフトのアカウントにログインして、アプリケーションにファイルへのアクセス許可を与える必要がある。与えると空白ページにリダイレクトされるので、そのURLをコピーして、端末に貼り付ける。この作業は、ここに写真入りで詳しく書かれている。
- ~/OneDriveにファイルがダウンロードされる。初回は、ファイルの容量とネットワークのスピードによるがこの作業に相当時間がかかる。
サービス化
- Ubuntu起動時に自動的に立ち上がるようにする。
- systemctl –user enable onedrive
- systemctl –user start onedrive
- ログを見る
- journalctl –user-unit onedrive -f
詳しい使い方は以下のURLを参照してください。
以上
Voyager: Razer Blade15にお似合い!?おしゃれなフレンチLinuxディストリビューション

仕事ではXubuntu16.04を使っている。Xfceが軽くて快適であるが、個人的に使うにはデザインが平凡でRazer Blade15に似合わない。いろいろ、探すとフランス製のVoyagerがXubuntuベースでデザインが洗練されているようなのでインストールしてみた。
- ダウンロード
- インストールDVDの作成
- ダウンロードしたイメージファイルを適切なソフトを使いDVDに焼く
- インストール
- BIOSの設定を変更して、DVDからブートできるようにしてVoyager16.04.3をインストールする。方法はXubuntuと全く同じ。
- 設定
- Conkyの文字化けを直す
- 日本語フォントを設定して日本語化もできるが、デザイン的に英語が合うので、英語で表示する。
- この記事のとおり実施
- メニュー->設定->セッションと起動->自動開始アプリケーションのConky Controlにチェックが入っていなければ入れ、選択してEditをクリックする。コマンドに以下を入れる。つまり、言語環境を英語にする。
- ALLh -c “sleep 5;LC_ALL=C sh ~/.scripts/Conky/DemConky.sh;”
- 日本語化
- ショートカットキー
- emacs派の僕にとっては、Ctrl-Xで仮想画面に切り替われては仕事にならないので以下のように変更した。これにより少し幸せになれた。
- 設定->キーボード->アプリケーションショートカットキーでショートカットがCtrl+xになっているコマンドxfdashboardを削除する。
- emacs派の僕にとっては、Ctrl-Xで仮想画面に切り替われては仕事にならないので以下のように変更した。これにより少し幸せになれた。
- Conkyの文字化けを直す
以上
Razer Blade 15にVoyager Linuxを入れ仕事で快適に使おう!

現時点では、15インチのゲーミングノートPCでは世界最小といわれているRazer Blade 15 にLinuxのおしゃれなディストリビューションVoyagerを入れ、仕事で快適に使うために試行錯誤したときのメモ。BIOSを1.05にアップデートするとLinuxでタッチパッドも認識するようになるので、仕事に使うにもほぼ支障はない。
- 前 提
- 仕事ではROSやDeep Learningを使うためGPU搭載のノートPCを使う。ただし、事務書類や仕事関係のソフトなどでWindowsも使わざるをえない。
- LinuxとWindowsの共存方法
- 今までデュアルブートでLinuxとWindowsを別々に起動していたが、切り替えに時間がかかり、作業が中断し、ハードディスクの使用に無駄がでるなどの問題点をかかえていた。そこで、今回は、Linuxに仮想マシンをインストールし、そこにWindows10を入れることにした。
- Linuxはどのディストリビューションにするか
- 仕事関係でUbuntu系を使わなければならない。Ubuntu系もいろいろあるが、軽量のデスクトップXfceを使ったXubuntuにする。ただし、Xubutuのデスクトップデザインは洗練されていない。しかも、Xubuntuのマスコットはねずみ、Razerのロゴはヘビなので似合わない。調べてみると、フランス製のVoyagerがエレガントで美しいデザインなので採用してみることにした。
- 環 境
- Razer Blade 15
(CPU: Intel i7-8750H, Memory:16GB, GPU: Nvidia 1070 Max-Q Design, Memory: 8GB) - Linux
- Voyager 16.04.3
- Kernel 4.15.0-33-generic
- gcc/g++ 5.4.0
- 仮想マシン
- VMWare
- ホストOS: Voyager 16.04.3
- ゲストOS: Windows10
- Razer Blade 15
- 周辺機器
- プータブルDVDドライブ:ドライブ類は内蔵されていないのでインストールなどに1台あると便利。私は以下の機器を利用した。
- USB LANアダプタ (ドライバを入れずともUbuntu16.04ですぐ認識するので便利)。Razer Blade 15には有線LANのコネクタがないので、USB LANアダプタは必要。
- 電源アダプタ:GPU 1070搭載機は230W、1060は200Wの電源アダプタが必要。RAZER Bladeはコンパクトなのに電源アダプタが大きのは残念。
- BIOSアップデート
- BIOSのバージョンが1.03だとLinuxでタッチパッドを認識しないので次の方法で1.05にアップデートする。
- RAZER 15” (2018) SUPPORTのSoftware & Driversをクリック
- [Blade 15″ 2018] BIOS Updater Guide 1.05のDownloadをクリックしダウンロードし、その説明に従いBIOSをアップデートする。
- Voyager Linuxのインストール
- ディスプレイ、無線LAN、スピーカー、マイク、内蔵カメラは問題なく動く。
- GPUはこのページの後で説明している方法でNVIDIAのドライバを入れればあっさり認識され使える。
- タッチパッドはBIOSを1.05にアップデートしていたらLinuxでも認識する。
- Voyager Linuxは基本的にはXubuntuなのでインストール方法は同じ。この記事を参照にいんストールしてみてください。
- 設 定
- CAPS LOCKとCTRLキーの入れ替える
- /etc/default/keyboardのXKBOPTIONS=”ctrl:nocaps”と変更する。
- ホームディレクトリにある日本語ファイル名を英語に変換
- 次のコマンドを端末で実行
LANG=C xdg-user-dirs-gtk-update
- ウインドウが開くので右下の[Update Names]をクリックして変更し、再起動する。
- 再起動するとBluetooh関連のBluemanが”/home/ユーザー名/ダウンロード”というディレクトリがないとエラーを吐くので次のコマンドでBlueman mangerを起動する。
sudo blueman-manager
- 表示->ローカルサービス->転送->転送設定のIncoming FolderでDownloadsを選び、Applyをクリックし、closeをクリックしウインドウを閉じる。
- 次のコマンドを端末で実行
- タッチパッドの設定
- BIOSを1.05にアップデートしないと有効にならない。
- 設定->マウスとタッチパッド->デバイス:1A573 820000:00 06CB:CD73 Touchpadを選択する。
- 「このデバイスを有効にする」にチェックを入れる。
- タッチパッドのタブをクリックし、「タイプ中はタッチパッドを無効にする」にチェックを入れる。
- ログイン画面に写真を入れる
- 入れた写真の画像ファイルを~/.faceにコピーする。これだけ。
- CAPS LOCKとCTRLキーの入れ替える
- NVIDIAドライバのインストール
- 準備 (これをやらないとハマります)
- NVIDIAのドライバをインストールしていないので、起動するとIntelのGPUでXが起動する。Ctlr+Alt+F1でXを落とす
- sudo apt update
- sudo apt upgrade
- sudo service lightdm stop
- インストール
- sudo add-apt-repository ppa:graphics-drivers/ppa
- sudo apt update
- sudo apt install nvidia-390 nvidia-settings
- sudo reboot
- 準備 (これをやらないとハマります)
- ソフトウェアのインストール
- エディタ等
- sudo apt install git emacs curl
- 省電力 (バッテリ持ちが格段によくなる)
- sudo add-apt-repository ppa:nilarimogard/webupd8
- sudo apt -y install tlp tlp-rdw powertop
- sudo tlp start
- sudo systemctl start tlp
- sudo systemctl enable tlp
- Cuda9.2のインストール (NVIDIAのウェブサイトから)
- Linux->x86_64->ubuntu->16.04->dev(local)を選択
- Download (1.2GB)をクリックし、ダウンドードが完了するまで待つ。
- sudo dpkg -i cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
- sudo apt-key add /var/cuda-repo-9-2-local/7fa2af80.pub
- sudo apt-get update
- sudo apt-get install cuda
- .bashrcに以下を追加し、CUDAのパスを通す
export PATH=/usr/local/cuda-9.2/bin${PATH:+:${PATH}}
- cuDNNのインストール( NVIDIAのウェブから)
- nvidiaのdeveloperに登録しないとダウンロードできないので登録する。
- Download cuDNN v7.2.1 for CUDA9.2をクリック
- cuDNN v7.1.4 for Runtime Library for Ubuntu16.04 (Deb)とcuDNN v7.1.4 Developer Library for Ubuntu16.04 (Deb)をダウンロードする。
sudo dpkg -i libcudnn7_7.2.1.38-1+cuda9.2_amd64.deb
sudo dpkg -i libcudnn7-dev_7.2.138-1+cuda9.2_amd64.deb
- OpenCV3.4.0のインストール
- ROS Kineticのインストール
- YOLO V3のインストール
- エディタ等
終わり
Voyager Linux: 画面に横線が入る

Voyager Linux 16.04で、画面下方に上画像のような横線が入る時の対処方法。
- [設定]->[ウィンドウマネジャー(詳細)]を選択すると、上画像にある[ウィンドウマネジャー(詳細)]のウインドウが開く
- [コンボジット処理(O)]のタブをクリックし、赤丸がついている[ドックウインドウに影を落とす(D)]のチェックを外す。
これでも解決しない場合は、comptonを試すと解決するかもしれません。
終わり。