HAVRMの空空活動誌

「空空」は「うつらうつら」と読むらしいです.まぁ常に寝不足なもんで...

ffmpegのオプションの備忘録

こんにちはHAVRMです.
ちょっとした動画編集とかでいちいち専用のソフトをインストールするのが面倒でいつもWSLでffmpegを使って加工しています.ただこの時気を付けないといけないのはffmpegのオプションを適切にしないと予期せぬ画像劣化が起きます.そのあたりの情報が様々なブログに散乱しているのでまとめようと思います.いつもは参考サイトをその時々に出していますが,今回はそれなりに多いので最後にまとめて書きます.文中の「[x]」のxが参考サイトの番号にあたります.
なおWSLを使っているのでGPU等を使っていないです.WSL2ではGPUを使えるみたいですが,処理時間にそこまで苦労していない(使っていない古いゲーミングに変換させるとか)のでCPUで処理しています.

画面録画(Windows Xbox Game キャプチャ や GeForce Experience 録画 等)の動画の圧縮

これらの画面録画の機能は前者であればWindows 10でゲームとして設定したもの,後者であればGeForceを搭載したPCでGeForceで描画しているもの(ソフトだけじゃないみたいで,自分はGPUで出力している画面自体もキャプチャできました...)の画面を録画できるものです.ただこれらの動画は圧縮をきちんとしていないせいか容量が莫大になることが多く(HDサイズで1時間8GBとか),保存が大変なことが多いです.そこでffmpegで同サイズほぼ同クオリティで変換することで容量の削減をしています.
実際のコマンドは以下の通りです

$ ffmpeg -y -i (変換元ファイル名) -max_muxing_queue_size 9999 -crf 15 -vf "scale=iw:ih" -vsync 1 (保存名)

実際に使っているコマンドなので少し無駄がある気もしますが,大事なのは次の3点です

  • -max_muxing_queue_size 9999:なんかエラーが出ないようにするため[1]
  • -crf 15           :ここが画質に大きく影響します[2]
  • -vf "scale=iw:ih"       :入力動画のサイズをそのまま指定

とくに「-crf」を指定しないと画質がそれなりに劣化します(あくまでそれなりです.気にしない人も多いと思います).また値を「15」としていますが,参考サイトにある通り「16」とかでも見分けはほぼつかないと思います.

f:id:HAVRM:20220414180355p:plain
CRFオプションの画質比較(左からオリジナル,CRF=15,指定なし)

上の画像はゲーム画面の一部を切り取っただけですが,拡大してもよくわからないと思います.右端のもの(CRFを指定していない)のほうが×の周りの円の線が細くなっているように見えるぐらいです.重ねると色味がわずかに変わっているのもわかりますが,気のせいかなのレベルです.
なおこの変換で容量は次のように変わります(この画像の動画で比較しています).

  • オリジナル:449MB
  • CRF=15  :144MB
  • 指定なし :61MB

なので画質とどの程度圧縮したいかでこのCRFの値を変えればいいと思います.

コマ送り画像の作成(できるだけ非圧縮)

動画をコマ送りの画像に分解するときのコマンドです.よく紹介されているサイトの方法だと画質が劣化することが多いので記載します.

$ ffmpeg -i (変換元ファイル名) -qscale:v 1 -qmin 1 -qmax 1 -r (出力画像のフレームレート) -f image2 (出力名,%05d等のprintfと同様のコードが使用可能)

ここで大事なのはこの一連のオプションです.

  • -qscale:v 1 -qmin 1 -qmax 1:画質指定[3]

参考サイトだと「15」で指定していますが,上のCRFと同様だと思い,特に非圧縮が欲しかったので最高値(数が小さいほど圧縮率が下がります)の「1」としています.

f:id:HAVRM:20220414180415p:plain
qscaleオプションの画質比較(左が1で右は指定なし)

先ほどと同じ動画をqscale等のオプションを「1」にした場合と指定しなかった場合の比較ですが,これはわかりやすく差が出ます.
これも結局画像の容量が変わるのでそれ次第でいいところを決めることになるとは思います.

  • 指定した場合 :188KB
  • 指定しない場合:28KB

個人的にはコマ送り画像の場合すべてを保存するわけではなく,加工して使うことが多いので高画質に越したことはないと思っています...

スロー動画の処理

最近のスマホとかでは240fpsでスローモーションを取れるようになっています.ただこれらの画像をWindowsで再生しようとすると表示が乱れたり画面がフリーズしたりします.それもあってスローモーションの程度を決めた動画に出力すれば見やすくなりますし,どの程度高速なのかもわかります.
ただ,画像についてはFPS基準でいろいろいじれますが,音は難しいので結局0.5x単位になります.
まず音をきちんとするという意味で0.5倍速のスローモーションの出力[4][5]

$ ffmpeg -r (FPS,詳細は後程) -i (変換元ファイル名) -max_muxing_queue_size 9999 -crf 15 -af atempo=0.5 (出力名)

ここでは[4]の音声の低速化と[5]のフレームレート変換を合わせています.というのも[4]のやり方ではあくまで自分の記憶の中でですが,フレームレートを返還する過程でコマ画像をいくつか削除したと思います.[5]のやり方だとフレームレートを変更するだけなのでコマ画像の欠損は起きません.ただそのためにフレームレートを適切に指定する必要があります.動画のフレームレートは次のコマンドで取得できます[6].

$ ffmpeg -i (変換元ファイル名) 2>&1 | grep fps | sed -e "s/fps,.*//g" -e "s/.*,.//g"
240

例えば240FPSの動画を0.5倍速にする場合はフレームレートを120に指定すれば0.5倍速になります.この計算を自動ですると次のようになります(小数点以下の計算をできるようにしています[7],ここでは4倍遅くするフレームレートの計算です).

$ FPS=$(ffmpeg -i (変換元ファイル名) 2>&1 | grep fps | sed -e "s/fps,.*//g" -e "s/.*,.//g")
$ echo "scale=2; $FPS / (スロー倍率,「4.0」等の小数点表示)" | bc
60

逆にあるフレームレートにしたときの倍率は次のように計算できます(30FPSに設定する場合です,小数点前の0を表示するようにしています[8])

$ echo "scale=2; (FPS,30とか) / $FPS" | bc | xargs printf %.2f
0.125

なお[4]のサイトでは「atempo」は何度でも重ねられるとしていましたが,自分は2回まで(すなわち0.25倍速)までしか繋げられませんでした...

CF-XZ6を使えるようにするまで

こんにちは,HAVRMです.

1年ほど前に書いた記事でLet's noteのCF-XZ6を購入しセットアップしたことを記事にしていました.
havrm.hatenablog.com
havrm.hatenablog.com
しかし,記事にも書いた通り,PCがきちんと動くようにはなりませんでした.最終的には新たに購入することになったのですが,その一連の流れをまとめようと思います(実際に作業したのは2021年9月あたりです).

苦労しながらCF-XZ6を使用→再起不能

そのあと何度も電源が落ちることを繰り返しながらどういう条件で落ちるかを確認していきました.最終的には起動中に充電が終わるとその瞬間に落ちることがわかりました.しばらくそのまま使っていましたが,もう一度トライしようとBIOS周りのドライバ(バッテリー周りのドライバはここにありました)をインストールしようとしたところそのインストール中に電源が落ち,ドライバを認識しなくなりました(下の画像の0.0.0.0となっている部分です).

ドライバ認識不可

その後それを修復しようといろいろした結果BIOSの起動すらできなくなりましたorz
この時点でこのPCを使えるようにすることはあきらめて別のものを買うことにしました.

再選定・再購入

短時間であったものの実際にCF-XZ6を使ってバッテリーや性能等に不満はなかったので同じCF-XZ6を購入することにしました.
最初に買ったときは動作未確認のものを落札していたので,今回は動作確認済みのものを探すことにしました.そしたらちょうどその時にセットアップ済みでちゃんと使えるものの容量が128GB,タッチパネルがゴーストタッチ(触れてないのにタッチしたと誤認識すること)で使い物にならないものが出品されていました.型番としてはCF-XZ6RF7VS(通常はSSD256GBですが,おそらく購入時のオプションで128GBにしたようです.キーボードベースのほうに書いてあったかと...)で,リアカメラではなくWAN(SIMを挿せる)付属のものでした.なおIRカメラも内蔵されているのでWindowsの顔認証が利用できます.さらにバッテリーは両方とも(CF-XZ6は本体に内蔵したうえでキーボードベースに取り外し可能なバッテリーパックがあります)Lサイズでした.もともと1TBのM.2 SATAをCF-XZ6用に用意していたこと,最初に買ったPCのディスプレイはきちんと動作することからこれを落札しました.タッチパネルが使えないということが響いたのか落札金額は「¥16,000(税込み:¥17,600)」となりました.実際に届いたものを確認するとタッチパネルをオンにした瞬間に画面下側で大量のゴーストタッチが発生し操作が全くできなくなりました.この時は苦労しながらタッチ機能をオフにしましたw

ディスプレイの取り外し(いったん全部ばらしました)

CF-XZ6はほかのタブレットと異なり,液晶をフレームとタッチパネルで挟んだ構造になっています.
news.panasonic.com
自分の中では下の記事にある画像のようにディスプレイのみをばらせると思っていました.
www.itmedia.co.jp
実際には無理だったのですが,順を追って説明していきます.またこの時はどのように固定されているかわからなかったのでとりあえずすべてばらしています.

バッテリーの取り出し

まず諸々の作業をする前に裏ブタを以前のブログに乗せたサイト通りに外して,バッテリーを外します.

裏ブタを外して...

バッテリーについているテープと外し,邪魔なケーブルを寄せて出てきたねじ5か所を外してバッテリーを外します.

バッテリーのねじ

M.2 SATAと電池,リアカメラ,フロントカメラの取り外し

次に前の記事と同様にM.2 SATAを外して電池とリアカメラを外します.「裏ブタを外して...」の画像内の黄色いものが電池でその隣のいかにもカメラな感じのものがリアカメラになります.リアカメラについてはコネクタを無理に外さずにロックを起こしてから外すようにしてください.なおCF-XZ6のフラットケーブルについてはほぼすべてがこのロックの仕方なので他のところも同様にして外してください.

コネクタのバーの引き起こし

電池とリアカメラの上側(画像では下側)にあるのがフロントカメラと顔認証用IRカメラなのでこれも取り外します.ねじが3か所あるので外したら,先ほどと同様にコネクタのバーを上げ,取り外します.

フロントカメラのねじ

ファンとヒートシンクの取り外し

(実際の作業順とはこの辺りからずれます...場当たり的にばらしていたので...)
次にファンとヒートシンクを取り外します.ファンは3か所,ヒートシンクは2か所で固定されています.ファンのコネクタを外してねじを外し,取り外しちゃいましょう.

ファン・ヒートシンクのねじ

周辺コネクタの取り外し

この辺りからメインボードの取り外しに向かっていきます.
まず残っているうち見えるすべてのコネクタを外していきます.>

まだ外してないコネクタ(裏ブタ開けた時点の画像です)

なおコネクタについては上のは左から「スピーカー」,「4極イヤホンジャック」,「キーボードベースとのコネクタ」,「タッチパネル?」,「ディスプレイ?」,下は2つとも「WiFiのアンテナ」になっています.なお丸を付けていないですが,電源ケーブル用のコネクタ(ディスプレイ関係のコネクタの隣)がありますが,今回は外さず,電源ポート(DCポート)側を外しました.
ディスプレイのコネクタについては外すのに苦労したことを覚えていますが,どう外したかを覚えていません...後で確認して追記します.

メインボードの取り外し

ではここからメインボードを取り出します.ねじは下の画像の丸部分です(すでに何か所か外しています).

メインボードのねじ

画像中の青い丸はUSB-Cコネクタのシールドを固定していて外すと薄い金属板も外れるので注意してください.
なおバッテリーとファンの固定ねじもメインボードを固定する役割を持っていました.逆にヒートシンクやM.2 SATA固定用のねじはメインボード側にねじ穴が用意されています.
ねじを外した後は無理に引っ張らないでください.メインボードの裏に1か所コネクタが残っているので慎重にひっくり返すようにしてください.その状態で残ったコネクタを外すとメインボードを取り外せます.

メインボードに残ったコネクタ

キーボードベストのコネクタの取り外し

すでにこの時点でメインボードを交換することはできます.ただ最後に外したコネクタを付けるのが大変なので,このコネクタに関するキーボードベースとのコネクタも外します.
このコネクタ回りの基板は底面からもねじ止めされいるので先に通風口(キーボードベースの支え用も兼ねる)をばらします.キーボードベースの出っ張りが刺さる2か所にあたります.
通風口はそれぞれ2つのねじで固定されています.

通風口のねじ

このねじを外し上に持ち上げるように(位置決め用の突起があるので)外すと取れます.両方外したら底面にある基板を固定している2つのねじを外します.このねじはキーボードベースとのコネクタを固定するためのねじになります.同時にフラットケーブルを止めているねじも外します.

キーボードベースとのコネクタのねじ

ねじを外したあとは上に抜くように外します.これでコネクタ部も取り外せます.

備考

本来はディスプレイを完全に外したかったですが,フレームとタッチパネルは接着剤等で固定されているようで,またほかのタブレットではドライヤーなどで温めながら薄いカードを刺して接着剤をはがしたりしてますが,CF-XZ6の場合タッチパネルが埋め込まれているのでカードもさせそうにないため,フロントシャーシ(フロントパネルの構造フレーム)ごと交換することにしました.

ディスプレイの交換

購入しなおしたCF-XZ6の中身

ということでディスプレイ(+一部の周辺機器)を外せたので購入しなおしたほうのメインボードを取り外します.先ほどいったんばらしたのでその時を参考に一気に交換しちゃいましょう.ということで裏ブタを外したら結構見た目が違いました...

購入しなおした方の裏ブタを外したところ

大きな違いはリアカメラがない代わりに銀色のフレームがつき,WAN関係の機器が追加されているのと,CPU周りにカバーがつけられていたところです.このカバーが曲者で自分では外し方がわからなかったのでグリス交換はあきらめました...

バッテリーを外す

先ほどと同様にバッテリーを外します.壊れたほうのバッテリーはS,新しい方はLと容量が1770mAhから3540mAhへと2倍の容量になっています.重さもその分増えていて91gが150gへと増えています.そのため内蔵バッテリーがLの時はキーボードベースのバッテリーもLにしないとPCが転倒するためSを使わないようにとされています.実際100°ぐらい開いた時点で不安定になるのでキーボードベースのバッテリーをSにしたときは画面をほぼ垂直に立てるか,キーボードベース上に何か置かないといけなくなります.とはいえ,内蔵が大きいことに越したことはないのでLのほうを内蔵にします.

WANのメインボードからの切り離し

WANについては現状使うつもりのないことから取り外すつもりでした.メインボードとの固定にかかわっていなかったのでケーブルを外すだけにしました.だたケーブルを固定している銀色のフレームはケーブルを外すうえで邪魔なので取り外しています.この辺りはリアカメラの交換と同じです.
なおこの時は「どうせWANを付けるかリアカメラを付けるかのどちらかしか選べないからコネクタに同じものを使っているのだろう」と思ってリアカメラを取り付ける気満々でしたが,まさかのピン数が異なる違うコネクタを使っていました!そのためリアカメラ用のコネクタのフットプリントはあってもコネクタがついていないので使えないという残念な仕様になっています...

リアカメラ・WANのコネクタ

上の画像はリアカメラ用ですが,赤丸がWAN用のコネクタ,青丸がリアカメラ用のコネクタになっています.

メインボードの取り外し

気を取り直してメインボードの取り外しを行います.先ほどの分解でねじの場所はわかっているのですべてのねじを外します.この時不要なところまで外さなければ楽に交換ができます.またディスプレイ側に残す周辺機器のコネクタも外します.

一気に外す際のねじとコネクタ

画像中の赤丸がねじで,青丸がコネクタです.なおあらかじめ通風口は外しています.
実際に取り外すとこんな感じになります.

メインボード+周辺機器

メインボードの取り付け,フレームの組み立て

そのあとは壊れたほうのディスプレイにこのメインボードを組み付け,コネクタをつなげなおし,バッテリーもLのほうを取り付け,ふたをして終了です.

まとめ

いかがだったでしょうか.CF-XZ6の詳細な分解を載せているサイト等がなかったので試行錯誤して分解していました.今後同じことをする人がいるかは知りませんが,参考になるといいと思います.実際,交換してからつい最近までずっと使い続けていました.自分はいろんなソフトを同時に開きながら作業するのでメモリが足らなくなったり,相変わらずZoomの画面が赤く点滅したり,FireFoxでPDFを開いたときに画面が真っ白になったりいろいろ問題はありましたが十分に使えていました.
本ブログの内容としてはここまでです(下に使っていたと過去形な理由を書きます)

追記

なぜ「使えていました」と過去形なのかはウィルス感染(おそらく身代金型のランサムウェア)の疑いが出たからです.ウィルス感染したPCにつなげた外付けHDDをそうだと気づかずこのPCにさしてしまいました.HDD内のデータが破損(誰かのEmailアドレスがついた変な名前になったうえに暗号化)していたのに気づいたのがウイルス感染に気づいたきっかけですが,セキュリティーソフトを入れていたためとりあえずは大丈夫だろうと思っていました.念のためネットからは切断し,現状のバックアップを取ろうと未使用のUSBメモリを挿入したところ,「ドライブで実行するソフトが見つかりません」みたいな警告(感染したPCでも出ていました)が表示され,感染したかもと思ったので最低限のデータを抜いた後はWindowsを終了しました.後程UbuntuのLiveUSB(これ自体には変更が保存されないよう設定)で起動し直し,別のHDDにフルバックアップとデータのコピーを行いました.なお現状ではCF-XZ6自体のデータが暗号化されたような跡はありませんでした(Ubuntu上でfindコマンドでSSD内を全走査しました).
Windowsの自動バックアップから復元するか,リカバリーから復元するかはまだ検討中です.セキュリティーソフトで排除できればいいのですが,悪魔の証明じみている(有るか無いかわからないウイルスを検出・排除する?)ので判断がつきにくいです...
感染したPCはWindows7だったのでおそらくWindows脆弱性をつかれたのだと思います(このPCでメールを開いたことはないので...).またセキュリティーソフトもきちんと動いていたか不明でした.皆さんも保証外の古いOS(今保証されているのはWindows10,Windows11の2つかな?)をあまり使わないように,またきちんとセキュリティーソフトを入れるようにしましょう.
なお感染したPCはそもそもPCの限界が近づいてきた中とどめを刺された感じでそもそも起動しなくなっています...
また最近迷惑メールに件名を装い(前に自分が送信した件名を使っていました...),ZIPファイル等を添付したメールがよく届いています.ZIPファイルやExcel等のマクロ有効化ブック等を開く際は添付元のメールの件名だけでなく,送信元や本文もきちんと確認するようにしましょう.
なにはともあれ,最近コンピュータウイルスが増えているので皆さん気を付けてください.

WSLでSfMをやってみる

こんにちは,HAVRMです.
ここ数か月忙しかったのと,あまりにたくさんの問題が発生し,ブログに手を付けれていませんでした.
最近ようやく休日に好きなことをできるぐらいには余裕ができたので少しずつブログを更新していきます.

今回は以前から気になっていたSfMStructure from Motion)に手を付けてみました.ほかの人がブログに書いているし,昔からある技術でオープンソースも充実しているから簡単だろうと思っていたら,実際にできるまで休日が丸一日潰れました...
オープンソースのアップデート等でいろいろ変わっていて,それに記事が対応できてないみたいなのでそのあたりをまとめます.

SfMに関して

