kobot

3D処理とか

フリーソフトでSSDクローン作業

使用しているWindows10 PCのSSDを容量を拡張する必要があったためクローン作業をするのに使えそうなフリーソフトを色々調査&試行錯誤した内容のメモ。(この記事は2021/8/10時点のメモになるので今後変わる可能性があります)結論から言うと使用したのは「MiniTool ShadowMaker」というフリーソフトです。

jp.minitool.com

候補1:EaseUs Todo Backup

昔お世話になっていたフリーソフト。またお世話になろうとしたら、どうやら最近v13.0に更新された時点で無料ではクローン機能を使用できなくなったとのこと…。残念ながら使用できず…。

(参考サイト) tarelife.com

候補2:Acronis True Image

次点で初めてこちらのソフトを試してみる。インストールに加えて30日間の試用版として使用するためにはアカウント登録する必要があるので注意。 今回2021年版をインストールしてみて、いざクローン実行しようと思ったらEaseUs Todo Backupと同様に試用版では制限がかかっておりクローンできなかった…残念。諦められず色々調べていると使用しているSSDが所定のメーカー(WestanDegitalなど)のものであれば専用のクローンソフトを配布しているらしい。WestanDegitalのSSDに移行するからやった!と思ったら、なぜか認識されず使用の認証が通らなかったので諦めました。もし該当するメーカーのものを使用してクローンするのであればこちらのソフトを使用することができるかもしれないです。インストール時はどれか1つのものしか入れられそうにないようで、通常版を入れている状態でメーカー専用の制限版をインストールしようとすると失敗します。

(参考サイト)

www.ubackup.com

Westan Degital版

shop.westerndigital.com

Crucial版

www.crucial.jp

候補3:MiniTool ShadowMaker

今回こちらのソフトを使用することで無事クローンすることができました。作業自体は参考にしたサイトに記述があり、ソースディスクとターゲットディスクを選択してクローンが終わるのを待つだけで簡単でした。

(参考サイト)

shikamori-p.com

md2review インストールエラー

Markdownで書いた文章を書籍を書くために良く使用されているreview形式に変換するため「md2review」をインストールしてみるが、インストール時にエラーが出たため記録として残す。

github.com

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.rb

mkmf.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をインストールすると無事完了。 

sudo apt-get install ruby-deb

qiita.com

インストールしたパッケージを確認するのに下記コマンドを打つらしい

gem list review

すると以下の通りmd2reviewパッケージをインストールできたのが確認できた

*** LOCAL GEMS ***

md2review (1.12.1)
review (5.0.0)

 

Realsense ファームウェア更新

Realsenseのファームウェアのアップデート方法のメモ(Linux)。 今回はD435のファームウェアのアップデートを行った。

dev.intelrealsense.com

アップデートしたいファームウェアバージョンの バイナリデータを公式からダウンロードする。

dev.intelrealsense.com

すでに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対応のリポジトリを見つけたのでトライ。

github.com

結論から言うとそのままでは以下の様なエラーが出て使えなかった...

(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

qiita.com

Typora備忘録

はじめて技術書展10に出店するに向けてTyporaというMarkdownのエディターを使って文章を書いている。 インストールも簡単で個人的にはすごく簡単に使いやすい。

typora.io

その際に参考にしたサイトについて備忘録として残す。

参考①

改ページの方法がわからず検索して見つけたサイト。

www.creativity-ape.com

改ページしたい所で下記のstyleを入力するとエディター上でも可視化できたままで 改ページの場所を挿入することができる。

<div style="page-break-after:always;color:lightgray" class="no-print">─────改ページ─────</div>

参考②

全体的にTyporaを使って電子書籍と紙での出店をまとめていたサイト。 紙は作るかどうかわからないけど流れ全体をまとめられていてとても参考になった。

bloggingfrom.tv

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

テスト結果

ベイマックス君を撮影対象にしてみた。十分使えそうな感じであったので、次は描画設定の所を好みな感じにいじれるようにしたい。

f:id:kobot30:20191022140859g:plain

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ファイルが必要だった

f:id:kobot30:20191020131122p:plain

参考: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.