Skip to content

Commit 821524b

Browse files
committed
frame-collision.hpp : throw out of range error
tests/python/test_frames.py : ask for the corresponding error type
1 parent 10b07f6 commit 821524b

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

include/aligator/modelling/multibody/frame-collision.hpp

+6-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ struct FrameCollisionResidualTpl : UnaryFunctionTpl<_Scalar>, frame_api {
2323
ALIGATOR_UNARY_FUNCTION_INTERFACE(Scalar);
2424
using BaseData = typename Base::Data;
2525
using Model = pinocchio::ModelTpl<Scalar>;
26-
using ManifoldPtr = xyz::polymorphic<ManifoldAbstractTpl<Scalar>>;
2726
using SE3 = pinocchio::SE3Tpl<Scalar>;
2827
using Data = FrameCollisionDataTpl<Scalar>;
2928
using GeometryModel = pinocchio::GeometryModel;
@@ -36,6 +35,12 @@ struct FrameCollisionResidualTpl : UnaryFunctionTpl<_Scalar>, frame_api {
3635
const pinocchio::PairIndex frame_pair_id)
3736
: Base(ndx, nu, 1), pin_model_(model), geom_model_(geom_model),
3837
frame_pair_id_(frame_pair_id) {
38+
if (frame_pair_id >= geom_model_.collisionPairs.size()) {
39+
ALIGATOR_OUT_OF_RANGE_ERROR(
40+
"Provided collision pair index {:d} is not valid "
41+
"(geom model has {:d} pairs).",
42+
frame_pair_id, geom_model.collisionPairs.size());
43+
}
3944
frame_id1_ =
4045
geom_model
4146
.geometryObjects[geom_model.collisionPairs[frame_pair_id_].first]

tests/python/test_frames.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
"""
55

66
import aligator
7+
from aligator import manifolds
8+
79
import numpy as np
810
import pinocchio as pin
9-
10-
from aligator import manifolds
11+
import pytest
1112

1213

1314
model = pin.buildSampleModelHumanoid()
@@ -274,11 +275,11 @@ def test_frame_collision_no_collision_pairs():
274275
x0 = space.integrate(x0, d)
275276

276277
geometry = pin.buildSampleGeometryModelHumanoid(model)
277-
aligator.FrameCollisionResidual(ndx, nu, model, geometry, 0)
278+
with pytest.raises(IndexError, match="Provided collision pair index"):
279+
aligator.FrameCollisionResidual(ndx, nu, model, geometry, 0)
278280

279281

280282
if __name__ == "__main__":
281283
import sys
282-
import pytest
283284

284285
sys.exit(pytest.main(sys.argv))

0 commit comments

Comments
 (0)