Opp TensorFlow 2.16.2 Lite C++ library build.

Opp TensorFlow 2.16.2 Lite C++ library build.

TensorFlow 2.16.2 Lite C++ library build. の続き。

前回に続いて、今回は、本題の ROS2 自作 Turtlebot3 による 草刈りロボット開発。#9 LSTM で経路計画をする。
で作成した学習モデルを、C++ 及び ROS2 C++ で簡単に predict できるライブラリーを作成する。

環境
PC and Orange Pi 5 Armibian Jummy
Ubuntu 22.04
Tensorflow 12.6.2
ROS2 Humble

/home/nishi --> /home/your-id に変えとうせ。

1. ROS2 のプログラムから使える、opp_tflie.cpp を作成する。
ROS2 global costamap の一部を、cv::Mat に取り込んで、class Opp_Tflite に渡せば、
opp_with_lstm または、opp_with_transformer のモデルで、predict して、その結果を、
std::vector<u_int8_t> y_pred に返してくれるもので、これをライブラリとして使えるようにする。

1.1 ライブラリ libopp_tflite.a のビルド。

$ make -fMakefile-Archive-opp_tflite
$ make -fMakefile-Archive-opp_tflite install
$ make -fMakefile-Archive-opp_tflite clear

1.2 CMakeLists.txt で、
find_package(Tflite REQUIRED)
find_package(Opp_tflite REQUIRED)
をすれば、同じく簡単にリンケージができるようにします。
cmake/FindOpp_tflite.cmake



一応、ROS2 の turtlebot3_navi_my/CMakeLists.txt に追加して、リンケージ and Run ができました。
CMakeLists.txt の記述には、少し留意点が出たけれども、なんとか出来ました。

~/colcon_ws/src/turtlebot3_navi_my/CMakeLists.txt の抜粋


どうやら、ROS パッケージでない場合のリンクは、ament_target_dependencies() に追加するのではなくて、
Cmake 本来の、target_link_libraries() を使うみたいじゃ。
実習ROS 2 CMakeLists.txtとpackage.xmlの書き方
ROS2の共有ライブラリを使用したプログラムの作成 before Foxy Fitzroy

後は、Turtlebot3_navi_my のプログラムに処理を追加して、global costmap から、opp_with_lstm で、経路の predict ができるのが確認できれば、
学習データを増やして、精度をあげてやれば、実際に使えるものかどうか判断できるぞね。
Orange Pi 5 Armibian jummy で、動けば、目的を達成だが。
学習データを増やすのが難儀ぞね。

2. ライブラリー自体の開発と動作確認。
dummy.cpp を用意しているので、opp_tflite.cpp 、 opp_tflite.hpp を改造した場合は、これを使います。
class Opp_Tflite の使い方も、 dummy.cpp を参考にしとうせ。

$ make -fMakefile-dummy
$ export LD_LIBRARY_PATH=/home/nishi/usr/local/lib/tensorflow-2.16.2-lite-flex:$LD_LIBRARY_PATH
$ ./dummy

3. 試しに、turtlebot3_navi_my for Ros2 humble r5 の Auto Mower の中に組み込んで、 predict を要所要所で実行してみました。
おかしな挙動もなく、完走できるみたいぞね!!
今後は、ROS2 自作 Turtlebot3 による 草刈りロボット開発。#8 Transformer で経路計画をする。
"2. このモデルの運用イメージ" 方針に従って組み上げてみます。


内容は、後日 github に公開するので、それを参照しとうせ。
github に公開しました。by nishi 2025.1.2
tosa-no-onchan/opp_tflite

turtlebot3_navi_my for Ros2 humble r6 の Auto Mower に正式に組み込んでみました。

このブログ記事について

このページは、おんちゃんが2024年12月24日 12:07に書いたブログ記事です。

ひとつ前のブログ記事は「TensorFlow 2.16.2 Lite C++ library build.」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