ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

20.Programming

C++ モジュール化 パイプライン

リアルタイムに画像処理、AI処理をしてみたんだけど、CPUが100%に張り付いちゃってカメラのフレームレートに追いつかなくなってしまったわ ふ...お子ちゃまね ファッ!? GoogleのMediapipeはタスクごとに分割(モジュール化)してスレッドプールに格納している…

AI・ロボットにネットワーク上から「やれぇ!」という処理方法について

https://piapro.jp/t/_Pft AI・ロボットに対してネットワーク上から「やれぇ!」というコマンドを送信して、そのコマンドに応じて処理を選択していくという流れについて 「これやれぇ!」が値型であれば、 switch cmd: case これやれぇ!: //これやる break; c…

ネットワーク上でデータを送受信する規格について

ネットワーク上でデータを送受信する規格について Web業界界隈やIoTを紹介する書籍ではJSONが主流だけど、 それでは画像データやAIの推論データをBase64というテキスト形式に一旦 変換する必要が出てくる。 Open CV AI KitはMessagePackを採用してる。 その…

拡張装備(プラグイン) 夢幻召喚(インストール)!!! あれ?C++のプライグイン実装ってめんどくさい

『拡張装備(プラグイン) 夢幻召喚(インストール)!!!』 ...あれ?なんかエラーになってるんですけど イリヤさん mainの実装(詠唱)を忘れていますよ。Pluginの型を用意して、どう使うかちゃんと唱えてください うん、わかった 「──告げる! 汝の身は我に! 汝…

日本人にありがちなメソッド名の宣言

みーちゃん ん? メソッド名なんだけどPokemonGet()って何よ? ポケモンゲットだぜ!って意味だよ? ちがーう!これじゃポケモンが何かをゲットすることになるじゃん!! "get.*pokemon"でgrepしても、検索に引っかからなかくて処理を見逃すとこだったよ! …

プライベートメンバ変数はPrivate Class として定義すべき? [C/C++]

プログラミング歴10年以上の先輩が上のような実装をしたんだけどさ... キャメルケースに大文字を使ってるのが違和感あるんだよね 後、私はメソッドに動詞を書くのは必須だと思うのよ Get、Set、Find、Clear、Cancel...etc。 つまりこんな感じ まぁこれは些細…

大規模ソフトウェアを描くにはCoreをしっかり

なぜこんなことに(継ぎ接ぎ)なってしまったのか・・・。 それはあなたの技術力が足りないからでは? ・・・しょうがないでしょ!学校で習う範囲がここまでだもの!! 自習・共習・公習...まずは自習であります ムカ...まぁいいわ。今、私が作り上げることがで…

CMakeがGenerateするファイル CMakeと属性構文の合わせ技

ignition gazeboのソースを見るといくつかのファイル(ほぼ全て?)に #include "ignition/gazebo/Export.hh" というようにExport.hhがインクルードされている。 このExport.hhというファイルはビルド前には存在しない。 Export.hh.inという形で存在している(.…

イベントをキューにプッシュ ~EventQueue~

一つのイベントに対してCPUが即時実行できればいいけどさ 同時に複数のイベントが起こったらどうすんの? そういう時はイベントをキューにプッシュするといいよ。 ふーん。具体的にどんなクラスを使えばいいの? std::queueクラスを宣言して、std::condition…

C++ 結果を受け渡しするパラメータ

