Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions include/rt_usb_9axisimu_driver/rt_usb_9axisimu_driver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ class RtUsb9axisimuRosDriver
bool startCommunication();
void stopCommunication(void);
void checkDataFormat(const double timeout = 5.0);
bool checkReadData(const double timeout = 5.0);
bool hasAsciiDataFormat(void);
bool hasBinaryDataFormat(void);
bool hasRefreshedImuData(void);
Expand Down
14 changes: 14 additions & 0 deletions src/rt_usb_9axisimu_driver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,20 @@ void RtUsb9axisimuRosDriver::checkDataFormat(const double timeout)
}
}

bool RtUsb9axisimuRosDriver::checkReadData(const double timeout)
{
const auto start_time = std::chrono::system_clock::now();
double time_elapsed = 0.0;
while (time_elapsed < timeout) {
const auto end_time = std::chrono::system_clock::now();
time_elapsed = (double)std::chrono::duration_cast<std::chrono::seconds>(end_time - start_time).count();
if (readSensorData() == RtUsb9axisimuRosDriver::ReadStatus::SUCCESS) {
return true;
}
}
return false;
}

bool RtUsb9axisimuRosDriver::hasAsciiDataFormat(void)
{
return data_format_ == DataFormat::ASCII;
Expand Down
4 changes: 2 additions & 2 deletions src/rt_usb_9axisimu_driver_component.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ CallbackReturn Driver::on_activate(const rclcpp_lifecycle::State &)
{
RCLCPP_INFO(this->get_logger(), "on_activate() is called.");

if (driver_->readSensorData() == RtUsb9axisimuRosDriver::ReadStatus::FAILURE) {
RCLCPP_ERROR(this->get_logger(), "readSensorData() returns FAILURE, please check your devices.");
if (!driver_->checkReadData()) {
RCLCPP_ERROR(this->get_logger(), "checkReadData() returns false, please check your devices.");
return CallbackReturn::ERROR;
}
imu_data_raw_pub_->on_activate();
Expand Down