Skip to content

Commit 0782e04

Browse files
committed
DataLoadMCAP: add support to mcap logTime
The DataLoadMCAP plugin support only the publishTime of the mcap message. Add a checkbox in the load dialog to enable the logTime. Signed-off-by: Luca Bartoli <[email protected]>
1 parent 4aa9074 commit 0782e04

File tree

4 files changed

+20
-0
lines changed

4 files changed

+20
-0
lines changed

plotjuggler_plugins/DataLoadMCAP/dataload_mcap.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ bool DataLoadMCAP::xmlSaveState(QDomDocument& doc, QDomElement& parent_element)
3737
QDomElement elem = doc.createElement("parameters");
3838
const auto& params = *_dialog_parameters;
3939
elem.setAttribute("use_timestamp", int(params.use_timestamp));
40+
elem.setAttribute("use_log_time", int(params.use_log_time));
4041
elem.setAttribute("clamp_large_arrays", int(params.clamp_large_arrays));
4142
elem.setAttribute("max_array_size", params.max_array_size);
4243
elem.setAttribute("selected_topics", params.selected_topics.join(';'));
@@ -55,6 +56,7 @@ bool DataLoadMCAP::xmlLoadState(const QDomElement& parent_element)
5556
}
5657
mcap::LoadParams params;
5758
params.use_timestamp = bool(elem.attribute("use_timestamp").toInt());
59+
params.use_log_time = bool(elem.attribute("use_log_time").toInt());
5860
params.clamp_large_arrays = bool(elem.attribute("clamp_large_arrays").toInt());
5961
params.max_array_size = elem.attribute("max_array_size").toInt();
6062
params.selected_topics = elem.attribute("selected_topics").split(';');
@@ -227,6 +229,10 @@ bool DataLoadMCAP::readDataFromFile(FileLoadInfo* info, PlotDataMapRef& plot_dat
227229

228230
// MCAP always represents publishTime in nanoseconds
229231
double timestamp_sec = double(msg_view.message.publishTime) * 1e-9;
232+
if(_dialog_parameters->use_log_time)
233+
{
234+
timestamp_sec = double(msg_view.message.logTime) * 1e-9;
235+
}
230236
auto parser_it = parsers_by_channel.find(msg_view.channel->id);
231237
if (parser_it == parsers_by_channel.end())
232238
{

plotjuggler_plugins/DataLoadMCAP/dataload_params.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ struct LoadParams
1111
unsigned max_array_size;
1212
bool clamp_large_arrays;
1313
bool use_timestamp = false;
14+
bool use_log_time = false;
1415
};
1516

1617
} // namespace mcap

plotjuggler_plugins/DataLoadMCAP/dialog_mcap.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ DialogMCAP::DialogMCAP(const std::unordered_map<int, mcap::ChannelPtr>& channels
3434
params.clamp_large_arrays = settings.value(prefix + "clamp", true).toBool();
3535
params.max_array_size = settings.value(prefix + "max_array", 500).toInt();
3636
params.use_timestamp = settings.value(prefix + "use_timestamp", false).toBool();
37+
params.use_log_time = settings.value(prefix + "use_log_time", false).toBool();
3738
}
3839
else
3940
{
@@ -50,6 +51,7 @@ DialogMCAP::DialogMCAP(const std::unordered_map<int, mcap::ChannelPtr>& channels
5051
}
5152
ui->spinBox->setValue(params.max_array_size);
5253
ui->checkBoxUseTimestamp->setChecked(params.use_timestamp);
54+
ui->checkBoxUseLogTimestamp->setChecked(params.use_log_time);
5355

5456
int row = 0;
5557
for (const auto& [id, channel] : channels)
@@ -83,6 +85,7 @@ mcap::LoadParams DialogMCAP::getParams() const
8385
params.max_array_size = ui->spinBox->value();
8486
params.clamp_large_arrays = ui->radioClamp->isChecked();
8587
params.use_timestamp = ui->checkBoxUseTimestamp->isChecked();
88+
params.use_log_time = ui->checkBoxUseLogTimestamp->isChecked();
8689

8790
QItemSelectionModel* select = ui->tableWidget->selectionModel();
8891
QStringList selected_topics;
@@ -107,10 +110,13 @@ void DialogMCAP::accept()
107110
bool clamp_checked = ui->radioClamp->isChecked();
108111
int max_array = ui->spinBox->value();
109112
bool use_timestamp = ui->checkBoxUseTimestamp->isChecked();
113+
bool use_log_time = ui->checkBoxUseLogTimestamp->isChecked();
114+
110115

111116
settings.setValue(prefix + "clamp", clamp_checked);
112117
settings.setValue(prefix + "max_array", max_array);
113118
settings.setValue(prefix + "use_timestamp", use_timestamp);
119+
settings.setValue(prefix + "use_log_time", use_log_time);
114120

115121
QItemSelectionModel* select = ui->tableWidget->selectionModel();
116122
QStringList selected_topics;

plotjuggler_plugins/DataLoadMCAP/dialog_mcap.ui

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@
7272
</property>
7373
</widget>
7474
</item>
75+
<item>
76+
<widget class="QCheckBox" name="checkBoxUseLogTimestamp">
77+
<property name="text">
78+
<string>Use the mcap log time (default publish time)</string>
79+
</property>
80+
</widget>
81+
</item>
7582
<item>
7683
<widget class="Line" name="line">
7784
<property name="frameShadow">

0 commit comments

Comments
 (0)