Quantcast
Channel: demura.net
Viewing all 758 articles
Browse latest View live

Jetson Axavier: Jetpack4.1.1インストール後の作業

$
0
0

Jetson AxavierにJetPack4.1.1をインストールした後の作業メモ

  • ユーザの作成
    • System Settings -> User Accounts でMy Accountsを作る。この例ではアカウント名をここではhappyminiとする。
    • /etc/groupのvideoにアカウント名を加える。この例では以下になる。この作業をしないとそのアカウント名でloginできない。
      • video:x:44:ubuntu,nvidia,happymini
    • 新しく作成したアカウントでログインしたら、端末を開き、次のコマンドでnvidiaアカウントの.bashrcをコピーする。
      • $ cd
      • $ cp /home/nvidia/.bashrc .
  • unityは重いのでxfceを利用する
    • $ sudo apt-get install xubuntu-desktop
    • $ sudo apt-get install xfce4 xfce4-goodies
  •  ウェブブラウザのインストール
    • $ sudo apt-get install chromium-browser
  • ROSのインストール
    • $ cd src
    • $ git clone https://github.com/jetsonhacks/installROSXavier.git
    • $ cd installROSXavier
    • $ ./installROS.sh  -p ros-melodic-desktop-full
    • $ ./setupCatkinWorkspace.sh
  • 温度測定とGUI表示ツールをインストール
    • $ sudo apt install lm-sensors
    • $ sudo apt install psensor
  • 開発環境のインストール
    • $ sudo apt install python3-setuptools python3-pip
    • $ sudo apt install python-dev
    • $ sudo apt install python3-dev
  • 各種アプリケーションをインストール
    • $ sudo apt install emacs
    • $ sudo apt install htop
  • 日本語入力
    • $ sudo apt install language-pack-ja-base  language-pack-ja
    • $ sudo apt install ibus-mozc
  •  OpenCV3.4のビルド
    • JetsonHackの次の記事に従いビルドする
    • 以下の作業は上の記事の要約
    • OpenCVの他のバージョンとコンフリクトしないように既存のライブラリ等を削除する。
      • $ sudo apt purge libopencv*
    • ビルドとインストール
      • $ git clone https://github.com/jetsonhacks/buildOpenCVXavier.git
      • $ cd buildOpenCVXavier
      • $ git checkout v1.0
      • $ ./buildAndPackageOpenCV.sh

終わり


Jetson Xavier: JetPack4.1.1のインストール

$
0
0

Jetson AGX XavierへJetPack4.1.1をインストールしたときのメモ。当初、2018年の夏に購入したRazer Blade 15をXavierのホストPC環境としてインストールしようと何度も試みたがどうしてもXavierをflashできない。そのXavierが不良品だとも考えたが、古いLet’s noteをポストPCに変更したところあっさりインストールできた。

インストールできたホストPC環境

  • Panasonic Let’s note CF-LX3
    (CPU: Intel i7-4500U, Memory:16GB)
  • Xubuntu 16.04.02 LTS
  • Kernel 4.15.0-43-generic
  • gcc/g++ 5.4.0

 

インストールできなかったホストPC環境

  • Razer Blade 15
    (CPU: Intel i7-8750H, Memory:16GB, GPU: Nvidia 1070 Max-Q Design, Memory: 8GB)
  • voyager16.04.05
  • Kernel 4.15.0-36-generic
  • gcc/g++ 5.4.0

インストール

  • [JetPack]をクリック

 

  • DOWNLOADSの下のUbuntu [64-bit]をクリックする。

  • Embedded Developer Programのメンバーにならないとダウンロードできないので、未加入の場合は[Join now]に必要事項を入力してなる。既にメンバーの場合は、右の[Log in]からログインする。ログインするとダウンロードが可能になるのでダウンロードする。JetPack-L4T-4.1.1-linux-x64_b57.run

  • ターミナル(端末)を開き、ダウンロード先へ移動し以下のコマンドを実行すると次のJetPack L4Tのウインドウが開く。
    • chmod +x JetPack-L4T-4.1.1-linux-x64_b57.run
    • ./JetPack-L4T-4.1.1-linux-x64_b57.run
  • 実行すると下のWarningが出るが問題ないので、okayをクリック。

下のイントーラーウインドウがでるのでNextをクリック。

  • Nextをクリック。
  • Jetson AGX Xavier Developer Kit (64bit) にチェックが入っていることを確認し、Nextをクリック。

 

  • 管理者のパスワードを入力し、「認証する」クリック。

 

  • Fullを選択し、下の[Automatically resolve dependency conflicts]にチェックを入れ、Nextをクリック。

  • ライセンスの同意を聞かれるので、Accept Allにチェックを入れて、Acceptをクリック。

  • Important Noteウインドウが開く。端末にメッセージが表示されるかもしれないので、注意を払っておく。OKをクリック。

  • インストールが始まり、インストールが終わるとCompletedと表示されるので、Nextをクリックする。

  • Jetsonとホストコンピュータの接続を聞かれるので、あっている方を選択し、Nextをクリック。
  • ネットワークのインタフェースを選択し、Nextをクリック。

  • インストール後の処理に移る。Nextをクリック。

  • Post Installationウインドウが開き、下の画面で処理が一度停止する。
    1.  Jetsonの電源を切る。ACアダプタから給電している場合は、ACアダプタを抜く。
    2. PCとJetsonをUSBケーブルで接続する。その際、Jetson側はUSB Type Cコネクタに接続する。
    3. JetsonとACアダプタ、ディスプレイをMHDIで接続する。
    4. 中央のRECOVERYボタンを押しっぱなしにしながら、左端のPowerボタンを押して放す。その2秒後にRECOVERYボタンを放す。
    5. Jetsonがリカバリモードになったら、ターミナルでlsusbコマンドを実行し、NVIDIA Corpと表示されていれば成功。失敗した場合は再度、1から5までの作業をやり直す。
    成功した場合は、Post Installationウインドウを選択して、エンターキーを押す。
  • インストール作業がすべて終了すると次の画面になりFinishを押し、作業を終了する。