次の関数を見て欲しい。 以下のプログラムはC言語で書かれた 画像の中のオブジェクトをサーチし、得られた位置の結果を格納するプログラムだ。 typedef struct _SearchParameter { IMAGEHANDLE img; POINT pt1; int *result; } SearchParameter void Search(…

C++コード読解

Ignition Gazeboに以下のようなコードがある。 void Model::SetWorldPoseCmd(EntityComponentManager &_ecm, const math::Pose3d &_pose) { auto poseCmdComp = _ecm.Component<components::WorldPoseCmd>( this->dataPtr->id); if (!poseCmdComp) { _ecm.CreateComponent(this->dataPt</components::worldposecmd>…

apt installしたヘッダとライブラリを使う

$ sudo apt install hoge このコマンドを使うとどこかにヘッダとライブラリがインストールされます。 Makefile作成する場合はヘッダとライブラリを探し出しパスを設定する必要があります。 INCDIR = /usr/local/inluce/ LIB = -L/usr/local/lib cmakeを作成…

画像のフォーマット方式を別プロセスに伝えるには?

画像のピクセルフォーマット(エンコーディング) 画像データを別のプロセスに伝えるとき、ピクセルフォーマットを伝える必要があります。 この画像のピクセルフォーマットを表す値について、各ソフトウェアでバラバラです。 モータもバラバラです。というかそ…

コンピュータ世界のオブジェクト操作はめんどくさい : オブジェクト指向編

nullpo24.hatenablog.com オブジェクトのハンドル(ポインタ)を取得できれば、 オブジェクトの操作はなんだってできる というわけではありません。 リアル世界 言われたことを素直に理解します。 コンピュータ世界 : オブジェクト指向 オブジェクト指向はフィ…

Doxygenでテスト項目の洗い出し

ソフトウェアの品質を保つためにはテストは必須であり、仕様変更(プログラムの変更)の度にテストは必須です。 とある大企業のSIerは基本設計、詳細設計、テスト項目をエクセルとワードで作成し、設計に変更があったらIT土方にエクセルとワードの手直し作業を…

C++イベント実装 Calllbacks, Promises, Signals and Events

イベント処理の実装に苦しめられている今日この頃。 ある意味、基本中の基本なのだが、 基本情報技術者試験を合格しても実装することはできないし、 応用情報技術者試験を合格しても実装することはできない。 実装するには提供されたAPIのサンプルを動かして…

QTで実装されたソースをSTL(標準ライブラリ)で実装できるか?

最近は便利ということで猫も杓子もQtライブラリを使った実装をしている。 本当にそれで良いのか!? 依存しちゃって良いのか!? ソースコード上にQ_OBJECTというおまじないが出てきてモヤモヤするのは私だけだろうか? というわけでQtの実装をSTLへ変換して…

Qt6 Previewをインストールしてみた

2020年9月現在Qt6 Previewはオンラインインストーラからのみインストールできる。 正式Releaseは12月。 Qt Online Installer Qt Online Installerをダウンロード Get Qt - Download now 「Go Open Source」→「Donwnload the Qt Online Installaer」 インスト…

Qt Quick 入門 改

GUIは基本的にユーザからの入力(イベント)に応じて処理をするイベントドリブンなインターフェースです。 Visual Studioだとフォームアプリケーションを作り、ボタンをデザイナ上に配置しボタンをダブルクリックすると、 ボタンクリックイベントが発生した際…

Qt Quick 入門 まとめ

Qt Blog Qt Quick入門 Qt Quick 入門 第1回: Qt Quick とは Qt Quick 入門 第1回: Qt Quick とは Qt Quick 入門 第2回: Qt Quick アプリケーションの実行 Qt Quick 入門 第3回: Hello QML! Qt Quick 入門 第4回: 画像やマウスを使おう Qt Quick 入門 第4回: …

Q.どうやってLinuxでXMLファイルなどのリソースを実行ファイルにまとめる?

Q.WindowsでXMLファイルなどのリソースをまとめるには A.Win32APIを使う Q.Linuxでリソースをまとめるには A.リソースをオブジェクトファイルにしてリンクをする Q.複数のファイルをまとめるにはどうすればよいか A各々のオブジェクトファイルを作って、各々…

C/C++におけるHANDLEの概念

プログラミングは簡単だ。 順次、分岐、繰り返しのみ! ... 入門では登場しないHANDLEという概念。 C/C++ではFOO_HANDLEという定義をhfooやhbarという名前で使われています。 実態はvoid*です。 映画でHANLEが使われる場面 Handle us? You'll handle us? You…

HOWTO - Visual Studio CodeでC++をGUIデバッグ

Windowsの場合Visual Studioという強力なデバッガツールがあります。 Linuxの場合gdbというデバッガツールがあります。 このgdbをGUI上で使うにはgdbgui、QtCreater、Eclipse等、 色々な方法があります。 ここではナウいVisual Studio Codeを使います。 環境…

HOWTO - ソースコード上で連番を書く

ソフトウェア的なオブジェクト ハードウェア的なオブジェクト の動きなんて 実際に動かしてログ取らないとわからないので、 動かすためのテストプログラムを書くことにしよう。 とりあえず、テスト連番を書いてみる std::cout << "Test1" << std::endl; std:…

共有ライブラリを参照した実行ファイル作成と実行

projectA/ ├ include/foo.h └ lib/libfoo.so 上記のようなヘッダと共有ライブラリを使い自作のソースをコンパイルしようとします。 //main.c #include <foo.h> ... Linuxの場合往々にして、 ヘッダは/usr/local/includeまたは/usr/includeに置かれます。 ライブラリ</foo.h>…

C++ templateことはじめ

C++のtemplateは開発者が使用者のために自由に型定義できるようにしたもの。 参考 適当なC++テンプレート入門 - Qiita

見にくいWindowsとLinuxのコードの共通化

同一のAPIを提供するにあたって、WindowsとLinuxを別々に作成するのはめんどくさいし、工数もかかる。 というわけで、WindowsとLinuxのコードを共通化して開発工数を削減しよう。 そうして出来上がっていたのはこんな感じのコードである。 hogeFunction() { …