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

Merge gz-math7 ➡️ main #595

Merged
merged 23 commits into from
Jun 21, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6276839
Prepare for 6.15.0 release (#554)
azeey Sep 1, 2023
ea9ae34
Replace CMake Python variables with new ones from FindPython3 module …
Bi0T1N Oct 6, 2023
9a5ad69
Suppress warnings on MSVC (#564)
mjcarroll Oct 13, 2023
da26a39
Update github action workflows (#569)
azeey Nov 13, 2023
82ef851
Update CI badges in README (#571)
iche033 Dec 21, 2023
c5c3fc4
Prepare for 6.15.1 (#572)
azeey Jan 5, 2024
2ff6611
Merge 6 into 7
azeey Jan 18, 2024
ec655a9
Merge pull request #574 from azeey/6_to_7
azeey Jan 18, 2024
5b2522a
Added MecanumDriveOdometry Python wrapper (#549)
ahcorde Feb 13, 2024
1649f76
Expose non-const reference to edges
ms-jagadeeshan Feb 22, 2024
4db514b
Revert changes break ABI
ms-jagadeeshan Mar 1, 2024
48364a1
Merge 6 into 7
azeey Mar 14, 2024
fe745ca
Merge pull request #582 from azeey/6_to_7
azeey Mar 14, 2024
9f55592
Prepare for 7.4.0 (#583)
azeey Mar 15, 2024
11caaf7
Merge branch 'gz-math7' into gz-math7
caguero Mar 22, 2024
91c73b9
Merge pull request #580 from ms-jagadeeshan/gz-math7
caguero Mar 22, 2024
5bf896f
Add missing eigen3.hh header for bazel build (#585)
shameekganguly Apr 1, 2024
f0d4e59
bazel: correctly export license (#586)
mjcarroll Apr 5, 2024
a76819b
Add package.xml (#581)
azeey Apr 19, 2024
02e37a6
Enable 24.04 CI on harmonic (#590)
scpeters May 2, 2024
3a36b9d
Backport: Adding cone primitives. (#594)
bperseghetti Jun 17, 2024
7a595ca
Prepare for 7.5.0 (#599)
bperseghetti Jun 18, 2024
c6c775e
Merge branch 'gz-math7' into scpeters/merge_7_8
scpeters Jun 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
name: Ubuntu CI

on: [push, pull_request]
on:
pull_request:
push:
branches:
- 'ign-math[0-9]'
- 'gz-math[0-9]'
- 'main'

jobs:
jammy-ci:
runs-on: ubuntu-latest
name: Ubuntu Jammy CI
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Compile and test
id: ci
uses: gazebo-tooling/action-gz-ci@jammy
Expand All @@ -22,7 +28,7 @@ jobs:
name: Ubuntu Noble CI
steps:
- name: Checkout
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: Compile and test
id: ci
uses: gazebo-tooling/action-gz-ci@noble
11 changes: 11 additions & 0 deletions .github/workflows/package_xml.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Validate package.xml

on:
pull_request:

jobs:
package-xml:
runs-on: ubuntu-latest
name: Validate package.xml
steps:
- uses: gazebo-tooling/action-gz-ci/validate_package_xml@jammy
1 change: 0 additions & 1 deletion .github/workflows/triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,3 @@ jobs:
with:
project-url: https://github.com/orgs/gazebosim/projects/7
github-token: ${{ secrets.TRIAGE_TOKEN }}

12 changes: 11 additions & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,23 @@ load(
"@gz//bazel/lint:lint.bzl",
"add_lint_tests",
)
load(
"@rules_license//rules:license.bzl",
"license",
)

package(
default_applicable_licenses = [GZ_ROOT + "math:license"],
default_visibility = GZ_VISIBILITY,
features = GZ_FEATURES,
)

licenses(["notice"]) # Apache-2.0
license(
name = "license",
package_name = "gz-math",
)

licenses(["notice"])

exports_files(["LICENSE"])

Expand Down
83 changes: 83 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,67 @@

## Gazebo Math 7.x

### Gazebo Math 7.5.0 (2024-06-18)

1. Backport: Adding cone primitives.
* [Pull request #594](https://github.com/gazebosim/gz-math/pull/594)

1. Enable 24.04 CI on harmonic
* [Pull request #590](https://github.com/gazebosim/gz-math/pull/590)

1. Add package.xml
* [Pull request #581](https://github.com/gazebosim/gz-math/pull/581)

1. bazel: correctly export license
* [Pull request #586](https://github.com/gazebosim/gz-math/pull/586)

1. Add missing eigen3.hh header for bazel build
* [Pull request #585](https://github.com/gazebosim/gz-math/pull/585)

1. Expose non-const reference to edges
* [Pull request #580](https://github.com/gazebosim/gz-math/pull/580)

### Gazebo Math 7.4.0 (2024-03-14)

1. Added MecanumDriveOdometry Python wrapper
* [Pull request #549](https://github.com/gazebosim/gz-math/pull/549)

1. Update CI badges in README
* [Pull request #571](https://github.com/gazebosim/gz-math/pull/571)

1. Infrastructure
* [Pull request #569](https://github.com/gazebosim/gz-math/pull/569)

1. Suppress warnings on MSVC
* [Pull request #564](https://github.com/gazebosim/gz-math/pull/564)

1. Remove the use of numeric_limits in appendToStream test
* [Pull request #553](https://github.com/gazebosim/gz-math/pull/553)

1. Replace CMake Python variables with new ones from FindPython3 module
* [Pull request #402](https://github.com/gazebosim/gz-math/pull/402)

1. Fix `Matrix3_TEST.py` on Windows with conda-forge dependencies
* [Pull request #561](https://github.com/gazebosim/gz-math/pull/561)

1. Fix small typo cppgetstarted.md
* [Pull request #560](https://github.com/gazebosim/gz-math/pull/560)

1. Update Ubuntu Binary installation since apt-key is deprecated
* [Pull request #559](https://github.com/gazebosim/gz-math/pull/559)

1. Update file tree in README to point out pybind11
* [Pull request #558](https://github.com/gazebosim/gz-math/pull/558)

1. Update tutorial/color.md
* [Pull request #557](https://github.com/gazebosim/gz-math/pull/557)

1. ign->gz in README.md
* [Pull request #556](https://github.com/gazebosim/gz-math/pull/556)

1. Update example_triangle.md
* [Pull request #555](https://github.com/gazebosim/gz-math/pull/555)

### Gazebo Math 7.3.0 (2023-08-29)

1. Adds a validity check for Sessions created using the `TimeVaryingVolumetricGrid`
Expand Down Expand Up @@ -274,6 +335,28 @@

## Gazebo Math 6.x

## Gazebo Math 6.15.1 (2024-01-05)

1. Replace CMake Python variables with new ones from FindPython3 module
* [Pull request #402](https://github.com/gazebosim/gz-math/pull/402)

1. Suppress warnings on MSVC
* [Pull request #564](https://github.com/gazebosim/gz-math/pull/564)

1. Infrastructure
* [Pull request #569](https://github.com/gazebosim/gz-math/pull/569)

## Gazebo Math 6.15.0 (2023-09-01)

1. Fixes for testing in non standard architectures
* [Pull request #546](https://github.com/gazebosim/gz-math/pull/546)

1. MecanumDriveOdometry to handle odometry estimation of Mecanum wheeled models
* [Pull request #486](https://github.com/gazebosim/gz-math/pull/486)

1. Infrastructure
* [Pull request #547](https://github.com/gazebosim/gz-math/pull/547)

## Gazebo Math 6.14.0 (2023-04-14)

1. Disable pybind11 on windows by default
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Gazebo Math : Math classes and functions for robot applications

**Maintainer:** nate AT openrobotics DOT org
**Maintainer:** scpeters AT openrobotics DOT org

[![GitHub open issues](https://img.shields.io/github/issues-raw/gazebosim/gz-math.svg)](https://github.com/gazebosim/gz-math/issues)
[![GitHub open pull requests](https://img.shields.io/github/issues-pr-raw/gazebosim/gz-math.svg)](https://github.com/gazebosim/gz-math/pulls)
Expand All @@ -9,10 +9,10 @@

Build | Status
-- | --
Test coverage | [![codecov](https://codecov.io/gh/gazebosim/gz-math/branch/gz-math8/graph/badge.svg)](https://codecov.io/gh/gazebosim/gz-math/branch/gz-math8)
Ubuntu Focal | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=ignition_math-ci-gz-math8-focal-amd64)](https://build.osrfoundation.org/job/ignition_math-ci-gz-math8-focal-amd64)
Homebrew | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=ignition_math-ci-gz-math8-homebrew-amd64)](https://build.osrfoundation.org/job/ignition_math-ci-gz-math8-homebrew-amd64)
Windows | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=ign_math-ci-win)](https://build.osrfoundation.org/job/ign_math-ci-win)
Test coverage | [![codecov](https://codecov.io/gh/gazebosim/gz-math/branch/main/graph/badge.svg)](https://codecov.io/gh/gazebosim/gz-math/branch/main)
Ubuntu Noble | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_math-ci-main-noble-amd64)](https://build.osrfoundation.org/job/gz_math-ci-main-noble-amd64)
Homebrew | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_math-ci-main-homebrew-amd64)](https://build.osrfoundation.org/job/gz_math-ci-main-homebrew-amd64)
Windows | [![Build Status](https://build.osrfoundation.org/buildStatus/icon?job=gz_math-main-win)](https://build.osrfoundation.org/job/gz_math-main-win)

Gazebo Math, a component of [Gazebo](https://gazebosim.org), provides general purpose math
classes and functions designed for robotic applications.
Expand Down
15 changes: 11 additions & 4 deletions eigen3/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,21 +1,28 @@
load(
"@gz//bazel/skylark:build_defs.bzl",
"GZ_FEATURES",
"GZ_ROOT",
"GZ_VISIBILITY",
"gz_configure_header",
"gz_export_header",
"gz_include_header",
)

package(default_applicable_licenses = [GZ_ROOT + "math:license"])

public_headers = glob([
"include/gz/math/eigen3/*.hh",
])

gz_include_header(
name = "eigen3_hh_genrule",
out = "include/gz/math/eigen3.hh",
hdrs = public_headers,
)

cc_library(
name = "eigen3",
srcs = public_headers,
hdrs = public_headers,
hdrs = public_headers + [
"include/gz/math/eigen3.hh",
],
includes = ["include"],
visibility = GZ_VISIBILITY,
deps = [
Expand Down
13 changes: 13 additions & 0 deletions include/gz/math/graph/Graph.hh
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,19 @@ namespace graph
return iter->second;
}

/// \brief Get a mutable reference to an edge using its Id.
/// \param[in] _id The Id of the edge.
/// \return A mutable reference to the edge with Id = _id or NullEdge if
/// not found.
public: EdgeType &EdgeFromId(const EdgeId &_id)
{
auto iter = this->edges.find(_id);
if (iter == this->edges.end())
return EdgeType::NullEdge;

return iter->second;
}

/// \brief Stream insertion operator. The output uses DOT graph
/// description language.
/// \param[out] _out The output stream.
Expand Down
25 changes: 25 additions & 0 deletions package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format2.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="2">
<name>gz-math8</name>
<version>8.0.0</version>
<description>Gazebo Math : Math classes and functions for robot applications</description>
<maintainer email="[email protected]">Steve Peters</maintainer>
<maintainer email="[email protected]">Aditya Pande</maintainer>
<license>Apache License 2.0</license>
<url type="website">https://github.com/gazebosim/gz-math</url>

<buildtool_depend>cmake</buildtool_depend>

<build_depend>gz-cmake4</build_depend>
<build_depend>pybind11-dev</build_depend>

<depend>eigen</depend>
<depend>gz-utils3</depend>

<test_depend>python3-pytest</test_depend>

<export>
<build_type>cmake</build_type>
</export>
</package>
2 changes: 2 additions & 0 deletions src/graph/GraphUndirected_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -368,6 +368,8 @@ TEST(UndirectedGraphTest, AddEdge)
auto edge = graph.EdgeFromId(e2.Id());
EXPECT_DOUBLE_EQ(5.0, edge.Data());
EXPECT_DOUBLE_EQ(6.0, edge.Weight());
edge.Data() = 7.0;
EXPECT_DOUBLE_EQ(7.0, edge.Data());

// Check that the edges point to the right vertices.
EXPECT_EQ(0u, e0.Vertices().first);
Expand Down
9 changes: 2 additions & 7 deletions src/python_pybind11/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,3 @@
if(WIN32 AND CMAKE_BUILD_TYPE STREQUAL "Debug")
# pybind11 logic for setting up a debug build when both a debug and release
# python interpreter are present in the system seems to be pretty much broken.
# This works around the issue.
set(PYTHON_LIBRARIES "${PYTHON_DEBUG_LIBRARIES}")
endif()

message(STATUS "Building pybind11 interfaces")
set(BINDINGS_MODULE_NAME "math${PROJECT_VERSION_MAJOR}")
# Split from main extension and converted to pybind11
Expand All @@ -29,6 +22,7 @@ pybind11_add_module(${BINDINGS_MODULE_NAME} MODULE
src/Matrix3.cc
src/Matrix4.cc
src/Matrix6.cc
src/MecanumDriveOdometry.cc
src/MovingWindowFilter.cc
src/PID.cc
src/Polynomial3.cc
Expand Down Expand Up @@ -137,6 +131,7 @@ if (BUILD_TESTING)
Matrix3_TEST
Matrix4_TEST
Matrix6_TEST
MecanumDriveOdometry_TEST
MovingWindowFilter_TEST
OrientedBox_TEST
PID_TEST
Expand Down
74 changes: 74 additions & 0 deletions src/python_pybind11/src/MecanumDriveOdometry.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
/*
* Copyright (C) 2023 Open Source Robotics Foundation
*
* 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
*
* 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.
*
*/

#include <string>

#include <gz/math/MecanumDriveOdometry.hh>

#include "MecanumDriveOdometry.hh"

namespace gz
{
namespace math
{
namespace python
{
void defineMathMecanumDriveOdometry(py::module &m, const std::string &typestr)
{
using Class = gz::math::MecanumDriveOdometry;
std::string pyclass_name = typestr;
py::class_<Class>(m,
pyclass_name.c_str(),
py::buffer_protocol())
.def(py::init<size_t>(), py::arg("_windowSize") = 10)
.def("init", &Class::Init, "Initialize the odometry")
.def("initialized", &Class::Initialized, "Get whether Init has been called.")
.def("update",
&Class::Update,
"Updates the odometry class with latest wheels and "
"steerings position")
.def("heading", &Class::Heading, "Get the heading.")
.def("x", &Class::X, "Get the X position.")
.def("y", &Class::Y, "Get the Y position.")
.def("linear_velocity",
&Class::LinearVelocity,
"Get the linear velocity.")
.def("angular_velocity",
&Class::AngularVelocity,
"Get the angular velocity.")
.def("lateral_velocity",
&Class::LateralVelocity,
"Get the lateral velocity.")
.def("set_wheel_params",
&Class::SetWheelParams,
"Set the wheel parameters including the radius and separation.")
.def("set_velocity_rolling_window_size",
&Class::SetVelocityRollingWindowSize,
"Set the velocity rolling window size.")
.def("wheel_separation", &Class::WheelSeparation, "Get the wheel separation")
.def("wheel_base", &Class::WheelBase, "Get the wheel base")
.def("left_wheel_radius",
&Class::LeftWheelRadius,
"Get the left wheel radius")
.def("right_wheel_radius",
&Class::RightWheelRadius,
"Get the rightwheel radius");

}
} // namespace python
} // namespace math
} // namespace gz
Loading