From 5d0a52589b9e7b84e5ef90c0381194c6a298e52f Mon Sep 17 00:00:00 2001 From: swittl <simon.wittl@th-deg.de> Date: Thu, 20 Mar 2025 16:45:54 +0100 Subject: [PATCH] added joint states --- examples/joint.h5 | Bin 0 -> 16432 bytes examples/thd_joint_joint.h5 | Bin 0 -> 185336 bytes pyproject.toml | 2 +- src/h5schemas/joint/__init__.py | 0 src/h5schemas/joint/add_joint.py | 28 ++++++++ src/h5schemas/thd_joint_states/__init__.py | 0 .../thd_joint_states/add_thd_joint_states.py | 65 ++++++++++++++++++ uv.lock | 8 +-- 8 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 examples/joint.h5 create mode 100644 examples/thd_joint_joint.h5 create mode 100644 src/h5schemas/joint/__init__.py create mode 100644 src/h5schemas/joint/add_joint.py create mode 100644 src/h5schemas/thd_joint_states/__init__.py create mode 100644 src/h5schemas/thd_joint_states/add_thd_joint_states.py diff --git a/examples/joint.h5 b/examples/joint.h5 new file mode 100644 index 0000000000000000000000000000000000000000..3686ac081b34e2eccf099720f99914a6678e4909 GIT binary patch literal 16432 zcmeI0u}%U(5QgUtOisk8i3MtNm8GGe7lR-L5d)f7O5`+W;E)p%A3-}G!$<K^EPVsq z*`1*PqS3@e;}2nHnAx4X{r0~l>|_0~wwl|{5x;_fvb1hpZ6@+6mR&@@YyLtUPwa!( zXWuy<@tde1@eQdz+wZhht&-`f_0`HSDrTJ*XaM$K5vW%WPI$uSGHX@oi|9;Y48>7B z)-~}>>ru|?*EOtAr)1A_SI9_R)oaG&IkOS&lhbOMN-I>FNXI1;<-DKqZGk}QWqg17 zj2Nj;Wu7ND1CR2wX~Ny;?lO&UNAV!BSKc!B!7TXW?#K;wKG6>Ml4=}Vw>^pOmpDQ6 z>Wpc_srQl7K5icJ6D=hvQ~)0hLT-*go~)b=$z|F#G}CA}j?<{C9ScU+cD)Q}x0V6b z4jOH<Nz!TSjEzmWoc1B3lCq=%tCxP9#QkxfKGTWaUS(1Fk(#U1x&Lw<NW(70uWpVi z&4$&GY^bUyyKk5~uZ+_)N=9KPx$Z^b;3^y>QFt?mlhK}?mu|oE^GwOO*W-k){cPM0 zGR@PPdaxh>0w4eaAOHd&00JNY0w4eaAOHeCO@Pnc`8-e0FV#}G_{zoExctG_^T5TU z5Cs7c009sH0TB561m5;#4rONpu@Z#=0T2KI5C8!X009sH0T2KI5C8!X009sH0T2KI Y5C8!X009sH0T2KI5C8!X_|*j70UU8{-v9sr literal 0 HcmV?d00001 diff --git a/examples/thd_joint_joint.h5 b/examples/thd_joint_joint.h5 new file mode 100644 index 0000000000000000000000000000000000000000..9fd3ea7a85ce98963baab038a576b2ee7351ed2f GIT binary patch literal 185336 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 literal 0 HcmV?d00001 diff --git a/pyproject.toml b/pyproject.toml index f8ace50..6617135 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "h5schemas" -version = "0.1.0" +version = "0.1.12" description = "Add your description here" readme = "README.md" authors = [ diff --git a/src/h5schemas/joint/__init__.py b/src/h5schemas/joint/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/h5schemas/joint/add_joint.py b/src/h5schemas/joint/add_joint.py new file mode 100644 index 0000000..add8137 --- /dev/null +++ b/src/h5schemas/joint/add_joint.py @@ -0,0 +1,28 @@ +from h5py import File, Group +from thd_json import joint +from h5schemas.scan_schema import open_schema +from h5schemas.initialize_dataset import initialize_dataset + + +def init_joint(h5_file: File | Group): + schema_groups = get_source_schemas() + initialize_dataset(h5_file, schema_groups) + + +def get_source_schemas(): + return open_schema(joint, "joint.json") + + +def add_joint_sample(h5_file: File | Group, joint_value_rad): + dst = h5_file["q"] + dst.resize((dst.shape[0] + 1,)) + dst[-1,] = joint_value_rad + + +if __name__ == "__main__": + test_file = File("./examples/joint.h5", "w") + init_joint(test_file) + + add_joint_sample(test_file, 1.0) + add_joint_sample(test_file, 2.0) + add_joint_sample(test_file, 3.0) diff --git a/src/h5schemas/thd_joint_states/__init__.py b/src/h5schemas/thd_joint_states/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/h5schemas/thd_joint_states/add_thd_joint_states.py b/src/h5schemas/thd_joint_states/add_thd_joint_states.py new file mode 100644 index 0000000..682ce8c --- /dev/null +++ b/src/h5schemas/thd_joint_states/add_thd_joint_states.py @@ -0,0 +1,65 @@ +from h5py import File, Group +from thd_json import thd_joint_states +from h5schemas.scan_schema import open_schema +from h5schemas.initialize_dataset import initialize_dataset +from h5schemas.joint.add_joint import add_joint_sample + + +def init_thd_joint_states(h5_file: File | Group): + schema_groups = get_source_schemas() + initialize_dataset(h5_file, schema_groups) + + +def get_source_schemas(): + return open_schema(thd_joint_states, "thd_joint_states.json") + + +def add_thd_joint_states_sample( + h5_file: File | Group, + master_joint_e1: float | None = None, + master_joint_a1: float | None = None, + master_joint_a2: float | None = None, + master_joint_a3: float | None = None, + master_joint_a4: float | None = None, + master_joint_a5: float | None = None, + master_joint_a6: float | None = None, + slave_joint_e1: float | None = None, + slave_joint_a1: float | None = None, + slave_joint_a2: float | None = None, + slave_joint_a3: float | None = None, + slave_joint_a4: float | None = None, + slave_joint_a5: float | None = None, + slave_joint_a6: float | None = None, + table_joint_a1: float | None = None): + + + add_joint_sample(h5_file["/master_joint_e1"], master_joint_e1) + + add_joint_sample(h5_file["/master_joint_a1"], master_joint_a1) + add_joint_sample(h5_file["/master_joint_a2"], master_joint_a2) + add_joint_sample(h5_file["/master_joint_a3"], master_joint_a3) + add_joint_sample(h5_file["/master_joint_a4"], master_joint_a4) + add_joint_sample(h5_file["/master_joint_a5"], master_joint_a5) + add_joint_sample(h5_file["/master_joint_a6"], master_joint_a6) + + add_joint_sample(h5_file["/slave_joint_e1"], slave_joint_e1) + + add_joint_sample(h5_file["/slave_joint_a1"], slave_joint_a1) + add_joint_sample(h5_file["/slave_joint_a2"], slave_joint_a2) + add_joint_sample(h5_file["/slave_joint_a3"], slave_joint_a3) + add_joint_sample(h5_file["/slave_joint_a4"], slave_joint_a4) + add_joint_sample(h5_file["/slave_joint_a5"], slave_joint_a5) + add_joint_sample(h5_file["/slave_joint_a6"], slave_joint_a6) + + add_joint_sample(h5_file["/table_joint_a1"], table_joint_a1) + +if __name__ == "__main__": + import numpy as np + + + test_file = File("./examples/thd_joint_joint.h5", "w") + init_thd_joint_states(test_file) + + add_thd_joint_states_sample(test_file, *np.arange(15)) + add_thd_joint_states_sample(test_file, *np.arange(15, 30)) + diff --git a/uv.lock b/uv.lock index d5b322e..dcf914a 100644 --- a/uv.lock +++ b/uv.lock @@ -52,7 +52,7 @@ wheels = [ [[package]] name = "h5schemas" -version = "0.1.0" +version = "0.1.12" source = { editable = "." } dependencies = [ { name = "h5py" }, @@ -64,7 +64,7 @@ dependencies = [ requires-dist = [ { name = "h5py", specifier = ">=3.13.0" }, { name = "jsonref", specifier = ">=1.1.0" }, - { name = "thd-json", git = "https://mygit.th-deg.de/roboct/definitions/json_schemas" }, + { name = "thd-json", git = "https://mygit.th-deg.de/roboct-public/roboct-schemas" }, ] [[package]] @@ -418,8 +418,8 @@ wheels = [ [[package]] name = "thd-json" -version = "0.1.11" -source = { git = "https://mygit.th-deg.de/roboct/definitions/json_schemas#549627970741441756a671333ac8e5f949241eb3" } +version = "0.1.12" +source = { git = "https://mygit.th-deg.de/roboct-public/roboct-schemas#f9f601e871cd8a514e4df9884a17777bc2474c21" } dependencies = [ { name = "hatchling" }, { name = "hypothesis" }, -- GitLab