インストールのチェック

  • インストールがうまくいったかCUDAのサンプルプログラムをコンパイルして動かしてみる。ターミナルを開き、以下のコマンドを実行する。図のようなウインドウが開いたら成功。
    • $ cd
    • $ ./jetson_clocks.sh
    • $ cd /usr/local/cuda/bin
    • $  sudo –user=nvidia ./cuda-install-samples-10.0.sh  /home/nvidia
    • $ cd  /home/nvidia/NVIDIA_CUDA-8.0_Samples
    • $ make -j 8
    • $ cd  5_Simulations/smokeParticles
    • $ ./smokeParticles

お疲れ様!

Jetson Xavier: Tensorコア対応Yolo V3 インストールメモ

$
0
0

 

XavierにYolo V3をインストールしたときのメモ。Xavierは16bit浮動小数点が使え数倍高速になるので、それに対応したTensorコアを使うdarknetをインストールする。以下のウェブサイトを参考にしました。

Tensorコア対応Darknetのインストール

  • この指示にしたがいDarknetをインストールする
  • cd ~/src
  • git clone https://github.com/AlexeyAB/darknet
  • cd ~/src/darknet
  • Makefileの該当行を以下に変更
    • GPU=1
    • CUDNN=1
    • CUDNN_HALF=1
    • OPENCV=1
    • LIBSO=1
    • DEBUGの下のARCHの前に#をつけてコメントアウトして、#Jetson XAVIERの下の#ARCH の#を外し有効化する。
      • ARCH= -gencode arch=compute_72,code=[sm_72,compute_72]
  • make -j 8
  • Yoloのウェイトのダウンロードと実行
  • 実行方法
    • ノート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>

Tensorコア非対応版、TX2との比較

  • Jetson TX2と比較するために以下のサイトで紹介しているYouTubeビデオを~/src/darknetにダウンロードする。ファイル名をtraffic.mp4とする。
  • 実行方法
    • Jetsonの高速化
      • $ sudo nvpmodel -m 0
      • $ sudo  ~/jetson_clocks.sh
    • 実行
      • $ cd ~/src/darknet
      • ウェイトのダウンロード
        • $ wget https://pjreddie.com/media/files/yolov3.weigths
      • $  ./darknet  detector  demo  cfg/coco.data  cfg/yolov3.cfg yolov3.weights  traffic.mp4
  • 結果
Yolo V3 on Jetson 速度 [fps]
TX2  3.0 ~ 3.3
Xavier  4.6 ~ 4.8
Xavier Tensorコア対応 16.2~16.5

以上

500万Visits達成!

$
0
0

2019年1月9日、500万Visits(訪問回数)を達成。約20年かかりました。昨年ぐらいからアクセスが増えて、最近は1日約2000Visits。約4PV(Page View)/Visitsなので月間約25万PV。これも、ご愛読して頂いている皆様のおかげです。月間100万PVを目指して、より質の高い情報を発信していきますので今後ともよろしくお願いします。

PD実践 ライントレース競技ライブ配信 1/10 13:45~16:00

$
0
0

ロボティクス学科2年次プロジェクトデザイン教育科目のPD実践ではETロボコンをテーマにしています。1月10日13:45からライントレース競技の様子を以下のリンクでライブ配信します。ETロボコンで実際に使用したフィールドを使います。興味ある方は是非ご覧ください!

なお、使用するロボットはLEGO Mindstorm EV3でリアルタイムOS EV3/RTを使い、C言語でプログラミングされています。

https://www.youtube.com/chann…/UCO76j5Y1roDr9-oJTgKNi_w/live

出走順

ROS演習11-2018:ロボットアームと位置センサ

$
0
0

arm_sensor
この記事は私が金沢工業大学ロボティクス学科で担当している講義ロボットプログラミングⅡ用です。今回は先回作った2自由度のロボットアームの先端に位置センサを取り付け、先端位置を取得するプログラムを作ります。

位置センサ用プラグインの追加
gazeboのロボットモデルに位置センサを取り付けるために、~/catkin_ws/src/armbot2_sensor/urdf/armbot2_sensor.gazeboに以下のプラグインを追加します。

 
 <gazebo>
    <plugin name="p3d_base_controller" filename="libgazebo_ros_p3d.so">
      <alwaysOn>true</alwaysOn>
      <updateRate>100.0</updateRate>
      <bodyName>link_sensor</bodyName>
      <topicName>/armbot2_sensor/pose_ground_truth</topicName>
      <gaussianNoise>0</gaussianNoise>
      <frameName>base_link</frameName>
      <xyzOffsets>0 0 0</xyzOffsets> 
      <rpyOffsets>0 0 0</rpyOffsets>
    </plugin>
  </gazebo>

ソース
前週のソースコードにgroundTruthCallback関数を追加し、トピック/armbot2_sensor/pose_ground_truthTurtlebtをサブスクライブするだけで、位置センサからのデータを取得できます。

 
#include "ros/ros.h"  // rosで必要はヘッダーファイル
#include "std_msgs/Float64.h"
#include "sensor_msgs/JointState.h"
#include "nav_msgs/Odometry.h"

using namespace std;

std_msgs::Float64 tmp_joint1, tmp_joint2;
double pos_x, pos_y, pos_z;


void groundTruthCallback(const nav_msgs::Odometry::ConstPtr& msg)
{ 
  //msg->pose.pose.position, msg->pose.pose.orientation, 
  pos_x = msg->pose.pose.position.x;
  pos_y = msg->pose.pose.position.y;
  pos_z = msg->pose.pose.position.z;
  ROS_INFO("Pose: x=%f y=%f \n",pos_x,pos_y);
}

void monitorJointState(const sensor_msgs::JointState::ConstPtr& jointstate)
{
  tmp_joint1.data = jointstate->position[0];
  tmp_joint2.data = jointstate->position[1]; 
}


