From 3b9a1920d56ed6acef8efaaec4858093819e9d95 Mon Sep 17 00:00:00 2001 From: methylDragon Date: Wed, 31 Aug 2022 15:02:35 -0700 Subject: [PATCH 1/9] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20=20Bump=206.12.0=20to?= =?UTF-8?q?=206.13.0=20(#490)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 2 +- Changelog.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8116a3793..c00ac5051 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.10.2 FATAL_ERROR) #============================================================================ # Initialize the project #============================================================================ -project(ignition-math6 VERSION 6.12.0) +project(ignition-math6 VERSION 6.13.0) #============================================================================ # Find ignition-cmake diff --git a/Changelog.md b/Changelog.md index 722c5127b..563e38956 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,13 @@ ## Gazebo Math 6.x +## Gazebo Math 6.13.0 (2022-08-31) + +1. Support migration and migrate headers + * [Pull request #483](https://github.com/gazebosim/gz-math/pull/483) + +1. Remove redundant namespace references + * [Pull request #479](https://github.com/gazebosim/gz-math/pull/479) + ## Gazebo Math 6.12.0 (2022-07-27) 1. Added Helper function isTimeString to Python From 5cf956d89214c295894db5c963ae176112e75395 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Thu, 1 Dec 2022 13:06:08 +0100 Subject: [PATCH 2/9] Fix link of installation tutorial to point to 7.1 version (#518) Signed-off-by: Silvio --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0438906f6..f34288e26 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Math types. # Install -See the [installation tutorial](https://gazebosim.org/api/math/6.8/install.html). +See the [installation tutorial](https://gazebosim.org/api/math/7/install.html). # Usage From 3737ac10649b5802cfaf605a5eca6f5a25d30a2c Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Tue, 27 Dec 2022 21:25:14 -0800 Subject: [PATCH 3/9] CI workflow: use checkout v3 (#519) Version v2 of the actions/checkout workflow is deprecated, so switch to v3. Part of gazebo-tooling/release-tools#862. Signed-off-by: Steve Peters --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f4849d30..7a8b7b39b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ jobs: name: Ubuntu Bionic CI steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Compile and test id: ci uses: ignition-tooling/action-ignition-ci@bionic @@ -20,7 +20,7 @@ jobs: name: Ubuntu Focal CI steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Compile and test id: ci uses: ignition-tooling/action-ignition-ci@focal @@ -29,7 +29,7 @@ jobs: name: Ubuntu Jammy CI steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Compile and test id: ci uses: ignition-tooling/action-ignition-ci@jammy From 4c6ddf8de02f2b9450f21b723289f50d5fdb14a3 Mon Sep 17 00:00:00 2001 From: Steve Peters Date: Mon, 6 Feb 2023 00:54:44 -0800 Subject: [PATCH 4/9] Rename COPYING to LICENSE (#521) The LICENSE file contained a copy of the stanze used at the top of source code files, while the actual license was in the COPYING file. So remove the stanza and put the actual Apache 2.0 license text in LICENSE. Signed-off-by: Steve Peters --- COPYING | 178 ----------------------------------------------------- LICENSE | 185 ++++++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 174 insertions(+), 189 deletions(-) delete mode 100644 COPYING diff --git a/COPYING b/COPYING deleted file mode 100644 index 4909afd04..000000000 --- a/COPYING +++ /dev/null @@ -1,178 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - diff --git a/LICENSE b/LICENSE index bd33c4376..4909afd04 100644 --- a/LICENSE +++ b/LICENSE @@ -1,15 +1,178 @@ -Software License Agreement (Apache License) + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ -Copyright 2012 Open Source Robotics Foundation + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. From 1e846694a28b19b17385f8b780138e4ccd31be54 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Tue, 14 Feb 2023 18:11:07 -0600 Subject: [PATCH 5/9] Garden bazel support (#523) Signed-off-by: Michael Carroll --- BUILD.bazel | 58 ++++++++++++++++++-------------------------- eigen3/BUILD.bazel | 27 +++++++++++---------- examples/BUILD.bazel | 23 ++++++++++++++++++ test/BUILD.bazel | 13 ++++++++++ 4 files changed, 74 insertions(+), 47 deletions(-) create mode 100644 examples/BUILD.bazel create mode 100644 test/BUILD.bazel diff --git a/BUILD.bazel b/BUILD.bazel index 016f40329..b89cd10a1 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,11 +1,15 @@ load( - "//gz_bazel:build_defs.bzl", + "@gz//bazel/skylark:build_defs.bzl", "GZ_FEATURES", + "GZ_ROOT", "GZ_VISIBILITY", - "cmake_configure_file", - "generate_include_header", - "gz_config_header", + "gz_configure_header", "gz_export_header", + "gz_include_header", +) +load( + "@gz//bazel/lint:lint.bzl", + "add_lint_tests", ) package( @@ -13,25 +17,15 @@ package( features = GZ_FEATURES, ) -licenses(["notice"]) +licenses(["notice"]) # Apache-2.0 exports_files(["LICENSE"]) -PROJECT_NAME = "gz-math" - -PROJECT_MAJOR = 7 - -PROJECT_MINOR = 0 - -PROJECT_PATCH = 0 - -# Generates config.hh based on the version numbers in CMake code. -gz_config_header( +gz_configure_header( name = "config", src = "include/gz/math/config.hh.in", cmakelists = ["CMakeLists.txt"], - project_name = PROJECT_NAME, - project_version = (PROJECT_MAJOR, PROJECT_MINOR, PROJECT_PATCH), + package = "math", ) gz_export_header( @@ -54,7 +48,7 @@ sources = glob( exclude = ["src/*_TEST.cc"], ) -generate_include_header( +gz_include_header( name = "mathhh_genrule", out = "include/gz/math.hh", hdrs = public_headers_no_gen + [ @@ -70,20 +64,19 @@ public_headers = public_headers_no_gen + [ ] cc_library( - name = "gz_math", + name = "math", srcs = sources + private_headers, hdrs = public_headers, includes = ["include"], + deps = [ + GZ_ROOT + "utils", + ], ) -# use shared library only when absolutely needd -cc_binary( - name = "libgz-math7.so", - includes = ["include"], - linkopts = ["-Wl,-soname,libgz-math7.so"], - linkshared = True, - deps = [ - ":gz_math", +test_sources = glob( + [ + "src/*_TEST.cc", + "src/graph/*_TEST.cc", ], ) @@ -91,13 +84,10 @@ cc_binary( name = src.replace("/", "_").replace(".cc", "").replace("src_", ""), srcs = [src], deps = [ - ":gz_math", + ":math", "@gtest", "@gtest//:gtest_main", ], -) for src in glob( - [ - "src/*_TEST.cc", - "src/graph/*_TEST.cc", - ], -)] +) for src in test_sources] + +add_lint_tests() diff --git a/eigen3/BUILD.bazel b/eigen3/BUILD.bazel index 508cb3138..2b3ba9537 100644 --- a/eigen3/BUILD.bazel +++ b/eigen3/BUILD.bazel @@ -1,15 +1,13 @@ load( - "//gz_bazel:build_defs.bzl", + "@gz//bazel/skylark:build_defs.bzl", + "GZ_FEATURES", "GZ_ROOT", "GZ_VISIBILITY", + "gz_configure_header", + "gz_export_header", + "gz_include_header", ) -package( - default_visibility = GZ_VISIBILITY, -) - -licenses(["notice"]) - public_headers = glob([ "include/gz/math/eigen3/*.hh", ]) @@ -19,9 +17,16 @@ cc_library( srcs = public_headers, hdrs = public_headers, includes = ["include"], + visibility = GZ_VISIBILITY, deps = [ + GZ_ROOT + "math", "@eigen3", - GZ_ROOT + "gz_math", + ], +) + +test_sources = glob( + [ + "src/*_TEST.cc", ], ) @@ -33,8 +38,4 @@ cc_library( "@gtest", "@gtest//:gtest_main", ], -) for src in glob( - [ - "src/*_TEST.cc", - ], -)] +) for src in test_sources] diff --git a/examples/BUILD.bazel b/examples/BUILD.bazel new file mode 100644 index 000000000..c3902e6a3 --- /dev/null +++ b/examples/BUILD.bazel @@ -0,0 +1,23 @@ +load( + "@gz//bazel/skylark:build_defs.bzl", + "GZ_ROOT", + "GZ_VISIBILITY", +) +load( + "@gz//bazel/lint:lint.bzl", + "add_lint_tests", +) + +sources = glob( + ["*.cc"], +) + +[cc_binary( + name = src.replace(".cc", ""), + srcs = [src], + deps = [ + GZ_ROOT + "math", + ], +) for src in sources] + +add_lint_tests() diff --git a/test/BUILD.bazel b/test/BUILD.bazel new file mode 100644 index 000000000..9000f4abc --- /dev/null +++ b/test/BUILD.bazel @@ -0,0 +1,13 @@ +load( + "@gz//bazel/skylark:build_defs.bzl", + "GZ_FEATURES", + "GZ_VISIBILITY", +) +load( + "@gz//bazel/lint:lint.bzl", + "add_lint_tests", +) + +# Currently test directory only applies to CMake builds + +add_lint_tests() From 27cdb934a5c6008fedf4792225ab94a714c138ed Mon Sep 17 00:00:00 2001 From: Nate Koenig Date: Tue, 14 Mar 2023 11:29:16 -0700 Subject: [PATCH 6/9] Custom PID error rate (#525) * Custom PID error rate Signed-off-by: Nate Koenig * added test Signed-off-by: Nate Koenig --------- Signed-off-by: Nate Koenig --- include/gz/math/PID.hh | 15 +++++++++++++++ src/PID.cc | 25 +++++++++++++++++++------ src/PID_TEST.cc | 9 +++++++++ src/python_pybind11/src/PID.cc | 8 +++++++- src/ruby/PID.i | 5 +++++ 5 files changed, 55 insertions(+), 7 deletions(-) diff --git a/include/gz/math/PID.hh b/include/gz/math/PID.hh index bf40356c8..1317caf7d 100644 --- a/include/gz/math/PID.hh +++ b/include/gz/math/PID.hh @@ -157,6 +157,21 @@ namespace ignition /// \return The offset value public: double CmdOffset() const; + /// \brief Update the Pid loop with nonuniform time step size. + /// \param[in] _error Error since last call (p_state - p_target). + /// \param[in] _errorRate Estimate of error rate, that can be used + /// when a smoother estimate is available than the finite difference + /// used by Update(const double _error, + /// const std::chrono::duration &_dt) + /// \param[in] _dt Change in time since last update call. + /// Normally, this is called at every time step, + /// The return value is an updated command to be passed + /// to the object being controlled. + /// \return the command value + public: double Update(const double _error, + double _errorRate, + const std::chrono::duration &_dt); + /// \brief Update the Pid loop with nonuniform time step size. /// \param[in] _error Error since last call (p_state - p_target). /// \param[in] _dt Change in time since last update call. diff --git a/src/PID.cc b/src/PID.cc index c80989121..4e873182a 100644 --- a/src/PID.cc +++ b/src/PID.cc @@ -141,6 +141,22 @@ double PID::Update(const double _error, return 0.0; } + // Pass in the derivative error + return this->Update(_error, (_error - this->pErrLast) / _dt.count(), _dt); +} + +///////////////////////////////////////////////// +double PID::Update(const double _error, + double _errorRate, + const std::chrono::duration &_dt) +{ + if (_dt == std::chrono::duration(0) || + isnan(_error) || std::isinf(_error) || + isnan(_errorRate) || std::isinf(_errorRate)) + { + return 0.0; + } + double pTerm, dTerm; this->pErr = _error; @@ -156,12 +172,9 @@ double PID::Update(const double _error, if (this->iMax >= this->iMin) this->iErr = clamp(this->iErr, this->iMin, this->iMax); - // Calculate the derivative error - if (_dt != std::chrono::duration(0)) - { - this->dErr = (this->pErr - this->pErrLast) / _dt.count(); - this->pErrLast = this->pErr; - } + // Use the provided error rate + this->dErr = _errorRate; + this->pErrLast = this->pErr; // Calculate derivative contribution to command dTerm = this->dGain * this->dErr; diff --git a/src/PID_TEST.cc b/src/PID_TEST.cc index ff58a25bf..e31b672db 100644 --- a/src/PID_TEST.cc +++ b/src/PID_TEST.cc @@ -172,6 +172,15 @@ TEST(PidTest, Update) EXPECT_DOUBLE_EQ(pe, 5); EXPECT_DOUBLE_EQ(ie, 1.4); EXPECT_DOUBLE_EQ(de, 0.0); + + pid.Reset(); + pid.SetIGain(0.0); + pid.SetIMin(0.0); + result = pid.Update(5.0, 1.0, std::chrono::duration(10.0)); + EXPECT_DOUBLE_EQ(result, -5.5); + + result = pid.Update(5.0, 1.0, std::chrono::duration(0.0)); + EXPECT_DOUBLE_EQ(result, 0); } ///////////////////////////////////////////////// diff --git a/src/python_pybind11/src/PID.cc b/src/python_pybind11/src/PID.cc index 9e273d1a6..f3b81bef2 100644 --- a/src/python_pybind11/src/PID.cc +++ b/src/python_pybind11/src/PID.cc @@ -102,7 +102,13 @@ void defineMathPID(py::module &m, const std::string &typestr) &Class::CmdOffset, "Get the offset value for the command.") .def("update", - &Class::Update, + py::overload_cast &>(&Class::Update), + "Update the Pid loop with nonuniform time step size, and custom error " + "rate.") + .def("update", + py::overload_cast &>(&Class::Update), "Update the Pid loop with nonuniform time step size.") .def("set_cmd", &Class::SetCmd, diff --git a/src/ruby/PID.i b/src/ruby/PID.i index 7861cfcc2..b38be1d94 100644 --- a/src/ruby/PID.i +++ b/src/ruby/PID.i @@ -83,6 +83,11 @@ namespace ignition double Update(const double error, const double dt) { return (*$self).Update(error, std::chrono::duration(dt)); } + double Update(const double error, double errorRate, const double dt) { + return (*$self).Update(error, errorRate, + std::chrono::duration(dt)); + } + } } } From 0667176d89daf68d4aa4222338289dbca85e03dc Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Tue, 9 Aug 2022 21:26:09 -0500 Subject: [PATCH 7/9] Add option to skip pybind11 and SWIG (#480) Signed-off-by: Michael Carroll --- CMakeLists.txt | 91 +++++++++++++++++++++++++++------------------- src/CMakeLists.txt | 7 +++- 2 files changed, 59 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c00ac5051..1f59135b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,17 +25,26 @@ ign_configure_project( # Set project-specific options #============================================================================ -option(USE_SYSTEM_PATHS_FOR_RUBY_INSTALLATION - "Install ruby modules in standard system paths in the system" +option(SKIP_SWIG + "Skip generating ruby bindings via Swig" OFF) -option(USE_SYSTEM_PATHS_FOR_PYTHON_INSTALLATION - "Install python modules in standard system paths in the system" +option(SKIP_PYBIND11 + "Skip generating Python bindings via pybind11" OFF) -option(USE_DIST_PACKAGES_FOR_PYTHON +include(CMakeDependentOption) +cmake_dependent_option(USE_SYSTEM_PATHS_FOR_RUBY_INSTALLATION + "Install ruby modules in standard system paths in the system" + OFF "NOT SKIP_SWIG" OFF) + +cmake_dependent_option(USE_SYSTEM_PATHS_FOR_PYTHON_INSTALLATION + "Install python modules in standard system paths in the system" + OFF "NOT SKIP_PYBIND11" OFF) + +cmake_dependent_option(USE_DIST_PACKAGES_FOR_PYTHON "Use dist-packages instead of site-package to install python modules" - OFF) + OFF "NOT SKIP_PYBIND11" OFF) #============================================================================ # Search for project-specific dependencies @@ -51,46 +60,54 @@ ign_find_package( ######################################## # Include swig -find_package(SWIG QUIET) -if (NOT SWIG_FOUND) - IGN_BUILD_WARNING("Swig is missing: Language interfaces are disabled.") - message (STATUS "Searching for swig - not found.") +if (SKIP_SWIG) + message(STATUS "SKIP_SWIG set - disabling SWIG Ruby support") else() - message (STATUS "Searching for swig - found version ${SWIG_VERSION}.") -endif() - -# Include other languages if swig was found -if (SWIG_FOUND) - ######################################## - # Include ruby - find_package(Ruby 1.9 QUIET) - if (NOT RUBY_FOUND) - IGN_BUILD_WARNING("Ruby is missing: Install ruby-dev to enable ruby interface to ignition math.") - message (STATUS "Searching for Ruby - not found.") + find_package(SWIG QUIET) + if (NOT SWIG_FOUND) + IGN_BUILD_WARNING("Swig is missing: Language interfaces are disabled.") + message (STATUS "Searching for swig - not found.") else() - message (STATUS "Searching for Ruby - found version ${RUBY_VERSION}.") + message (STATUS "Searching for swig - found version ${SWIG_VERSION}.") + endif() + + # Include other languages if swig was found + if (SWIG_FOUND) + ######################################## + # Include ruby + find_package(Ruby 1.9 QUIET) + if (NOT RUBY_FOUND) + IGN_BUILD_WARNING("Ruby is missing: Install ruby-dev to enable ruby interface to ignition math.") + message (STATUS "Searching for Ruby - not found.") + else() + message (STATUS "Searching for Ruby - found version ${RUBY_VERSION}.") + endif() endif() endif() ######################################## # Python bindings -include(IgnPython) -find_package(PythonLibs QUIET) -if (NOT PYTHONLIBS_FOUND) - IGN_BUILD_WARNING("Python is missing: Python interfaces are disabled.") - message (STATUS "Searching for Python - not found.") +if (SKIP_PYBIND11) + message(STATUS "SKIP_PYBIND11 set - disabling python bindings") else() - message (STATUS "Searching for Python - found version ${PYTHONLIBS_VERSION_STRING}.") - - set(PYBIND11_PYTHON_VERSION 3) - find_package(Python3 QUIET COMPONENTS Interpreter Development) - find_package(pybind11 2.2 QUIET) - - if (${pybind11_FOUND}) - message (STATUS "Searching for pybind11 - found version ${pybind11_VERSION}.") + include(IgnPython) + find_package(PythonLibs QUIET) + if (NOT PYTHONLIBS_FOUND) + IGN_BUILD_WARNING("Python is missing: Python interfaces are disabled.") + message (STATUS "Searching for Python - not found.") else() - IGN_BUILD_WARNING("pybind11 is missing: Python interfaces are disabled.") - message (STATUS "Searching for pybind11 - not found.") + message (STATUS "Searching for Python - found version ${PYTHONLIBS_VERSION_STRING}.") + + set(PYBIND11_PYTHON_VERSION 3) + find_package(Python3 QUIET COMPONENTS Interpreter Development) + find_package(pybind11 2.2 QUIET) + + if (${pybind11_FOUND}) + message (STATUS "Searching for pybind11 - found version ${pybind11_VERSION}.") + else() + IGN_BUILD_WARNING("pybind11 is missing: Python interfaces are disabled.") + message (STATUS "Searching for pybind11 - not found.") + endif() endif() endif() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index edbf8e591..e098b3bbe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,7 +13,10 @@ ign_build_tests(TYPE UNIT SOURCES ${gtest_sources}) add_subdirectory(graph) # Bindings subdirectories -if (${pybind11_FOUND}) +if (pybind11_FOUND AND NOT SKIP_PYBIND11) add_subdirectory(python_pybind11) endif() -add_subdirectory(ruby) + +if (SWIG_FOUND AND NOT SKIP_SWIG) + add_subdirectory(ruby) +endif() From 4bb6a73e78edf24f7cd9f64eedc4c89985202fbf Mon Sep 17 00:00:00 2001 From: "Addisu Z. Taddese" Date: Thu, 6 Apr 2023 13:37:19 -0500 Subject: [PATCH 8/9] Disable pybind11 on windows by default (#529) Signed-off-by: Addisu Z. Taddese --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f59135b1..c1481b0a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,9 +29,14 @@ option(SKIP_SWIG "Skip generating ruby bindings via Swig" OFF) +set(skip_pybind11_default_value OFF) +if (MSVC) + set(skip_pybind11_default_value ON) +endif() + option(SKIP_PYBIND11 "Skip generating Python bindings via pybind11" - OFF) + ${skip_pybind11_default_value}) include(CMakeDependentOption) cmake_dependent_option(USE_SYSTEM_PATHS_FOR_RUBY_INSTALLATION From 2dd5ab6f9e0b7b3220723c5fa5f4f763746c0851 Mon Sep 17 00:00:00 2001 From: Bi0T1N <28802083+Bi0T1N@users.noreply.github.com> Date: Mon, 8 May 2023 17:32:06 +0200 Subject: [PATCH 9/9] Add tests to increase test coverage (#533) Signed-off-by: Bi0T1N Co-authored-by: Bi0T1N --- src/Color_TEST.cc | 14 ++++++++++++++ src/Material_TEST.cc | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/src/Color_TEST.cc b/src/Color_TEST.cc index 4dac211d2..33b1d8d3b 100644 --- a/src/Color_TEST.cc +++ b/src/Color_TEST.cc @@ -74,6 +74,14 @@ TEST(Color, Color) EXPECT_FLOAT_EQ(0.0f, clr0.B()); EXPECT_FLOAT_EQ(1.0f, clr0.A()); EXPECT_EQ(clr0.AsRGBA(), 255u); + + auto clrcpy = math::Color(clr0); + EXPECT_FLOAT_EQ(0.0f, clrcpy.R()); + EXPECT_FLOAT_EQ(0.0f, clrcpy.G()); + EXPECT_FLOAT_EQ(0.0f, clrcpy.B()); + EXPECT_FLOAT_EQ(1.0f, clrcpy.A()); + EXPECT_EQ(clrcpy.AsRGBA(), 255u); + clr0.A(0.0); EXPECT_EQ(clr0.AsRGBA(), 0u); @@ -256,6 +264,12 @@ TEST(Color, Color) EXPECT_TRUE(math::equal(0.1f, clr.G())); EXPECT_TRUE(math::equal(0.2f, clr.B())); EXPECT_TRUE(math::equal(0.3f, clr.A())); + + clrcpy = math::Color(clr); + EXPECT_TRUE(math::equal(0.25f, clrcpy.R())); + EXPECT_TRUE(math::equal(0.1f, clrcpy.G())); + EXPECT_TRUE(math::equal(0.2f, clrcpy.B())); + EXPECT_TRUE(math::equal(0.3f, clrcpy.A())); } diff --git a/src/Material_TEST.cc b/src/Material_TEST.cc index c79a3a817..9424d0ed4 100644 --- a/src/Material_TEST.cc +++ b/src/Material_TEST.cc @@ -114,6 +114,13 @@ TEST(MaterialTest, Accessors) EXPECT_TRUE(mat.Name().empty()); } + { + Material mat("wood"); + EXPECT_FALSE(mat.Name().empty()); + mat.SetName("MyWood"); + EXPECT_EQ("MyWood", mat.Name()); + } + { Material material; material.SetToNearestDensity(19300.0);