SfMというのは多数の画像や動画から立体情報を復元する技術・プログラムです.
簡単に言えば人間が両眼で見て立体を認識している方法を複数の視点から行っています.両眼視(ステレオ視)で立体を認識は理論上できますが,人間が簡単に行っている複数画像における同じ個所を認識することがコンピュータでは難しく,高精度化するには大量の画像を使う必要があります.
ステレオ視を使った立体認識はそれこそ昔のロボットで使われていて,比較的処理が軽いため70年台のロボットでもおそらく使っているはずです(世界初の人型知能ロボットであるWABOT-1には胴体部分にカメラが2台載っています).ただカメラを複数同時に使用するのは機材の準備やカメラ間距離の正確性等求められるため,コンピュータ性能が向上した現在ではあまり使われておりません.
SfMは最近話題のV-SLAM(Visual SLAM)と同じような考えで,V-SLAMではカメラの軌道をあらかじめ用意されたマップから計算しますが,SfMでは対象オブジェクトの画像データの変化からカメラ軌道を計算し,同時に対象オブジェクトの形状も計算するものになります.
SfMについては例えば焼失した首里城のデジタル復元等で使われています.
www.our-shurijo.org

SfMとLiDAR,Depthカメラの違い

物を3次元計測する際に使われるものにLiDARとDepthカメラがあります.あくまで個人的な考えにはなりますが,

  • LiDAR:レーザー光を3次元的に出力し,そのレーザー光が返ってきた時間(dToF,ToFはTime of Flight?)または帰ってきた量(iToF)で距離を測定する(2次元のものはLRF).
  • Depthカメラ:赤外線等の不可視な光でパターンを投影(プロジェクション)してそのパターンの形状変化から平面の距離情報を面的に取得する

iPhoneで考えると

  • LiDAR:高レンジ(数m)で比較的高精度に計測できるので暗所での被写体深度(被写体までの距離)を計測しピント合わせを高速化,部屋の間取等をスキャンするとき使う(iPhoneの12,13のPro,iPad Proに搭載).
  • Depthカメラ:Face IDでつかうTrue Depthセンサにあたり,短距離(~1m)で高精度に取得できるので顔の特徴を検出するときに使う.比較的小型のものであってもスキャンできる
  • SfM:写真や動画を使う.CPU・GPUをめっちゃ使えば画素レベルで高精度化可能?

HAVRMは現在iPhone 13 Proを買って様々なものをスキャンしてみました.LiDARでは部屋レベル,True Depthでは顔ぐらいがきれいに計測できてそれより小さいもの(マウスやミニカー)などは形がつぶれました.
なお使ったAppは次の2つです.

LiDAR

3d Scanner App™

3d Scanner App™

  • Laan Labs
  • ユーティリティ
  • 無料
apps.apple.com

True Depth(2022/4/11現在Appがない?)
www.producthunt.com

またSfMをやっていると思われるアプリも実際に使ってみました(クラウド側で処理するのと無料でできるのは5回まで?です).
Metascan - 3D Scanner

Metascan - 3D Scanner

  • Abound Labs Inc.
  • 写真/ビデオ
  • 無料
apps.apple.com
実際のスキャン結果(アプリから動画として出力しました.20枚の画像から出力しています.対象はガチャガチャのミニカーです.最低枚数の20枚でもきれいに3D出力できています.透明部がへこんだりするのはカメラ映像を使うのでしょうがないです)
youtube.com
例えばLiDARは自動運転の広域の3次元計測に使われているとか,DepthカメラはKinectで使われている技術とかだったりするので,実際に使いたい場合は目的に応じて選んでください.

SfMをやってみる

SfMについては結構前からオープンソースがありました.
openSfMやopenMVG+openMVSとかです.この中で今回は比較的高画質に生成できるopenMVGとopenMVSを使う方法を選びました.簡単に言えばopenMVGでカメラ軌道を計算し,openMVSで高画質に3D生成する感じです.

参考ブログ・サイト

基本的には以下のブログを参考にしています.
一番もとにしているのはこのブログ↓
qiita.com
インストールの時はこのサイトも参考に↓
openMVGとopenMVSを使うメモ · GitHub

実行はこのサイトを参考に↓
aicam.jp
言うまでもないですが,それぞれのGitのサイトも参考にしています.
openMVG
github.com
openMVS
github.com

使用OS

少し順番が前後してしまいますが,ここで使用OSを書きます.
今回自分はWSL上のUbuntu 20.04.4 LTSを使用しています.
最初Ubuntu 18.04を使っていたのですがopenMVSのコンパイルができないため諦めました.詳細は後程

openMVGのインストール

基本的にgitに書いてある通りすればいいです.
github.com
このBUILD.mdに詳しく書いてあります.
初めての際は最初のインストールの時にgccとg++もインストールしておいた方がいいでしょう.

$ sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev
# ↑を次に変更
$ sudo apt-get install libpng-dev libjpeg-dev libtiff-dev libxxf86vm1 libxxf86vm-dev libxi-dev libxrandr-dev gcc g++

また最後のcmakeについてはジョブ数(並列作業数)を指定しておくと早く終わります.
ジョブ数は物理コア数+1にしておくといいそうです.ただWSLはWindows上なのでCPUをすべて使いたくなかったので物理コア数-1でしていました.物理コア数は次のコマンドで確認できます.

$ grep cpu.cores /proc/cpuinfo | sort -u | sed 's/[^0-9]//g'
8

(この辺りは以下のブログで調べました)
qiita.com
実際の指定は次のように行います.

$ cmake -DCMAKE_BUILD_TYPE=RELEASE ../openMVG/src/
$ cmake --build . -j 9 --target install

「-j 9」を「--build」の前に置くとエラーになるので注意

参考ブログのほうでは最後に「make」もやっていましたが,なくてもよさそうです.一応自分はやっていました.「$ make test」のほうは「-DOpenMVG_BUILD_TESTS=ON」のオプションをcmakeにつけない限り不要です.

openMVSのインストール

ここもGithubのBUILD.mdにある通り進めますが次の問題が起きました
github.com

Ubuntu 18.04でコンパイルできない

最初のファイルから「filesystem : no such file or directory」というエラーが出ました.Ubuntu18.04で使えるgccコンパイラーのバージョンが古い(7系)なのが問題みたいで8系にすれば解決できるそうですが,cmakeでのコンパイラの指定がわからなくて諦めました.「#include <filesystem>」を「#include <std::filesystem>」みたいにすればいいという記述も見つけましたが大量にあるファイルを逐一修正するのは無理です...

Ubuntu 16.04でコンパイルできない

(そもそもcmakeが古すぎました...)

Ubuntu 20.04でコンパイルできない→修正して実行可能

この場合途中までコンパイルは進みますが50%を過ぎたあたりで「Mesh.cpp」のコンパイル時にエラーが起きました.これについてはすでにissueで解決されている通り,ブランチを「master」から「develop」に変更することで解決できます.
github.com

