ttoのblog

メモ

Ubuntu22.04 で OpenCV をビルド & インストール

Ubuntu マシンで OpenCV プログラミングしたい

  • X230 に Ubuntu22.04
  • OpenCV で遊びたい
  • 初めて UbuntuOpenCV をインストール → ハマったが何とか解決できた
  • 手順
    1. OpenCV をビルド & インストール (1 回目)
    2. cpp サンプルを実行、OpenCV からウィンドウが表示されず
    3. libgtk2.0-dev をインストール
    4. OpenCV をビルド & インストール (2 回目)
    5. cpp サンプルを実行、読み込んだ画像ファイルが表示された

1. OpenCV をビルド & インストール (1 回目)

Ubuntu OpenCV」など検索すると色んな記事が出てくるけど、公式の Installation in Linux を参考に OpenCV4.6.0 を g++ でビルド & インストールした

  1. 必要そうなパッケージをインストール
    •  $ sudo apt update
       $ sudo apt upgrade
       $ sudo apt install -y cmake g++ wget unzip
      
  2. ソースコードを DL & 解凍
    • 今回は 4.6.0 の Sources を DL
    • wget は使わずブラウザを使ってここ から 4.6.0 の Sources (.zip) を DL
    • 解凍
      • $ unzip opencv-4.6.0.zip
        
  3. ビルド用のディレクトリを作成して移動
    • $ mkdir -p build & cd build
      
  4. cmake 用の設定 (configure)
    •  $ cmake ../opencv-4.6.0
      
  5. ビルド
    • $ cmake --build ./
      
  6. チェック
    • build/bin と build/lib の中身を確認 → bin/opencv と lib/libopencv- がたくさんできてれば OK
      •  $ ls bin
         $ ls lib
        
    • OpenCVConfig*.cmake や OpenCVModules.cmake の存在を確認
      •  $ ls OpenCVConfig*.cmake
         $ ls OpenCVModules.cmake
        
  7. インストール
    • $ sudo make install
      

2. cpp サンプルを実行、OpenCV からウィンドウが表示されず

公式の Using OpenCV with gcc and Cmake を参考にサンプルコードをビルド & 実行するも、OpenCV からウィンドウ表示ができなかった

サンプルコード

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char** argv){
    if (argc != 2) {
        printf("usage : DisplayImage.out <Image_Path>\n");
        return -1;
    }

    Mat image;
    image = imread(argv[1], 1);
    if (!image.data) {
        printf("No image data\n");
        return -1;
    }

    namedWindow("Display Image", WINDOW_AUTOSIZE);
    imshow("Display Image", image);

    waitKey(0);

    return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )

サンプルのビルド

$ cmake ./
$ make

実行エラー

なにやら libgtk2.0-dev が足りないらしい

~/proj/src/opencv_test$ ./DisplayImage panda.jpg
terminate called after throwing an instance of 'cv::Exception'
  what():  OpenCV(4.6.0) ~/proj/opencv-4.6.0/modules/highgui/src/window.cpp:1250: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Cocoa support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function 'cvNamedWindow'

中止 (コアダンプ)

3. libgtk2.0-dev をインストール

$ sudo apt install libgtk2.0-dev

4. OpenCV をビルド & インストール (2 回目)

手順 1 と同様

5. cpp サンプルを実行、読み込んだ画像ファイルが表示された

手順 2 と同様

パーツ紹介#01 Tektro パワーハンガー

今後、メモがてら大好きなパーツについての紹介記事も書いていこうと思います。

Tektro Power Hanger

f:id:tto0816:20210924155024j:plain

Tektro から出ていたパワーハンガーです。カンチブレーキでのアウターケーブル受け+チドリの役割を果たします。 既に廃盤だそうで、もう見つけたら取り敢えず買うようにしています、安いし。

ネット検索をすると以下のように複数の記事が出てきます。

使い途

カンチブレーキの効きをもっと強くしたい!」 とか 「ステム側にブレーキアウター受けが無い、付けられない」 場合に使います。 自分は主に後者のモチベーションで使用することが複数回ありました。

使用することになった要因として大きなのは Chris King のスレッド用ヘッドパーツから 2Nut 版が無くなり GripNut になってしまったことがあります。 2Nut じゃないとスペーサーはおろかブレーキアウター受け(↓こういうの)

を付ける場所も無いんですよね…

このような場合、このパワーハンガーを使う以外にも選択肢はあります。

  • アウター受けが付いているステムを使う
  • ステム部以外にアウター受けを用意する
    • フロント用
    • リア用

「でも何だか見た目が好みじゃない」、「ケーブルの取り回しをシンプルにしたい」そんな時がこのパワーハンガーの出番です。

