From aa88f2ab39b5d8d4283fc2c44d788e072898b9ea Mon Sep 17 00:00:00 2001 From: tamago117 Date: Sat, 31 Aug 2024 20:21:41 +0900 Subject: [PATCH] add some spell to cspell.json --- .cspell.json | 13 ++++++++++++- .github/CODEOWNERS | 1 + .../mppi_controller/.gitignore | 1 + .../__pycache__/MPPI.cpython-310.pyc | Bin 10093 -> 0 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 165 -> 0 bytes .../__pycache__/cost_map_tensor.cpython-310.pyc | Bin 1831 -> 0 bytes .../__pycache__/mppi_controller.cpython-310.pyc | Bin 7808 -> 0 bytes .../mppi_controller_node.cpython-310.pyc | Bin 6746 -> 0 bytes 8 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/.gitignore delete mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/MPPI.cpython-310.pyc delete mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/__init__.cpython-310.pyc delete mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/cost_map_tensor.cpython-310.pyc delete mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/mppi_controller.cpython-310.pyc delete mode 100644 aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/mppi_controller_node.cpython-310.pyc diff --git a/.cspell.json b/.cspell.json index 3c1715b8..7fef0397 100644 --- a/.cspell.json +++ b/.cspell.json @@ -104,6 +104,17 @@ "wpedantic", "xacro", "xyzrpy", - "zcvf" + "zcvf", + "mppi", + "Qdin", + "Kohei", + "MPPI", + "Savitzky", + "Golay", + "reparameting", + "tempature", + "rsample", + "coeffs", + "softplus" ] } diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 379992ee..13913d57 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,3 +12,4 @@ aichallenge/workspace/src/aichallenge_submit/racing_kart_description/** @Autumn6 aichallenge/workspace/src/aichallenge_submit/racing_kart_sensor_kit_description/** @booars/aic2024-developers aichallenge/workspace/src/aichallenge_submit/simple_pure_pursuit/** @sitahara aichallenge/workspace/src/aichallenge_system/aichallenge_system_launch/** @booars/aic2024-developers +aichallenge/workspace/src/aichallenge_submit/mppi_controller/** @tamago117 diff --git a/aichallenge/workspace/src/aichallenge_submit/mppi_controller/.gitignore b/aichallenge/workspace/src/aichallenge_submit/mppi_controller/.gitignore new file mode 100644 index 00000000..7e99e367 --- /dev/null +++ b/aichallenge/workspace/src/aichallenge_submit/mppi_controller/.gitignore @@ -0,0 +1 @@ +*.pyc \ No newline at end of file diff --git a/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/MPPI.cpython-310.pyc b/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/MPPI.cpython-310.pyc deleted file mode 100644 index 624e444edbe033ca6540a9d6462d8a7a15a6e5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10093 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 diff --git a/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/__init__.cpython-310.pyc b/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/__init__.cpython-310.pyc deleted file mode 100644 index bd4bef9f354ab13a6bfeb727b79715c2440c1371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165 zcmd1j<>g`k0^Z&WX(0MBh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6v5KQS{oBQYl@ zH7`9?zdXMvySN}RIaNQYG&3hfKewPDGd?*#ucRm+sG2 SKczG$)edAsF%ytrVE_QkFDWem diff --git a/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/cost_map_tensor.cpython-310.pyc b/aichallenge/workspace/src/aichallenge_submit/mppi_controller/mppi_controller/__pycache__/cost_map_tensor.cpython-310.pyc deleted file mode 100644 index 3f99c96c85732caae4e643e101ce192d77ce0711..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1831 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 VECh`sCxRWO{hrM&)7Fj0{|l9Y2e1GD