int main(int argc, char **argv)
{
  ros::init(argc, argv, "teleop_sensor"); 
  // initでROSを初期化して、my_teleopという名前をノードにつける                        
  // 同じ名前のノードが複数あってはいけないので、ユニークな名前をつける

  ros::NodeHandle nh;
  // ノードハンドラの作成。ハンドラは必要になったら起動される。
  ros::Publisher  pub_joint1, pub_joint2;
  // パブリッシャの作成。トピックに対してデータを送信。

  ros::Subscriber sub_joints, sub_sensor;
  // サブスクライバの作成

  ros::Rate rate(10);
  // ループの頻度を設定。この場合は10Hz、1秒間に10回数、1ループ100ms。

  std_msgs::Float64 target_joint1, target_joint2;

  pub_joint1 = nh.advertise<std_msgs::Float64>("/armbot2_sensor/joint1_position_controller/command", 100);
  pub_joint2 = nh.advertise<std_msgs::Float64>("/armbot2_sensor/joint2_position_controller/command", 100);
  sub_sensor = nh.subscribe<nav_msgs::Odometry>("/armbot2_sensor/pose_ground_truth", 100, groundTruthCallback);
  sub_joints = nh.subscribe("/armbot2_sensor/joint_states", 100, monitorJointState);

  target_joint1.data = 0;
  target_joint2.data = 0;

  int loop = 0;
  while (ros::ok()) { // このノードが使える間は無限ループ
    char key;  // 入力キーの値

    ROS_INFO("[Input] j: Joint1++, f: Joint1--, k: Joint2++, d:Joint2--");
    cin >> key; 
    cout << key << endl;

    switch (key) {
    case 'j': target_joint1.data  +=  5 * M_PI/180.0; break;
    case 'f': target_joint1.data  -=  5 * M_PI/180.0; break;
    case 'k': target_joint2.data  +=  5 * M_PI/180.0; break;
    case 'd': target_joint2.data  -=  5 * M_PI/180.0; break;
    default: ROS_INFO("Input j,f,k,d");
    }
      
    pub_joint1.publish(target_joint1); // 角度を送信    
    pub_joint2.publish(target_joint2);
    ROS_INFO("Targe: Joint1=%f Joint2=%f", target_joint1.data, target_joint2.data);

    usleep(1000*1000);
    ros::spinOnce(); // コールバック関数を呼ぶ
    ROS_INFO("Tmp:   Joint1=%f Joint2=%f", tmp_joint1.data,    tmp_joint2.data);
    //rate.sleep();     // 指定した周期でループするよう寝て待つ
  }
 
  return 0;
}

準 備 ([ROS演習10-2018:ロボットアーム]で実施した場合は必要ありません)

  • $ sudo apt-get update
  • $ sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control
  • $ sudo apt-get install ros-kinetic-gazebo-plugins  ros-kinetic-gazebo-ros
  • $ sudo apt-get install ros-kinetic-moveit-*
  • $ sudo apt-get install ros-kinetic-ros-control ros-kinetic-ros-controllers  ros-kinetic-joint-state-controller ros-kinetic-effort-controllers ros-kinetic-position-controllers ros-kinetic-joint-trajectory-controller
  • $ sudo apt-get install liburdfdom-tools

プログラムとビルド

  • 以下を~/catkin_ws/srcディレクトリ(/home/ユーザ名/catkin_ws/src)にダウンロードする。
  • $ cd  ~/catkin_ws/src
  • $ tar  xvf  armbot2_sensor-171208.tar
  • $ cd  ~/catkin_ws
  • $ catkin_make

実 行

端末を2つ開き、次のコマンドを実行する。

  • $ roslaunch  armbot2_sensor  armbot2_sensor.launch
  • $ rosrun armbot2_sensor armbot2_sensor
    • armbot2を実行している端末をクリックし、j, k, f, dコマンドを入力する毎にEnterキーを入力するとロボットアームが動く。各コマンドを入力する度にEnterキーを押さなければ動きません。jは第1関節を正方向、fは負方向、 kは第2関節を正方向、dは負方向に目標角度を5度ずつ変化させる。

演 習

  •  運動学
    運動学を実装しよう。その計算結果と位置センサの出力を比較し、プログラムが正しいか確認する。
  •  逆運動学
    逆運動学を実装しよう。2自由度の場合は解が2つあるので、数字キー1を押すと解1、数字キー2を押すと解2を選択するにしなさい。

参考リンク

 

デュアルブートのリペア

$
0
0

Ubuntu16.04とWindows10をデュアルブートで使っていたが、Windows10を再インストールしたらUbuntuが起動しなくなったので、それをリペアしたときのメモ。

  • sudo add-apt-repository ppa:yannubuntu/boot-repair
  • sudo apt-get update
  • sudo apt-get install -y boot-repair
  • sudo boot-repair

 

  • 上のBoot Repairのウインドウが開くので、Recommended repairをクリックすると修復される。
  • 再起動してデュアルブートできるか確認する。
  • ブートのメニューを変更するのは、Grub Customizerを使うと簡単。以下のコマンドでインストールできる。
    • sudo add-apt-repository ppa:danielrichter2007/grub-customizer
    • sudo apt-get update
    •  sudo apt-get install grub-customizer
  • Grub Customizerは以下のコマンで実行する。
    • sudo grub-customizer
  • Grub Customizerの使い方は検索して調べる。

以上

英語論文執筆に有用なサイト:Academic Phrasebank

$
0
0

金沢大学で修士や博士課程学生のアカデミックライティングを指導されている英語の先生に教えてもらった、英語論文を執筆する際に有益なサイトです。


YOLO V3: Darknetのデータ拡張

$
0
0

YOLO開発のディープラーニングフレームワークdarknetはデータ拡張(Data Augmentation)がデフォルトで機能する。これを知らないで、データ拡張を議論していたのでメモしておく。

