Skip to content
Snippets Groups Projects
Commit 75834429 authored by Fabian Reister's avatar Fabian Reister
Browse files

fix: kinematicunit might not be available on startup and causes a nullptr exception.

parent 4c668234
No related branches found
No related tags found
2 merge requests!157armem/dev => master,!144robot state memory update
#include "Segment.h"
#include <IceUtil/Time.h>
#include <RobotAPI/libraries/armem_robot/aron/RobotDescription.aron.generated.h>
#include <sstream>
#include "ArmarXCore/core/exceptions/local/ExpressionException.h"
#include "ArmarXCore/core/logging/Logging.h"
#include <ArmarXCore/core/time/TimeUtil.h>
......@@ -20,6 +22,7 @@
#include <RobotAPI/libraries/armem_robot/aron/Robot.aron.generated.h>
#include <RobotAPI/libraries/armem_robot/aron_conversions.h>
#include <RobotAPI/libraries/armem_robot/robot_conversions.h>
#include <thread>
namespace armarx::armem::server::robot_state::description
{
......@@ -93,7 +96,27 @@ namespace armarx::armem::server::robot_state::description
void Segment::updateRobotDescription()
{
auto kinematicUnit = robotUnit->getKinematicUnit();
ARMARX_CHECK_NOT_NULL(robotUnit);
const auto waitForKinematicUnit = [&]()
{
while (true)
{
auto kinematicUnit = robotUnit->getKinematicUnit();
if (kinematicUnit)
{
ARMARX_INFO << "Kinematic unit is now available.";
return kinematicUnit;
}
ARMARX_INFO << "Waiting for kinematic unit ...";
std::this_thread::sleep_for(std::chrono::seconds(1));
}
};
auto kinematicUnit = waitForKinematicUnit();
ARMARX_CHECK_NOT_NULL(kinematicUnit);
const auto robotName = kinematicUnit->getRobotName();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment