gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

raspberrypiでPCA9685でサーボを動かす方法と躓いて解消したメモ

2024-03-26 22:16:13 | 日記

タイトル通りです。

 

現在仮想環境でpipを使ってPCA9685をインストールして、サーボを動かす流れまでを行います。

今回はいくつかのサイトのリンク張るだけみたいになります。

 

まずこのサイトを参考に進めていきます。

https://zenn.dev/naoya_oshiro/articles/fa95bd81e3ac8a

(ちなみに仮想環境でinstallする場合はsudo不要です)

 

進めていくと、

pwm = Adafruit_PCA9685.PCA9685()

このコードでエラーが出ますので

http://kazuki-room.com/error_when_combining_jetson_nano_and_pca9685/

このサイトに則ってAdafruit_GPIOフォルダ内のI2C.pyを修正します。

そしたらできました!

 

 

最後に話がそれますが、このサイトいいです。すごい情報量。https://note.com/kiyo_ai_note/n/nfbfb83df256f

 


raspberrypiでusb webカメラからopencvで写真を取得する方法

2024-03-25 19:31:33 | 日記

こんにちは

raspberrypi で usb webカメラから写真を取得するのにいろいろてこづったので備忘録を書きます。

raspberrypi 4です。

 

https://qiita.com/suo-takefumi/items/355479f46bf3957ffd8f

序盤は上記記事のように

lsusbコマンドでWebカメラをUSB接続したことを認識できるか確認して、

fswebcam image.jpg

コマンドで写真取得まではすんなりいきました。

 

次にsudo apt-getからopencvをインストールして、

cc = cv2.VideoCapture(0)

を実行するとエラー

WARN:0@16.618] global ./modules/videoio/src/cap_gstreamer.cpp (1405) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

こうなります。

どうやらopencvを依存関係を含めてインストールしないといけないようです。

 

ここまでは他のブログでも生じていたので、ビルドに必要な依存関係をインストールしようと以下のコードを入れると再度エラー。少し嫌になってきます。

動かなかったコード: sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev

 

最終的にバージョンの変更などがあり、私の環境では以下のコードで依存関係をインストールできました。

sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev python3-dev python3-numpy libtbb-dev libdc1394-dev

次にopencvをインストールするのですが、raspberrypiの環境ではサードパーティ(pip)でのインストールができなかったので、
仮想環境でpipを使用する必要がありました。
python3 -m venv myenv
source myenv/bin/activate
pip install opencv-python
 
これで
cc = cv2.VideoCapture(0)
が動くようになりました。
 
ちなみに仮想環境のactivateは
source myenv/bin/activate
deactivateは
deactivate
で出来ました。
 
---蛇足---
arucoマーカー認識というopen cvでのマーカー認識機能を使いたかったのでopencv_contribをインストールしました。
まず、opencvのバージョンを確認します。
import cv2
cv2.__version__
>>4.9.0
従って、
pip3 install opencv-contrib-python==4.9.0
でインストールを試みます。
すると
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python==4.9.0 (from versions: 3.4.11.45, 3.4.13.47, 3.4.14.51, 3.4.15.55, 3.4.16.59, 3.4.17.61, 3.4.17.63, 3.4.18.65, 4.4.0.46, 4.5.1.48, 4.5.2.52, 4.5.3.56, 4.5.4.58, 4.5.4.60, 4.5.5.62, 4.5.5.64, 4.6.0.66, 4.7.0.68, 4.7.0.72, 4.8.0.74, 4.8.0.76, 4.8.1.78, 4.9.0.80)
ERROR: No matching distribution found for opencv-contrib-python==4.9.0
というエラーが返ってきます。
どうやら、4.9.0.80としないといけないみたいなので
pip3 install opencv-contrib-python==4.9.0.80でインストールできます。