フリーソフトでSSDクローン作業
使用しているWindows10 PCのSSDを容量を拡張する必要があったためクローン作業をするのに使えそうなフリーソフトを色々調査&試行錯誤した内容のメモ。(この記事は2021/8/10時点のメモになるので今後変わる可能性があります)結論から言うと使用したのは「MiniTool ShadowMaker」というフリーソフトです。
候補1:EaseUs Todo Backup
昔お世話になっていたフリーソフト。またお世話になろうとしたら、どうやら最近v13.0に更新された時点で無料ではクローン機能を使用できなくなったとのこと…。残念ながら使用できず…。
(参考サイト) tarelife.com
候補2:Acronis True Image
次点で初めてこちらのソフトを試してみる。インストールに加えて30日間の試用版として使用するためにはアカウント登録する必要があるので注意。 今回2021年版をインストールしてみて、いざクローン実行しようと思ったらEaseUs Todo Backupと同様に試用版では制限がかかっておりクローンできなかった…残念。諦められず色々調べていると使用しているSSDが所定のメーカー(WestanDegitalなど)のものであれば専用のクローンソフトを配布しているらしい。WestanDegitalのSSDに移行するからやった!と思ったら、なぜか認識されず使用の認証が通らなかったので諦めました。もし該当するメーカーのものを使用してクローンするのであればこちらのソフトを使用することができるかもしれないです。インストール時はどれか1つのものしか入れられそうにないようで、通常版を入れている状態でメーカー専用の制限版をインストールしようとすると失敗します。
(参考サイト)
Westan Degital版
Crucial版
候補3:MiniTool ShadowMaker
今回こちらのソフトを使用することで無事クローンすることができました。作業自体は参考にしたサイトに記述があり、ソースディスクとターゲットディスクを選択してクローンが終わるのを待つだけで簡単でした。
(参考サイト)
md2review インストールエラー
Markdownで書いた文章を書籍を書くために良く使用されているreview形式に変換するため「md2review」をインストールしてみるが、インストール時にエラーが出たため記録として残す。
sudo gem install md2review
でインストールしようとした際に出力されたエラーは下記の通り
Building native extensions. This could take a while...
ERROR: Error installing md2review:
ERROR: Failed to build gem native extension.
current directory: /var/lib/gems/2.5.0/gems/redcarpet-3.5.1/ext/redcarpet/usr/bin/ruby2.5 -r ./siteconf20210108-6551-fakd95.rb extconf.rbmkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h
extconf failed, exit code 1
Gem files will remain installed in /var/lib/gems/2.5.0/gems/redcarpet-3.5.1 for inspection.Results logged to /var/lib/gems/2.5.0/extensions/x86_64-linux/2.5.0/redcarpet-3.5.1/gem_make.out
rubyよくわからんので「mkmf.rb can't find header files」のエラーメッセージで調べてみたら関係しそうな情報を見つけた。ruby-devをインストール後に改めてmd2reviewをインストールすると無事完了。
インストールしたパッケージを確認するのに下記コマンドを打つらしい
gem list review
すると以下の通りmd2reviewパッケージをインストールできたのが確認できた
*** LOCAL GEMS ***
md2review (1.12.1)
review (5.0.0)
Realsense ファームウェア更新
Realsenseのファームウェアのアップデート方法のメモ(Linux)。 今回はD435のファームウェアのアップデートを行った。
アップデートしたいファームウェアバージョンの バイナリデータを公式からダウンロードする。
すでにlibrealsense
がインストールできていればコマンドを使用したアップデートの準備はできているので
まずRealsenseをPCと接続して下記コマンドを実行する。
rs-fw-update -l
すると接続しているRealsenseの情報が出てくるので シリアル番号を確認する。
Name: Intel RealSense D415, serial number: 725112060411, ASIC serial number: 012345678901, firmware version: 05.11.01.100, USB type: 3.2
次にシリアル番号とアップデートに使用するバイナリデータを引数に与えてコマンドを実行すると アップデートが開始される。
rs-fw-update -s [シリアル番号] -f [binファイル]
Realsense ROS2エラー
ROS2を触り初めたところIntelからRealsenseのROS2対応のリポジトリを見つけたのでトライ。
結論から言うとそのままでは以下の様なエラーが出て使えなかった...
(types.h:180) get_xu(...). xioctl(UVCIOC_CTRL_QUERY) failed Last Error: Device or resource busy [ERROR] [RealSenseCameraNode]: An exception has been thrown: get_xu(...). xioctl(UVCIOC_CTRL_QUERY) failed Last Error: Device or resource busy
原因としては使っているUbuntu18.04のカーネルバージョンが対応していないため。 (自分の所はバージョン5.4.0だが、サポートしているのはバージョン4.xとのこと)
librealsense/installation.md at master · IntelRealSense/librealsense · GitHub
Complete the boot, login and verify that a supported kernel version (4.[4,8,10,13,15,16]]) is in place with uname -r
改めて使おうとしたらパッチを当てるとか、Dockerで起動するとかかな。 以下は参考にさせて頂いたURL
Typora備忘録
はじめて技術書展10に出店するに向けてTyporaというMarkdownのエディターを使って文章を書いている。 インストールも簡単で個人的にはすごく簡単に使いやすい。
その際に参考にしたサイトについて備忘録として残す。
参考①
改ページの方法がわからず検索して見つけたサイト。
改ページしたい所で下記のstyleを入力するとエディター上でも可視化できたままで 改ページの場所を挿入することができる。
<div style="page-break-after:always;color:lightgray" class="no-print">─────改ページ─────</div>
参考②
全体的にTyporaを使って電子書籍と紙での出店をまとめていたサイト。 紙は作るかどうかわからないけど流れ全体をまとめられていてとても参考になった。
Realsenseの点群をリアルタイム表示(Python)
Realsenseの取得点群表示を気軽にPythonで実行したい。C++とPCLライブラリで表示しても良いが、あまりPCLに依存せずできる方法としてOpen3DのViewerを利用できないか調べていたOpen3D公式のExampleを見ているとカメラから取得した点群を表示する活用方法は紹介されていなかったが、issueを見てみると参考になりそうな記述があったので試してみた。
参考
https://github.com/intel-isl/Open3D/issues/473
コード
<環境設定> 使用センサ:Realsense D435 Open3D version = 0.8.0 Python version = 3.5.2
下記はissueに記述のあったコード。そのままでは動作しなかったので一部書き換えている。 コードに関しては一度geometoryにinputしたpointcloudを取得した点群データの最新のものに置き換え
vis.add_geometry(pointcloud)
下記描画処理のところでupdateを掛けて表示を更新している。
vis.update_geometry() vis.poll_events() vis.update_renderer()
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import pyrealsense2 as rs import numpy as np import cv2 import open3d as o3d import datetime # Configure depth and color streams pipeline = rs.pipeline() config = rs.config() config.enable_stream(rs.stream.depth, 640, 480, rs.format.z16, 30) config.enable_stream(rs.stream.color, 640, 480, rs.format.bgr8, 30) # Start streaming pipeline.start(config) align = rs.align(rs.stream.color) vis = o3d.visualization.Visualizer() vis.create_window('PCD', width=1280, height=720) pointcloud = o3d.geometry.PointCloud() geom_added = False while True: dt0 = datetime.datetime.now() frames = pipeline.wait_for_frames() frames = align.process(frames) profile = frames.get_profile() depth_frame = frames.get_depth_frame() color_frame = frames.get_color_frame() if not depth_frame or not color_frame: continue # Convert images to numpy arrays depth_image = np.asanyarray(depth_frame.get_data()) color_image = np.asanyarray(color_frame.get_data()) img_depth = o3d.geometry.Image(depth_image) img_color = o3d.geometry.Image(color_image) rgbd = o3d.geometry.RGBDImage.create_from_color_and_depth(img_color, img_depth, convert_rgb_to_intensity=False) intrinsics = profile.as_video_stream_profile().get_intrinsics() pinhole_camera_intrinsic = o3d.camera.PinholeCameraIntrinsic(intrinsics.width, intrinsics.height, intrinsics.fx, intrinsics.fy, intrinsics.ppx, intrinsics.ppy) pcd = o3d.geometry.PointCloud.create_from_rgbd_image(rgbd, pinhole_camera_intrinsic) pcd.transform([[1, 0, 0, 0], [0, -1, 0, 0], [0, 0, -1, 0], [0, 0, 0, 1]]) pointcloud.points = pcd.points pointcloud.colors = pcd.colors if geom_added == False: vis.add_geometry(pointcloud) geom_added = True vis.update_geometry() vis.poll_events() vis.update_renderer() cv2.imshow('bgr', color_image) key = cv2.waitKey(1) if key == ord('q'): break process_time = datetime.datetime.now() - dt0 print("FPS: " + str(1 / process_time.total_seconds())) pipeline.stop() cv2.destroyAllWindows() vis.destroy_window() del vis
テスト結果
ベイマックス君を撮影対象にしてみた。十分使えそうな感じであったので、次は描画設定の所を好みな感じにいじれるようにしたい。
RealsenseをPythonで起動する
RealseneseをPythonで使用してみようと思いメモ。
環境構築
<使用環境> OS: Ubuntu 16.04 Realsense SDK version: 2.19.0 Python version : 3.5.2
既に取り組まれている方の情報を参考に環境構築を行った。 cmake-gui上で「BUILD PYTHON BINDINGS」の項目をONにしビルド後、make install.
公式githubよりPython wrapper
https://github.com/IntelRealSense/librealsense/tree/master/wrappers/python
実行
参考URLをもとにPythonでRealsense起動できることを確認できた。C++で書かなくて良いのは楽ですね。 Pythonスクリプトと同じディレクトリなどにPython Wrapperビルド時に生成された.soファイルを準備する必要あり。自身の環境だと下記.soファイルが必要だった
- pyrealsense2.cpython-35m-x86_64-linux-gnu
- pyrealsense2.cpython-35m-x86_64-linux-gnu.so
- pyrealsense2.cpython-35m-x86_64-linux-gnu.so.2.19
参考:Pythonではじめる3Dセンシング!!
http://mirai-tec.hatenablog.com/entry/2018/07/29/150902
Warning
とりあえず動くものの、実行時に下記の様な警告が出てくる…。pybindのバージョン関連?
/usr/lib/python3.5/importlib/_bootstrap.py:222: FutureWarning: pybind11-bound class 'pyrealsense2.processing_block' is using an old-style placement-new '__init__' which has been deprecated. See the upgrade guide in pybind11's docs. This message is only visible when compiled in debug mode. return f(*args, **kwds) /usr/lib/python3.5/importlib/_bootstrap.py:222: FutureWarning: pybind11-bound class 'pyrealsense2.filter' is using an old-style placement-new '__init__' which has been deprecated. See the upgrade guide in pybind11's docs. This message is only visible when compiled in debug mode.