Skip to content

Commit 47d250a

Browse files
committed
Fix signal tracing format.
1 parent 7a68737 commit 47d250a

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

include/dynamic-graph/signal-caster.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,15 @@ inline static double run (std::istringstream &iss) {
9090

9191
/// Template class used to display a signal value.
9292
template <typename T> struct signal_trace {
93-
inline static void run(const T &value, std::ostream &os) { os << value << '\n'; }
93+
inline static void run(const T &value, std::ostream &os) { os << value; }
9494
};
9595

9696
/// Template specialization of signal_trace for Eigen objects
97-
template <typename Derived> struct signal_trace<Eigen::DenseBase<Derived> > {
98-
inline static void run(const Eigen::DenseBase<Derived> &value, std::ostream &os) {
97+
template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
98+
struct signal_trace<Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> > {
99+
inline static void run(const Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> &value, std::ostream &os) {
99100
static const Eigen::IOFormat row_format (Eigen::StreamPrecision,
100-
Eigen::DontAlignCols, ", ", ", ", "", "", "", "\n");
101+
Eigen::DontAlignCols, "\t", "\t", "", "", "", "");
101102
os << value.format(row_format);
102103
}
103104
};

tests/debug-tracer.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct MyEntity : public dynamicgraph::Entity {
2525

2626
dynamicgraph::Signal<double, int> m_sigdSIN;
2727
dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT;
28+
dynamicgraph::SignalTimeDependent<Vector, int> m_sigVTimeDepSOUT;
2829
dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT;
2930

3031
explicit MyEntity(const std::string &name)
@@ -33,12 +34,15 @@ struct MyEntity : public dynamicgraph::Entity {
3334
m_sigdTimeDepSOUT(boost::bind(&MyEntity::update, this, _1, _2),
3435
m_sigdSIN,
3536
"MyEntity(" + name + ")::input(double)::out_double"),
37+
m_sigVTimeDepSOUT(boost::bind(&MyEntity::updateVector, this, _1, _2),
38+
m_sigdSIN,
39+
"MyEntity(" + name + ")::input(vector)::out_vector"),
3640
m_sigdTwoTimeDepSOUT(
3741
boost::bind(&MyEntity::update, this, _1, _2), m_sigdSIN,
3842
"MyEntity(" + name + ")::input(double)::out2double")
3943

4044
{
41-
signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT << m_sigdTwoTimeDepSOUT);
45+
signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT << m_sigVTimeDepSOUT << m_sigdTwoTimeDepSOUT);
4246
}
4347

4448
virtual void display(std::ostream &os) const {
@@ -52,11 +56,20 @@ struct MyEntity : public dynamicgraph::Entity {
5256
res = aDouble;
5357
return res;
5458
}
59+
60+
Vector &updateVector(Vector &res, const int &inTime) {
61+
const double &aDouble = m_sigdSIN(inTime);
62+
res.resize(2);
63+
res << aDouble, 2*aDouble;
64+
return res;
65+
}
5566
};
5667
DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN(MyEntity, "MyEntity");
5768
} // namespace dynamicgraph
5869

5970
BOOST_AUTO_TEST_CASE(test_tracer) {
71+
using dynamicgraph::Vector;
72+
6073
// Creates a tracer.
6174
dynamicgraph::Tracer &atracer = *dynamic_cast<dynamicgraph::Tracer *>(
6275
dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer",
@@ -75,13 +88,19 @@ BOOST_AUTO_TEST_CASE(test_tracer) {
7588

7689
/// Add trace by name
7790
atracer.addSignalToTraceByName("my-entity.out_double", "output");
91+
/// Add trace by name
92+
atracer.addSignalToTraceByName("my-entity.out_vector", "output-vector");
7893

7994
dynamicgraph::SignalBase<int> &aSignal = entity.getSignal("out2double");
8095

8196
dynamicgraph::Signal<double, int> &aSignalInt =
8297
*(dynamic_cast<dynamicgraph::Signal<double, int> *>(
8398
&entity.getSignal("in_double")));
8499

100+
dynamicgraph::Signal<Vector, int> &aSignalVector =
101+
*(dynamic_cast<dynamicgraph::Signal<Vector, int> *>(
102+
&entity.getSignal("out_vector")));
103+
85104
/// Add trace by signal object
86105
atracer.addSignalToTrace(aSignal, "output2");
87106

@@ -91,7 +110,10 @@ BOOST_AUTO_TEST_CASE(test_tracer) {
91110

92111
for (int i = 0; i < 1000; i++) {
93112
aSignal.setTime(i);
113+
aSignalInt.access(i);
94114
aSignalInt.setTime(i);
115+
aSignalVector.recompute(i);
116+
aSignalVector.setTime(i);
95117
atracer.recordTrigger(i, i);
96118
}
97119

0 commit comments

Comments
 (0)