Privacy Policy
Privacy Policy
hato built the ES過去問 エンベデッドシステムスペシャリスト試験 app as a Free app. This SERVICE is provided by hato at no cost and is intended for use as is.
This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at ES過去問 エンベデッドシステムスペシャリスト試験 unless otherwise defined in this Privacy Policy.
Information Collection and Use
For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way.
The app does use third-party services that may collect information used to identify you.
Link to the privacy policy of third-party service providers used by the app
- [Google Play Services](https://www.google.com/policies/privacy/)
Log Data
I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.
Cookies
Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.
This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.
Service Providers
I may employ third-party companies and individuals due to the following reasons:
- To facilitate our Service;
- To provide the Service on our behalf;
- To perform Service-related services; or
- To assist us in analyzing how our Service is used.
I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
Security
I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.
Links to Other Sites
This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.
Children’s Privacy
These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13 years of age. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do the necessary actions.
Changes to This Privacy Policy
I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.
This policy is effective as of 2023-04-05
Contact Us
If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at hato.deve@gmail.com.
This privacy policy page was created at [privacypolicytemplate.net](https://privacypolicytemplate.net) and modified/generated by [App Privacy Policy Generator](https://app-privacy-policy-generator.nisrulz.com/)
Raspberry Pi3 + Volumio2でタッチディスプレイが使えるようにしてみる
はじめに
外出もなかなか出来ないこのご時世で暇を持て余していたので、Raspberry Pi3にVolumio2をインストールして音楽用端末を作ってみました。
タッチ操作出来たら格好良さそうじゃん?って思ってタッチディスプレイもつけてみたのですが、設定で結構ハマったので記事に残しておきます。
出来上がった姿がこちら。
環境
- ハードウェア:Raspberry Pi3 Model B+
- ディストリビューション:Volumio2 バージョン2.806 (2020年8月現在)
- タッチディスプレイ:Kuman 5インチ (800x480) タッチディスプレイ
Volumio2のインストール
公式サイトからRaspberry Pi用のimgファイルをダウンロードしてきます。
https://volumio.org/get-started/
ダウンロードが終わったらSDカードにimgファイルを書き込みます。
Raspberry Pi Imagerを使うのが簡単でオススメです。
「CHOOSE OS」で「Use custom」を選ぶことで任意のimgファイルを選択できます。
Volumio2の初期設定
Raspberry Piの電源を入れ、初期設定を行います。
Wi-Fiのアクセスポイントを探すと「Volumio」という名前のアクセスポイントが見つかるのでそれに接続します。
接続したら、ブラウザで「http://volumio.local」と入力してVolumio2の画面を開きます。
あとは流れで設定をしていきますが、ここはいろんなページで説明されているので割愛。
タッチディスプレイのセットアップ
プラグインのインストール
ここからが本題。
まずはタッチディスプレイ用のプラグインをインストールします。
70%から結構時間がかかるのでとりあえず完了まで待ちましょう。
たまにインストールが70%で止まってしまう現象が発生することがありますが、その時は再起動してあげることで解決します。
(発生する原因はよく分からず...)
インストールが完了したら、プラグインをOnにすることで有効化できます。
ディスプレイにブラウザで開いている画面と同じ画面が映るようになります。
タッチ操作用の設定
タッチ情報がUSBで入力されるタイプのディスプレイでは恐らく問題ないですが、
今回使用しているKumanの5インチディスプレイなど、GPIOと接続するタイプのディスプレイだと、タッチ操作ができるように設定を行う必要があります。
この設定はSSHで接続して行う必要があるので、まずはSSH接続用の設定をします。
http://volumio.local/DEVにアクセスして、SSHのEnableをクリックするだけでOKです。
ターミナルでssh volumio@volumio.localと入力してRaspberry Piに接続します。
パスワードはデフォルトで"volumio"に設定されています。
ログインしたら /boot/userconfig.txt に以下の設定を追記します。
(/boot/config.txtでも良いのですが、カスタマイズした設定はuserconfig.txtに書いた方が分かりやすいです。)
ちなみにviやvimは入っていないので、nanoで編集することになります。
/boot/userconfig.txt
# 解像度の設定 hdmi_group=2 hdmi_mode=87 hdmi_cvt 800 480 60 6 0 0 0 # タッチ操作の設定 dtparam=spi=on dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900
※注意
製品付属のQuickStartには下記のコマンドで設定するように指示していますが、Volumioの場合は絶対に下記のコマンドで設定しないでください。
カーネルパニックを起こしてVolumioが死にます。
(もしやってしまった場合は大人しくVolumioのimgを再度書き込み直しましょう。)
sudo rm -rf LCD-show git clone https://github.com/goodtft/LCD-show.git chmod -R 755 LCD_show cd LCD-show/ sudo ./LCD5-show
VolumioではなくRaspberry Pi OSなどでタッチディスプレイを使用する場合は問題ないと思います。
上のコマンドでも/boot/config.txtに設定値を書き込んでいるだけなので、やっていることは同じです。
日本語フォントのインストール
現状だと文字化けを起こしているはずなので、日本語フォントをインストールします。
sudo apt-get install fonts-ipafont
ここまで設定すれば、あとは再起動することで、タッチディスプレイが使用できるようになります。
ちょっと小話
製品に付属しているQuickStartのinterfaceを見れば分かるのですが、GPIOと接続するタイプのディスプレイはSPI通信によってタッチ情報のやりとりをしているっぽいです。
タッチ操作用の設定にdtparam=spi=onなどがあるのはこのためでしょうねという話。
Raspberry PiでRailsが動かなかったときに試すこと
はじめに
論文やら新生活やらで忙しかったので久々の更新です。
今回は完全に自分用の備忘録なので、いろいろガバガバです。すんません。
環境
- Raspberry Pi 3 Model B
- Raspbian Stretch
- Ruby on Rails 5.2.2.1
とりあえずやっておけ
Raspberry PiでRealSenseが動かないときに確かめること
はじめに
前回の記事はこちら
Raspberry PiでIntel RealSense Depth Cameraを使うための環境構築 - 右向き矢印のメモ帳
前回の記事でラズパイでRealSenseを動かすための環境構築の手順を書きました。
しかし、SDKのビルドが上手くいっているはずなのにRealSenseが動かないという事態が発生したので、その際に確認したことや対処方法をここで紹介します。
RealSenseを動かそうとしたところ...
SDKのビルドが終了し、いざRealSense Viewerを起動!...とした際のこと。
RealSense Viewerにこのようなエラーが
rs_error was raised when calling rs2_create_device(info_list:0xa43dd0, index=0): Opcodes do not match! Sent 16 but received -1!
嘘やん...
とりあえず確認したこと
とまあ少し絶望したのちに原因をいろいろ調査してみました。
そもそもUSBデバイスとして認識されているか?
RealSenseが認識されていなかったらそりゃ起動するはずもないので下のコマンドで認識されているUSBデバイスの確認
$ lsusb
Intel CorpとかいうやつがあればそれがRealSenseのはずです。
もし表示されていなければ何度か抜き差しして確認してみましょう。
udevルールは変更されているか?
udevルールが変更されていないと認識されない可能性があるみたいなので、とあえずそこもチェック。
librealsenseのルートディレクトリに移動して、前回の記事でも紹介したudevルール変更のコマンドをもう一度叩いてみる。
$ sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ $ sudo udevadm control --reload-rules && udevadm trigger
真の原因は電力不足?
とまあ、とりあえず試してみたんですが状況は変わりませんでした。
半ば諦めつつもネットをいろいろ漁っていると、Githubに同じような症状を訴えている人がいました。
これを読み進めていくと、どうやらラズパイの電力不足が原因っぽさそうだと判明。
というわけで電気屋に駆け込んで、外部電源供給のUSBハブを早速購入。
ハブにRealSenseを接続すると...
ちゃんとデバイスが認識されました!!
しかしこれでは終わらず
デバイスも認識されたしこれで完璧でしょ!って思いながらカメラをonにすると...
そこには大量のIncomplete video frame detected!のエラーと共に、No Frame Receivedの文字が...
ファームウェアの更新もしてついに起動!
これの原因はなんとなく察しがついていたので、解決は早かったです。
RealSenseのUSB2.0対応は試験的な段階みたいなのをどこかで見たので、ファームウェアが古いのかもと思って更新。
ここの記事を参考にしてファームウェアを最新の5.10.3にアップデートして再度チャレンジ。
これでやっと正常に動きました...
最後に
この解決に丸一日費やしてしまいました...
今回試したことをまとめると、
この4点になります。もしラズパイでRealSenseを使おうとしている人は気を付けてください。
余談ですが、この作業が終わった際にこんな記事を発見。
USB2.0の公式サポートって、つい2週間ほど前のことだったんか...
Raspberry PiでIntel RealSense Depth Cameraを使うための環境構築
はじめに
これまでWindowsでRealSenseを弄ってきたわけですが、ラズパイで使ってみたくなったのでとりあえず環境構築をしてみました。その手順を備忘録として記事にしておきます。
環境
- Raspberry Pi 3 Model B
- Ubuntu MATE 16.04
- Intel RealSense Depth Camera D435
概要
今回の環境構築は、基本的に公式のドキュメントを参考にして進めていきます。
Raspberry Piで使うためのインストール手順
github.com
Linuxのインストール手順
github.com
まずはRaspberry PiにOSをインストール
OSは公式に従ってUbuntu MATEを使用します。インストールの手順は他にも記事がたくさんあるので、ここでは割愛します。
SDKをソースからビルド
ラズパイが起動したら、ターミナルを開いて早速SDKをインストールしていきます。
ビルドをする前に、RealSenseはラズパイから取り外しておきましょう。
とりあえずパッケージの更新
$ sudo apt-get update $ sudo apt-get upgrade
ビルドに必要なパッケージをインストール
$ sudo apt-get install git libssl-dev libusb-1.0.0-dev pkg-config libgtk-3-dev
ディストリビューション固有のパッケージをインストール
$ sudo apt-get install libglfw3-dev
これは16.04の場合ですので、14とかの場合は公式ページを参考にして自分の環境に合ったものをインストールしてください。
cmakeのインストール
RealSense SDKのインストールをするためには3.8以上でないといけないですが、apt-getには最新のパッケージがないため、wgetでバイナリを落とします。
$ wget https://cmake.org/files/v3.12/cmake-3.12.2.tar.gz $ tar -zxvf cmake-3.12.2.tar.gz
cmakeを解凍したディレクトリに移動し、cmakeをビルドし、パスを通す
$ ./bootstrap && make && sudo make install $ export PATH="/usr/local/bin:$PATH"
cmakeのバージョンを確認
$ cmake --version
バージョンが表示されればインストール完了
Githubからlibrealsenseをクローンする
$ git clone https://github.com/IntelRealSense/librealsense.git
librealsenseのディレクトリに移動して、udevのルールを変更する
$ sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ $ sudo udevadm control --reload-rules && udevadm trigger
スワップ領域の作成、適用
ここまで来たら早速ビルド...といきたいところなのですが、Raspberry Piだとメモリが足りずにビルドが失敗することがあります。そこで、スワップ領域を作成します。
2GBのスワップ領域を作成
$ sudo dd if=/dev/zero of=/swapfile bs=2M count=1024
パーミッションの変更
$ sudo chmod 600 /swapfile
スワップファイルの作成、有効化
$ sudo mkswap /swapfile $ sudo swapon /swapfile
有効化されているかを確認
$ free
有効化の設定は、シャットダウンすると無効になってしまうので気を付けてください。
cmakeの実行
librealsenseのルートディレクトリに移動し、buildディレクトリを作成してcmakeを実行
$ mkdir build && cd build $ cmake .. -DBUILD_EXAMPLES=true -DCMAKE_BUILD_TYPE=Release
SDKのビルド
$ make -j1 $ sudo make install
早速起動してみる
これでSDKのビルドは終了です!
ターミナルでrealsense-viewerと入力して実行すると、viewerが起動します。
RealSenseを接続して、動いていることを確認できます。
ターミナルに警告が出てますが動きます。
ただ、若干の処理力不足が気になるところ...
最後に
この記事ではRealSenseをRaspberry Pi上で動かすための環境構築の手順をまとめました。
しかし、自分がやった際にはこれとは別のところでいろいろハマったので、次の記事で紹介したいと思います。
RealSense SDK2.0とOpenCVを組み合わせて使う
はじめに
RealSense SDK2.0とOpenCVを組み合わせて使いたいって機会はとても多いと思います。
少なくとも僕はそうなりました。
そこで、今回はRealSense Depth Cameraでキャプチャした画像をOpenCVで取り扱う簡単なサンプルを作りたいと思います。
設定方法
まずは、RealSense SDKとOpenCVの両ライブラリをプロジェクトに取り込みます。
ここはVisual Studioで外部ライブラリを取り込む際の手順と変わりません。
- ソリューションエクスプローラーにあるソリューションファイルを右クリック→プロパティを開く。
- すべての構成を選択したうえで、構成プロパティ→C/C++→全般にある、追加のインクルードディレクトリという項目に、両ライブラリのincludeフォルダまでのフルパスを追加。opencv/build/include と Intel RealSense SDK 2.0/includeといった感じです。追加出来たら適用を押します。
- 次に、構成プロパティ→リンカー→全般にある、追加のライブラリディレクトリという項目に、両ライブラリのlibファイルがあるフォルダまでのフルパスを追加。opencv/build/x64/vc14/lib と Intel RealSense SDK 2.0/lib/x64にあるはずなので、そこまでのパスを追加します。追加出来たら適用を押しましょう。
- 次に、構成をDebugに変更し、構成プロパティ→リンカー→入力にある、追加の依存ファイルという項目に、両ライブラリのlibファイルの名前を追加します。opencv_world331d.libとrealsense2.libを追加して適用します。
コード
結論から言うと、Githubのreadameに全てが載っています。こっちも参考にしてみてください。
今回はリンク先のコードを参考にして、RealSenseでキャプチャした映像をOpenCVを利用して表示するコードを書いてみました。
#include <librealsense2/rs.hpp> #include <opencv2/opencv.hpp> using namespace std; int main() { //デバイスを抽象化するパイプラインを構築 rs2::pipeline pipe; //パイプラインの設定 rs2::config cfg; //明示的にストリームを有効化する //640×480のカラーストリーム画像を、BGR8フォーマット、30fpsで取得するように設定 cfg.enable_stream(RS2_STREAM_COLOR, 640, 480, RS2_FORMAT_BGR8, 30); //設定を適用してパイプラインストリーミングを開始 pipe.start(cfg); while (true) { //ストリームがフレームセットを取得するまで待機 rs2::frameset frames = pipe.wait_for_frames(); //フレームセットからカラーフレームを取得 rs2::frame color = frames.get_color_frame(); //カラーフレームから、OpenCVのMatを作成 cv::Mat frame(cv::Size(640, 480), CV_8UC3, (void*)color.get_data(), cv::Mat::AUTO_STEP); //画像を表示 cv::imshow("window", frame); //qを押すと終了 int key = cv::waitKey(1); if (key == 113) { break; } } //全てのウィンドウを閉じる cv::destroyAllWindows(); return 0; }
このコードを実行すると、RealSenseのRGBカメラで撮影している映像がリアルタイムで画面に表示されるはずです。
Intel RealSense Depth Camera D435を使ってみた
はじめに
プライベートの方でIntel RealSense Depth Camera D435を使う機会が訪れたんですが、ネットで調べても全然記事が出てこない...
特にSDKが2.0にバージョンアップされてからの記事がとても少ないと感じたので、 少しでもRealSenseに関しての記事を世の中に増やすためにも、得た知見をつらつらと書き連ねようと思った次第です。
まずは動かしてみる
やっぱりまずは動かしてみたくなりますよね。
Windows環境の場合、RealSense SDKをgithubのページからダウンロードして手順に沿ってインストールするだけでOKです。
MacやLinuxの場合だとちょっと変わってきますが、どのOSであっても、ここの公式ページの手順に沿ってやれば問題ないと思います。 僕はWindowsで開発するのが一番都合が良さそうに思えたのでWindowsにしました。ここからの説明もWindowsを使っている前提で進めるのでご了承くださいm(__)m
インストールが完了したら、デスクトップにInter RealSense Viewerのショートカットが作られていると思うので、そこから下のようなアプリケーションが起動します。
RGBの情報から赤外線、深度となんでも取れててすごい...
サンプルプログラムも動かしてみる
カメラが動いてる姿を見て感動した次は、開発してみたくなりますよね。
というわけでまずは付属のサンプルプログラムを動かしたいと思います。 ちなみに環境はこんな感じです。
- Visual Studio 2017
- Visual C++
SDKをインストールした際に、Viewerと同時にVisual Studioのソリューションファイルもデスクトップに出来ていると思うのでそれを動かします。 ライブラリの設定やらは済んでいるので、後は実行を押すだけでhello worldのプロジェクトが動きます。
カメラの中心に映った物体との距離を測定するサンプルのようです。 コードもすっきりとしてていい感じですね。
このhello worldも含めていくつかサンプルが用意されています。 英語ですが、READMEが付属しているので、それ読めば大体どんな感じのサンプルかってのは分かると思います。多分。
おわりに
今回はとりあえずサンプルプログラムを実行してみるところまでやってみました。
次は実際に自分でコードを組んでみたいと思います。