Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add unit tests #52

Merged
merged 11 commits into from
Apr 5, 2024
Merged

Add unit tests #52

merged 11 commits into from
Apr 5, 2024

Conversation

YusukeKato
Copy link
Contributor

@YusukeKato YusukeKato commented Apr 2, 2024

What does this implement/fix?

9軸IMUのROS 2パッケージに、テスト環境の構築が可能か確認するための単体テストを追加します。

Does this close any currently open issues?

しません。

How has this been tested?

ローカル環境でcolcon buildとcolcon testが通ることを確認しました。

下記の手順で実機の9軸IMUからデータが取得できることを確認しました。

パッケージのインストール

mkdir -p ~/imu_ws/src
cd ~/imu_ws/src
git clone -b add_unit_test https://github.com/rt-net/rt_usb_9axisimu_driver.git
cd ~/imu_ws
colcon build --symlink-install

9軸IMUをUSBケーブルで接続

端末1

source ~/imu_ws/install/setup.bash
ros2 run rt_usb_9axisimu_driver rt_usb_9axisimu_driver
# [INFO] [1712302931.150554866] [rt_usb_9axisimu_driver]: on_configure() is called.
# [INFO] [1712302931.154430563] [rt_usb_9axisimu_driver]: Format check has completed.
# [INFO] [1712302931.154481850] [rt_usb_9axisimu_driver]: Data format is ascii.
# [INFO] [1712303046.004763387] [rt_usb_9axisimu_driver]: on_activate() is called.

端末2

source ~/imu_ws/install/setup.bash
ros2 lifecycle set rt_usb_9axisimu_driver configure
# Transitioning successful
ros2 lifecycle set rt_usb_9axisimu_driver activate
# Transitioning successful
ros2 topic echo /imu/data_raw
# トピックの配信を確認OK
ros2 topic echo /imu/mag
# トピックの配信を確認OK
ros2 topic echo /imu/temperature
# data: 35.32593536376953

Any other comments?

なし。

Checklists

@YusukeKato YusukeKato requested a review from ShotaAk April 5, 2024 05:59
@YusukeKato YusukeKato self-assigned this Apr 5, 2024
@YusukeKato YusukeKato added the Type: Feature New Feature label Apr 5, 2024
@YusukeKato YusukeKato marked this pull request as ready for review April 5, 2024 05:59
@ShotaAk ShotaAk closed this Apr 5, 2024
@ShotaAk ShotaAk reopened this Apr 5, 2024
Comment on lines +90 to +93
rt_usb_9axisimu::Consts consts;
unsigned char dummy_bin_imu_data[consts.IMU_BIN_DATA_SIZE] = {0};
dummy_bin_imu_data[consts.IMU_BIN_HEADER_R] = 0x52; // R
dummy_bin_imu_data[consts.IMU_BIN_HEADER_T] = 0x54; // T
Copy link
Contributor

@ShotaAk ShotaAk Apr 5, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

今回はこの実装でOKです。
今後テストコードが増えてきた場合は、create_binary_data(acc, gyro, mag) のようなヘルパー関数を作ると便利です。

@ShotaAk
Copy link
Contributor

ShotaAk commented Apr 5, 2024

ソフト構造が変わっており、かつ、テストでは見れてない部分があります。

実機でデータが取れるのか確認お願いします。

Copy link
Contributor

@ShotaAk ShotaAk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTMです

@ShotaAk ShotaAk merged commit 593fef7 into ros2-devel Apr 5, 2024
1 check passed
@ShotaAk ShotaAk deleted the add_unit_test branch April 5, 2024 08:58
@ShotaAk ShotaAk changed the title 単体テストを追加 Add unit tests Apr 5, 2024
ShotaAk pushed a commit that referenced this pull request Apr 5, 2024
* Use pointer for SerialPort instance instead of inheritance

* Add test using fakeit

* Install git comand in indsutrial_ci

* Refactoring

* Update CI

* Use AFTER_SETUP_TARGET_WORKSPACE

* driverインスタンスのメンバ変数のテストを追加

* バイナリデータが読み込まれたことを確認するテストを追加

* ASCIIデータが読み込まれたことを確認するテストを追加

* バイナリでもASCIIでもないデータが読み込まれたことを確認するテストを追加

* テストが通る状態に修正

---------

Co-authored-by: ShotaAk <s.aoki@rt-net.jp>
ShotaAk pushed a commit that referenced this pull request Aug 23, 2024
* Add unit tests (#52)

* Use pointer for SerialPort instance instead of inheritance

* Add test using fakeit

* Install git comand in indsutrial_ci

* Refactoring

* Update CI

* Use AFTER_SETUP_TARGET_WORKSPACE

* driverインスタンスのメンバ変数のテストを追加

* バイナリデータが読み込まれたことを確認するテストを追加

* ASCIIデータが読み込まれたことを確認するテストを追加

* バイナリでもASCIIでもないデータが読み込まれたことを確認するテストを追加

* テストが通る状態に修正

---------

Co-authored-by: ShotaAk <s.aoki@rt-net.jp>

* checkDataFormat() and unit test updates (#54)

* Binaryデータ出力時は実機とテストの両方で動作確認完了、ASCIIデータには未対応、デバッグ用出力あり

* 実機とテストの両方でBinaryとASCIIの判定に成功、BinaryでもASCIIでもないデータには未対応

* タイムアウト機能を追加&hasCompletedFormatCheck()と関係する変数を削除

* 不正なデータをチェックするようにテストを修正

* readを成功させるためにwhileループにsleep処理を追加

* 必要がなかったため、while文のsleep処理を削除

* テスト用データの作成で重複している箇所を関数化

* RCLCPP_INFOをWARNに変更&不要なコメントを削除

* const autoをできる限り使用

* actions/checkoutのバージョンを3から4に更新

* 読み取ったデータをある程度貯めてからデータ形式を判定するように変更

* 貯めるデータを更新するように修正

* メンバ変数の名前を修正&256を定数化

* Add test for readSensorData() (#57)

* readSensorData()実行後のhasRefreshedImuData()の応答のテストを追加

* テストにコメントを追加

* 0.0を入力として与えたテストを追加

* ASCII形式のテストデータを作成する際、引数で値を渡せるように変更

* Binary形式でもテストデータを引数で渡せるように変更

* テストケースを使い回せるように変更

* readSensorData()実行時にセンサデータが正しく変換されたか検証するテストを追加

* デバッグ用の関数を削除

* short intをint16_tに変更

* int16を8bitずつに分ける関数をhighとlowそれぞれ用意

* 既存のテストに影響を与えないようにデータ作成の関数をオーバーロード

* set_data関数をprivateに変更

* 変換後の数値を直打ち

* data_format_を設定する関数を削除

* 不要な箇所を削除

* Fix to get the latest data (#58)

* 最新データ取得のテストを追加

* PR#50を参考に最新のデータを取得できるように変更

* 複数セットのデータ取得時に最新のデータをセットするように変更、テストは通るが挙動がおかしい

* 最新データの取得方法を修正

* 取得するデータが適切な長さであることを保証する

* 2.1.0リリースのためにCHANGELOG.rstとpackage.xmlを更新 (#59)

* CHANGELOGを更新

* 2.1.0

---------

Co-authored-by: ShotaAk <s.aoki@rt-net.jp>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Feature New Feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants