ふるお〜と!- FullAuto

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

ふるお〜と!-FullAuto

C++

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

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

【C++ テンプレート】 ポリシーに基づく設計と静的ポリモーフィズムの比較

C++

IoTとかロボットにプログラムを組み込みするときにC++でテンプレートメタプログラミングを使ってみたいよね x86_x64 , Arm, RISC-VなどのCPU, GPU, FPGAで表面上は同じソースコードを使ってみたいわ コードをコンパイル時に自動生成って怖くないですか? え…

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

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

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

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

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>…

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

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

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

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

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…

C++ templateことはじめ

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

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

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