好きな理由

  1. カラフルで可愛いです、90's MTB っぽいアルマイトカラー、シビれます!
  2. 本当にブレーキの効きが良くなります、ガツンと効いて止まれるようになるので、通常のアウター受け+チドリから変更した場合には注意です。
  3. 未だに納得できるようなできないようなメカニズムで動作します、なんでこれで効きが良くなるのか全然分かりません、最高!

f:id:tto0816:20210925015159g:plain

↑ ブレーキブースターと一体型になるようなパワーハンガーも持っています。 (ブースター単体のつもりで買ったらパワーハンガーも付いてきて驚いた)

問題点

このパワーハンガーを使う場合、正方向に固定すると、必ず左側にブレーキケーブルのタイコがくることになります。 実はこの方向にタイコを使えないブレーキがあります。大大好きな Paul Component のカンチブレーキです。

見ての通り Paul のカンチブレーキは右がタイコ用なんですねぇ… なのでパワーハンガーを裏表逆に使うことになり、そうするとケーブル固定ボルトへのアクセスが難しくなります。 これが問題点ですが、背に腹は代えられない、頑張りと工夫で固定します。

補足

どうやらサンツアーからも同じような製品が出ていたようですね。(サンツアーのほうがかっこいいな・・・)

BBが外れないので工具をハイトルク化して外した

要約

  • 中古で買ったフレームに組み付けられている BB がどうしても外せない
  • 工具の柄の部分を延長してハイトルク化し、どうにかこうにか外すことができた

中古フレームの BB 部

現行じゃないフレームが欲しい時は、ほとんどの場合、中古市場で探すしかないです。 そして中古でフレームを入手すると、何かしらのパーツが組み付けられたままということが往々にしてあります。

もちろん入手前に

  • 固着が無いか
  • クラックが無いか

を確認するのですが、最も確認してもらい難いのがボトムブラケット、BB です。

取り外しにシートポストなどと違って六角レンチ以外の専用工具が必要なため、確認依頼をしても「ご自身で外して確認をお願いします」と返答されてしまうことが度々起こります。 それでもどうしても欲しいフレームだとエイヤッと思い切って買うことになるのですが、組付け時にこのBB部と向き合うことになります

中古購入したフレームから BB が外れない

最近購入したフレームには SHIMANO の Hollowtech II (ホローテック II) のクランク、BBが取り付けられたまま出品されていて、「この状態から "BB 開けて" って言い難いよな…」ということでそのまま購入。 スクエアテーパーなクランクを使いたい自分は BB 取り外しと向き合うことになりました。

保有している工具 TL-FC32 を使って外していきました。

左クランクのボルトを緩めて外し、露出したクランクシャフトをプラスチックハンマーでコンコンと叩き出してクランクを外しました。 その後に BB を外していくのですが、どうしても BB 左側が外れない…

この TL-FC32、柄の部分も金属板になっており、力をかけると手が痛いです。 また、フック部に間隔が開いていることもあり、滑って BB 側の取っ掛かりをナメてしまいそうです。(実際、少しナメた)

f:id:tto0816:20210906134827p:plain

1h ほど悪戦苦闘しましたが、諦めてショップに持っていこうと考えていました。

ショップの人が硬い BB を外す方法

諦めつつ、寝る前に「ホローテック BB 外れない」で検索していると以下の動画を見つけました。


www.youtube.com

これは

  • BB 外し工具の柄に金属パイプを取り付けてハイトルク化することで硬い BB を外す

という内容になっており、まさに自分の状況と同じ場合の対処法でした。 これを自分でもやってみてからショップに持っていこうと決断しつつ、就寝。

工具のハイトルク化 → BB 外れた

このためだけに金属パイプを購入して運ぶのは、フレームをショップに持ち込むのと同じくらい労力がかかります。

さて何か代用品は無いかな~と考えていると D.I.Y で余った L 字アングルが目に付きました。

幸い TL-FC32 の柄は先程も書いたように金属板になっており、更に穴が開いています。 この穴に L 字アングルをボルト固定してみると、柄を延長できた上に、力をかける部分が L 字の平面になり、思いっきり力がかけられそうです。

f:id:tto0816:20210906134216j:plain

ナメないようにしっかりはめ込んで L 字アングルの面となる部分に体重をかける、すると「パキン!」とちょっと嫌な音がして BB が回りました。やった。

取れた BB を見てみるとネジの溝に茶色いものが発生していました。 フレームはアルミで BB もアルミだと思うんですが、これは錆なのでしょうか?

f:id:tto0816:20210904165715j:plain

ともあれ、工具の柄を L 字アングルで延長することでハイトルク化し、硬く固定されている BB を外すことができました。やれやれ。

自転車について

趣味としている自転車の話です。

自転車の整備・組付けをある程度自分で行っていますが、う~んどうだろうな~と迷いながらやっている素人です。