yolov3.cfgファイルのデータ拡張のパラメータは以下の4つ。ソースコードを読むとhsv色空間を使っており、hueはカラーチャンネル0、saturatioはカラーチャンネル1、exposureはカラーチャンネル2に割り当てられているので、exposureはValue(明度)のことだと思われる。

  • saturation(彩度):14行目、デフォルト値1.5、1/saturation~saturationの乱数
  • exposure(露光):15行目、デフォルト値1.5、1/exposure~exposureの乱数
  • hue(色相):16行目、デフォルト値0.1、-hue~hue
  • jitter(変動):785行目、デフォルト値0.3、切り抜く割合を指定するパラメータ。例えば、jitterが0.2だと、原画像のサイズから約80%まで切り抜く。つまり、ウインドウの幅と縦はそれぞれ80%~100%までの乱数となる。
  • random:788行目、デフォルト値1。1の場合は入力画像サイズは一定ではなく、10エポック毎にネットワークサイズが320×320 から 608×608にランダムに変わる。これはいろいろな解像度の入力画像に対してYoloをロバストにすることを狙っている。

データ拡張を無効にするためには、パラメータを以下のように設定する。

  • saturation=1.0
  • exposure=1.0
  • hue=0
  • jitter=0
  • random=0

なお、flip(左右反転)はdata.cの758~759行目に以下のようにコーディングされている。

int flip = rand()%2;
if(flip) flip_image(sized);

つまり、1/2の確率で左右を反転を生成している。cfgファイルで無効にできない。

以上

 

 

Ubuntu:使い方簡単!動画キャプチャソフトSimpleScreenRecorder

$
0
0

卒研発表、修士研究発表で動画をキャプチャする必要が多いと思います。
Ubuntuで動画を簡単にキャプチャできるソフトを紹介します。その名はSimpleScreenRecorder
 GUIがわかりやすく、設定の変更を変えるところも少ないのでお勧めです。設定方法や詳細な使い方はこのリンクを参照してください。

インストール

  • sudo add-apt-repository ppa:maarten-baert/simplescreenrecorder
  • sudo apt update
  • sudo apt install simplescreenrecorder simplescreenrecorder-lib

実行

  • simplescreenrecorder

 

以上

PyTorchインストールメモ

$
0
0

CycleGANを試そうとしたらPyTorchという深層学習フレームワークが必要なのでPyTorch1.0をインストールしたときのメモ。

公式ウェブサイト

環境

  • Ubuntu16.04
  • Python3.5
  • CUDA9.2

インストール

  • PyTorchのウェブサイトへ行き、自分の環境を選択するとRun the Comandに実行するコマンドが表示されるので実行する。私の場合は以下のコマンドであった。
  • pip3 install torch torchvision

検証

  • 以下のコードを実行して、うまくインストールできたか検証する。ここでは、ファイル名をtest.pyとする。
  •  
    from __future__ import print_function
    import torch
    x = torch.rand(5, 3)
    print(x)
    y = torch.cuda.is_available()
    print('cuda is available:', y)
    
  • 次のコマンドを実行し、うまくいった場合は5×3のランダムテンソルを表示し、Cudaが使えるときはTrue、使えないときはFalseを表示する。インストールはとても簡単。
    • python3  test.py

終わり

CycleGANのインストール

$
0
0

Zhu、Parkらによって2017年に提案されたCycleGANをインストールしたときのメモ。上の写真は、左が元画像で、右がCycleGANによって生成された画像。CycleGANはPix2Pixとは違いペアとなる学習データセットなしで、画像を変換することができるところが凄い。これにより、学習データセットを作成するコストが大きく削減される。詳細については以下の論文とウェブサイトをご覧ください。

サイト

論文

インストール

  • cd ~/src
  • git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
  • pip3 install -r requirements.txt

学習とテスト

  • データセットのダウンロード
    • bash ./datasets/download_cyclegan_dataset.sh maps
  • 結果の表示。以下のコマンドを実行し、このURL http://localhost:8097をクリックする。
    • python3 -m visdom.server
  • 学習
    • GPUが1個の場合
      • python3 train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan
    • GPUが2個の場合
      • python3 train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan --gpu_ids 0,1  --batch_size 32
  • テスト
    • python3 test.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan
    • テストの結果は以下のファイルに保存される。
      • ./results/maps_cyclegan/latest_test/index.html

学習済みモデルの適用

  • 学習済みモデルのダウンロード
    • bash ./scripts/download_cyclegan_model.sh horse2zebra
    • 学習済みモデルは以下の保存される。
      • ./checkpoints/{name}_pretrained/latest_net_G.pth
  • テスト用のデータセットのダウンロード
    • bash ./datasets/download_cyclegan_dataset.sh horse2zebra
  • テスト
    • python3 test.py --dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout
    • ここで、--model testはCycleGANの一方向だけの結果を生成する。両方向必要な場合は、 --model cycle_gan にする。
    • テストの結果は./results以下に保存される。上の写真は結果の一部。

以上

Seagate ST8000DM004 不良セクターチェック

$
0
0

RAIDを組むためにSeagateの8TBのハードディスクST8000DM004を2台購入した。念のためにハードディスクに不良ブロックがないか調べた。そのときのメモ。以下のウェブサイトを参考にした。

New 8TB WD Easystore, errors 111 hours into badblocks test from DataHoarder

これによると111時間も検査に時間がかかる。1週間ぐらいの出張があったのでその間にハードディスクを以下のコマンドで調べた。以下で-oの後は不良ブロックのリストを書き出すファイル名、ここではbadblocks_sdcというファイル名にした。

$ sudo badblocks -svw -b 4096 -o badblocks_sdc  /dev/sdc
Checking for bad blocks in read-write mode
From block 0 to 1953506645
Testing with pattern 0xaa: done
Reading and comparing: done
Testing with pattern 0x55: done
Reading and comparing: done
Testing with pattern 0xff: done
Reading and comparing: done
Testing with pattern 0x00: done
Reading and comparing: done
Pass completed, 0 bad blocks found. (0/0/0 errors)