$ git clone https://github.com/cdcseacave/openMVS.git openMVS
# ↑を次に変える
$ git clone -b develop https://github.com/cdcseacave/openMVS.git openMVS

実際にSfMをしてみる.

基本的には先に挙げた以下のサイトにあるように進めればいいです.
aicam.jp

しかし,openMVGのほうで一部APIが変わっておりそれによってコマンドが変わっています.
github.com
「openMVG_main_IncrementalSfM」がなくなり「openMVG_main_SfM」となり,オプションで「Incremental」を指定します.
上記サイトのようにファイルを作ったうえで次のように実行しました.

$ openMVG_main_SfMInit_ImageListing -i SfMTest/images/ -d SfMTest/sensor_width_camera_database.txt -o SfMTest/matches/
$ openMVG_main_ComputeFeatures -i SfMTest/matches/sfm_data.json -o SfMTest/matches/
$ openMVG_main_PairGenerator -i SfMTest/matches/sfm_data.json -o SfMTest/matches/pairs.bin
$ openMVG_main_ComputeMatches -i SfMTest/matches/sfm_data.json -p SfMTest/matches/pairs.bin -o SfMTest/matches/matches.putative.bin
$ openMVG_main_GeometricFilter -i SfMTest/matches/sfm_data.json -m SfMTest/matches/matches.putative.bin -g f -o SfMTest/matches/matches.f.bin
$ openMVG_main_SfM --sfm_engine INCREMENTAL --input_file  SfMTest/matches/sfm_data.json --match_dir SfMTest/matches --output_dir SfMTest/outReconstruction
$ openMVG_main_openMVG2openMVS -i SfMTest/outReconstruction/sfm_data.bin -d SfMTest/outReconstruction/ -o SfMTest/outReconstruction/scene.mvs
$ ~/openMVS_build/bin/DensifyPointCloud SfMTest/outReconstruction/scene.mvs

この結果,「SfMTest/outReconstruction/scene_dense.ply」というファイルが生成され,実際にMeshLabで確認しました.
なお「sensor_width_camera_database.txt」にiPhone 13 Proは登録されていなかったので(iPhone 6まででした...)「Apple iPhone 13 Pro;7.5」を追加してあります.今回は広角カメラで撮影し,以下のサイトにセンササイズが「1/1.67」とあったので「1/1.7」と同じと考え,「7.5 mm」にしています.
2ndart.hatenablog.com
(実際に正確なサイズ等出力したいならこの値はしっかりしたほうがいいと思います)

まとめ

いかがだったでしょうか.インストールするのに半日以上,SfMをエラーなく実行できるまで数時間かかったものの,解決は簡単(?)なのでこれを見れば数時間でできるようになると思います(インストールとコンパイルに時間がかかるので...).
ただあくまでこれは自分が行った2022/4/10時点の話なのでまた変わることがあるのでそこは注意してください.
また自分はとりあえず11枚の適当な写真から出力してみましたが案の定一部が作れているだけでした.実際に行う場合はきちんとたくさんの画像を用意しましょう.

※追記
ここ最近いろいろなことがありすぎて記事にすることがたまりにたまっているので随時更新していきます.先にG-tuneとCF-XZ6についてかな...

WSL使用時の備忘録

こんにちは,HAVRMです.

備忘録第3弾はWSLを使っているときの問題の解決法をまとめます.これもバージョンごとに違うと思うので注意してください.

Ubuntu 18.04 LTS

"# apt update","# apt upgrade","# apt install"できない

"dpkg: error processing package libc-bin (--configure):"と表示される

libc-binのパッケージエラーのせいで「apt」がエラーを起こし,何もできなくななります.
この時はgithubのissueにある方法で解決しました.

github.com

この「abdilahrf」さんがコメントした方法でうまくいくようになりました.
実際のコードは次のようになります.

sudo mv /var/lib/dpkg/info/libc-bin.* /tmp/
sudo dpkg --remove --force-remove-reinstreq libc-bin
sudo dpkg --purge libc-bin
sudo apt install libc-bin
sudo mv /tmp/libc-bin.* /var/lib/dpkg/info/

なお自分が実行したときは次のようになりました.

$ sudo mv /var/lib/dpkg/info/libc-bin.* /tmp/

$ sudo dpkg --remove --force-remove-reinstreq libc-bin
dpkg: error processing package libc-bin (--remove):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 libc-bin

$ sudo dpkg --purge libc-bin
dpkg: error processing package libc-bin (--purge):
 this is an essential package; it should not be removed
Errors were encountered while processing:
 libc-bin

$ sudo apt install libc-bin
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc-bin is already the newest version (2.27-3ubuntu1.4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] Y
Setting up libc-bin (2.27-3ubuntu1.4) ...
W: APT had planned for dpkg to do more than it reported back (0 vs 4).
   Affected packages: libc-bin:amd64

$ sudo mv /tmp/libc-bin.* /var/lib/dpkg/info/

これでアップデートやアップグレード,インストールができるようになりました.

Ubuntu 20.04

GUIを開く際に「error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory」と表示される

次のコマンドでlibQt5Core.so.5を探す.

$ find /usr -name libQt5Core.so.5
/usr/lib/x86_64-linux-gnu/libQt5Core.so.5

表示されたシンボルをオブジェクトファイルから切り捨てる

$ sudo strip --remove-section=.note.ABI-tag <ファイルの場所>

今回の場合だと

sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5

参考:https://answers.gazebosim.org//question/25531/getting-gazebo-11-running-on-wsl2-on-windows-10/

CF-XZ6の中古品の熱暴走への対処法~抜本的?解決~

こんにちは,HAVRMです.
先日Let's noteのCF-XZ6を落札し,使えるようにしたとブログを書きました.
havrm.hatenablog.com

しかし,使えるようにしてから2~3日連続稼働していたら,急に電源がつかなくなりました.今回はこれを修正し,「最も高いパフォーマンス」でも安定して動くように修理したことを書きます.

状況について

Windowsインストール成功し,安定的に使える(「最大のバッテリー残量」の設定時だけですが...)ようにしてから数日使い続けたときに問題が起きました.その時はちょうど九州にいて秋雨前線によるすさまじい豪雨に見舞われていた時です(佐賀県の嬉野や長崎の雲仙で降り始めからの雨量が1000mmを超えたあれです).その際いた場所はハザードマップ等確認したところ,特に土砂災害や浸水等の被害は想定されない区域でまたそのエリアからも離れている少し高台でした(皆さんも両方確認しておきましょう).そのためそこでPC等使って作業していたのですが,PCを冷やすために雨が振り込まない窓を開けて換気して部屋の温度を下げていました(なお,その時はその家に自分しかいなかったので暑い日は窓を閉め切って冷房をつけていました).この時の気温は25℃を下回っていたので冷房をつけるよりいいやと思っていました.すると,このCF-XZ6のみ(この時は他にMouseのG-TuneのノートとDAIVのノート,Let's noteのCF-SX2を同時に使っていました)電源がつかなくなりました.それも電源投入後の「Panasonic」の文字すらつかず,電源の緑のランプのみ少し光って消えるという状況でした.最初は使用条件の湿度80%以内を満たしてないからだと思い(この時,室内は78%となっていました),窓を閉めたうえでエアコンのドライを付けましたが,68%まで下がっても付きませんでした.その後も裏からUSB-FAN(Yahoo!ショッピングで購入した80×80×10mmのものです)を当ててどうにか起動してもWindows起動後に落ちることを繰り返していました.もともと冷却性能が低く,電源設定を「最大のバッテリー残量」としたうえでも,起動時や少し作業するだけでCPU温度が100℃周辺まで上昇していました.さらにギリギリ起動できたときに「Intel Power Gadget」で確認すると,「CCCPU Util」(CPUの使用率)と「Package Temp0」(CPUパッケージの温度)の波形がほぼ同一で冷却できていなさそうでした.

原因の確認

そこで原因を確認するために裏ブタを外したところ(一度外すと外れやすくなりますね...),
ヒートシンクのねじが外れていました!!!しかもねじが外れているのではなく,マザーボードにねじを固定するための金属の土台ごと外れていました...

f:id:HAVRM:20210821152450p:plain
ヒートシンク固定ねじ土台の剥離

そりゃ,十分に冷却できないな...

CPUの冷却に関して

冷却を効率よく行うためにはCPU等の発熱体とヒートシンク等の放熱体を隙間なく接続することが必要です.この隙間というのが厄介で通常は金属表面をどれだけ研磨しても完全な平面にはできません.しかし,目に見えない程度の凸凹があっても放熱性能は格段に減少し,十分に放熱できなくなります.そこでCPUグリスを塗ることでこの隙間をなくすことで放熱性能を上げるのが一般的です.ただし,ただ載せる,はさむだけなら完全に密着できるとは限りません.そのため,デスクトップであればばね付きのねじ,ノートパソコン等であれば逆に反ったヒートシンクを無理やり締め付けることで圧力をかけ,密着させます.今回はそのねじの片方が完全に外れたため,密着性が落ち,放熱が十分にできなくなっていたようです.

解決方法について

まぁ,解決方法は「どうにかしてねじを締めなおす」になります.ただまずはマザーボードに金具をつける必要があります.そのため瞬間接着剤(今回はセメダインの3000ゴールドをCan★Doで購入しました)を使ってみました.

しかし,くっつきませんでしたw
まぁ,範囲も狭いし(画像参照),表面ガタガタだし,不適切使用ではあります.
ということで正攻法の「締めなおす」はあきらめました(いや,はんだ付けとかすることもできるけど,自分の技術だとうまくできないと思ったのと,簡単にできそうな方法を思いついたので...).
ではどうしたかというとあきらめて詰め物すればいいじゃないかとなりました.
たまたま片付けしていた時に出てきた小さなゴム足があったのでこのゴム足を挟むことで背面プレートから浮いているねじを押さえつけることにしました.ついでにこのゴム足の固定には先ほどの接着剤を流用しました(とりあえずくっつけばよかったので).

f:id:HAVRM:20210821144608p:plain
ゴム足搭載(右上の黒いものがゴム足です)

改良について(というよりグリスの塗りなおしですが...)

特に古いPCの場合ですが,冷却がうまくいかなくなることが多数あります.ノートパソコンの場合先にファンが壊れるのであまり感じませんが,大抵はCPUに塗ってあるグリスの劣化によるものです.今回は,この修理している間,ヒートシンクをはがしていたためにグリスが露出し,特に不適切な環境になっていたのもあり,また中古で落札したもので詳細不明ですが,2016~2017あたりに購入されたものだと推定されるのでグリスの劣化もあるとは思っていました(CF-SX2とかは2012年製ですがグリスの交換なしに使えています...).そのためグリスを塗り替えることにしました.

グリスの選定

今回はネットでは買わずに近くのPC専門店で探すことにしました.というのも今回初めて買うのでよくわからないこと,またネットショップでよくわからんものを買わされてもしょうがないからです.取り合えず,今回は次の点で選定しました

  • ともかく熱伝達のいいもの(まぁ当然です)
  • ある程度年数の持つもの
  • 量は気にしない(以前ブログで書いた2014年製のノートのG-Tuneが今も重い処理をさせているため常時CPU温度が90℃以上といろいろ限界なので,これのグリスの交換もやってみようかと考えています)

ということで選んだのはアイネックス社の「ナノダイヤモンドグリス JP-DX1」です.

店頭にあったものの中で最大の熱伝導率の16W/mKだったので選びました.

グリスの清掃

ということで塗りなおします.
まずはすでに塗布されているグリスをふき取ります.特にCPU表面のヒートスプレッダ?(出っ張っている金属の面)とヒートシンク側はきれいにする必要があります.CPUのそれ以外の面についてはそこまで神経質にならなくていいはずです.通常はアルコール系の専用のウェットティッシュが売っていますが,今回はコロナ禍でJALが機内で配布しているアルコールシートを利用しました.除去後は次のようになります.

f:id:HAVRM:20210821150947p:plain
グリス除去後(左:CPU,右:ヒートシンク

グリスの塗布

グリスを塗る際はグリスのパッケージ裏の説明書に「ヒートスプレッダの中心に4~5mmの粒を絞り出した後、へらで広げてください。」とあるので,その通りにします(なおここでHAVRMはキャップをつけたまま押し出そうとしていましたw.先端の黒いのはキャップなので外して押し出しましょう).へらで広げた様子が次のようになりました.ともかく全面に塗ることを優先しました.

f:id:HAVRM:20210821151522p:plain
グリス塗布後

なお,ヒートシンク側には塗りません.

組み立て

グリス塗布後はねじ締めを行い,先ほどのゴム足をつけて完成です.

その後の動作について

その後起動してみたところ,問題なく起動し,温度変化もなだらかであり,「最も高いパフォーマンス」で動かしても起動シークエンス中のCPU Utilが100%が続いたときに80℃後半までしか上がりませんでした.この記事を書いているときもこの「最も高いパフォーマンス」ですが40~50℃で推移しています.

f:id:HAVRM:20210821153043p:plain
起動直後の様子 by Intel Power Gadget

これで一通りの問題は解決したと思います.また問題が起きればその解決まで行って記事にしたいと思います.

(追記:2021/8/24)速報
結局この記事を書いた後数時間後に強制終了しました(泣).当時CPU温度は40℃程度だったので熱による強制終了の線はなくなりました.満充電になった瞬間だったので,電源コントローラ回りかなと今は考えています.まだドライバのアップデートをすべてやっていないので,自然放電でバッテリー残量を減らし,電源回りのアップデートをやって様子を見たいと思います.進展があればまたブログに書きます.

CF-XZ6の中古品を落札した際のWindowsセットアップ方法とその時に詰まった点いくつか

お久しぶりです.HAVRMです.

つい先日ヤフオクでCF-XZ6RD6VS(IRカメラ付き,OSなし)を落札して使える状況にもっていくまでにいくつか苦労したのでまとめます.なんかの時に参考になればいいと思います.

経緯

これまで手書き入力できるPCとしてASUST304UAを使っていましたが,購入後1年たったあたりから次のような問題点が出てきました.

  • ファンから異音(ガリガリという音)がするようになり,うるさくなった(結局ファンをあるソフトで75℃以下なら止めるようにしました).
  • 付属のASUSペンのペン先が折れた(Amazonで別の充電式を購入しました).
  • ディスプレイ下部にタッチしても認識しない領域が発生.
  • 付属のキーボードが認識しないときがある(内部で線が切れている模様.ある角度の時のみつながる).
  • Wi-Fiがあまりつながらなくなった(つながってもすぐ切れる).

またもともと次のような不満点を持っていました

  • ラップトップとして使えない(PCの背面から足を出して支えるため,膝上だと十分なスペースがない,またキーボードが柔らかいため打つときゆがむ).
  • 充電が持たない(まぁ,しょうがないのかなとは思う)
  • キーボードのタッチパッドが使えない(使おうとするとタッチパネルのドライバと干渉するようで,ポインタが振動する.そのためいつもマウスを使っていました).
  • USB-Cポートからの電力が足らず,ハブを使うためには外部電源またはUSB-Aポートから電源を持ってこないといけない.ついでにハブはもっぱらLANケーブル用につなげていました.
  • なぜかCPUの最大クロックまで動作せず,同世代のPCと比べて圧倒的に遅い(どうも中のレジスタの設定で修正できるらしい).
  • 指紋認証が通らないことが多い(iPhoneのTouch IDと比べてなのでそういうものかもしれませんが,結局PINでログインしていました).

あんまり製品批判することは好きではないですが,これを買ったときはそもそもバッテリーの充電ができないものが届いて,初期不良として本体交換になったので,最近購入する際にASUSは初めから省くことが多いです(なおバッテリー充電不可はコネクタが抜けているだけのことが多いようなので,自分で修理できるようです)

もともとデジタル文書に直接書き込むために買ったものだっただけに,タッチパネルの不調は耐え難く,またWi-Fi死亡という致命的な問題も起きたため,別の2-in-1のPCを探すことにしました.

選定&購入

機種を選ぶにあたって次の点を考慮しました.

  • ともかく中古(安く済ませるため)
  • BIOSロックのかかっていないもの
  • とりあえず第7世代以上のIntel製CPU(Windows11を見据えて)
  • メモリは最低8GB,交換できるなら気にしない
  • 内臓SSD/HDDについてはあまり気にしない
  • もともとWindowsOSのものならOSの有り無しは気にしない(Windowsが使えればいいけど,Ubuntuでもいいかなと考えていた)
  • 2-in-1のうち,ラップトップとしても使えて,タブレット部とキーボード部が切り離せるもの.キーボードにバッテリが内蔵されているとなおいい.

この結果Let's noteのCF-XZ6シリーズとVAIO A12を選びました.
panasonic.jp
vaio.com
ただ,VAIO A12は今も売られている商品というだけあって,ヤフオクでの落札価格は高く,また個数も少ないのであきらめて,CF-XZ6を狙うことにしました.なおLet's noteは相当古いものでもきちんと動き,ほぼ壊れない(CF-SX2,2012年製がまだ使えてます)ので,中古でも大丈夫だというのも考慮しています.一応,VAIOもしっかりしているので同年代のVAIO S11(おそらく2012年製)はメモリー増設(4GB→12GB)の上まだ動いています.
落札は税抜きで約15,000円でOS・電源アダプターなしでSSD256GB,メモリ8GBのものを落札しました.リアカメラ付きのCF-XZ6RD6VSで届いたものをきちんと確認したら顔認証用のIRカメラ搭載機でした.

セットアップ

ということで実際に使えるように準備していきます.

SSD換装

さすがに256GBだと少ないので奮発して1TBのものを購入しました.

SSDの換装は修理会社が方法を掲載していたのでそれを参考に行いました.
www.ikt-s.com
このサイトで言われているねじを隠している上部パネルを開けるのは本当に難しく,苦労しました.爪は計4個,すべて下部パネル側にあり,両端と通気口を挟む位置とその対称の位置に1個ありました.爪を外して,引き抜くようにすれば抜きやすいですが,私は開けるときに爪を1つ割ってしまいました...
それ以外は簡単に外せて,換装も簡単にできました.もともとこの落札品は出荷前にディスクのクリーンアップをしており,中に何もない状態だったのでクローン等は何もしませんでした.

OSインストール

次にWindowsのインストールを行いました.インストール用のUSBはWindows7からWindows10へ手動でアップグレードする際に用いたソフトを使ってインストール用USBを作成し,それを使いました.
www.microsoft.com
このサイトの「ツールを今すぐダウンロード」からツールをダウンロードし,そのツールの指示に従ってUSBに焼きこめばOKです.
あとはキーボードベースのUSB端子にそのUSBを刺し,起動,F2を連打してBIOS画面に入って,そのUSBから起動しWindowsクリーンインストールを選択し,指示通りに行えばインストールできました.ライセンス認証に失敗するとデスクトップの画面右下に「ライセンス認証が必要」と文字が出ますが,文字が出ず,システムからもライセンス認証済みと表示されたので問題なく使えます.ついでにバージョンは「21H1」でした.
デジタルライセンスの場合,マザーボードならともかく,SSDの換装ぐらいでは認証は通るようです.どこまで許容かは不明なので自己責任で(ついでに自分はライセンス認証が通ったことを確認できるまでカバーは外しっぱなしにしていました.いざというときに交換しやすいように).

ドライバのインストール

ここからはただの作業です.リカバリーディスクから再インストールした場合はこの作業は不要かもしれませんが,今回は完全に基本のWindowsをインストールしただけなのでドライバのインストールが必要です.Panasonicのサイトから導入済みドライバーをダウンロードし,手順書通りにインストールしました.
askpc.panasonic.co.jp
バイス搭載の可否によってインストールするドライバが変化しますが,このうち「ISH搭載機種のみ」とあるのはよくわかりませんでしたが,インストールしたところ照度センサが有効化されたので必要だったようです.

ログイン方法について

最初はPINを使っていましたが,IRカメラ搭載で顔認証できるのでWindowsの設定から設定したところ,画面を見るだけですぐログインできるようになったので,専ら顔認証でログインするようになりました.とても楽です.

問題について

ここまででセットアップはできたのですが,この時点でいくつかの問題がありましたのでその対策も併せて列挙します.

問題その1:ホイールパッドが使えない

Let's noteの代名詞とえる円形のタッチパッド,その周りをぐるぐるすることでスクロールできるのですが,これが使えませんでした.結局インストール推奨の「Panasonic PC設定ユーティリティ」から「設定>ホイールパッド機能」の「通知領域にアイコンを表示」をチェックすることで使えるようになりました.

問題その2:電源が勝手に落ちる

ドライバのインストールが終わったあたりから電源が勝手に落ちるようになりました.特にソフトのインストールやブラウザを見たりしたときに落ちていました.電源周りかと考え,Windowsの機能の更新を行ったり,ドライバアップデートプログラムのうち,電源コントローラをアップデートしたり(https://faq.askpc.panasonic.co.jp/faq/docs/004977?no=1&q=cf-xz6rd6vs&score=0.074424222111702&sri=6797053&trn_org=2)しましたが,一向に良くなりませんでした.そこで「Open Hardware Monitor」や「Intel Power Gadget」で確認したところ,CPU温度が上限の100℃まで上昇していることがわかりました.そのため熱暴走防止による強制終了だと考え,電源モードを「よりよいバッテリー」と一番低くすることで使わないときでも十分に冷却できるようにしました.この状態でも計算を行うときは限度ギリギリまで動くので使っていて遅いと感じることはないです.こうすることで強制終了されることはなくなりました.まぁ,排熱の難しさは2-in-1やタブレットの宿命なのでしょうがないでしょう.なおT304UAの場合,どんなに使っても70℃程度までしか上がらないのを考えると相当機能が落とされているのだと思います.
openhardwaremonitor.org
software.intel.com


(2021/8/21追記)
この電源が勝手に落ちる問題はこの後に致命的になったので,修理しました.それについては↓のブログで
havrm.hatenablog.com

問題その3:Zoomでカメラが使えない(また動画ソフトで動画も見れない)

今のコロナ禍の中,オンライン会議等は増え,Zoom等のツールは必須になってきています.そのためZoomをインストールし,カメラの確認をしたところ,フリーズしZoomが強制終了しました.MicrosoftのTeamsでも同じ現象が起き,何が原因かわかりませんでした.特にカメラの機能自体は使えて,撮影等もできたのでなおのことわかりませんでした.このあと,動画の視聴をしようとしたところ同様におちたので,ビデオドライバのアップデート(https://faq.askpc.panasonic.co.jp/faq/docs/004896?no=2&q=cf-xz6rd6vs&score=0.043634045869112&sri=6797053&trn_org=2)を行ったところ,動画の視聴もできるようになり,Zoom,Teamsでもカメラが使えるようになりました.どうもカメラ映像の表示時にビデオのドライバが古かったため,落ちたようでした.

まとめ

すでに述べた以外にも使う上で次のものを購入しています

  • 電源アダプタ互換品(ヤフオクで購入しました.NEC製のものにL字の変換コネクタがついたものでした)
  • 保護シート(Panasonic製ではない専用品をYahoo!ショッピングで購入しました.画面の反射が嫌いなので反射低減モデルです.JAN:4544378155086)
  • アクティブペン(調べたところ専用品しか使えないみたいので,それを購入しました:CF-VNP024U)

結局PC含めて合計で4万円ほどかかりましたが,新規品を購入すると20万円ぐらいはかかるのでいい買い物だと思います.
Let's noteやVAIOのものであれば少し古めのいいものを中古で購入するのはありだと思った今日この頃です.
あとは液晶割れ程度は交換で修理できるので,そういったものを探して安く手に入れて修理するのもありだと思います.
ただメモリーはLet's noteやVAIOは換装できない(オンボードのものになっていてスロットがない)ことが多いので,これだけはこだわったほうがいいと思います.

ついでにこの記事はこのCF-XZ6で作成しました.

追記:そのうち様々なPCで同じ処理をしたときにかかる時間を計測し比較してみたいと思います.

Ubuntu使用時の備忘録

こんにちは,HAVRMです.

今回は備忘録第2弾ということで,Ubuntuに関する備忘録を載せたいと思います.各バージョンごとに異なる場合があるので,気をつけてください.

Ubuntu 16.04 LTS

ノートPCで画面を閉じた時にサスペンドする,画面が消える

サスペンドについてはいろいろなところで取り扱われているので比較的簡単に見つけることができます.「設定」からもできますが,設定ファイルを変更しちゃいましょう.
「/etc/systemd/logind.conf」にあるファイルを編集します.スーパーユーザ(sudo)権限をつけるのを忘れずに開いて,次の1行を追加,あるいはコメントアウトを表す先頭の「#」を削除し次のように編集します.

HandleLidSwitch=ignore



これで画面を閉じた時にサスペンドしない設定になります(逆にサスペンドしたい時は「ignore」の代わりに「suspend」を入力します).


一方遠隔操作したい時や外部モニターに出しつつノートPCは閉じておきたい時はこれだと閉じた瞬間に画面が真っ暗になります.これを防ぐには「/etc/UPower/UPower.conf」のファイルを設定します.この時もさっきと同様にスーパーユーザで次の1行を追加,あるいは「#」を削除して(私の時は39行目にありました)次のように編集します.

IgnoreLid=true



これで画面を閉じても画面は点き続きます.


編集の際はviやnano,gedit等のテキストエディタや(私自身はnanoを愛用しています.viは挫折しました…),コマンドラインで直接打つ等できます.コマンドラインから行く場合は最終行に追記すればいいので,次のようなコマンドになります.

sudo sh -c 'echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf'
sudo sh -c 'echo "IgnoreLid=true" >> /etc/UPower/UPower.conf'



さらにshellscriptとかにまとめるからパスワードも打ちたくないって時はパイプでつなげて(shellscriptの書き方でいきます)

#!/bin/bash
PASS="<ユーザーパスワード>"
echo $PASS | sudo -S sh -c 'echo "HandleLidSwitch=ignore" >> /etc/systemd/logind.conf'
echo $PASS | sudo -S sh -c 'echo "IgnoreLid=true" >> /etc/UPower/UPower.conf'



みたいな感じです.

参考

・(ここに書いてあったのですが,日本語が崩壊しているので怖いと思う方は開かないでください)
qastack.jp