このブログは当初プライベートで触るコンピューティング関連の技術メモ用に作ったのですが公開できるネタが無くなったまま死蔵していました。

今後は自転車関連の保有工具、ケミカル、パーツなどをまとめ、紹介していく予定です。

乗る / 組み付ける自転車

  • 基本街乗り用
  • トラックバイク
    • 所謂ピストと呼ばれるフレームで、もちろん1x1
  • 26インチのリジッドMTB
    • 1x8~11 か 1x1
      • 街しか乗らないので、フロントシングルで十分、色々らくちん
    • シフトはフリクションタイプのレバーでやる
      • 基本Dia-compeのWレバーを使うつもり (何速か気にしなくて済むし、調整が楽)
      • これとか
      • これとか

使わないもの

今のところですが、以下には手を出さないだろうな~と思っています。

  • ディスクブレーキ
    • 1x1 の時にディスクブレーキの良さは体感したし、また乗りたい気持ちはあるが、好きなフレームが無い
  • インデックスシフト
    • 調整が面倒くさそう → 簡単だった
  • ドロップハンドル
    • なんとなく (完全に好み)
    • バーテープ、ハンドル交換が面倒くさそう
  • サスペンションフレーム、フォーク
    • 街乗りでは不要でしょう

やらないこと

自分でやるのは怖いからプロに任せたいです。

  • ヘッドパーツ圧入 → できるようになった
  • タッピング / フェイシング
  • ホイール組み

遍歴

  • 2010~2014
    • ピストブーム終盤
    • ピスト乗りに憧れたんだけど、怖くて無名のクロモリクロスバイクから入門
    • その後、中古完成車を何台か乗り継いだ後、中古フレームを買って組み付けるようになった
  • 2017~
    • 26インチホイールのハイグレードが中古市場で安いことに気付いて乗りたくなり、古いMTBに興味を持つようになった
    • 中古の26インチsurlyから始めたフレーム重過ぎ
      • 1x1, Long Haul Trucker の2種類に乗ってた
    • 90年代のミドル、ハイエンドのクロモリ、アルミMTBは比較的軽いし安いので、中古を掘って組み付けて乗るようになった
      • 2020には古いMTBも高騰してきてしまって大変…

自転車用の工具、ケミカルのリスト

<2021.08 更新>

増えてきて把握しきれなくなったのでまとめておきます。 もっとオススメ品があれば是非教えていただけると嬉しいです。

  • 工具
  • ケミカル
    • グリス
    • チェーンルブ
    • パーツクリーナー
    • ポリッシュコンパウンド
    • 錆落とし

この記事のような前提の者の持っている工具、ケミカルです。

工具

汎用

GIZA PRODUCTS アレンキーセット

  • 10年以上前にクロスバイクを買った頃に買ったものを今 (2021.08) も使っている
  • カラーでサイズが分かりやすくて良い
  • たまにナメそうになるので、もっと精度の良いのに買い替えたい

ロブテックス モンキレンチ 250mm

  • モンキといえばロブスターでしょという刷り込みを学生時代に受けたため、これを使っている

BB / クランク / ペダル

PWT ハイトルク カートリッジBBツール スクリューフィックス BB-FIXG

  • スクエアテーパーのBBの取り付け、取り外しに利用
  • 固定用ボルトが付いていて、このツール自体をBBに固定できるので、安心してトルクをかけることができる
  • 中古フレームからBBを外すためには必須 (毎回ドキドキする)
  • これで取れなきゃ諦めてショップに持っていくことを推奨

グランジ BB ツール

  • スクエアテーパーのBBの取り付け、取り外しに利用
  • 取り外し時 : 上のPWTのハイトルクツールで緩めたら、これに付け替えて手で回すと速い
  • 取り付け時 : これで手回しで入れ込んで、仕上げに上のPWTのハイトルクツールで締めあげてる

SHIMANO コッタレスクランク専用工具 TL-FC10

  • スクエアテーパーのクランクを外すために必要

SHIMANO Hollowtech II ボトムブラケットアダプター工具 TL-FC32

  • トラックバイク時代に知らない内に買ってた
  • 中古 1x1 買って BB 外そうとした時に持っていることに気付いた

PWT ハイトルク ペダルレンチ PW01S-163

https://www.amazon.co.jp/gp/product/B00SGHF716/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1

  • ペダル外れない時にはコレ、トルクかけやすい
  • 廃盤になっちゃったのかな

PRO チェーンリングナットレンチ

  • チェーンリング固定用ボルトの締め付けには必須
  • あとあのボルトは絶対スチール製が良い(アルミ製を何度も捩じ切ってしまったことがある)

SHIMANO フロントチェーンホイール/BB専用工具 TL-UN96-A

  • ISIS BB だけじゃなくて XTR 950 系のスパイダーロックリングに使えるらしい
  • Middleburn クランクのスパイダーのロックリング外し or 固定に利用したが、ちょっとキツく、Middleburn 側のロックリングがすこ~し削れてしまった
    • 用途が合っているかは不明だが、どこかで「コレを使え」って読んだんだよなあ…

スプロケット

BIKE HAND YC-501A/YC-126-2A SET シマノスプロケット取り付け/取り外しセット

  • SHIMANO スプロケットの取り付け、取り外しに必要
  • ハンドルが短&薄でトルクをかけにくい、オススメできない
  • 中古で買ったホイールからスプロケットを外そうとした所、YC-501側の固定用チェーンが壊れてしまった
  • 現在はYC-126のみを使ってスプロケットの取り付けだけできる状態

SHIMANO スプロケット戻し工具 TL-SR22

  • 厚歯用のスプロケットの着脱に使う工具(シングルトラックバイク用)

ワイヤ

GIZA PRODUCTS ワイヤーカッター TOL16100

  • 10年以上前にクロスバイクを買った時に購入
  • もっとよく切れるものがあるかもだけど、今のところ、問題無し

ケミカル

SHIMANO プレミアムグリス チューブ入り 100g

  • 性能は折り紙付き
  • g 当たり価格はチューブ入りの方が安い
  • 手を汚さないで~とは言うが、結局指で塗り広げるため、あまり意味無し

SHIMANO プレミアムグリス 50g

  • 綿棒、ヘラ、指でごそっと取れるので便利

東洋化学商会 ブレーキ&パーツクリーナー ジャンボ 840ml TAC-200

  • 量、値段、性能、残り香の少なさ、共に良い
  • 某in-nanoの方が昔ブログでオススメしてたので使い始めた

FINISH LINE セラミック ウエット ルーブ

  • 10年以上前にクロスバイクを買った時に購入した分がまだ残ってて使ってる (2021.08 現在)

ワコーズ メタルコンパウンド

  • 無塗装アルミフレームや塗装剥離したクランクのポリッシュに使用
  • これも全然減らないので購入から 10 年くらい経ってる

ソフト99 サビ落としセット 09027

  • 錆落とし+錆防止油のセット
  • 中古フレームに付いてくるパーツ、ネジ、ボルトは結構錆びている事が多いけど、簡単な錆なら一発で取れるので重宝している

ArduinoとProcessingについて

前回は「センサーで得た値をリアルタイム表示したい」といった所で終わっていました。

これにはいくつか実現方法があって、パッと思いつくのが、

  1. Arduino側のセンサーで得た値をArduinoに付けたディスプレイで表示させる
  2. Arduino側のセンサーで得た値をPC側で表示させる

なのですが、

  • 単体で閉じるよりもPCと連携させた方が良い
  • Arduino側に付けられるディスプレイでは荒い画素数でしか表示できない

こともあり、案2にします。

ここで、PC側ではProcessingというプログラミング言語を使うことにします。

Processingとは

公式HPとWikipediaの情報をまとめると、

とあります。

このProcessingはデザイン・アート側の方が良く使っており、

美大のメディアアート系の授業でもよく使われているみたいです。

自分の解釈としては、

  • 簡単なプログラミングでビジュアルなプログラムが作れます
  • 2Dどころか3Dのプログラムも作れます
    • OpenGLが組み込まれてて利用できます
      • OpenGL:たぶんハードウェアを用いた高速描画を使えるライブラリ
  • 作ってすぐ動くのでプロトタイピングに最適
  • もちろん作り込むとすっごいのがつくれます
  • したいことに応じたライブラリがあります

ぐらいですかね。

検索すると「もうArduinoとProcessingは相性バッチリ」というか「2つで1つ」みたいなモンかなと。

次回からは、Processingについて少しずつまとめていきます。

ちなみにこの辺りの本で軽く勉強しました。

Processingをはじめよう (Make: PROJECTS)

Processingをはじめよう (Make: PROJECTS)

ジェネラティブ・アート -Processingによる実践ガイド

ジェネラティブ・アート -Processingによる実践ガイド

Making Things See ―KinectとProcessingではじめる3Dプログラミング (Make: PROJECTS)

Making Things See ―KinectとProcessingではじめる3Dプログラミング (Make: PROJECTS)

Built with Processing ?デザイン/アートのためのプログラミング入門

Built with Processing ?デザイン/アートのためのプログラミング入門

再開します

随分とブログ更新から遠ざかっていましたが、

少し余裕ができたので、再開します。

更新していなかった1年間でも技術的なモノには少しずつ触れていて、

などを使って、細々と作ってみたモノがあるので、少しずつまとめていこうと思います。

またmarkdown記法でメモを書くようになったので、より見やすくまとめていければなと思います。