同様に/dev/sdbをチェックしたがエラーがなかった。

めでたしめでたし。

終わり

 

ソフトウェアRAID1設定

$
0
0

Seagateの8TBハードディスクを2台購入したので、RAIDを組むことにした。デスクトップに使用しているマザーボードにはfake RAID機能はあるが、柔軟に運用したいのでソフトウェアRAIDを使う。RAIDのレベルは1のミラーリング。作業が終わってからまとめたので実際の作業と違う場合があると思う。あくまで防備録。このとおり作業してうまく行かないかもしれないので、自己責任で参考にして欲しい。

概 要

  • 500GBのSSDにxubuntu16.04がインストール済み。ファイルフォーマットはLVM。
  • 新規に8TBのハードディクスを2台購入したので、これらをRAID化する。
  • デスクトップにハードディスクに搭載したところ、デバイス名は/dev/sdbと/dev/sdcになった。
  • 上記のRAID化されたハードディスクにはSSDの/home以下のすべてのファイルを移動する。

作 業

  • ハードディスクのフォーマット
    •  $ sudo gdisk /dev/sdb
      GPT fdisk (gdisk) version 1.0.1Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: presentFound valid GPT with protective MBR; using GPT.Command (? for help): ?
      b back up GPT data to a file
      c change a partition’s name
      d delete a partition
      i show detailed information on a partition
      l list known partition types
      n add a new partition
      o create a new empty GUID partition table (GPT)
      p print the partition table
      q quit without saving changes
      r recovery and transformation options (experts only)
      s sort partitions
      t change a partition’s type code
      v verify disk
      w write table to disk and exit
      x extra functionality (experts only)
      ? print this menuCommand (? for help): i
      No partitionsCommand (? for help): n
      Partition number (1-128, default 1):
      First sector (34-15628053134, default = 2048) or {+-}size{KMGTP}:
      Last sector (2048-15628053134, default = 15628053134) or {+-}size{KMGTP}:
      Current type is ‘Linux filesystem’
      Hex code or GUID (L to show codes, Enter = 8300): L
      0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
      3000 ONIE boot 3001 ONIE config 3900 Plan 9
      4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata
      4202 Windows Storage Spac 7501 IBM GPFS 7f00 ChromeOS kernel
      7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap
      8300 Linux filesystem 8301 Linux reserved 8302 Linux /home
      8303 Linux x86 root (/) 8304 Linux x86-64 root (/ 8305 Linux ARM64 root (/)
      8306 Linux /srv 8307 Linux ARM32 root (/) 8400 Intel Rapid Start
      8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot
      a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS
      a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot
      a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS
      a585 Midnight BSD Vinum a600 OpenBSD disklabel a800 Apple UFS
      a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS
      a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID
      ab00 Recovery HD af00 Apple HFS/HFS+ af01 Apple RAID
      af02 Apple RAID offline af03 Apple label af04 AppleTV recovery
      af05 Apple Core Storage bc00 Acronis Secure Zone be00 Solaris boot
      bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
      bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
      bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
      Press the <Enter> key to see more codes: 8e00
      bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
      c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
      eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
      ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
      f800 Ceph OSD f801 Ceph dm-crypt OSD f802 Ceph journal
      f803 Ceph dm-crypt journa f804 Ceph disk in creatio f805 Ceph dm-crypt disk i
      fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
      fd00 Linux RAID
      Hex code or GUID (L to show codes, Enter = 8300): 8e00
      Changed type of partition to ‘Linux LVM’Command (? for help): ?
      b back up GPT data to a file
      c change a partition’s name
      d delete a partition
      i show detailed information on a partition
      l list known partition types
      n add a new partition
      o create a new empty GUID partition table (GPT)
      p print the partition table
      q quit without saving changes
      r recovery and transformation options (experts only)
      s sort partitions
      t change a partition’s type code
      v verify disk
      w write table to disk and exit
      x extra functionality (experts only)
      ? print this menuCommand (? for help): t
      Using 1
      Current type is ‘Linux LVM’
      Hex code or GUID (L to show codes, Enter = 8300): fd00
      Changed type of partition to ‘Linux RAID’Command (? for help): p
      Disk /dev/sdb: 15628053168 sectors, 7.3 TiB
      Logical sector size: 512 bytes
      Disk identifier (GUID): 3989C8E8-0741-47FE-B36E-B96590B6BD7E
      Partition table holds up to 128 entries
      First usable sector is 34, last usable sector is 15628053134
      Partitions will be aligned on 2048-sector boundaries
      Total free space is 2014 sectors (1007.0 KiB)Number Start (sector) End (sector) Size Code Name
      1 2048 15628053134 7.3 TiB FD00 Linux RAIDCommand (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
      PARTITIONS!!Do you want to proceed? (Y/N): Y
      OK; writing new GUID partition table (GPT) to /dev/sdb.
      The operation has completed successfully.
    • $ sudo gdisk /dev/sdc
      GPT fdisk (gdisk) version 1.0.1Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not presentCreating new GPT entries.Command (? for help): ?
      b back up GPT data to a file
      c change a partition’s name
      d delete a partition
      i show detailed information on a partition
      l list known partition types
      n add a new partition
      o create a new empty GUID partition table (GPT)
      p print the partition table
      q quit without saving changes
      r recovery and transformation options (experts only)
      s sort partitions
      t change a partition’s type code
      v verify disk
      w write table to disk and exit
      x extra functionality (experts only)
      ? print this menuCommand (? for help): n
      Partition number (1-128, default 1):
      First sector (34-15628053134, default = 2048) or {+-}size{KMGTP}:
      Last sector (2048-15628053134, default = 15628053134) or {+-}size{KMGTP}:
      Current type is ‘Linux filesystem’
      Hex code or GUID (L to show codes, Enter = 8300): fd00
      Changed type of partition to ‘Linux RAID’Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
      PARTITIONS!!Do you want to proceed? (Y/N): Y
      OK; writing new GUID partition table (GPT) to /dev/sdc.
      The operation has completed successfully.
    • RAIDソフトウェアのインストール
      • $ sudo apt install mdadm
    • HDD(/dev/sdb1, /dev/sdc1) 2台をソフトウェアRAIDにするために /dev/md0 に割り当てる。
      • $ sudo mdadm --create /dev/md0 --level=raid1 --raid-devices=2 /dev/sdb1 /dev/sdc1 --assume-clean
      • /dev/sdb1, /dev/sdc1はブート可能なパーティションでないので以下のようにwarningが出るがyキーを押して次に進むとRAIDアレー/dev/md0がスタートする。
        mdadm: Note: this array has metadata at the start and
        may not be suitable as a boot device. If you plan to
        store ‘/boot’ on this device please ensure that
        your boot-loader understands md/v1.x metadata, or use
        –metadata=0.90
        Continue creating array? y
        mdadm: Defaulting to version 1.2 metadata
        mdadm: array /dev/md0 started.
    • RAIDができているか次のコマンドで確認する。
      • $ cat /proc/mdstat
      • 以下のようなメッセージが出たら成功
        Personalities : [raid1]
        md0 : active raid1 sdc1[1] sdb1[0]
        7813894464 blocks super 1.2 [2/2] [UU]
        bitmap: 0/59 pages [0KB], 65536KB chunkunused devices: <none>
  • RAIDの設定
    • ここでは、RAIDシステムからブートをしないので、LVMだけの1パーティションとする。2TBを超えるRAIDシステムからブートしたい場合はGPTからブートするための1MBの領域を先頭に確保する必要があるが、ここではしない。
    • $ sudo gdisk /dev/md0
      [sudo] パスワード:
      GPT fdisk (gdisk) version 1.0.1Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: not presentCreating new GPT entries.Command (? for help): n
      Partition number (1-128, default 1):
      First sector (34-15627788894, default = 2048) or {+-}size{KMGTP}:
      Last sector (2048-15627788894, default = 15627788894) or {+-}size{KMGTP}:
      Current type is ‘Linux filesystem’
      Hex code or GUID (L to show codes, Enter = 8300): L
      0700 Microsoft basic data 0c01 Microsoft reserved 2700 Windows RE
      3000 ONIE boot 3001 ONIE config 3900 Plan 9
      4100 PowerPC PReP boot 4200 Windows LDM data 4201 Windows LDM metadata
      4202 Windows Storage Spac 7501 IBM GPFS 7f00 ChromeOS kernel
      7f01 ChromeOS root 7f02 ChromeOS reserved 8200 Linux swap
      8300 Linux filesystem 8301 Linux reserved 8302 Linux /home
      8303 Linux x86 root (/) 8304 Linux x86-64 root (/ 8305 Linux ARM64 root (/)
      8306 Linux /srv 8307 Linux ARM32 root (/) 8400 Intel Rapid Start
      8e00 Linux LVM a500 FreeBSD disklabel a501 FreeBSD boot
      a502 FreeBSD swap a503 FreeBSD UFS a504 FreeBSD ZFS
      a505 FreeBSD Vinum/RAID a580 Midnight BSD data a581 Midnight BSD boot
      a582 Midnight BSD swap a583 Midnight BSD UFS a584 Midnight BSD ZFS
      a585 Midnight BSD Vinum a600 OpenBSD disklabel a800 Apple UFS
      a901 NetBSD swap a902 NetBSD FFS a903 NetBSD LFS
      a904 NetBSD concatenated a905 NetBSD encrypted a906 NetBSD RAID
      ab00 Recovery HD af00 Apple HFS/HFS+ af01 Apple RAID
      af02 Apple RAID offline af03 Apple label af04 AppleTV recovery
      af05 Apple Core Storage bc00 Acronis Secure Zone be00 Solaris boot
      bf00 Solaris root bf01 Solaris /usr & Mac Z bf02 Solaris swap
      bf03 Solaris backup bf04 Solaris /var bf05 Solaris /home
      bf06 Solaris alternate se bf07 Solaris Reserved 1 bf08 Solaris Reserved 2
      Press the <Enter> key to see more codes: 8e00
      bf09 Solaris Reserved 3 bf0a Solaris Reserved 4 bf0b Solaris Reserved 5
      c001 HP-UX data c002 HP-UX service ea00 Freedesktop $BOOT
      eb00 Haiku BFS ed00 Sony system partitio ed01 Lenovo system partit
      ef00 EFI System ef01 MBR partition scheme ef02 BIOS boot partition
      f800 Ceph OSD f801 Ceph dm-crypt OSD f802 Ceph journal
      f803 Ceph dm-crypt journa f804 Ceph disk in creatio f805 Ceph dm-crypt disk i
      fb00 VMWare VMFS fb01 VMWare reserved fc00 VMWare kcore crash p
      fd00 Linux RAID
      Hex code or GUID (L to show codes, Enter = 8300): 8e00
      Changed type of partition to ‘Linux LVM’Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
      PARTITIONS!!Do you want to proceed? (Y/N): Y
      OK; writing new GUID partition table (GPT) to /dev/md0.
      The operation has completed successfully.
    • ボリュームグループの作成
      • $ sudo vgcreate vg0 /dev/md0p1
    • 論理グループの作成(容量7000GB, グループ名home)
      • $ sudo lvcreate -L 7000G -n home vg0
    • 論理グループの確認
      • $ sudo lvdisplay
        — Logical volume —
        LV Path /dev/vg0/home
        LV Name home
        VG Name vg0
        LV UUID istCD7-ChY7-wnln-7p7C-BmFN-zktF-qpwZ1x
        LV Write Access read/write
        LV Creation host, time deneb, 2019-03-14 12:11:06 +0900
        LV Status available
        # open 0
        LV Size 6.84 TiB
        Current LE 1792000
        Segments 1
        Allocation inherit
        Read ahead sectors auto
        – currently set to 256
        Block device 252:2— Logical volume —
        LV Path /dev/xubuntu-vg/root
        LV Name root
        VG Name xubuntu-vg
        LV UUID YXZMxe-ZRvz-E925-dXq7-ifam-6D2E-2gjmYK
        LV Write Access read/write
        LV Creation host, time xubuntu, 2017-11-27 19:11:58 +0900
        LV Status available
        # open 1
        LV Size 433.34 GiB
        Current LE 110936
        Segments 1
        Allocation inherit
        Read ahead sectors auto
        – currently set to 256
        Block device 252:0— Logical volume —
        LV Path /dev/xubuntu-vg/swap_1
        LV Name swap_1
        VG Name xubuntu-vg
        LV UUID 9UY9Wk-DRAD-J0ou-OD2Y-Vkhk-JZcJ-L6Xn3w
        LV Write Access read/write
        LV Creation host, time xubuntu, 2017-11-27 19:11:58 +0900
        LV Status available
        # open 2
        LV Size 31.94 GiB
        Current LE 8176
        Segments 1
        Allocation inherit
        Read ahead sectors auto
        – currently set to 256
        Block device 252:1
    • 論理グループにext4ファイルシステムを作成
      • $ sudo mkfs -t ext4 /dev/vg0/home
      • 以下のようなメッセージが表示される。
        mke2fs 1.42.13 (17-May-2015)
        Creating filesystem with 1835008000 4k blocks and 229376000 inodes
        Filesystem UUID: 20824f90-4741-4c0a-8947-d53945ff2a13
        Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544Allocating group tables: done
        Writing inode tables: done
        Creating journal (32768 blocks): done
        Writing superblocks and filesystem accounting information: done
  • RAIDのディスクをマウント
    • $ cd /
    • $ sudo mkdir  home_raid
    • $ sudo mount -o rw -t ext4 /dev/vg0/home  /home_raid
  • 起動時に自動的にマウントするために、/etc/fstabを以下のように変更する。

# /etc/fstab: static file system information.
#
# Use ‘blkid’ to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/xubuntu–vg-root / ext4 errors=remount-ro 0 1
/dev/mapper/xubuntu–vg-swap_1 none swap sw 0 0
/dev/vg0/home /home_raid ext4 defaults 1 2

  • 再起動してマウントされているか確認する。
    • $ sudo reboot
  • 起動したら以下のコマンドでマウントされているか 確認する
    • $ df

Filesystem 1K-blocks Used Available Use% Mounted on
udev 16414044 0 16414044 0% /dev
tmpfs 3287988 9716 3278272 1% /run
/dev/mapper/xubuntu–vg-root 447132544 411764952 12631516 98% /
tmpfs 16439936 4228 16435708 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 16439936 0 16439936 0% /sys/fs/cgroup
/dev/loop0 93184 93184 0 100% /snap/core/6405
/dev/loop1 108288 108288 0 100% /snap/cloudcompare/131
/dev/loop2 93312 93312 0 100% /snap/core/6531
/dev/loop3 93184 93184 0 100% /snap/core/6350
/dev/mapper/vg0-home 7282070296 51592 6915000720 1% /home_raid
tmpfs 3287988 4 3287984 1% /run/user/108
tmpfs 3287988 40 3287948 1% /run/user/1000

  • マウントされていたら、SSDにある/homeの内容をRAIDに移動させるためにTRL+ALT+F1を同時に押してXを落としてrootでログインする。/homeを/home_ssdに移動する。
    • #  mv  /home   /home_ssd
  • 空の/homeディレクトリを作成する
    • # mkdir  /home
  •  /home_ssdの内容を/home_raidにコピーする。
    • # cp -a /home_ssd   /home_raid
  • SSDの/homeの内容をRAIDに移動したのでマウントポイントを変更するために、/etc/fstabの一番下の行を以下のように変更してリブートする。# /etc/fstab: static file system information.
    #
    # Use ‘blkid’ to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # <file system> <mount point> <type> <options> <dump> <pass>
    /dev/mapper/xubuntu–vg-root / ext4 errors=remount-ro 0 1
    /dev/mapper/xubuntu–vg-swap_1 none swap sw 0 0
    /dev/vg0/home /home ext4 defaults 1 2

再起動して /homeの内容に問題なければ成功。

終わり

参 考

  • https://www.linuxmania.jp/raid_md_grub.html

pybulletインストールメモ

$
0
0

pybulletをインストールしたときのメモ

  • bullet3のインストール
    • $ mkdir src
    • $ cd src
    • $ git clone https://github.com/bulletphysics/bullet3.git
    • $ cd bullet3
    • $ ./build_cmake_pybullet_double.sh
    • buildに成功すると以下のディレクトリにBulletのサンプルプログラムを実行できるExample BrowserのバイナリApp_ExampleBrowserができる。
      • ~/src/bullet3/build_cmake/examples/ExampleBrowser
    • そのディレクトリへ移動して実行する。
      • $ cd ~/src/bullet3/build_cmake/examples/ExampleBrowser
      • $ ./App_ExampleBrowser
    • 上図のようなExample Browserが立ち上がる。図はExperiments->Kuka IKを選択した。
  • pybulletの実行
    • .bashrcに以下を追加する
      • export PYTHONPATH=/home/user_name/src/bullet3/build_cmake/examples/pybullet
    • 以下のコマンドで設定を反映させる。
      • $ source ~/.bashrc
    • サンプルプログラムがあるディレクトリへ移動する。
      • $ cd ~/src/bullet3/examples/pybullet/examples
    • いろいろなファイルがあるがここでは、createVisualShape.pyを試す。
      • $ python3 createVisualShape.py
    • 下図のようなウインドウが開けば成功。

終わり


常時SSL (常時HTTPS化) しました。

$
0
0

遅ればせながら、セキュリティを高めるためにdemura.netを常時SSL (常時HTTPS化) しましたのでhttps://demura.netでアクセスできます。

Jetson Nano: ロボカップジュニアに最適!?

$
0
0

NVIDIAからJetson Nanoが発売された。最近のロボットは認識系でほとんどDeep Learningを使う。ロボカップジュニアではRaspberry Pi良く若われているがDeep Learningを使うには厳しい。Jetson Nanoはサイズがラズペリーパイ程度で、価格が1万円台、GPUは128 CUDAコア、472GFLOP。NVIDIAの資料によるとTiny Yolo V3(416×416)をRaspberry Pi 3で推論したところ0.5 fpts、一方、Jetson Nanoでは25fpと500倍の性能だそうだ。これなら、ロボカップジュニアでも十分に使える。今年の世界大会ではロボットに搭載するチームも出てくるだろう。

NVIDIA Jetson Nano がいかに、数百万もの小型で低コスト、かつ低消費電力の AI デバイス開発を可能するかご紹介します。
NVIDIA Jetson Nano を用いることにより、数百万もの小型で低コスト、かつ低消費電力のこれまでにない AI デバイス開発を可能にします。

英文法チェックツール

Razer Blade 15用スリムケース

$
0
0

Razer Blade 15を半年ぐらい使ってきたが、デザインと性能を兼ね備えとても満足している。持ち運び用にスリムなケースが必要だが、Razer Blade 15用の純正スリムケースがないので色々と探していた。MacBook ProとRazer Blade15はサイズ的にほとんど変わらないので、MacBook Pro用の以下のスリムケース(15インチNew MacBook Pro ダークグレー)を試したところ、質感も悪くなく、サイズ的のもぴったりでとても良い。お勧め。

 

 

 

コンピュータ工学Ⅰ:C/C++統合開発環境Code::Blocks17.12のインストール (Windows)

$
0
0

CodeBlocks(コードブロックス)というフリーでオープンソースなC/C++統合開発環境のインストール法を説明します.日本では,Codeblocksはあまり馴染みがないかもしれませんが,オープンソースであり、Windows, Mac, Linuxで使える優れものです。Visual Studioと比較して機能がシンプルで、ハードディスクの容量を食わないことが魅力です。

では,これからCodeBlocks17.12のインストール方法をご説明します。

注:以前のバージョンのCodeBlocksをインストール済みの方はアンインストールしてから以下の作業をしてください。

  • 1. ダウンロード・インストール
    • Code::Blocksのウェブサイトからダウンロードする.
    • 左欄にあるMainのDownloadsをクリック
    • Download the binary releaseをクリックし、すると以下の画面になるので,Windows XP/Vista/7/8.x/10をクリックする.
    • codeblocks-17.12mingw-setup.exeを選択する.これにはmingwからのgccやgdbが含まれています.必ずこちらをダウンロードしてください.重要!
    • デスクトップに保存し,codeblocks-17.12mingw-setup.exeをダブルクリックする.
    • 「この不明な発行元からのアプリがこのコンピュータの変更を求めています。許可しますか」と聞かれるので、「はい」をクリック
    • CodeBlocks Installationの窓になるので,「Next>」をクリック
    • License Agreementの窓になり,読んでから「I Agree」をクリックする.同意しないとインストールできません.
    • Choose Componentsの窓になり,全部チェック(レ印)が入っていることを確認する。チェックが入っていない場合は、空白のクリックしてチェックを入れる。チェックが入ると。四角にレ点が付く。「Next >」をクリック。
    • Choose Install Locationの窓になる.そのまま「Install」をクリック
    • 「Do you want to run Code::Blocks now?」と表示さるので、「いいえ(N)」をクリックする。
    • Completedと表示されるので、「Next>」をクリックする。
    • Completing the CodeBlocks Setupの窓になるので、「Finish」をクリックしてインストールを終了する。
  • 2. 日本語化
    • Code::Blocks非公式な日本語化のウェブサイトに行き、「.moファイル」のファイル:codeblocks.moをクリックしてデスクトップへcoldeblocks20140303.zipをダウンロードする。解凍するとCodeBlocksというフォルダができるので、次のフォルダの中へコピーする。
      c:\Program Files (x86)

      成功すると次のファイルができる。

      c:\Program Files(x86)\CodeBlocks\share\CodeBlocks\locale\ja_JP\codeblocks.mo
      
      
    • wxstd.zipをダウンロードして解凍すると。wxstd.moができる。それを以下のフォルダにコピーするが、ja_JPフォルダの下にLC_MESSAGESがないので、そのフォルダを作ってからコピーする。
      c:\Program Files(x86)\CodeBlocks\share\CodeBlocks\locale\ja_JP\LC_MESSAGES
    • Code::Blocksを起動する.下図のようにGNU GCC Compilerが見つかるので[OK]をクリックする。
    • C言語のプログラムとCode::Blocksを関連付けるために”Yes, associate Code::Blocks with C/C++ file types”にチェックを入れて[OK]をクリックする。
    • 日本語化の設定をしていないので,次のように英語表示される.
    • メニューバー(ウインドウのタイトルのすぐ下)の右から2番目にあるSettings -> Environment…を選択
    • 「目玉」のアイコンのViewをクリック. Internationalizationにチェックを入れ,Japaneseを選択し,「OK」をクリック.日本語化するためには再起動が必要なので,メニューバーのFile→Quitを選択.
      cb1312-3
    • Layout Changedの画面が出て,”The layout ‘Code::Blocks default’ has changed. Do you want to save it?”と設定を保存するか聞いてくるので聞かれるので「Yes」をクッリクする.
    • CodeBlocksを起動する.トップ画像のように日本語になっていればOK.おつかれさま.

以上です.

 

Viewing all 758 articles
Browse latest View live