GCC Code Coverage Report


Directory: ./
File: include/crocoddyl/multibody/contact-base.hxx
Date: 2025-06-03 08:14:12
Exec Total Coverage
Lines: 0 64 0.0%
Functions: 0 34 0.0%
Branches: 0 46 0.0%

Line Branch Exec Source
1 ///////////////////////////////////////////////////////////////////////////////
2 // BSD 3-Clause License
3 //
4 // Copyright (C) 2019-2025, LAAS-CNRS, University of Edinburgh,
5 // Heriot-Watt University
6 // Copyright note valid unless otherwise stated in individual files.
7 // All rights reserved.
8 ///////////////////////////////////////////////////////////////////////////////
9
10 namespace crocoddyl {
11
12 template <typename Scalar>
13 ✗ ContactModelAbstractTpl<Scalar>::ContactModelAbstractTpl(
14 std::shared_ptr<StateMultibody> state, const pinocchio::ReferenceFrame type,
15 const std::size_t nc, const std::size_t nu)
16 ✗ : state_(state), nc_(nc), nu_(nu), id_(0), type_(type) {}
17
18 template <typename Scalar>
19 ✗ ContactModelAbstractTpl<Scalar>::ContactModelAbstractTpl(
20 std::shared_ptr<StateMultibody> state, const pinocchio::ReferenceFrame type,
21 const std::size_t nc)
22 ✗ : state_(state), nc_(nc), nu_(state->get_nv()), id_(0), type_(type) {}
23
24 template <typename Scalar>
25 ✗ ContactModelAbstractTpl<Scalar>::ContactModelAbstractTpl(
26 std::shared_ptr<StateMultibody> state, const std::size_t nc,
27 const std::size_t nu)
28 ✗ : state_(state),
29 ✗ nc_(nc),
30 ✗ nu_(nu),
31 ✗ id_(0),
32 ✗ type_(pinocchio::ReferenceFrame::LOCAL) {
33 ✗ std::cerr << "Deprecated: Use constructor that passes the type of contact, "
34 "this assumes is pinocchio::LOCAL."
35 ✗ << std::endl;
36 ✗ }
37
38 template <typename Scalar>
39 ✗ ContactModelAbstractTpl<Scalar>::ContactModelAbstractTpl(
40 std::shared_ptr<StateMultibody> state, const std::size_t nc)
41 ✗ : state_(state),
42 ✗ nc_(nc),
43 ✗ nu_(state->get_nv()),
44 ✗ id_(0),
45 ✗ type_(pinocchio::ReferenceFrame::LOCAL) {
46 ✗ std::cerr << "Deprecated: Use constructor that passes the type of contact, "
47 "this assumes is pinocchio::LOCAL."
48 ✗ << std::endl;
49 ✗ }
50
51 template <typename Scalar>
52 ✗ void ContactModelAbstractTpl<Scalar>::updateForceDiff(
53 const std::shared_ptr<ContactDataAbstract>& data, const MatrixXs& df_dx,
54 const MatrixXs& df_du) const {
55 ✗ if (static_cast<std::size_t>(df_dx.rows()) != nc_ ||
56 ✗ static_cast<std::size_t>(df_dx.cols()) != state_->get_ndx())
57 ✗ throw_pretty("df_dx has wrong dimension");
58
59 ✗ if (static_cast<std::size_t>(df_du.rows()) != nc_ ||
60 ✗ static_cast<std::size_t>(df_du.cols()) != nu_)
61 ✗ throw_pretty("df_du has wrong dimension");
62
63 ✗ data->df_dx = df_dx;
64 ✗ data->df_du = df_du;
65 ✗ }
66
67 template <typename Scalar>
68 ✗ void ContactModelAbstractTpl<Scalar>::setZeroForce(
69 const std::shared_ptr<ContactDataAbstract>& data) const {
70 ✗ data->f.setZero();
71 ✗ data->fext.setZero();
72 ✗ }
73
74 template <typename Scalar>
75 ✗ void ContactModelAbstractTpl<Scalar>::setZeroForceDiff(
76 const std::shared_ptr<ContactDataAbstract>& data) const {
77 ✗ data->df_dx.setZero();
78 ✗ data->df_du.setZero();
79 ✗ }
80
81 template <typename Scalar>
82 std::shared_ptr<ContactDataAbstractTpl<Scalar> >
83 ✗ ContactModelAbstractTpl<Scalar>::createData(
84 pinocchio::DataTpl<Scalar>* const data) {
85 return std::allocate_shared<ContactDataAbstract>(
86 ✗ Eigen::aligned_allocator<ContactDataAbstract>(), this, data);
87 }
88
89 template <typename Scalar>
90 ✗ void ContactModelAbstractTpl<Scalar>::print(std::ostream& os) const {
91 ✗ os << boost::core::demangle(typeid(*this).name());
92 ✗ }
93
94 template <typename Scalar>
95 const std::shared_ptr<StateMultibodyTpl<Scalar> >&
96 ✗ ContactModelAbstractTpl<Scalar>::get_state() const {
97 ✗ return state_;
98 }
99
100 template <typename Scalar>
101 ✗ std::size_t ContactModelAbstractTpl<Scalar>::get_nc() const {
102 ✗ return nc_;
103 }
104
105 template <typename Scalar>
106 ✗ std::size_t ContactModelAbstractTpl<Scalar>::get_nu() const {
107 ✗ return nu_;
108 }
109
110 template <typename Scalar>
111 ✗ pinocchio::FrameIndex ContactModelAbstractTpl<Scalar>::get_id() const {
112 ✗ return id_;
113 }
114
115 template <typename Scalar>
116 ✗ pinocchio::ReferenceFrame ContactModelAbstractTpl<Scalar>::get_type() const {
117 ✗ return type_;
118 }
119
120 template <typename Scalar>
121 ✗ void ContactModelAbstractTpl<Scalar>::set_id(const pinocchio::FrameIndex id) {
122 ✗ id_ = id;
123 ✗ }
124
125 template <typename Scalar>
126 ✗ void ContactModelAbstractTpl<Scalar>::set_type(
127 const pinocchio::ReferenceFrame type) {
128 ✗ type_ = type;
129 ✗ }
130
131 template <class Scalar>
132 ✗ std::ostream& operator<<(std::ostream& os,
133 const ContactModelAbstractTpl<Scalar>& model) {
134 ✗ model.print(os);
135 ✗ return os;
136 }
137
138 } // namespace crocoddyl
139