chore: remove branch-only tests and generated artifacts

This commit is contained in:
xtkuang 2026-08-18 16:17:46 +08:00
parent f611ad1db8
commit aac719a932
112 changed files with 19 additions and 38894 deletions

12
.gitignore vendored
View File

@ -7,3 +7,15 @@
/third_party/osqp/
/third_party/OsqpEigen/
/output
# Generated development artifacts
compile_commands.json
MUJOCO_LOG.TXT
__pycache__/
*.py[cod]
*.log
# Generated plots and vision debug output
/data/*.png
/data/*.svg
/python/vision_servo/red_point.png

View File

@ -1,6 +0,0 @@
Fri Jul 24 15:39:05 2026
ERROR: could not create window
Fri Jul 24 15:40:37 2026
ERROR: could not create window

View File

@ -20,59 +20,3 @@ add_library(
)
install(TARGETS ume_legacy_controller LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(ume_legacy_controller_golden_test
tests/ume_legacy_controller_golden_test.cpp
)
add_executable(pinocchio_ume_legacy_model_adapter_test
tests/pinocchio_ume_legacy_model_adapter_test.cpp
)
target_link_libraries(ume_legacy_controller_golden_test
PRIVATE
cmvr_es::algorithms::ume_legacy
gtest
gtest_main
pthread
)
target_link_libraries(pinocchio_ume_legacy_model_adapter_test
PRIVATE
cmvr_es::algorithms::ume_legacy
gtest
gtest_main
pthread
)
foreach(_ume_legacy_test_target
ume_legacy_controller_golden_test
pinocchio_ume_legacy_model_adapter_test)
target_compile_definitions(${_ume_legacy_test_target}
PRIVATE
CMVR_UME_FIXED_MODEL_PATH="${CMAKE_SOURCE_DIR}/model/ume/v6_bimanual/robot.xml"
CMVR_UME_FLOATING_MODEL_PATH="${CMAKE_SOURCE_DIR}/model/ume/v6_imu/robot.xml"
)
add_test(
NAME ${_ume_legacy_test_target}
COMMAND ${_ume_legacy_test_target}
)
endforeach()
set(_ume_legacy_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _ume_legacy_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
foreach(_ume_legacy_test_target
ume_legacy_controller_golden_test
pinocchio_ume_legacy_model_adapter_test)
set_tests_properties(${_ume_legacy_test_target} PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ume_legacy_test_environment}"
)
endforeach()
endif()

View File

@ -1,392 +0,0 @@
#include "pinocchio_ume_legacy_model_adapter.h"
#include <array>
#include <cmath>
#include <cstddef>
#include <limits>
#include <stdexcept>
#include <string>
#include <gtest/gtest.h>
#ifndef CMVR_UME_FIXED_MODEL_PATH
#error "CMVR_UME_FIXED_MODEL_PATH must identify the deployed fixed UME MJCF"
#endif
#ifndef CMVR_UME_FLOATING_MODEL_PATH
#error "CMVR_UME_FLOATING_MODEL_PATH must identify the deployed floating UME MJCF"
#endif
namespace cmvr::ume_legacy {
namespace {
constexpr double kNumericalTolerance = 1e-10;
PinocchioUmeLegacyModelAdapter makeAdapter()
{
return PinocchioUmeLegacyModelAdapter(
CMVR_UME_FIXED_MODEL_PATH,
CMVR_UME_FLOATING_MODEL_PATH);
}
BimanualModelState makeGoldenState(
const PinocchioUmeLegacyModelAdapter& adapter)
{
BimanualModelState state;
state.world_from_imu =
adapter.contract().base_from_imu;
state.right_position_rad =
{0.1, -0.2, 0.3, -0.4,
0.2, -0.1, 0.15, -0.05};
state.left_position_rad =
{-0.1, 0.2, -0.3, 0.4,
-0.2, 0.1, -0.15, 0.05};
return state;
}
template <std::size_t Size>
void expectFinite(const std::array<double, Size>& values)
{
for (std::size_t index = 0; index < Size; ++index) {
EXPECT_TRUE(std::isfinite(values[index]))
<< "index " << index;
}
}
template <std::size_t Size>
void expectNear(
const std::array<double, Size>& actual,
const std::array<double, Size>& expected,
double tolerance = kNumericalTolerance)
{
for (std::size_t index = 0; index < Size; ++index) {
EXPECT_NEAR(actual[index], expected[index], tolerance)
<< "index " << index;
}
}
Transform4x4RowMajor multiplyTransforms(
const Transform4x4RowMajor& left,
const Transform4x4RowMajor& right)
{
Transform4x4RowMajor result{};
for (std::size_t row = 0; row < 4; ++row) {
for (std::size_t column = 0; column < 4; ++column) {
for (std::size_t inner = 0; inner < 4; ++inner) {
result[row * 4 + column] +=
left[row * 4 + inner] *
right[inner * 4 + column];
}
}
}
return result;
}
Transform4x4RowMajor makeNoncommutingWorldFromBase()
{
constexpr double roll = 0.2;
constexpr double pitch = -0.35;
constexpr double yaw = 0.47;
const double sr = std::sin(roll);
const double cr = std::cos(roll);
const double sp = std::sin(pitch);
const double cp = std::cos(pitch);
const double sy = std::sin(yaw);
const double cy = std::cos(yaw);
return {
cy * cp,
cy * sp * sr - sy * cr,
cy * sp * cr + sy * sr,
0.4,
sy * cp,
sy * sp * sr + cy * cr,
sy * sp * cr - cy * sr,
-0.1,
-sp,
cp * sr,
cp * cr,
0.8,
0.0, 0.0, 0.0, 1.0};
}
TEST(PinocchioUmeLegacyModelAdapterTest,
LoadsOriginalMjcfWithoutGeometryAssetsAndFreezesContract)
{
const auto adapter = makeAdapter();
const auto& contract = adapter.contract();
EXPECT_EQ(contract.fixed_nq, 16U);
EXPECT_EQ(contract.fixed_nv, 16U);
EXPECT_EQ(contract.floating_nq, 23U);
EXPECT_EQ(contract.floating_nv, 22U);
EXPECT_EQ(adapter.fixedModelPath(), CMVR_UME_FIXED_MODEL_PATH);
EXPECT_EQ(
adapter.floatingModelPath(),
CMVR_UME_FLOATING_MODEL_PATH);
// This transform comes from the original floating model's imu site.
// Pinocchio buildModel parses it without loading STL geometry.
const Transform4x4RowMajor expected_base_from_imu{
0.0, 0.0, -1.0, -0.0298,
0.0, 1.0, 0.0, 0.0,
1.0, 0.0, 0.0, -0.229564,
0.0, 0.0, 0.0, 1.0};
expectNear(
contract.base_from_imu,
expected_base_from_imu,
1e-5);
}
TEST(PinocchioUmeLegacyModelAdapterTest,
FloatingBaseRneaProducesFiniteFrozenJointEfforts)
{
const auto adapter = makeAdapter();
const auto state = makeGoldenState(adapter);
JointVector right{};
JointVector left{};
ASSERT_TRUE(
adapter.computeGravityCompensation(
state, right, left));
expectFinite(right);
expectFinite(left);
expectNear(
right,
{4.2579946000243867,
-3.101883528283977,
5.8349126697703291,
-3.2335040596068012,
0.54313804667559806,
-0.28419763993223052,
0.075420409617272505,
-0.0050792810993999194});
expectNear(
left,
{-4.2570142852347947,
3.1002195124462104,
-5.8319486672094438,
3.2334454894750602,
-0.54274278459746039,
0.28419800074629464,
-0.075420524366616282,
0.0050792800399334561});
}
TEST(PinocchioUmeLegacyModelAdapterTest,
ImuDerivedBaseOrientationReversesGravityUnderHalfTurn)
{
const auto adapter = makeAdapter();
auto state = makeGoldenState(adapter);
JointVector upright_right{};
JointVector upright_left{};
ASSERT_TRUE(adapter.computeGravityCompensation(
state, upright_right, upright_left));
const Transform4x4RowMajor world_from_base_half_turn_x{
1.0, 0.0, 0.0, 0.0,
0.0, -1.0, 0.0, 0.0,
0.0, 0.0, -1.0, 0.0,
0.0, 0.0, 0.0, 1.0};
state.world_from_imu = multiplyTransforms(
world_from_base_half_turn_x,
adapter.contract().base_from_imu);
JointVector inverted_right{};
JointVector inverted_left{};
ASSERT_TRUE(adapter.computeGravityCompensation(
state, inverted_right, inverted_left));
for (std::size_t index = 0; index < kArmDof; ++index) {
EXPECT_NEAR(
inverted_right[index],
-upright_right[index],
kNumericalTolerance)
<< "right joint index " << index;
EXPECT_NEAR(
inverted_left[index],
-upright_left[index],
kNumericalTolerance)
<< "left joint index " << index;
}
}
TEST(PinocchioUmeLegacyModelAdapterTest,
NoncommutingImuPoseAndAsymmetricVelocitiesMatchFrozenRnea)
{
const auto adapter = makeAdapter();
auto state = makeGoldenState(adapter);
state.world_from_imu = multiplyTransforms(
makeNoncommutingWorldFromBase(),
adapter.contract().base_from_imu);
state.right_velocity_rad_s =
{0.7, -0.4, 0.2, -0.1,
1.1, -0.8, 0.5, -0.3};
state.left_velocity_rad_s =
{-0.6, 0.9, -0.2, 0.4,
-1.0, 0.7, -0.5, 0.25};
JointVector right{};
JointVector left{};
ASSERT_TRUE(adapter.computeGravityCompensation(
state, right, left));
expectFinite(right);
expectFinite(left);
expectNear(
right,
{2.080988418159027,
-1.3277143244666021,
2.3194639604892364,
-2.0699331198781317,
0.40716561983947641,
-0.20631486209184946,
0.19335176308712126,
-0.01319194690287678});
expectNear(
left,
{-5.6976332776660232,
2.9915426497221254,
-2.5700109870406949,
2.1379083447512071,
-0.36441212045948712,
0.19226687457105307,
-0.085601264411386338,
0.0065129700338426369});
}
TEST(PinocchioUmeLegacyModelAdapterTest,
FixedModelRotationalProjectionMatchesFrozenValues)
{
const auto adapter = makeAdapter();
const auto state = makeGoldenState(adapter);
RawHapticFeedback feedback;
feedback.shoulder_moment = {0.5, -0.2, 0.3};
feedback.elbow_effort = 1.2;
feedback.wrist_moment = {-0.4, 0.1, 0.6};
feedback.gripper_effort = -0.7;
ProjectedHapticEffort right{};
ASSERT_TRUE(adapter.projectHapticFeedback(
state, ArmSide::Right, feedback, right));
expectFinite(right.shoulder_joint_torque);
expectFinite(right.wrist_joint_torque);
expectNear(
right.shoulder_joint_torque,
{-0.5,
-0.12674237993402607,
-0.30915027509149773});
expectNear(
right.wrist_joint_torque,
{-0.065872923184419674,
-0.028130723042130143,
-0.72743566625468636});
EXPECT_DOUBLE_EQ(right.elbow_effort, feedback.elbow_effort);
EXPECT_DOUBLE_EQ(
right.gripper_effort,
feedback.gripper_effort);
ProjectedHapticEffort left{};
ASSERT_TRUE(adapter.projectHapticFeedback(
state, ArmSide::Left, feedback, left));
expectFinite(left.shoulder_joint_torque);
expectFinite(left.wrist_joint_torque);
expectNear(
left.shoulder_joint_torque,
{-0.5,
-0.36032671657345572,
0.083245914753940151});
expectNear(
left.wrist_joint_torque,
{-0.13497315246130309,
0.15764759010789803,
-0.70779204949804098});
EXPECT_DOUBLE_EQ(left.elbow_effort, feedback.elbow_effort);
EXPECT_DOUBLE_EQ(
left.gripper_effort,
feedback.gripper_effort);
}
TEST(PinocchioUmeLegacyModelAdapterTest,
RejectsNonRigidOrNonFiniteInputsAndZerosOutputs)
{
const auto adapter = makeAdapter();
auto state = makeGoldenState(adapter);
JointVector right;
JointVector left;
right.fill(1.0);
left.fill(1.0);
state.world_from_imu = {};
EXPECT_FALSE(adapter.computeGravityCompensation(
state, right, left));
expectNear(right, JointVector{});
expectNear(left, JointVector{});
state = makeGoldenState(adapter);
state.right_position_rad[3] =
std::numeric_limits<double>::quiet_NaN();
right.fill(1.0);
left.fill(1.0);
EXPECT_FALSE(adapter.computeGravityCompensation(
state, right, left));
expectNear(right, JointVector{});
expectNear(left, JointVector{});
state = makeGoldenState(adapter);
RawHapticFeedback feedback;
feedback.shoulder_moment[1] =
std::numeric_limits<double>::infinity();
ProjectedHapticEffort projected;
projected.elbow_effort = 1.0;
EXPECT_FALSE(adapter.projectHapticFeedback(
state, ArmSide::Right, feedback, projected));
expectNear(
projected.shoulder_joint_torque,
Vector3{});
expectNear(projected.wrist_joint_torque, Vector3{});
EXPECT_DOUBLE_EQ(projected.elbow_effort, 0.0);
EXPECT_DOUBLE_EQ(projected.gripper_effort, 0.0);
feedback = {};
projected.elbow_effort = 1.0;
EXPECT_FALSE(adapter.projectHapticFeedback(
state,
static_cast<ArmSide>(99),
feedback,
projected));
expectNear(
projected.shoulder_joint_torque,
Vector3{});
expectNear(projected.wrist_joint_torque, Vector3{});
EXPECT_DOUBLE_EQ(projected.elbow_effort, 0.0);
EXPECT_DOUBLE_EQ(projected.gripper_effort, 0.0);
}
TEST(PinocchioUmeLegacyModelAdapterTest,
MissingModelFailsAtConstruction)
{
EXPECT_THROW(
PinocchioUmeLegacyModelAdapter(
"/definitely/missing/ume_fixed.xml",
CMVR_UME_FLOATING_MODEL_PATH),
std::runtime_error);
}
TEST(PinocchioUmeLegacyModelAdapterTest,
RejectsModelRoleSwapEvenThoughBothMjcfFilesParse)
{
try {
PinocchioUmeLegacyModelAdapter adapter(
CMVR_UME_FLOATING_MODEL_PATH,
CMVR_UME_FIXED_MODEL_PATH);
(void)adapter;
FAIL() << "swapped fixed/floating models were accepted";
} catch (const std::runtime_error& error) {
EXPECT_NE(
std::string(error.what()).find(
"UME fixed MJCF contract violation: "
"expected nq/nv/njoints 16/16/17"),
std::string::npos);
}
}
} // namespace
} // namespace cmvr::ume_legacy

View File

@ -1,216 +0,0 @@
#include "ume_legacy_controller.h"
#include "ume_legacy_model_adapter.h"
#include <array>
#include <cmath>
#include <cstddef>
#include <limits>
#include <gtest/gtest.h>
namespace cmvr::ume_legacy {
namespace {
constexpr double kTolerance = 1e-12;
void expectJointVectorNear(
const JointVector& actual,
const JointVector& expected,
double tolerance = kTolerance)
{
for (std::size_t index = 0; index < kArmDof; ++index) {
EXPECT_NEAR(actual[index], expected[index], tolerance)
<< "joint index " << index;
}
}
TEST(UmeLegacyControllerGoldenTest,
OriginalTuningAndFrictionMatchPythonOracle)
{
const auto tuning = originalTuning();
EXPECT_DOUBLE_EQ(tuning.friction_coefficient[0], 1.6);
EXPECT_DOUBLE_EQ(tuning.friction_coefficient[4], 0.032);
EXPECT_DOUBLE_EQ(tuning.feedback_limit_dm4340_nm, 4.0);
EXPECT_DOUBLE_EQ(tuning.feedback_limit_dm4310_nm, 1.0);
const JointVector velocity{
-1.0, -0.1, 0.0, 2.0 * std::acos(-1.0) / 180.0,
-10.0, -1.0, 1.0, 10.0};
const JointVector expected{
-0.4, -0.16000000000000003, 0.0,
0.055850536063818547,
-0.1, -0.032, 0.032, 0.1};
expectJointVectorNear(
frictionCompensation(velocity, tuning),
expected);
}
TEST(UmeLegacyControllerGoldenTest,
StictionUsesStrictLegacyThresholds)
{
const auto tuning = originalTuning();
const double minimum =
tuning.stiction_threshold_min_rad_s[0];
const double maximum =
tuning.stiction_threshold_max_rad_s[0];
const JointVector at_threshold{
minimum,
-minimum,
maximum,
-maximum,
0.0, 0.0, 0.0, 0.0};
expectJointVectorNear(
stictionCompensation(at_threshold, tuning),
JointVector{});
const JointVector strictly_inside{
2.0 * minimum,
-2.0 * minimum,
std::nextafter(
minimum, std::numeric_limits<double>::infinity()),
std::nextafter(maximum, 0.0),
2.0 * minimum,
-2.0 * minimum,
std::nextafter(
minimum, std::numeric_limits<double>::infinity()),
std::nextafter(maximum, 0.0)};
expectJointVectorNear(
stictionCompensation(strictly_inside, tuning),
{0.5, -0.5, 0.5, 0.5,
0.0, 0.0, 0.0, 0.0});
}
TEST(UmeLegacyControllerGoldenTest,
FeedbackScaleMatchesLegacyNormAndTanhGoldenValues)
{
const auto tuning = originalTuning();
EXPECT_NEAR(
feedbackScale(0.0, tuning),
0.20680448412090907,
kTolerance);
EXPECT_DOUBLE_EQ(
feedbackScale(tuning.feedback_error_tolerance_rad, tuning),
0.25);
EXPECT_NEAR(
feedbackScale(0.05, tuning),
0.32861047013244982,
kTolerance);
EXPECT_NEAR(
feedbackScale(-0.2, tuning),
0.48734517579834447,
kTolerance);
}
TEST(UmeLegacyControllerGoldenTest,
CompleteRightSideCommandMatchesPythonGoldenVector)
{
SideControlInput input;
input.side = ArmSide::Right;
input.joint_velocity_rad_s = {
-1.0, -0.1, 0.0, 2.0 * std::acos(-1.0) / 180.0,
-10.0, -1.0, 1.0, 10.0};
input.gravity_compensation_nm =
{0.5, -0.5, 1.0, -1.0,
0.25, -0.25, 0.75, -0.75};
input.projected_haptic.shoulder_joint_torque =
{1.2, -3.0, 10.0};
input.projected_haptic.elbow_effort = 2.0;
input.projected_haptic.wrist_joint_torque =
{0.5, -2.0, 5.0};
input.projected_haptic.gripper_effort = 3.0;
input.tracking_error.shoulder_rotation = {0.0, 0.0, 0.0};
input.tracking_error.elbow =
originalTuning().feedback_error_tolerance_rad;
input.tracking_error.wrist_rotation = {0.03, 0.04, 0.0};
input.tracking_error.gripper = -0.2;
const auto output = computeSideCommand(input);
expectJointVectorNear(
output.friction_compensation_nm,
{-0.4, -0.16000000000000003, 0.0,
0.055850536063818547,
-0.1, -0.032, 0.032, 0.1});
expectJointVectorNear(
output.stiction_compensation_nm,
{0.0, -0.5, 0.0, 0.5,
0.0, 0.0, 0.0, 0.0});
expectJointVectorNear(
output.feedforward_without_haptic_nm,
{0.099999999999999978, -1.1600000000000001,
1.0, -0.44414946393618149,
0.14999999999999999, -0.28200000000000003,
0.78200000000000003, -0.65000000000000002});
expectJointVectorNear(
output.signed_interaction_nm,
{1.2, -3.0, 10.0, 2.0,
0.5, -2.0, 5.0, -3.0});
expectJointVectorNear(
output.limited_feedback_nm,
{0.24816538094509089, -0.62041345236272716,
2.0680448412090908, 0.5,
0.16430523506622491, -0.65722094026489963,
1.0, -1.0});
expectJointVectorNear(
output.command_torque_nm,
{-0.14816538094509091, -0.53958654763727298,
-1.0680448412090908, -0.94414946393618149,
-0.014305235066224914, 0.37522094026489961,
-0.21799999999999997, 0.34999999999999998});
}
TEST(UmeLegacyControllerGoldenTest,
LeftAndRightScalarSignsAndGroupLimitsArePreserved)
{
SideControlInput input;
input.projected_haptic.shoulder_joint_torque =
{100.0, -100.0, 100.0};
input.projected_haptic.elbow_effort = 100.0;
input.projected_haptic.wrist_joint_torque =
{100.0, -100.0, 100.0};
input.projected_haptic.gripper_effort = 100.0;
input.tracking_error.shoulder_rotation = {10.0, 0.0, 0.0};
input.tracking_error.elbow = 10.0;
input.tracking_error.wrist_rotation = {10.0, 0.0, 0.0};
input.tracking_error.gripper = 10.0;
input.side = ArmSide::Right;
const auto right = computeSideCommand(input);
expectJointVectorNear(
right.signed_interaction_nm,
{100.0, -100.0, 100.0, 100.0,
100.0, -100.0, 100.0, -100.0});
expectJointVectorNear(
right.command_torque_nm,
{-4.0, 4.0, -4.0, -4.0,
-1.0, 1.0, -1.0, 1.0});
input.side = ArmSide::Left;
const auto left = computeSideCommand(input);
expectJointVectorNear(
left.signed_interaction_nm,
{100.0, -100.0, 100.0, -100.0,
100.0, -100.0, 100.0, 100.0});
expectJointVectorNear(
left.command_torque_nm,
{-4.0, 4.0, -4.0, 4.0,
-1.0, 1.0, -1.0, -1.0});
}
TEST(UmeLegacyControllerGoldenTest,
FeedbackClipDoesNotClampOtherFeedforwardTerms)
{
SideControlInput input;
input.gravity_compensation_nm =
{50.0, -50.0, 0.0, 0.0, 0.0, 0.0, 20.0, -20.0};
const auto output = computeSideCommand(input);
EXPECT_DOUBLE_EQ(output.command_torque_nm[0], 50.0);
EXPECT_DOUBLE_EQ(output.command_torque_nm[1], -50.0);
EXPECT_DOUBLE_EQ(output.command_torque_nm[6], 20.0);
EXPECT_DOUBLE_EQ(output.command_torque_nm[7], -20.0);
}
} // namespace
} // namespace cmvr::ume_legacy

View File

@ -28,20 +28,3 @@ target_link_libraries(common PUBLIC
add_library(cmvr_es::common ALIAS common)
install(TARGETS common LIBRARY DESTINATION lib)
#add_executable(image_display_test
# utils/visualization/image_display_test.cpp
#)
#
#target_link_libraries(image_display_test
# PRIVATE
# cmvr_es::common
# cmvr_es::perception
# cmvr_es::device::realsense_camera
# cmvr_es::proto
# glog
# gtest
# gtest_main
# pthread
#)
#

View File

@ -13,26 +13,3 @@ target_link_libraries(logging PUBLIC
add_library(cmvr_es::logging ALIAS logging)
install(TARGETS logging ARCHIVE DESTINATION lib)
if(BUILD_TESTING)
add_executable(logger_test
tests/logger_test.cpp
)
target_link_libraries(logger_test PRIVATE
cmvr_es::logging
gtest
gtest_main
pthread
)
add_test(NAME logger_test COMMAND logger_test)
set(_logger_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _logger_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(logger_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_logger_test_environment}"
)
endif()

View File

@ -1,93 +0,0 @@
#include "common/base/logging/logger.h"
#include <algorithm>
#include <array>
#include <filesystem>
#include <fstream>
#include <iterator>
#include <string>
#include <gtest/gtest.h>
#include <unistd.h>
namespace cmvr::logging {
namespace {
class LoggerTest : public testing::Test {
protected:
void SetUp() override
{
std::array<char, 64> pattern{};
const std::string value = "/tmp/cmvr-logger-test-XXXXXX";
std::copy(value.begin(), value.end(), pattern.begin());
if (char* created = ::mkdtemp(pattern.data())) {
directory_ = created;
}
ASSERT_FALSE(directory_.empty());
}
void TearDown() override
{
shutdownLogging();
std::error_code error;
std::filesystem::remove_all(directory_, error);
}
config::LoggerConfig warningFileConfig() const
{
config::LoggerConfig config;
config.set_minimum_level(config::LOG_LEVEL_DEBUG);
config.set_directory(directory_.string());
config.set_flush_interval_seconds(3600);
auto* route = config.add_routes();
route->set_level(config::LOG_LEVEL_WARNING);
route->set_terminal(false);
route->set_file(true);
return config;
}
std::string fileContents() const
{
std::ifstream input(directory_ / "logger_test.log");
return {std::istreambuf_iterator<char>(input),
std::istreambuf_iterator<char>()};
}
std::filesystem::path directory_;
};
TEST_F(LoggerTest, ExplicitFlushMakesWarningVisibleInFile)
{
ASSERT_TRUE(initLogging(
warningFileConfig(), "logger_test", directory_));
Logger::instance().write(
Level::WARNING, __FILE__, __LINE__, "warning sentinel");
Logger::instance().flush();
EXPECT_NE(fileContents().find("warning sentinel"), std::string::npos);
}
TEST_F(LoggerTest, ErrorIsVisibleInFileImmediately)
{
auto config = warningFileConfig();
config.mutable_routes(0)->set_level(config::LOG_LEVEL_ERROR);
ASSERT_TRUE(initLogging(config, "logger_test", directory_));
Logger::instance().write(
Level::ERROR, __FILE__, __LINE__, "error sentinel");
EXPECT_NE(fileContents().find("error sentinel"), std::string::npos);
}
TEST_F(LoggerTest, FlushIsSafeOutsideInitializedLifetime)
{
Logger::instance().flush();
ASSERT_TRUE(initLogging(
warningFileConfig(), "logger_test", directory_));
shutdownLogging();
Logger::instance().flush();
}
} // namespace
} // namespace cmvr::logging

View File

@ -1,609 +0,0 @@
#pragma once
#include <algorithm>
#include <cstdint>
#include <string>
#include <utility>
#include <vector>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
namespace cmvr::common {
/**
* @brief 图像像素坐标。
*
* 坐标系约定:
* - `u`:图像列坐标,向右为正,单位像素。
* - `v`:图像行坐标,向下为正,单位像素。
*/
struct Pixel {
int u{0}; // 图像像素列坐标,单位像素。
int v{0}; // 图像像素行坐标,单位像素。
};
/**
* @brief BGR 颜色定义。
*/
struct Color {
uint8_t b{0}; // 蓝色通道,范围 [0, 255]。
uint8_t g{255}; // 绿色通道,范围 [0, 255]。
uint8_t r{0}; // 红色通道,范围 [0, 255]。
/**
* @brief 转为 OpenCV 的 `cv::Scalar`。
*/
cv::Scalar toCvScalar() const {
return cv::Scalar(static_cast<double>(b),
static_cast<double>(g),
static_cast<double>(r));
}
/**
* @brief 预定义红色。
*/
static Color red() { return Color{0, 0, 255}; }
/**
* @brief 预定义绿色。
*/
static Color green() { return Color{0, 255, 0}; }
/**
* @brief 预定义蓝色。
*/
static Color blue() { return Color{255, 0, 0}; }
/**
* @brief 预定义黄色。
*/
static Color yellow() { return Color{0, 255, 255}; }
/**
* @brief 预定义白色。
*/
static Color white() { return Color{255, 255, 255}; }
/**
* @brief 预定义黑色。
*/
static Color black() { return Color{0, 0, 0}; }
};
/**
* @brief 图像上的文本叠加配置。
*/
struct TextOverlay {
std::string text; // 需要显示的字符串内容。
Pixel position_px{}; // 文本左下角在图像像素坐标系中的位置。
Color color{Color::green()}; // 文本颜色。
double font_scale{0.7}; // OpenCV 字体缩放系数。
int thickness{2}; // 文本线宽,单位像素。
int font_face{cv::FONT_HERSHEY_SIMPLEX}; // OpenCV 字体类型。
bool draw_background{false}; // 是否绘制文本背景框。
Color background_color{Color::black()}; // 文本背景框颜色。
int background_padding_px{2}; // 文本背景框四周留白,单位像素。
};
/**
* @brief 图像上的点叠加配置。
*/
struct PointOverlay {
Pixel position_px{}; // 点中心在图像像素坐标系中的位置。
Color color{Color::red()}; // 点颜色。
int radius_px{5}; // 圆点半径,单位像素。
int thickness{2}; // 线宽,`-1` 表示填充。
std::string label; // 点旁边附带显示的字符串;为空时不显示。
Pixel label_offset_px{8, -8}; // 标签相对点中心的像素偏移。
double label_font_scale{0.6}; // 点标签字体缩放系数。
int label_thickness{2}; // 点标签线宽,单位像素。
};
/**
* @brief 图像上的圆圈叠加配置。
*/
struct CircleOverlay {
Pixel center_px{}; // 圆心在图像像素坐标系中的位置。
int radius_px{10}; // 圆半径,单位像素。
Color color{Color::yellow()}; // 圆圈颜色。
int thickness{2}; // 圆圈线宽,单位像素,`-1` 表示填充。
};
/**
* @brief 图像上的十字叠加配置。
*/
struct CrossOverlay {
Pixel center_px{}; // 十字中心在图像像素坐标系中的位置。
int arm_length_px{8}; // 单侧十字臂长度,单位像素。
Color color{Color::blue()}; // 十字颜色。
int thickness{2}; // 十字线宽,单位像素。
};
/**
* @brief 通用图像叠加显示接口。
*
* 该接口不依赖任何感知或跟踪类,只抽象三类输入:
* - 待显示的图像数据;
* - 文本叠加项;
* - 点叠加项。
*/
class ImageDisplay {
public:
virtual ~ImageDisplay() = default;
/**
* @brief 设置窗口名称。
* @param window_name 显示窗口名称。
*/
virtual void setWindowName(const std::string& window_name) = 0;
/**
* @brief 设置待显示的图像。
* @param image 输入图像,支持灰度图、BGR 图或 BGRA 图。
*/
virtual void setImage(const cv::Mat& image) = 0;
/**
* @brief 清空所有叠加项,但保留当前图像。
*/
virtual void clearOverlays() = 0;
/**
* @brief 添加文本叠加项。
* @param overlay 文本叠加配置。
*/
virtual void showText(const TextOverlay& overlay) = 0;
/**
* @brief 按位置、字符串、颜色和大小直接添加文本。
* @param text 需要显示的字符串内容。
* @param position_px 文本左下角在图像像素坐标系中的位置。
* @param color 文本颜色。
* @param font_scale OpenCV 字体缩放系数。
* @param thickness 文本线宽,单位像素。
*/
virtual void showText(const std::string& text,
const Pixel& position_px,
const Color& color,
double font_scale = 0.7,
int thickness = 2) = 0;
/**
* @brief 添加点叠加项。
* @param overlay 点叠加配置。
*/
virtual void showPoint(const PointOverlay& overlay) = 0;
/**
* @brief 按位置、颜色和大小直接添加点。
* @param position_px 点中心在图像像素坐标系中的位置。
* @param color 点颜色。
* @param radius_px 圆点半径,单位像素。
* @param thickness 线宽,`-1` 表示填充。
* @param label 点旁边附带显示的字符串;为空时不显示。
*/
virtual void showPoint(const Pixel& position_px,
const Color& color,
int radius_px = 5,
int thickness = 2,
const std::string& label = {}) = 0;
/**
* @brief 显示圆圈叠加项。
* @param overlay 圆圈叠加配置。
*/
virtual void showCircle(const CircleOverlay& overlay) = 0;
/**
* @brief 按位置、半径、颜色和线宽直接显示圆圈。
* @param center_px 圆心在图像像素坐标系中的位置。
* @param radius_px 圆半径,单位像素。
* @param color 圆圈颜色。
* @param thickness 圆圈线宽,单位像素,`-1` 表示填充。
*/
virtual void showCircle(const Pixel& center_px,
int radius_px,
const Color& color,
int thickness = 2) = 0;
/**
* @brief 显示十字叠加项。
* @param overlay 十字叠加配置。
*/
virtual void showCross(const CrossOverlay& overlay) = 0;
/**
* @brief 按位置、尺寸、颜色和线宽直接显示十字。
* @param center_px 十字中心在图像像素坐标系中的位置。
* @param arm_length_px 单侧十字臂长度,单位像素。
* @param color 十字颜色。
* @param thickness 十字线宽,单位像素。
*/
virtual void showCross(const Pixel& center_px,
int arm_length_px,
const Color& color,
int thickness = 2) = 0;
/**
* @brief 判断当前是否已有待显示图像。
*/
virtual bool hasImage() const = 0;
/**
* @brief 将当前图像和叠加项渲染到输出图像。
* @param rendered_image 输出的渲染结果图像,BGR 三通道。
* @return 渲染成功返回 `true`。
*/
virtual bool render(cv::Mat& rendered_image) const = 0;
/**
* @brief 显示当前渲染结果。
* @param wait_key_ms `cv::waitKey` 等待时间,单位毫秒。
* @return 返回 `cv::waitKey` 的按键值;若没有可显示图像则返回 `-1`。
*/
virtual int show(int wait_key_ms = 1) = 0;
/**
* @brief 关闭显示窗口。
*/
virtual void close() = 0;
};
/**
* @brief 基于 OpenCV HighGUI 的图像叠加显示实现。
*/
class OpenCvImageCvDisplay final : public ImageDisplay {
public:
/**
* @brief 构造显示器。
* @param window_name 显示窗口名称。
*/
explicit OpenCvImageCvDisplay(std::string window_name = "image_overlay")
: window_name_(std::move(window_name)) {}
/**
* @brief 设置窗口名称。
* @param window_name 显示窗口名称。
*/
void setWindowName(const std::string& window_name) override {
window_name_ = window_name;
}
/**
* @brief 设置待显示图像。
* @param image 输入图像,支持灰度图、BGR 图或 BGRA 图。
*/
void setImage(const cv::Mat& image) override {
image_ = image.clone();
}
/**
* @brief 清空所有叠加项,但保留当前图像。
*/
void clearOverlays() override {
texts_.clear();
points_.clear();
circles_.clear();
crosses_.clear();
}
/**
* @brief 添加文本叠加项。
* @param overlay 文本叠加配置。
*/
void showText(const TextOverlay& overlay) override {
texts_.push_back(overlay);
}
/**
* @brief 按位置、字符串、颜色和大小直接添加文本。
* @param text 需要显示的字符串内容。
* @param position_px 文本左下角在图像像素坐标系中的位置。
* @param color 文本颜色。
* @param font_scale OpenCV 字体缩放系数。
* @param thickness 文本线宽,单位像素。
*/
void showText(const std::string& text,
const Pixel& position_px,
const Color& color,
double font_scale = 0.7,
int thickness = 2) override {
TextOverlay overlay;
overlay.text = text;
overlay.position_px = position_px;
overlay.color = color;
overlay.font_scale = font_scale;
overlay.thickness = thickness;
showText(overlay);
}
/**
* @brief 添加点叠加项。
* @param overlay 点叠加配置。
*/
void showPoint(const PointOverlay& overlay) override {
points_.push_back(overlay);
}
/**
* @brief 按位置、颜色和大小直接添加点。
* @param position_px 点中心在图像像素坐标系中的位置。
* @param color 点颜色。
* @param radius_px 圆点半径,单位像素。
* @param thickness 线宽,`-1` 表示填充。
* @param label 点旁边附带显示的字符串;为空时不显示。
*/
void showPoint(const Pixel& position_px,
const Color& color,
int radius_px = 5,
int thickness = 2,
const std::string& label = {}) override {
PointOverlay overlay;
overlay.position_px = position_px;
overlay.color = color;
overlay.radius_px = radius_px;
overlay.thickness = thickness;
overlay.label = label;
showPoint(overlay);
}
/**
* @brief 显示圆圈叠加项。
* @param overlay 圆圈叠加配置。
*/
void showCircle(const CircleOverlay& overlay) override {
circles_.push_back(overlay);
}
/**
* @brief 按位置、半径、颜色和线宽直接显示圆圈。
* @param center_px 圆心在图像像素坐标系中的位置。
* @param radius_px 圆半径,单位像素。
* @param color 圆圈颜色。
* @param thickness 圆圈线宽,单位像素,`-1` 表示填充。
*/
void showCircle(const Pixel& center_px,
int radius_px,
const Color& color,
int thickness = 2) override {
CircleOverlay overlay;
overlay.center_px = center_px;
overlay.radius_px = radius_px;
overlay.color = color;
overlay.thickness = thickness;
showCircle(overlay);
}
/**
* @brief 显示十字叠加项。
* @param overlay 十字叠加配置。
*/
void showCross(const CrossOverlay& overlay) override {
crosses_.push_back(overlay);
}
/**
* @brief 按位置、尺寸、颜色和线宽直接显示十字。
* @param center_px 十字中心在图像像素坐标系中的位置。
* @param arm_length_px 单侧十字臂长度,单位像素。
* @param color 十字颜色。
* @param thickness 十字线宽,单位像素。
*/
void showCross(const Pixel& center_px,
int arm_length_px,
const Color& color,
int thickness = 2) override {
CrossOverlay overlay;
overlay.center_px = center_px;
overlay.arm_length_px = arm_length_px;
overlay.color = color;
overlay.thickness = thickness;
showCross(overlay);
}
/**
* @brief 判断当前是否已有待显示图像。
*/
bool hasImage() const override {
return !image_.empty();
}
/**
* @brief 将当前图像和叠加项渲染到输出图像。
* @param rendered_image 输出的渲染结果图像,BGR 三通道。
* @return 渲染成功返回 `true`。
*/
bool render(cv::Mat& rendered_image) const override {
if (!toBgrImage(image_, rendered_image)) {
return false;
}
for (const CircleOverlay& overlay : circles_) {
drawCircle(rendered_image, overlay);
}
for (const CrossOverlay& overlay : crosses_) {
drawCross(rendered_image, overlay);
}
for (const PointOverlay& overlay : points_) {
drawPoint(rendered_image, overlay);
}
for (const TextOverlay& overlay : texts_) {
drawText(rendered_image, overlay);
}
return true;
}
/**
* @brief 显示当前渲染结果。
* @param wait_key_ms `cv::waitKey` 等待时间,单位毫秒。
* @return 返回 `cv::waitKey` 的按键值;若没有可显示图像则返回 `-1`。
*/
int show(int wait_key_ms = 1) override {
cv::Mat rendered_image;
if (!render(rendered_image)) {
return -1;
}
if (!window_created_) {
cv::namedWindow(window_name_, cv::WINDOW_NORMAL);
window_created_ = true;
}
cv::imshow(window_name_, rendered_image);
return cv::waitKey(wait_key_ms);
}
/**
* @brief 关闭显示窗口。
*/
void close() override {
if (!window_created_) {
return;
}
cv::destroyWindow(window_name_);
window_created_ = false;
}
private:
/**
* @brief 将输入图像转换为可叠加绘制的 BGR 三通道图像。
* @param input 输入图像。
* @param output 输出 BGR 图像。
* @return 转换成功返回 `true`。
*/
static bool toBgrImage(const cv::Mat& input, cv::Mat& output) {
if (input.empty()) {
return false;
}
if (input.channels() == 1) {
cv::cvtColor(input, output, cv::COLOR_GRAY2BGR);
return true;
}
if (input.channels() == 3) {
output = input.clone();
return true;
}
if (input.channels() == 4) {
cv::cvtColor(input, output, cv::COLOR_BGRA2BGR);
return true;
}
return false;
}
/**
* @brief 在图像上绘制文本叠加项。
* @param image 目标图像,BGR 三通道。
* @param overlay 文本叠加配置。
*/
static void drawText(cv::Mat& image, const TextOverlay& overlay) {
const cv::Point origin(overlay.position_px.u, overlay.position_px.v);
const int thickness = std::max(1, overlay.thickness);
const double font_scale = std::max(0.0, overlay.font_scale);
if (overlay.draw_background) {
int baseline = 0;
const cv::Size text_size = cv::getTextSize(overlay.text,
overlay.font_face,
font_scale,
thickness,
&baseline);
const int pad = std::max(0, overlay.background_padding_px);
const cv::Point top_left(origin.x - pad, origin.y - text_size.height - pad);
const cv::Point bottom_right(origin.x + text_size.width + pad, origin.y + baseline + pad);
cv::rectangle(image,
top_left,
bottom_right,
overlay.background_color.toCvScalar(),
cv::FILLED);
}
cv::putText(image,
overlay.text,
origin,
overlay.font_face,
font_scale,
overlay.color.toCvScalar(),
thickness,
cv::LINE_AA);
}
/**
* @brief 在图像上绘制点叠加项。
* @param image 目标图像,BGR 三通道。
* @param overlay 点叠加配置。
*/
static void drawPoint(cv::Mat& image, const PointOverlay& overlay) {
const cv::Point center(overlay.position_px.u, overlay.position_px.v);
const int radius = std::max(1, overlay.radius_px);
cv::circle(image,
center,
radius,
overlay.color.toCvScalar(),
overlay.thickness,
cv::LINE_AA);
if (!overlay.label.empty()) {
TextOverlay label_overlay;
label_overlay.text = overlay.label;
label_overlay.position_px = Pixel{center.x + overlay.label_offset_px.u,
center.y + overlay.label_offset_px.v};
label_overlay.color = overlay.color;
label_overlay.font_scale = overlay.label_font_scale;
label_overlay.thickness = overlay.label_thickness;
drawText(image, label_overlay);
}
}
/**
* @brief 在图像上绘制圆圈叠加项。
* @param image 目标图像,BGR 三通道。
* @param overlay 圆圈叠加配置。
*/
static void drawCircle(cv::Mat& image, const CircleOverlay& overlay) {
const cv::Point center(overlay.center_px.u, overlay.center_px.v);
const int radius = std::max(1, overlay.radius_px);
const int thickness = (overlay.thickness == 0) ? 1 : overlay.thickness;
cv::circle(image,
center,
radius,
overlay.color.toCvScalar(),
thickness,
cv::LINE_AA);
}
/**
* @brief 在图像上绘制十字叠加项。
* @param image 目标图像,BGR 三通道。
* @param overlay 十字叠加配置。
*/
static void drawCross(cv::Mat& image, const CrossOverlay& overlay) {
const cv::Point center(overlay.center_px.u, overlay.center_px.v);
const int arm_length = std::max(1, overlay.arm_length_px);
const int thickness = std::max(1, overlay.thickness);
const cv::Scalar color = overlay.color.toCvScalar();
cv::line(image,
cv::Point(center.x - arm_length, center.y),
cv::Point(center.x + arm_length, center.y),
color,
thickness,
cv::LINE_AA);
cv::line(image,
cv::Point(center.x, center.y - arm_length),
cv::Point(center.x, center.y + arm_length),
color,
thickness,
cv::LINE_AA);
}
std::string window_name_; // 显示窗口名称。
cv::Mat image_; // 当前待显示图像。
std::vector<TextOverlay> texts_; // 当前待绘制的文本叠加列表。
std::vector<PointOverlay> points_; // 当前待绘制的点叠加列表。
std::vector<CircleOverlay> circles_; // 当前待绘制的圆圈叠加列表。
std::vector<CrossOverlay> crosses_; // 当前待绘制的十字叠加列表。
bool window_created_{false}; // 显示窗口是否已经创建。
};
} // namespace cmvr::common

File diff suppressed because it is too large Load Diff

View File

@ -334,19 +334,17 @@ MediaSourceManager Subscription 同样是单消费者对象,不同协议或客
无硬件参考测试:
- [`camera/hikvision_camera/tests/hikvision_camera_callback_test.cpp`](camera/hikvision_camera/tests/hikvision_camera_callback_test.cpp)
- [`../manager/media_source_manager/tests/media_source_manager_test.cpp`](../manager/media_source_manager/tests/media_source_manager_test.cpp)
```bash
cmake -S . -B build \
-DCMVR_ARCH=x86 \
-DBUILD_TESTING=ON \
-DCMVR_MEDIA_SOURCE_MANAGER_BUILD_TESTS=ON
-DBUILD_TESTING=ON
cmake --build build -j"$(nproc)"
ctest \
--test-dir build \
-R 'hikvision_camera_callback_test|media_source_manager_test' \
-R '^hikvision_camera_callback_test$' \
--output-on-failure
```

View File

@ -27,31 +27,3 @@ target_link_libraries(seer_robokit_agv
add_library(cmvr_es::device::seer_robokit_agv ALIAS seer_robokit_agv)
install(TARGETS seer_robokit_agv LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(seer_robokit_control_authority_test
tests/seer_robokit_control_authority_test.cpp
)
target_link_libraries(seer_robokit_control_authority_test
PRIVATE
cmvr_es::device::seer_robokit_agv
gtest
gtest_main
pthread
)
add_test(
NAME seer_robokit_control_authority_test
COMMAND seer_robokit_control_authority_test
)
set(_seer_robokit_control_authority_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _seer_robokit_control_authority_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(seer_robokit_control_authority_test PROPERTIES
TIMEOUT 180
ENVIRONMENT "${_seer_robokit_control_authority_test_environment}"
)
endif()

View File

@ -35,8 +35,6 @@
- 阻塞等待与停车确认:
[`src/seer_robokit_navigation_wait.cpp`](src/seer_robokit_navigation_wait.cpp)
- 地图和建图:[`src/seer_robokit_map.cpp`](src/seer_robokit_map.cpp)
- 假控制器测试:
[`tests/seer_robokit_control_authority_test.cpp`](tests/seer_robokit_control_authority_test.cpp)
- 设备配置:
[`../../../config/devices/agv/seer_robokit.pb.txt`](../../../config/devices/agv/seer_robokit.pb.txt)
- DeviceManager 配置:
@ -375,21 +373,3 @@ unknown,调用方不能自动重发运动命令,应先查询状态并取消
验证后才能据此联动机械臂。异步成功更不代表 PGV 调整完成。
- 地图切换、地图上传和开始建图会改变控制器状态,也会先抢占控制权;不要和
现场调度系统并行操作。
- 本目录的假控制器测试验证软件协议、错误路径和并发逻辑,不代表真实 SEER Robokit、
底盘、PGV、地图或安全链已经验收。
## 测试
```bash
cmake --build build \
--target seer_robokit_control_authority_test grpc_agv_service_test \
-j2
ctest --test-dir build \
-R '^(seer_robokit_control_authority_test|grpc_agv_service_test)$' \
--output-on-failure
```
`seer_robokit_control_authority_test` 使用本机回环 TCP 假控制器,需要允许本地
bind/listen。受限沙箱若禁止创建 socket,只能证明编译通过,不能把未执行的
fake-controller 场景报告为测试通过。测试过程不会连接真实 AGV。

View File

@ -54,88 +54,3 @@ target_link_libraries(aubo_arm
add_library(cmvr_es::device::aubo_arm ALIAS aubo_arm)
install(TARGETS aubo_arm LIBRARY DESTINATION lib)
if(BUILD_TESTING)
enable_testing()
add_executable(aubo_arm_motion_result_test
tests/aubo_arm_motion_result_test.cpp
)
target_include_directories(aubo_arm_motion_result_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
add_test(
NAME aubo_arm_motion_result_test
COMMAND aubo_arm_motion_result_test
)
set_tests_properties(aubo_arm_motion_result_test PROPERTIES TIMEOUT 10)
add_executable(aubo_motion_state_test
tests/aubo_motion_state_test.cpp
)
target_include_directories(aubo_motion_state_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
add_test(
NAME aubo_motion_state_test
COMMAND aubo_motion_state_test
)
set_tests_properties(aubo_motion_state_test PROPERTIES TIMEOUT 10)
add_executable(aubo_safety_state_test
tests/aubo_safety_state_test.cpp
)
target_include_directories(aubo_safety_state_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
add_test(
NAME aubo_safety_state_test
COMMAND aubo_safety_state_test
)
set_tests_properties(aubo_safety_state_test PROPERTIES TIMEOUT 10)
add_executable(aubo_arm_json_command_test
tests/aubo_arm_json_command_test.cpp
)
target_link_libraries(aubo_arm_json_command_test
PRIVATE
cmvr_es::device::aubo_arm
cmvr_es::proto
)
add_test(
NAME aubo_arm_json_command_test
COMMAND aubo_arm_json_command_test
)
set_tests_properties(aubo_arm_json_command_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(UNIX AND NOT APPLE)
# The imported AUBO target still contributes its vendor directory to
# direct consumers' build-tree RUNPATH. Put the system runtime first
# for this test; installed artifacts exclude the vendor libstdc++.
execute_process(
COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libstdc++.so.6
OUTPUT_VARIABLE AUBO_TEST_SYSTEM_LIBSTDCXX
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(EXISTS "${AUBO_TEST_SYSTEM_LIBSTDCXX}")
get_filename_component(
AUBO_TEST_SYSTEM_LIBSTDCXX_REAL
"${AUBO_TEST_SYSTEM_LIBSTDCXX}"
REALPATH
)
get_filename_component(
AUBO_TEST_SYSTEM_LIBSTDCXX_DIR
"${AUBO_TEST_SYSTEM_LIBSTDCXX_REAL}"
DIRECTORY
)
set_property(
TARGET aubo_arm_json_command_test
PROPERTY BUILD_RPATH "${AUBO_TEST_SYSTEM_LIBSTDCXX_DIR}"
)
endif()
endif()
endif()

View File

@ -12,7 +12,6 @@
## 代码与配置
- 实现:[`aubo_arm.h`](aubo_arm.h)、[`aubo_arm.cpp`](aubo_arm.cpp)
- 测试:[`tests/aubo_arm_json_command_test.cpp`](tests/aubo_arm_json_command_test.cpp)
- 设备配置:[`../../../config/devices/arm/aubo_arm.pb.txt`](../../../config/devices/arm/aubo_arm.pb.txt)
- DeviceManager 配置:
[`../../../config/manager/device_manager.pb.txt`](../../../config/manager/device_manager.pb.txt)
@ -136,18 +135,3 @@ cmake --install build
- 模拟量 IO 涉及 domain、单位和量程,当前 JSON 接口不开放;
- gRPC/JSON 返回成功不代表目标 IO 具备功能安全等级;
- 真实写测试前应确认通道用途、负载、电气隔离、默认电平和控制器程序所有权。
## 测试
```bash
cmake --build build --target \
aubo_safety_state_test \
aubo_motion_state_test \
aubo_arm_json_command_test -j4
ctest --test-dir build \
-R 'aubo_(safety_state|motion_state|arm_json_command)_test' \
--output-on-failure
```
该测试覆盖 JSON 校验和无硬件错误路径,不代表已在真实 AUBO 控制柜完成 DI/DO
读取、写入或 runstate 拒绝验证。

View File

@ -1,84 +0,0 @@
#include "devices/arm/aubo_arm/aubo_arm.h"
#include <iostream>
#include <string>
namespace {
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
return 1; \
} \
} while (false)
bool contains(const std::string& value, const std::string& expected)
{
return value.find(expected) != std::string::npos;
}
cmvr::config::RobotArmConfig makeConfig()
{
cmvr::config::RobotArmConfig config;
config.set_id("aubo_arm_json_test");
auto* vendor = config.mutable_vendor();
vendor->set_brand(cmvr::config::VENDOR_ROBOT_ARM_BRAND_AUBO_ARM);
vendor->set_model("AuboTest");
vendor->set_dof(6);
return config;
}
} // namespace
int main()
{
cmvr::device::AuboArm arm(makeConfig());
cmvr::device::AbstractDevice* device = &arm;
std::string response;
CHECK_TRUE(!device->executeJsonCommand("{", response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_json")"));
CHECK_TRUE(!device->executeJsonCommand("[]", response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_json")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"ptz","operation":"get_di","index":0})", response));
CHECK_TRUE(contains(response, R"("error_code":"unsupported_command")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"get_ai","index":0})", response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_operation")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"get_di","index":-1})", response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_argument")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"set_do","index":0,"value":1})",
response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_argument")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"set_do","index":0})", response));
CHECK_TRUE(contains(response, R"("error_code":"invalid_argument")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"get_di","index":0})", response));
CHECK_TRUE(contains(response, R"("error_code":"not_connected")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"get_do","index":0})", response));
CHECK_TRUE(contains(response, R"("operation":"get_do")"));
CHECK_TRUE(contains(response, R"("error_code":"not_connected")"));
CHECK_TRUE(!device->executeJsonCommand(
R"({"command":"cabinet_io","operation":"set_do","index":0,"value":true})",
response));
CHECK_TRUE(contains(response, R"("operation":"set_do")"));
CHECK_TRUE(contains(response, R"("error_code":"not_connected")"));
return 0;
}

View File

@ -1,158 +0,0 @@
#include "devices/arm/aubo_arm/aubo_motion_result.h"
#include "devices/arm/aubo_arm/aubo_torque_on_result.h"
#include <iostream>
#include <optional>
#include <string>
#include <vector>
namespace {
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using cmvr::device::aubo_internal::MotionCommandOutcome;
using cmvr::device::aubo_internal::MotionWaitResult;
using cmvr::device::aubo_internal::preservePrimaryTorqueOnFailure;
using cmvr::device::aubo_internal::resolveMotionCommand;
using cmvr::device::aubo_internal::runTorqueOnControllerMutation;
constexpr int success_code = 0;
constexpr int request_ignore_code = 13;
int wait_calls = 0;
const auto wait_succeeded = [&wait_calls]() {
++wait_calls;
return MotionWaitResult::Completed;
};
CHECK_TRUE(resolveMotionCommand(
success_code,
success_code,
request_ignore_code,
wait_succeeded) == MotionCommandOutcome::CompletedAfterMotion);
CHECK_TRUE(wait_calls == 1);
wait_calls = 0;
CHECK_TRUE(resolveMotionCommand(
request_ignore_code,
success_code,
request_ignore_code,
wait_succeeded) == MotionCommandOutcome::CompletedWithoutMotion);
CHECK_TRUE(wait_calls == 0);
const int submit_failures[] = {1, 2, 3, -request_ignore_code};
for (const int return_code : submit_failures) {
wait_calls = 0;
CHECK_TRUE(resolveMotionCommand(
return_code,
success_code,
request_ignore_code,
wait_succeeded) == MotionCommandOutcome::SubmitFailed);
CHECK_TRUE(wait_calls == 0);
}
wait_calls = 0;
const auto wait_failed = [&wait_calls]() {
++wait_calls;
return MotionWaitResult::Failed;
};
CHECK_TRUE(resolveMotionCommand(
success_code,
success_code,
request_ignore_code,
wait_failed) == MotionCommandOutcome::CompletionFailed);
CHECK_TRUE(wait_calls == 1);
wait_calls = 0;
const auto wait_cancelled = [&wait_calls]() {
++wait_calls;
return MotionWaitResult::Cancelled;
};
CHECK_TRUE(resolveMotionCommand(
success_code,
success_code,
request_ignore_code,
wait_cancelled) == MotionCommandOutcome::Cancelled);
CHECK_TRUE(wait_calls == 1);
using cmvr::device::ArmErrorCode;
using cmvr::device::Result;
std::vector<std::string> mutation_trace;
const auto failed_mutation = runTorqueOnControllerMutation(
success_code,
[&mutation_trace] {
mutation_trace.push_back("mutation");
return 42;
},
[&mutation_trace](const int return_code) {
mutation_trace.push_back("primary-failure");
return Result::failure(
ArmErrorCode::CommandFailed,
"vendor failure ret=" + std::to_string(return_code));
},
[&mutation_trace]() -> std::optional<Result> {
mutation_trace.push_back("cancellation-cleanup");
return Result::failure(
ArmErrorCode::CommandRejected,
"controller safety termination confirmed");
});
CHECK_TRUE(failed_mutation.has_value());
CHECK_TRUE(failed_mutation->code == ArmErrorCode::CommandFailed);
CHECK_TRUE(
failed_mutation->message.find("vendor failure ret=42") !=
std::string::npos);
CHECK_TRUE(
failed_mutation->message.find(
"controller safety termination confirmed") !=
std::string::npos);
CHECK_TRUE(mutation_trace.size() == 3);
CHECK_TRUE(mutation_trace[0] == "mutation");
CHECK_TRUE(mutation_trace[1] == "primary-failure");
CHECK_TRUE(mutation_trace[2] == "cancellation-cleanup");
const auto cleanup_failed = preservePrimaryTorqueOnFailure(
Result::failure(
ArmErrorCode::CommandFailed,
"vendor exception"),
std::optional<Result>{Result::failure(
ArmErrorCode::CommandFailed,
"safety termination failed")});
CHECK_TRUE(cleanup_failed.code == ArmErrorCode::CommandFailed);
CHECK_TRUE(
cleanup_failed.message.find("vendor exception") !=
std::string::npos);
CHECK_TRUE(
cleanup_failed.message.find("safety termination failed") !=
std::string::npos);
int successful_cancellation_checks = 0;
const auto cancelled_after_success = runTorqueOnControllerMutation(
success_code,
[] { return 0; },
[](const int) {
return Result::failure(
ArmErrorCode::CommandFailed, "must not be used");
},
[&successful_cancellation_checks]() -> std::optional<Result> {
++successful_cancellation_checks;
return Result::failure(
ArmErrorCode::CommandRejected,
"cancelled after successful mutation");
});
CHECK_TRUE(cancelled_after_success.has_value());
CHECK_TRUE(
cancelled_after_success->code == ArmErrorCode::CommandRejected);
CHECK_TRUE(successful_cancellation_checks == 1);
return 0;
}

View File

@ -1,213 +0,0 @@
#include "devices/arm/aubo_arm/aubo_motion_state.h"
#include <atomic>
#include <chrono>
#include <iostream>
#include <thread>
namespace {
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using namespace cmvr::device::aubo_internal;
MotionState state;
CHECK_TRUE(state.begin(MotionKind::None).status ==
MotionStartStatus::Invalid);
const auto joint = state.begin(MotionKind::Joint);
CHECK_TRUE(joint.started());
CHECK_TRUE(state.busy());
CHECK_TRUE(state.begin(MotionKind::Linear).status ==
MotionStartStatus::Busy);
const auto stop_joint = state.beginStop();
CHECK_TRUE(stop_joint.started());
CHECK_TRUE(stop_joint.kind == MotionKind::Joint);
CHECK_TRUE(stop_joint.active_token.generation ==
joint.token.generation);
CHECK_TRUE(stop_joint.tracked_motion);
CHECK_TRUE(state.cancelled(joint.token));
const auto joined_stop_joint = state.beginStop();
CHECK_TRUE(joined_stop_joint.status ==
StopStartStatus::AlreadyStopping);
CHECK_TRUE(
state.waitForStopCompletion(
joined_stop_joint, std::chrono::milliseconds(1)) ==
StopWaitStatus::Timeout);
CHECK_TRUE(state.begin(MotionKind::Linear).status ==
MotionStartStatus::Stopping);
CHECK_TRUE(!state.waitForOwnerExit(
joint.token, std::chrono::milliseconds(1)));
CHECK_TRUE(!state.completeStop());
state.finish(joint.token);
CHECK_TRUE(state.waitForOwnerExit(
joint.token, std::chrono::milliseconds(1)));
CHECK_TRUE(state.completeStop());
CHECK_TRUE(
state.waitForStopCompletion(
joined_stop_joint, std::chrono::milliseconds(1)) ==
StopWaitStatus::Completed);
CHECK_TRUE(!state.busy());
const auto linear = state.begin(MotionKind::Linear);
CHECK_TRUE(linear.started());
CHECK_TRUE(!state.cancelled(linear.token));
// A delayed guard from the cancelled command must not release a newer one.
state.finish(joint.token);
CHECK_TRUE(state.busy());
state.finish(linear.token, MotionFinishMode::Clear);
CHECK_TRUE(!state.busy());
const auto speed_joint = state.begin(MotionKind::Joint);
CHECK_TRUE(speed_joint.started());
state.finish(speed_joint.token, MotionFinishMode::Retain);
CHECK_TRUE(state.busy());
CHECK_TRUE(state.begin(MotionKind::Linear).status ==
MotionStartStatus::Busy);
const auto rejected_speed_update =
state.begin(MotionKind::Joint, true);
CHECK_TRUE(rejected_speed_update.started());
state.finish(
rejected_speed_update.token,
MotionFinishMode::RestorePrevious);
const auto stop_speed = state.beginStop();
CHECK_TRUE(stop_speed.started());
CHECK_TRUE(stop_speed.kind == MotionKind::Joint);
CHECK_TRUE(stop_speed.tracked_motion);
CHECK_TRUE(state.completeStop());
CHECK_TRUE(!state.busy());
const auto idle_stop = state.beginStop();
CHECK_TRUE(idle_stop.kind == MotionKind::None);
CHECK_TRUE(!idle_stop.tracked_motion);
const auto joined_idle_stop = state.beginStop();
CHECK_TRUE(joined_idle_stop.status ==
StopStartStatus::AlreadyStopping);
state.failStop();
CHECK_TRUE(
state.waitForStopCompletion(
joined_idle_stop, std::chrono::milliseconds(1)) ==
StopWaitStatus::Failed);
const auto retry_idle_stop = state.beginStop();
CHECK_TRUE(retry_idle_stop.kind == MotionKind::None);
CHECK_TRUE(!retry_idle_stop.tracked_motion);
CHECK_TRUE(state.completeStop());
const auto mismatched_stop_motion = state.begin(MotionKind::Linear);
CHECK_TRUE(mismatched_stop_motion.started());
const auto mismatched_stop = state.beginStop(MotionKind::Joint);
CHECK_TRUE(mismatched_stop.kind == MotionKind::Linear);
state.finish(mismatched_stop_motion.token);
CHECK_TRUE(state.completeStop());
const auto uncertain_motion = state.begin(MotionKind::Joint);
CHECK_TRUE(uncertain_motion.started());
state.failMotion(uncertain_motion.token);
CHECK_TRUE(state.busy());
CHECK_TRUE(state.begin(MotionKind::Linear).status ==
MotionStartStatus::Blocked);
const auto stop_uncertain = state.beginStop();
CHECK_TRUE(stop_uncertain.kind == MotionKind::Joint);
CHECK_TRUE(stop_uncertain.tracked_motion);
CHECK_TRUE(state.completeStop());
const auto failed_stop_motion = state.begin(MotionKind::Linear);
CHECK_TRUE(failed_stop_motion.started());
const auto failed_stop = state.beginStop();
CHECK_TRUE(failed_stop.kind == MotionKind::Linear);
state.failStop();
CHECK_TRUE(state.busy());
CHECK_TRUE(state.begin(MotionKind::Joint).status ==
MotionStartStatus::Blocked);
state.finish(failed_stop_motion.token);
const auto retry = state.beginStop();
CHECK_TRUE(retry.started());
CHECK_TRUE(retry.kind == MotionKind::Linear);
CHECK_TRUE(state.completeStop());
const auto recovered = state.begin(MotionKind::Joint);
CHECK_TRUE(recovered.started());
state.finish(recovered.token, MotionFinishMode::Clear);
const auto safety_motion = state.begin(MotionKind::Linear);
CHECK_TRUE(safety_motion.started());
const auto safety_cancel = state.cancelActiveForSafety();
CHECK_TRUE(safety_cancel.kind == MotionKind::Linear);
CHECK_TRUE(safety_cancel.tracked_motion);
CHECK_TRUE(state.cancelled(safety_motion.token));
CHECK_TRUE(state.begin(MotionKind::Joint).status ==
MotionStartStatus::Blocked);
state.finish(safety_motion.token);
const auto safety_stop = state.beginStop();
CHECK_TRUE(safety_stop.started());
CHECK_TRUE(safety_stop.kind == MotionKind::Linear);
CHECK_TRUE(state.completeStop());
const auto retained_speed = state.begin(MotionKind::Joint);
CHECK_TRUE(retained_speed.started());
state.finish(retained_speed.token, MotionFinishMode::Retain);
const auto retained_cancel = state.cancelActiveForSafety();
CHECK_TRUE(retained_cancel.kind == MotionKind::Joint);
CHECK_TRUE(retained_cancel.tracked_motion);
CHECK_TRUE(!retained_cancel.active_token.valid());
CHECK_TRUE(state.begin(MotionKind::Linear).status ==
MotionStartStatus::Blocked);
const auto retained_stop = state.beginStop();
CHECK_TRUE(retained_stop.started());
CHECK_TRUE(retained_stop.kind == MotionKind::Joint);
CHECK_TRUE(retained_stop.tracked_motion);
CHECK_TRUE(state.completeStop());
// A waiter keeps the completion for the stop it joined even when another
// stop starts and finishes before the waiter is scheduled again.
const auto concurrent_first_stop = state.beginStop();
CHECK_TRUE(concurrent_first_stop.started());
const auto concurrent_first_join = state.beginStop();
CHECK_TRUE(concurrent_first_join.status ==
StopStartStatus::AlreadyStopping);
std::atomic<bool> waiter_entered{false};
std::atomic<StopWaitStatus> first_wait_result{
StopWaitStatus::Timeout};
std::thread first_waiter([&]() {
waiter_entered.store(true, std::memory_order_release);
first_wait_result.store(
state.waitForStopCompletion(
concurrent_first_join,
std::chrono::milliseconds(500)),
std::memory_order_release);
});
while (!waiter_entered.load(std::memory_order_acquire)) {
std::this_thread::yield();
}
const bool concurrent_first_completed = state.completeStop();
const auto concurrent_second_stop = state.beginStop();
const auto concurrent_second_join = state.beginStop();
state.failStop();
first_waiter.join();
CHECK_TRUE(concurrent_first_completed);
CHECK_TRUE(concurrent_second_stop.started());
CHECK_TRUE(concurrent_second_join.status ==
StopStartStatus::AlreadyStopping);
CHECK_TRUE(first_wait_result.load(std::memory_order_acquire) ==
StopWaitStatus::Completed);
CHECK_TRUE(
state.waitForStopCompletion(
concurrent_second_join, std::chrono::milliseconds(1)) ==
StopWaitStatus::Failed);
return 0;
}

View File

@ -1,156 +0,0 @@
#include "devices/arm/aubo_arm/aubo_safety_state.h"
#include <iostream>
namespace {
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using namespace cmvr::device::aubo_internal;
SafetyState state;
CHECK_TRUE(!state.tryPermit().has_value());
state.observe(SafetyCondition::Normal);
const auto initial_permit = state.tryPermit();
CHECK_TRUE(initial_permit.has_value());
CHECK_TRUE(state.validate(*initial_permit));
CHECK_TRUE(effectiveSafetyCondition(SafetyCondition::Normal, 1) ==
SafetyCondition::RobotEmergencyStop);
CHECK_TRUE(effectiveSafetyCondition(SafetyCondition::Normal, -1) ==
SafetyCondition::Unknown);
CHECK_TRUE(effectiveSafetyCondition(SafetyCondition::Reduced, 0) ==
SafetyCondition::Reduced);
CHECK_TRUE(needsProtectiveUnlock(SafetyCondition::ProtectiveStop));
CHECK_TRUE(needsProtectiveUnlock(SafetyCondition::Violation));
CHECK_TRUE(!needsProtectiveUnlock(SafetyCondition::SafeguardStop));
CHECK_TRUE(needsInterfaceBoardRestart(
SafetyCondition::RobotEmergencyStop));
CHECK_TRUE(needsInterfaceBoardRestart(
SafetyCondition::SystemEmergencyStop));
CHECK_TRUE(needsInterfaceBoardRestart(SafetyCondition::Fault));
CHECK_TRUE(!needsInterfaceBoardRestart(SafetyCondition::Recovery));
state.observe(SafetyCondition::RobotEmergencyStop);
CHECK_TRUE(!state.validate(*initial_permit));
CHECK_TRUE(state.snapshot().latched);
CHECK_TRUE(!state.beginRecovery(state.snapshot().epoch).has_value());
// The observed level alone does not unlock motion. The monitor must first
// prove the old controller operation is fully quiescent.
state.observe(SafetyCondition::Normal);
CHECK_TRUE(state.snapshot().latched);
CHECK_TRUE(!state.tryPermit().has_value());
CHECK_TRUE(!shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), false, 0, true, false));
CHECK_TRUE(shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), true, 0, true, false));
CHECK_TRUE(!shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), true, 0, false, false));
CHECK_TRUE(!shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), true, 0, true, true));
const auto recovery = state.beginRecovery(state.snapshot().epoch);
CHECK_TRUE(recovery.has_value());
CHECK_TRUE(!state.completeRecovery(*recovery, true, true, false));
state.failRecovery(*recovery);
const auto retry = state.beginRecovery(state.snapshot().epoch);
CHECK_TRUE(retry.has_value());
// Automatic release is not committed at Idle/PowerOn. The controller
// must have completed startup and reached Running first.
CHECK_TRUE(!state.completeHardwareEmergencyStopRecovery(
*retry, false, true, true));
CHECK_TRUE(!state.completeHardwareEmergencyStopRecovery(
*retry, true, false, true));
CHECK_TRUE(state.completeHardwareEmergencyStopRecovery(
*retry, true, true, true));
const auto recovered_permit = state.tryPermit();
CHECK_TRUE(recovered_permit.has_value());
CHECK_TRUE(state.validate(*recovered_permit));
// Some AUBO cabinets drop the SDK connection while the physical E-stop is
// pressed. Losing the monitor sample must not erase the hardware E-stop
// latch; otherwise releasing the switch back to Normal would never trigger
// automatic power-on.
state.observe(SafetyCondition::RobotEmergencyStop);
const auto estop_epoch = state.snapshot().epoch;
state.observe(SafetyCondition::Unknown);
CHECK_TRUE(state.snapshot().latched);
CHECK_TRUE(state.snapshot().latched_reason ==
SafetyCondition::RobotEmergencyStop);
CHECK_TRUE(state.snapshot().epoch == estop_epoch);
state.observe(SafetyCondition::Normal);
CHECK_TRUE(shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), true, 0, true, false));
const auto disconnected_recovery = state.beginRecovery(
state.snapshot().epoch);
CHECK_TRUE(disconnected_recovery.has_value());
CHECK_TRUE(state.completeHardwareEmergencyStopRecovery(
*disconnected_recovery, true, true, true));
// Releasing a real E-stop must never clear a software-triggered stop that
// was latched while the hardware input was active.
state.observe(SafetyCondition::RobotEmergencyStop);
state.observe(SafetyCondition::SoftwareEmergencyStop);
// The hardware monitor continues publishing the physical E-stop level
// until the switch is released. It must not overwrite the software latch.
state.observe(SafetyCondition::RobotEmergencyStop);
state.observe(SafetyCondition::Normal);
CHECK_TRUE(!shouldAutoRecoverHardwareEmergencyStop(
state.snapshot(), true, 0, true, false));
CHECK_TRUE(state.snapshot().software_emergency_stop_latched);
CHECK_TRUE(state.snapshot().latched_reason ==
SafetyCondition::SoftwareEmergencyStop);
const auto software_recovery = state.beginRecovery(
state.snapshot().epoch);
CHECK_TRUE(software_recovery.has_value());
CHECK_TRUE(!state.completeHardwareEmergencyStopRecovery(
*software_recovery, true, true, true));
state.failRecovery(*software_recovery);
const auto explicit_software_recovery = state.beginRecovery(
state.snapshot().epoch);
CHECK_TRUE(explicit_software_recovery.has_value());
CHECK_TRUE(state.completeRecovery(
*explicit_software_recovery, true, true, true));
CHECK_TRUE(!state.snapshot().software_emergency_stop_latched);
// A new safety event invalidates an in-flight recovery token.
state.observe(SafetyCondition::ProtectiveStop);
state.observe(SafetyCondition::Reduced);
const auto stale_recovery = state.beginRecovery(
state.snapshot().epoch);
CHECK_TRUE(stale_recovery.has_value());
CHECK_TRUE(!state.completeHardwareEmergencyStopRecovery(
*stale_recovery, true, true, true));
state.failRecovery(*stale_recovery);
const auto explicit_recovery = state.beginRecovery(
state.snapshot().epoch);
CHECK_TRUE(explicit_recovery.has_value());
state.observe(SafetyCondition::SafeguardStop);
state.observe(SafetyCondition::Normal);
CHECK_TRUE(!state.completeRecovery(
*explicit_recovery, true, true, true));
CHECK_TRUE(state.snapshot().latched);
// An old API call must not begin recovery for a newer safety event.
const auto stale_epoch = state.snapshot().epoch;
state.observe(SafetyCondition::RobotEmergencyStop);
state.observe(SafetyCondition::Normal);
CHECK_TRUE(!state.beginRecovery(stale_epoch).has_value());
CHECK_TRUE(!state.snapshot().recovery_in_progress);
return 0;
}

View File

@ -29,49 +29,3 @@ add_library(cmvr_es::device::huayan_arm ALIAS huayan_arm)
install(TARGETS huayan_arm LIBRARY DESTINATION lib)
install(FILES ${HUAYAN_ARM_SDK_DIR}/lib/libHR_Pro.so DESTINATION lib)
if(BUILD_TESTING)
add_executable(huayan_lifecycle_state_test
tests/huayan_lifecycle_state_test.cpp
)
target_include_directories(huayan_lifecycle_state_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(huayan_lifecycle_state_test
PRIVATE
Threads::Threads
)
add_test(
NAME huayan_lifecycle_state_test
COMMAND huayan_lifecycle_state_test
)
set_tests_properties(huayan_lifecycle_state_test PROPERTIES TIMEOUT 10)
if(UNIX AND NOT APPLE)
add_executable(huayan_arm_sdk_test
tests/huayan_arm_sdk_test.cpp
)
target_include_directories(huayan_arm_sdk_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${HUAYAN_ARM_SDK_DIR}/include
)
target_link_libraries(huayan_arm_sdk_test
PRIVATE
cmvr_es::device::huayan_arm
Threads::Threads
)
# Export the fake HRIF_* definitions so libhuayan_arm resolves its SDK
# calls to the deterministic test controller instead of real hardware.
target_link_options(huayan_arm_sdk_test PRIVATE -Wl,--export-dynamic)
add_test(
NAME huayan_arm_sdk_test
COMMAND huayan_arm_sdk_test
)
set_tests_properties(huayan_arm_sdk_test PROPERTIES
TIMEOUT 20
ENVIRONMENT "LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
endif()
endif()

View File

@ -1,874 +0,0 @@
#include "devices/arm/huayan_arm/huayan_arm.h"
#include <algorithm>
#include <array>
#include <atomic>
#include <chrono>
#include <cmath>
#include <future>
#include <iostream>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include "HR_Pro.h"
namespace {
using Clock = std::chrono::steady_clock;
using namespace std::chrono_literals;
constexpr double kPi = 3.14159265358979323846;
double radToDeg(const double value)
{
return value * 180.0 / kPi;
}
struct FakeSdkState final {
std::mutex mutex;
bool connected{false};
bool enabled{true};
bool electrified{true};
bool robot_error{false};
bool paused{false};
bool emergency_input{false};
bool emergency_signal_fault{false};
bool safeguard_input{false};
bool safeguard_signal_fault{false};
bool software_safeguard{false};
bool motion_active{false};
bool motion_is_joint{true};
bool stop_pending{false};
bool hold_next_motion{false};
bool stale_done_once{false};
Clock::time_point completion_at{};
Clock::time_point stop_complete_at{};
std::array<double, 6> joint_position_deg{};
std::array<double, 6> joint_target_deg{};
std::array<double, 6> tcp_position_hr{};
std::array<double, 6> tcp_target_hr{};
std::string waypoint_id;
bool servo_started{false};
bool program_running{false};
std::string selected_program;
int move_j_calls{0};
int move_l_calls{0};
int speed_j_calls{0};
int speed_l_calls{0};
int group_stop_calls{0};
int group_reset_calls{0};
int start_servo_calls{0};
int stop_script_calls{0};
int idle_velocity_reads_after_stop{0};
bool count_idle_reads{false};
void refreshLocked()
{
const auto now = Clock::now();
const bool safety_active = emergency_input || safeguard_input ||
software_safeguard;
if (stop_pending && now >= stop_complete_at) {
stop_pending = false;
motion_active = false;
stale_done_once = false;
count_idle_reads = true;
}
if (motion_active && !stop_pending && !safety_active &&
completion_at != Clock::time_point{} && now >= completion_at) {
motion_active = false;
stale_done_once = false;
if (motion_is_joint) {
joint_position_deg = joint_target_deg;
} else {
tcp_position_hr = tcp_target_hr;
}
}
}
bool movingLocked()
{
refreshLocked();
return motion_active && !emergency_input && !safeguard_input &&
!software_safeguard;
}
bool doneLocked()
{
refreshLocked();
return !motion_active;
}
void startMotionLocked(const bool joint)
{
motion_active = true;
motion_is_joint = joint;
stop_pending = false;
count_idle_reads = false;
stale_done_once = true;
if (hold_next_motion) {
// The fallback deadline keeps a failed test from leaving a worker
// blocked for the production 60 second timeout.
completion_at = Clock::now() + 3s;
hold_next_motion = false;
} else {
completion_at = Clock::now() + 120ms;
}
}
};
FakeSdkState g_sdk;
void resetFakeSdk()
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.connected = false;
g_sdk.enabled = true;
g_sdk.electrified = true;
g_sdk.robot_error = false;
g_sdk.paused = false;
g_sdk.emergency_input = false;
g_sdk.emergency_signal_fault = false;
g_sdk.safeguard_input = false;
g_sdk.safeguard_signal_fault = false;
g_sdk.software_safeguard = false;
g_sdk.motion_active = false;
g_sdk.motion_is_joint = true;
g_sdk.stop_pending = false;
g_sdk.hold_next_motion = false;
g_sdk.stale_done_once = false;
g_sdk.completion_at = {};
g_sdk.stop_complete_at = {};
g_sdk.joint_position_deg = {};
g_sdk.joint_target_deg = {};
g_sdk.tcp_position_hr = {};
g_sdk.tcp_target_hr = {};
g_sdk.waypoint_id.clear();
g_sdk.servo_started = false;
g_sdk.program_running = false;
g_sdk.selected_program.clear();
g_sdk.move_j_calls = 0;
g_sdk.move_l_calls = 0;
g_sdk.speed_j_calls = 0;
g_sdk.speed_l_calls = 0;
g_sdk.group_stop_calls = 0;
g_sdk.group_reset_calls = 0;
g_sdk.start_servo_calls = 0;
g_sdk.stop_script_calls = 0;
g_sdk.idle_velocity_reads_after_stop = 0;
g_sdk.count_idle_reads = false;
}
void holdNextMotion()
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.hold_next_motion = true;
}
void setHardwareEmergencyStop(const bool active)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.emergency_input = active;
// If the wrapper never sends a real group Stop, releasing the switch makes
// the pending fake waypoint move again. This models the field failure.
}
void setEmergencySignalFault(const bool active)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.emergency_signal_fault = active;
}
void dropFakeTransport()
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.connected = false;
}
template <typename Predicate>
bool waitUntil(Predicate&& predicate,
const std::chrono::milliseconds timeout = 2s)
{
const auto deadline = Clock::now() + timeout;
while (Clock::now() < deadline) {
if (predicate()) {
return true;
}
std::this_thread::sleep_for(10ms);
}
return predicate();
}
cmvr::config::RobotArmConfig makeConfig()
{
cmvr::config::RobotArmConfig cfg;
cfg.set_id("huayan_fake_sdk");
auto* vendor = cfg.mutable_vendor();
vendor->set_brand(cmvr::config::VENDOR_ROBOT_ARM_BRAND_HUAYAN_ARM);
vendor->set_ip("127.0.0.1");
vendor->set_port(10003);
vendor->set_model("HuayanFake");
vendor->set_dof(6);
vendor->set_base_frame("Base");
vendor->set_tool_frame("TCP");
for (int i = 1; i <= 6; ++i) {
vendor->add_joint_names("joint_" + std::to_string(i));
}
return cfg;
}
int failures = 0;
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
++failures; \
} \
} while (false)
} // namespace
// The test executable exports these strong symbols. On ELF platforms they
// interpose the real SDK definitions used by libhuayan_arm, giving the test a
// deterministic controller without opening a network connection.
extern "C" {
int HRIF_Connect(unsigned int, const char*, unsigned short)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.connected = true;
return 0;
}
int HRIF_DisConnect(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.connected = false;
g_sdk.motion_active = false;
return 0;
}
bool HRIF_IsConnected(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
return g_sdk.connected;
}
int HRIF_GetErrorCodeStr(unsigned int, int error_code, std::string& message)
{
message = "fake SDK error " + std::to_string(error_code);
return 0;
}
int HRIF_GrpEnable(unsigned int, unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
if (g_sdk.emergency_input || g_sdk.safeguard_input ||
g_sdk.software_safeguard) {
return 101;
}
g_sdk.enabled = true;
g_sdk.electrified = true;
return 0;
}
int HRIF_GrpDisable(unsigned int, unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.enabled = false;
g_sdk.electrified = false;
return 0;
}
int HRIF_GrpReset(unsigned int, unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.group_reset_calls;
if (g_sdk.emergency_input || g_sdk.safeguard_input ||
g_sdk.software_safeguard) {
return 102;
}
g_sdk.robot_error = false;
return 0;
}
int HRIF_GrpStop(unsigned int, unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.group_stop_calls;
g_sdk.idle_velocity_reads_after_stop = 0;
g_sdk.count_idle_reads = false;
if (g_sdk.motion_active) {
g_sdk.stop_pending = true;
g_sdk.stop_complete_at = Clock::now() + 120ms;
g_sdk.completion_at = {};
} else {
g_sdk.stop_pending = false;
g_sdk.count_idle_reads = true;
}
g_sdk.servo_started = false;
return 0;
}
int HRIF_SetOverride(unsigned int, unsigned int, double)
{
return 0;
}
int HRIF_ReadRobotState(unsigned int, unsigned int,
int& moving, int& enabled, int& error,
int& error_code, int& error_axis, int& brake,
int& paused, int& emergency_stop, int& safeguard,
int& electrified, int& connected_to_box,
int& blending_done, int& in_position)
{
std::lock_guard lock(g_sdk.mutex);
if (!g_sdk.connected) {
return 201;
}
moving = g_sdk.movingLocked() ? 1 : 0;
enabled = g_sdk.enabled ? 1 : 0;
error = g_sdk.robot_error ? 1 : 0;
error_code = g_sdk.robot_error ? 9001 : 0;
error_axis = 0;
brake = g_sdk.enabled ? 1 : 0;
paused = g_sdk.paused ? 1 : 0;
emergency_stop = g_sdk.emergency_input ? 1 : 0;
safeguard = (g_sdk.safeguard_input || g_sdk.software_safeguard) ? 1 : 0;
electrified = g_sdk.electrified ? 1 : 0;
connected_to_box = 1;
blending_done = moving == 0 ? 1 : 0;
in_position = g_sdk.doneLocked() ? 1 : 0;
return 0;
}
int HRIF_ReadEmergencyInfo(unsigned int, unsigned int,
int& emergency_signal_fault,
int& emergency_input,
int& safeguard_signal_fault,
int& safeguard_input)
{
std::lock_guard lock(g_sdk.mutex);
if (!g_sdk.connected) {
return 202;
}
emergency_signal_fault = g_sdk.emergency_signal_fault ? 1 : 0;
emergency_input = g_sdk.emergency_input ? 1 : 0;
safeguard_signal_fault = g_sdk.safeguard_signal_fault ? 1 : 0;
safeguard_input =
(g_sdk.safeguard_input || g_sdk.software_safeguard) ? 1 : 0;
return 0;
}
int HRIF_ReadCurWaypointID(unsigned int, unsigned int, std::string& waypoint)
{
std::lock_guard lock(g_sdk.mutex);
waypoint = g_sdk.waypoint_id;
return 0;
}
int HRIF_IsMotionDone(unsigned int, unsigned int, bool& done)
{
std::lock_guard lock(g_sdk.mutex);
if (g_sdk.stale_done_once) {
g_sdk.stale_done_once = false;
done = true;
} else {
done = g_sdk.doneLocked();
}
return 0;
}
int HRIF_ReadActJointPos(unsigned int, unsigned int,
double& j1, double& j2, double& j3,
double& j4, double& j5, double& j6)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.refreshLocked();
j1 = g_sdk.joint_position_deg[0];
j2 = g_sdk.joint_position_deg[1];
j3 = g_sdk.joint_position_deg[2];
j4 = g_sdk.joint_position_deg[3];
j5 = g_sdk.joint_position_deg[4];
j6 = g_sdk.joint_position_deg[5];
return 0;
}
int HRIF_ReadActJointVel(unsigned int, unsigned int,
double& j1, double& j2, double& j3,
double& j4, double& j5, double& j6)
{
std::lock_guard lock(g_sdk.mutex);
const double velocity = g_sdk.movingLocked() ? 5.0 : 0.0;
j1 = j2 = j3 = j4 = j5 = j6 = velocity;
if (velocity == 0.0 && g_sdk.count_idle_reads) {
++g_sdk.idle_velocity_reads_after_stop;
}
return 0;
}
int HRIF_ReadActTcpPos(unsigned int, unsigned int,
double& x, double& y, double& z,
double& rx, double& ry, double& rz)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.refreshLocked();
x = g_sdk.tcp_position_hr[0];
y = g_sdk.tcp_position_hr[1];
z = g_sdk.tcp_position_hr[2];
rx = g_sdk.tcp_position_hr[3];
ry = g_sdk.tcp_position_hr[4];
rz = g_sdk.tcp_position_hr[5];
return 0;
}
int HRIF_ReadActTcpVel(unsigned int, unsigned int,
double& x, double& y, double& z,
double& rx, double& ry, double& rz)
{
std::lock_guard lock(g_sdk.mutex);
const double velocity = g_sdk.movingLocked() ? 5.0 : 0.0;
x = y = z = rx = ry = rz = velocity;
return 0;
}
int HRIF_MoveJ(unsigned int, unsigned int,
double, double, double, double, double, double,
double j1, double j2, double j3,
double j4, double j5, double j6,
std::string, std::string, double, double, double,
int, int, int, int, std::string command_id)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.move_j_calls;
g_sdk.joint_target_deg = {j1, j2, j3, j4, j5, j6};
g_sdk.waypoint_id = std::move(command_id);
g_sdk.startMotionLocked(true);
return 0;
}
int HRIF_MoveL(unsigned int, unsigned int,
double x, double y, double z,
double rx, double ry, double rz,
double, double, double, double, double, double,
std::string, std::string, double, double, double,
int, int, int, std::string command_id)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.move_l_calls;
g_sdk.tcp_target_hr = {x, y, z, rx, ry, rz};
g_sdk.waypoint_id = std::move(command_id);
g_sdk.startMotionLocked(false);
return 0;
}
int HRIF_SpeedJ(unsigned int, unsigned int,
double, double, double, double, double, double,
double, double)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.speed_j_calls;
g_sdk.startMotionLocked(true);
return 0;
}
int HRIF_SpeedL(unsigned int, unsigned int,
double, double, double, double, double, double,
double, double, double)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.speed_l_calls;
g_sdk.startMotionLocked(false);
return 0;
}
int HRIF_StartServo(unsigned int, unsigned int, double, double)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.start_servo_calls;
g_sdk.servo_started = true;
return 0;
}
int HRIF_PushServoJ(unsigned int, unsigned int,
double j1, double j2, double j3,
double j4, double j5, double j6)
{
std::lock_guard lock(g_sdk.mutex);
if (!g_sdk.servo_started) {
return 301;
}
g_sdk.joint_position_deg = {j1, j2, j3, j4, j5, j6};
return 0;
}
int HRIF_PushServoP(unsigned int, unsigned int,
std::vector<double>& coord,
std::vector<double>&,
std::vector<double>&)
{
std::lock_guard lock(g_sdk.mutex);
if (!g_sdk.servo_started || coord.size() < 6) {
return 302;
}
std::copy_n(coord.begin(), 6, g_sdk.tcp_position_hr.begin());
return 0;
}
int HRIF_SwitchScript(unsigned int, unsigned int, std::string script_name)
{
std::lock_guard lock(g_sdk.mutex);
if (script_name.empty()) {
return 401;
}
g_sdk.selected_program = std::move(script_name);
return 0;
}
int HRIF_StartScript(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
if (g_sdk.selected_program.empty()) {
return 402;
}
g_sdk.program_running = true;
g_sdk.paused = false;
return 0;
}
int HRIF_PauseScript(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
if (!g_sdk.program_running) {
return 403;
}
g_sdk.paused = true;
return 0;
}
int HRIF_StopScript(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
++g_sdk.stop_script_calls;
g_sdk.program_running = false;
g_sdk.paused = false;
return 0;
}
int HRIF_EnterSafetyGuard(unsigned int, unsigned int, int flag)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.software_safeguard = flag != 0;
return 0;
}
int HRIF_ShutdownRobot(unsigned int)
{
std::lock_guard lock(g_sdk.mutex);
g_sdk.connected = false;
g_sdk.enabled = false;
g_sdk.electrified = false;
return 0;
}
} // extern "C"
int main()
{
using namespace cmvr::device;
resetFakeSdk();
HuayanRobot arm(makeConfig());
CHECK_TRUE(arm.connect("127.0.0.1", 10003).ok());
MotionOptions options;
options.velocity = 0.4;
options.acceleration = 0.8;
CHECK_TRUE(arm.supportsActionQueueMotion());
JointPositionCommand joint_a{{0.10, -0.05, 0.08, 0.0, 0.02, -0.03}};
MotionOptions cancelled_options = options;
cancelled_options.cancellation_requested = []() { return true; };
CHECK_TRUE(!arm.moveJ(joint_a, cancelled_options).ok());
CartesianPose cancelled_pose;
cancelled_pose.x = 0.20;
cancelled_pose.z = 0.30;
CHECK_TRUE(!arm.moveL(cancelled_pose, cancelled_options).ok());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.move_j_calls == 0);
CHECK_TRUE(g_sdk.move_l_calls == 0);
}
// Once a command has been accepted, caller cancellation returns promptly
// but retains the typed motion barrier until Stop confirms controller idle.
std::atomic<bool> cancel_during_wait{false};
MotionOptions cancellable_options = options;
cancellable_options.cancellation_requested = [&cancel_during_wait]() {
return cancel_during_wait.load();
};
JointPositionCommand cancelled_in_wait{
{0.05, -0.02, 0.04, 0.01, 0.0, -0.01}};
holdNextMotion();
auto cancelled_motion = std::async(std::launch::async, [&]() {
return arm.moveJ(cancelled_in_wait, cancellable_options);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.move_j_calls > 0;
}));
cancel_during_wait.store(true);
CHECK_TRUE(cancelled_motion.wait_for(1s) == std::future_status::ready);
if (cancelled_motion.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!cancelled_motion.get().ok());
}
CHECK_TRUE(arm.busy());
CHECK_TRUE(arm.stopMotion().ok());
CHECK_TRUE(!arm.busy());
// The first IsMotionDone read intentionally reports the preceding idle
// state. Completion must be correlated with the command/target. Once the
// target is reached, an identical command is an idempotent no-op.
CHECK_TRUE(arm.moveJ(joint_a, options).ok());
int move_j_after_first = 0;
{
std::lock_guard lock(g_sdk.mutex);
move_j_after_first = g_sdk.move_j_calls;
}
CHECK_TRUE(arm.moveJ(joint_a, options).ok());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.move_j_calls == move_j_after_first);
}
CartesianPose pose_a;
pose_a.x = 0.31;
pose_a.y = -0.12;
pose_a.z = 0.42;
pose_a.rx = 0.08;
pose_a.ry = -0.04;
pose_a.rz = 0.12;
CHECK_TRUE(arm.moveL(pose_a, options).ok());
int move_l_after_first = 0;
{
std::lock_guard lock(g_sdk.mutex);
move_l_after_first = g_sdk.move_l_calls;
}
CHECK_TRUE(arm.moveL(pose_a, options).ok());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.move_l_calls == move_l_after_first);
}
// Stop must cancel the old owner and wait until the controller reports
// stable idle; clearing the owner immediately after GrpStop would fail the
// elapsed-time and consecutive-idle checks below.
JointPositionCommand joint_b{{0.22, -0.08, 0.14, 0.03, 0.04, -0.01}};
holdNextMotion();
const int before_held_move = move_j_after_first;
auto held_move = std::async(std::launch::async, [&]() {
return arm.moveJ(joint_b, options);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.move_j_calls > before_held_move;
}));
const auto stop_started = Clock::now();
CHECK_TRUE(arm.stopMotion().ok());
const auto stop_elapsed = Clock::now() - stop_started;
CHECK_TRUE(stop_elapsed >= 100ms);
CHECK_TRUE(held_move.wait_for(1s) == std::future_status::ready);
if (held_move.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!held_move.get().ok());
}
CHECK_TRUE(!arm.busy());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.idle_velocity_reads_after_stop >= 3);
}
CHECK_TRUE(arm.moveJ(joint_b, options).ok());
// A hardware E-stop cancels and terminates the active waypoint. Releasing
// the switch does not clear the software latch or grant a new permit.
JointPositionCommand joint_c{{0.34, -0.02, 0.09, 0.05, -0.02, 0.07}};
holdNextMotion();
int before_estop_move = 0;
int before_estop_stop = 0;
{
std::lock_guard lock(g_sdk.mutex);
before_estop_move = g_sdk.move_j_calls;
before_estop_stop = g_sdk.group_stop_calls;
}
auto estop_move = std::async(std::launch::async, [&]() {
return arm.moveJ(joint_c, options);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.move_j_calls > before_estop_move;
}));
setHardwareEmergencyStop(true);
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.group_stop_calls > before_estop_stop;
}));
CHECK_TRUE(estop_move.wait_for(2s) == std::future_status::ready);
if (estop_move.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!estop_move.get().ok());
}
setHardwareEmergencyStop(false);
std::this_thread::sleep_for(150ms);
int move_count_while_latched = 0;
{
std::lock_guard lock(g_sdk.mutex);
move_count_while_latched = g_sdk.move_j_calls;
}
const auto rejected_while_latched = arm.moveJ(joint_a, options);
CHECK_TRUE(!rejected_while_latched.ok());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.move_j_calls == move_count_while_latched);
}
CHECK_TRUE(arm.clearFault().ok());
CHECK_TRUE(arm.torqueOn().ok());
CHECK_TRUE(arm.moveJ(joint_a, options).ok());
// Speed commands own the controller while waiting. A different motion is
// rejected, and Stop releases ownership only after termination.
holdNextMotion();
JointVelocityCommand speed{{0.1, 0.0, 0.0, 0.0, 0.0, 0.0}};
int speed_calls_before = 0;
{
std::lock_guard lock(g_sdk.mutex);
speed_calls_before = g_sdk.speed_j_calls;
}
auto speed_motion = std::async(std::launch::async, [&]() {
return arm.speedJ(speed, 0.5, 2.0);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.speed_j_calls > speed_calls_before;
}));
CHECK_TRUE(!arm.moveL(pose_a, options).ok());
CHECK_TRUE(arm.stopMotion().ok());
CHECK_TRUE(speed_motion.wait_for(1s) == std::future_status::ready);
if (speed_motion.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!speed_motion.get().ok());
}
CHECK_TRUE(!arm.busy());
// SpeedL used to hold the SDK mutex while waiting, which deadlocked its
// own timeout/Stop path. A concurrent Stop must cancel it, settle the
// controller, and allow a genuinely new Move command afterwards.
holdNextMotion();
CartesianVelocity line_speed;
line_speed.vx = 0.05;
int speed_l_calls_before = 0;
{
std::lock_guard lock(g_sdk.mutex);
speed_l_calls_before = g_sdk.speed_l_calls;
}
auto line_speed_motion = std::async(std::launch::async, [&]() {
return arm.speedL(line_speed, 0.5, 2.0, FrameType::Base);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.speed_l_calls > speed_l_calls_before;
}));
CHECK_TRUE(arm.stopMotion().ok());
CHECK_TRUE(line_speed_motion.wait_for(1s) == std::future_status::ready);
if (line_speed_motion.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!line_speed_motion.get().ok());
}
CHECK_TRUE(!arm.busy());
CHECK_TRUE(arm.moveJ(joint_b, options).ok());
// A dual-channel emergency input mismatch is a typed emergency latch. It
// remains blocked after the wiring level is healthy and is recovered only
// through the emergency recovery path.
int stops_before_signal_fault = 0;
{
std::lock_guard lock(g_sdk.mutex);
stops_before_signal_fault = g_sdk.group_stop_calls;
}
setEmergencySignalFault(true);
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.group_stop_calls > stops_before_signal_fault;
}));
setEmergencySignalFault(false);
std::this_thread::sleep_for(100ms);
CHECK_TRUE(!arm.moveJ(joint_c, options).ok());
CHECK_TRUE(arm.torqueOn().ok());
CHECK_TRUE(arm.moveJ(joint_c, options).ok());
// Power-off holds a terminal barrier through GrpDisable. Motion remains
// denied until an explicit enable confirms the powered state again.
CHECK_TRUE(arm.torqueOff().ok());
CHECK_TRUE(!arm.moveJ(joint_a, options).ok());
CHECK_TRUE(arm.torqueOn().ok());
CHECK_TRUE(arm.moveJ(joint_a, options).ok());
// Servo and program modes retain ownership beyond the start call. Stop of
// a retained program must use StopScript as well as the group stop path.
ServoOptions servo_options;
CHECK_TRUE(arm.startServoMode(servo_options).ok());
CHECK_TRUE(!arm.moveJ(joint_b, options).ok());
CHECK_TRUE(arm.servoJ(joint_b).ok());
CHECK_TRUE(arm.stopServoMode().ok());
CHECK_TRUE(!arm.busy());
CHECK_TRUE(arm.loadProgram("fake_program.script").ok());
CHECK_TRUE(arm.playProgram().ok());
CHECK_TRUE(!arm.moveJ(joint_c, options).ok());
int stop_script_calls_before = 0;
{
std::lock_guard lock(g_sdk.mutex);
stop_script_calls_before = g_sdk.stop_script_calls;
}
CHECK_TRUE(arm.stopMotion().ok());
{
std::lock_guard lock(g_sdk.mutex);
CHECK_TRUE(g_sdk.stop_script_calls > stop_script_calls_before);
}
CHECK_TRUE(!arm.busy());
// Retire an in-flight stale generation after transport loss before
// reconnecting; no old waiter may issue SDK reads into the new session.
holdNextMotion();
int moves_before_transport_loss = 0;
{
std::lock_guard lock(g_sdk.mutex);
moves_before_transport_loss = g_sdk.move_j_calls;
}
auto transport_lost_move = std::async(std::launch::async, [&]() {
return arm.moveJ(joint_c, options);
});
CHECK_TRUE(waitUntil([&]() {
std::lock_guard lock(g_sdk.mutex);
return g_sdk.move_j_calls > moves_before_transport_loss;
}));
dropFakeTransport();
CHECK_TRUE(arm.connect("127.0.0.1", 10003).ok());
CHECK_TRUE(transport_lost_move.wait_for(1s) == std::future_status::ready);
if (transport_lost_move.wait_for(0ms) == std::future_status::ready) {
CHECK_TRUE(!transport_lost_move.get().ok());
}
CHECK_TRUE(arm.moveJ(joint_b, options).ok());
CHECK_TRUE(arm.disconnect().ok());
resetFakeSdk();
HuayanRobot shutdown_arm(makeConfig());
CHECK_TRUE(shutdown_arm.connect("127.0.0.1", 10003).ok());
CHECK_TRUE(shutdown_arm.shutdown().ok());
CHECK_TRUE(!shutdown_arm.isConnected());
return failures == 0 ? 0 : 1;
}

View File

@ -1,232 +0,0 @@
#include "devices/arm/huayan_arm/huayan_lifecycle_state.h"
#include <chrono>
#include <iostream>
namespace {
#define CHECK_TRUE(condition) \
do { \
if (!(condition)) { \
std::cerr << "CHECK_TRUE failed at line " << __LINE__ << ": " \
<< #condition << std::endl; \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using namespace cmvr::device::huayan_internal;
MotionState motion;
CHECK_TRUE(motion.begin(MotionKind::None).status ==
MotionStartStatus::Invalid);
// A completed target does not poison an identical subsequent command,
// while an actually concurrent command is rejected.
const auto first_joint = motion.begin(MotionKind::Joint);
CHECK_TRUE(first_joint.started());
CHECK_TRUE(motion.begin(MotionKind::Joint).status ==
MotionStartStatus::Busy);
CHECK_TRUE(motion.begin(MotionKind::Linear).status ==
MotionStartStatus::Busy);
motion.finish(first_joint.token);
const auto repeated_joint = motion.begin(MotionKind::Joint);
CHECK_TRUE(repeated_joint.started());
CHECK_TRUE(repeated_joint.token.generation >
first_joint.token.generation);
motion.finish(first_joint.token);
CHECK_TRUE(motion.ownerActive(repeated_joint.token));
motion.finish(repeated_joint.token);
CHECK_TRUE(!motion.busy());
// Stop cancels the current generation and cannot complete before its
// owner exits.
const auto linear = motion.begin(MotionKind::Linear);
CHECK_TRUE(linear.started());
const auto stop_linear = motion.beginStop();
CHECK_TRUE(stop_linear.started());
CHECK_TRUE(stop_linear.kind == MotionKind::Linear);
CHECK_TRUE(stop_linear.active_token.generation ==
linear.token.generation);
CHECK_TRUE(stop_linear.tracked_motion);
CHECK_TRUE(motion.cancelled(linear.token));
CHECK_TRUE(motion.beginStop().status ==
StopStartStatus::AlreadyStopping);
CHECK_TRUE(motion.begin(MotionKind::Joint).status ==
MotionStartStatus::Stopping);
CHECK_TRUE(!motion.waitForOwnerExit(
linear.token, std::chrono::milliseconds(1)));
CHECK_TRUE(!motion.completeStop());
motion.finish(linear.token);
CHECK_TRUE(motion.waitForOwnerExit(
linear.token, std::chrono::milliseconds(1)));
CHECK_TRUE(motion.completeStop());
CHECK_TRUE(!motion.busy());
// An uncertain submission/completion remains fail-closed until a
// positively acknowledged Stop clears it.
const auto failed_speed = motion.begin(MotionKind::SpeedLinear);
CHECK_TRUE(failed_speed.started());
motion.failMotion(failed_speed.token);
CHECK_TRUE(motion.snapshot().blocked);
CHECK_TRUE(motion.begin(MotionKind::Joint).status ==
MotionStartStatus::Blocked);
const auto stop_failed_speed = motion.beginStop();
CHECK_TRUE(stop_failed_speed.kind == MotionKind::SpeedLinear);
CHECK_TRUE(stop_failed_speed.tracked_motion);
CHECK_TRUE(motion.completeStop());
const auto failed_stop_motion = motion.begin(MotionKind::Joint);
CHECK_TRUE(failed_stop_motion.started());
const auto failed_stop = motion.beginStop();
CHECK_TRUE(failed_stop.kind == MotionKind::Joint);
motion.failStop();
CHECK_TRUE(motion.snapshot().blocked);
CHECK_TRUE(motion.begin(MotionKind::Linear).status ==
MotionStartStatus::Blocked);
motion.finish(failed_stop_motion.token);
const auto retry_failed_stop = motion.beginStop();
CHECK_TRUE(retry_failed_stop.kind == MotionKind::Joint);
CHECK_TRUE(motion.completeStop());
// Servo and program modes remain owned after their start RPC returns.
const auto servo = motion.begin(MotionKind::Servo);
CHECK_TRUE(servo.started());
motion.finish(servo.token, MotionFinishMode::Retain);
CHECK_TRUE(motion.snapshot().retained_kind == MotionKind::Servo);
CHECK_TRUE(motion.begin(MotionKind::Program).status ==
MotionStartStatus::Busy);
const auto servo_update = motion.begin(MotionKind::Servo, true);
CHECK_TRUE(servo_update.started());
motion.finish(servo_update.token);
CHECK_TRUE(motion.snapshot().retained_kind == MotionKind::Servo);
const auto stop_servo = motion.beginStop();
CHECK_TRUE(stop_servo.kind == MotionKind::Servo);
CHECK_TRUE(stop_servo.tracked_motion);
CHECK_TRUE(motion.completeStop());
const auto program = motion.begin(MotionKind::Program);
CHECK_TRUE(program.started());
motion.finish(program.token, MotionFinishMode::Retain);
const auto cancelled_program = motion.cancelActiveForSafety();
CHECK_TRUE(cancelled_program.kind == MotionKind::Program);
CHECK_TRUE(cancelled_program.tracked_motion);
CHECK_TRUE(!cancelled_program.active_token.valid());
CHECK_TRUE(motion.begin(MotionKind::Joint).status ==
MotionStartStatus::Blocked);
const auto stop_program = motion.beginStop();
CHECK_TRUE(stop_program.kind == MotionKind::Program);
CHECK_TRUE(motion.completeStop());
const auto safety_move = motion.begin(MotionKind::SpeedJoint);
CHECK_TRUE(safety_move.started());
const auto cancelled_move = motion.cancelActiveForSafety();
CHECK_TRUE(cancelled_move.kind == MotionKind::SpeedJoint);
CHECK_TRUE(cancelled_move.active_token.generation ==
safety_move.token.generation);
CHECK_TRUE(motion.cancelled(safety_move.token));
motion.finish(safety_move.token);
const auto stop_safety_move = motion.beginStop();
CHECK_TRUE(stop_safety_move.kind == MotionKind::SpeedJoint);
CHECK_TRUE(motion.completeStop());
RawSafetyState raw;
CHECK_TRUE(classifySafetyCondition(raw) == SafetyCondition::Unknown);
raw.valid = true;
CHECK_TRUE(classifySafetyCondition(raw) == SafetyCondition::Normal);
raw.software_protective_stop = true;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::SoftwareProtectiveStop);
raw.software_emergency_stop = true;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::SoftwareEmergencyStop);
raw.robot_fault = 1;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::RobotFault);
raw.safeguard_stop = 1;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::SafeguardStop);
raw.emergency_stop = 1;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::EmergencyStop);
raw.safeguard_signal_fault = 1;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::SafeguardSignalFault);
raw.emergency_signal_fault = 1;
CHECK_TRUE(classifySafetyCondition(raw) ==
SafetyCondition::EmergencySignalFault);
SafetyState safety;
CHECK_TRUE(!safety.tryPermit().has_value());
safety.observe(SafetyCondition::Normal);
const auto initial_permit = safety.tryPermit();
CHECK_TRUE(initial_permit.has_value());
CHECK_TRUE(safety.validate(*initial_permit));
safety.observe(SafetyCondition::EmergencyStop);
CHECK_TRUE(safety.snapshot().latched);
CHECK_TRUE(!safety.validate(*initial_permit));
CHECK_TRUE(!safety.beginRecovery(safety.snapshot().epoch).has_value());
const auto first_emergency_epoch = safety.snapshot().epoch;
safety.observe(SafetyCondition::EmergencyStop);
safety.observe(SafetyCondition::EmergencyStop);
CHECK_TRUE(safety.snapshot().epoch == first_emergency_epoch);
// Releasing the hardware switch only changes the observed level; it does
// not clear the event latch or issue a new motion permit.
safety.observe(SafetyCondition::Normal);
CHECK_TRUE(safety.snapshot().latched);
CHECK_TRUE(!safety.tryPermit().has_value());
const auto not_ready = safety.beginRecovery(safety.snapshot().epoch);
CHECK_TRUE(not_ready.has_value());
CHECK_TRUE(!safety.completeRecovery(*not_ready, false, true, true));
CHECK_TRUE(safety.snapshot().latched);
safety.failRecovery(*not_ready);
const auto not_idle = safety.beginRecovery(safety.snapshot().epoch);
CHECK_TRUE(not_idle.has_value());
CHECK_TRUE(!safety.completeRecovery(*not_idle, true, false, true));
CHECK_TRUE(safety.snapshot().latched);
safety.failRecovery(*not_idle);
const auto not_cancelled =
safety.beginRecovery(safety.snapshot().epoch);
CHECK_TRUE(not_cancelled.has_value());
CHECK_TRUE(!safety.completeRecovery(*not_cancelled, true, true, false));
CHECK_TRUE(safety.snapshot().latched);
safety.failRecovery(*not_cancelled);
const auto recovery_retry =
safety.beginRecovery(safety.snapshot().epoch);
CHECK_TRUE(recovery_retry.has_value());
CHECK_TRUE(safety.completeRecovery(
*recovery_retry, true, true, true));
const auto recovered_permit = safety.tryPermit();
CHECK_TRUE(recovered_permit.has_value());
CHECK_TRUE(safety.validate(*recovered_permit));
// A second safety event, including the same physical E-stop being pressed
// again, invalidates an older recovery token atomically.
safety.observe(SafetyCondition::EmergencyStop);
safety.observe(SafetyCondition::Normal);
const auto stale_recovery =
safety.beginRecovery(safety.snapshot().epoch);
CHECK_TRUE(stale_recovery.has_value());
safety.observe(SafetyCondition::EmergencyStop);
safety.observe(SafetyCondition::Normal);
CHECK_TRUE(!safety.completeRecovery(
*stale_recovery, true, true, true));
CHECK_TRUE(safety.snapshot().latched);
CHECK_TRUE(!safety.snapshot().recovery_in_progress);
const auto stale_epoch = safety.snapshot().epoch;
safety.observe(SafetyCondition::SafeguardStop);
safety.observe(SafetyCondition::Normal);
CHECK_TRUE(!safety.beginRecovery(stale_epoch).has_value());
return 0;
}

View File

@ -21,72 +21,3 @@ target_link_libraries(ume_robot_arm
add_library(cmvr_es::device::ume_robot_arm ALIAS ume_robot_arm)
install(TARGETS ume_robot_arm LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(damiao_mit_codec_test
tests/damiao_mit_codec_test.cpp
)
target_link_libraries(damiao_mit_codec_test
PRIVATE
cmvr_es::device::ume_robot_arm
gtest
gtest_main
pthread
)
add_test(
NAME damiao_mit_codec_test
COMMAND damiao_mit_codec_test
)
set(_ume_robot_arm_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _ume_robot_arm_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(damiao_mit_codec_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ume_robot_arm_test_environment}"
)
add_executable(damiao_can_fd_chain_test
tests/damiao_can_fd_chain_test.cpp
)
target_link_libraries(damiao_can_fd_chain_test
PRIVATE
cmvr_es::device::ume_robot_arm
gtest
gtest_main
pthread
)
add_test(
NAME damiao_can_fd_chain_test
COMMAND damiao_can_fd_chain_test
)
set_tests_properties(damiao_can_fd_chain_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ume_robot_arm_test_environment}"
)
add_executable(ume_robot_arm_test
tests/ume_robot_arm_test.cpp
)
target_link_libraries(ume_robot_arm_test
PRIVATE
cmvr_es::device::ume_robot_arm
gtest
gtest_main
pthread
)
target_compile_definitions(ume_robot_arm_test PRIVATE
CMVR_UME_ARM_CONFIG_PATH="${PROJECT_SOURCE_DIR}/cmvr-es/config/devices/arm/ume_arms.pb.txt"
)
add_test(
NAME ume_robot_arm_test
COMMAND ume_robot_arm_test
)
set_tests_properties(ume_robot_arm_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ume_robot_arm_test_environment}"
)
endif()

View File

@ -1,407 +0,0 @@
#include "arm/ume_robot_arm/include/damiao_can_fd_chain.h"
#include <chrono>
#include <deque>
#include <memory>
#include <string>
#include <thread>
#include <utility>
#include <vector>
#include <gtest/gtest.h>
#include "canbus/abstract_canbus.h"
namespace cmvr::device {
namespace {
class FakeCanbus final : public AbstractCanbus {
public:
std::string typeName() const override { return "FakeCanbus"; }
bool init() override
{
initialized = true;
return init_result;
}
bool start() override
{
started = start_result;
is_started_ = started;
return started;
}
bool stop() override
{
stopped = true;
started = false;
is_started_ = false;
return true;
}
msgs::ErrorCode send(const std::vector<CanFrame>& frames,
int32_t* frame_num) override
{
if (!started || !frame_num ||
*frame_num != static_cast<int32_t>(frames.size())) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
if (!send_result) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
sent_batches.push_back(frames);
if (!scheduled_replies.empty()) {
for (const auto& reply : scheduled_replies.front()) {
replies.push_back(reply);
}
scheduled_replies.pop_front();
}
return msgs::ErrorCode::OK;
}
msgs::ErrorCode receive(std::vector<CanFrame>* frames,
int32_t* frame_num) override
{
if (!started || !frames || !frame_num || replies.empty()) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_RECV_FAILED;
}
frames->clear();
frames->push_back(replies.front());
replies.pop_front();
*frame_num = 1;
return msgs::ErrorCode::OK;
}
bool discardPendingFrames() override
{
++drain_calls;
if (drain_delay > std::chrono::microseconds::zero()) {
std::this_thread::sleep_for(drain_delay);
}
replies.clear();
return drain_result;
}
std::string getErrorString(int32_t) override { return {}; }
void enqueueReplies(std::vector<CanFrame> batch)
{
scheduled_replies.push_back(std::move(batch));
}
bool init_result{true};
bool start_result{true};
bool initialized{false};
bool started{false};
bool stopped{false};
bool drain_result{true};
bool send_result{true};
std::size_t drain_calls{0};
std::chrono::microseconds drain_delay{0};
std::vector<std::vector<CanFrame>> sent_batches;
std::deque<CanFrame> replies;
std::deque<std::vector<CanFrame>> scheduled_replies;
};
DamiaoJointSpec joint(std::string name,
std::uint32_t command_id,
std::uint32_t feedback_id,
std::uint8_t reported_id,
int direction = 1)
{
DamiaoJointSpec spec;
spec.joint_name = std::move(name);
spec.command_id = command_id;
spec.feedback_id = feedback_id;
spec.reported_motor_id = reported_id;
spec.model = DamiaoMotorModel::DM4310;
spec.direction = direction;
spec.zero_offset_rad = direction == 1 ? 0.1 : -0.2;
spec.joint_lower_rad = -2.0;
spec.joint_upper_rad = 2.0;
spec.max_velocity_rad_s = 3.0;
spec.max_torque_nm = 2.0;
spec.healthy_status_mask = 1U << 0U;
spec.max_driver_temperature_raw = 80U;
spec.max_motor_temperature_raw = 90U;
return spec;
}
CanFrame feedback(std::uint32_t id,
std::uint8_t reported_id,
std::uint8_t status = 0U)
{
CanFrame frame;
frame.id = id;
frame.len = 8;
frame.is_fd = true;
frame.bitrate_switch = true;
frame.rx_monotonic_ns = 100;
frame.data[0] =
static_cast<std::uint8_t>((status << 4U) | reported_id);
frame.data[1] = 0x80;
frame.data[2] = 0x00;
frame.data[3] = 0x80;
frame.data[4] = 0x08;
frame.data[5] = 0x00;
frame.data[6] = 30U;
frame.data[7] = 35U;
return frame;
}
std::chrono::steady_clock::time_point soon()
{
return std::chrono::steady_clock::now() +
std::chrono::milliseconds(20);
}
std::size_t countLifecycleByte(
const std::vector<std::vector<CanFrame>>& batches,
const std::uint8_t value)
{
std::size_t count = 0;
for (const auto& batch : batches) {
for (const auto& frame : batch) {
if (frame.len == 8 &&
frame.data[0] == 0xFF &&
frame.data[7] == value) {
++count;
}
}
}
return count;
}
TEST(DamiaoCanFdChainTest, PassiveOpenNeverEnablesHardware)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, false});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
EXPECT_EQ(chain.state(), DamiaoChainState::Passive);
EXPECT_TRUE(bus->sent_batches.empty());
const auto arm_result = chain.arm(soon());
EXPECT_FALSE(arm_result.ok());
EXPECT_EQ(arm_result.code, ArmErrorCode::CommandRejected);
EXPECT_TRUE(bus->sent_batches.empty());
}
TEST(DamiaoCanFdChainTest, ExplicitArmAndExchangeUseUniqueConfiguredFeedback)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus,
{joint("J1", 1, 0x11, 1),
joint("J2", 2, 0x12, 2, -1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
// A stale invalid frame is already queued before this request. The drain
// must remove it; only replies generated by the subsequent send may be
// accepted.
bus->replies.push_back(feedback(0x11, 1, 2));
bus->enqueueReplies({
feedback(0x12, 2),
feedback(0x11, 1),
});
ASSERT_TRUE(chain.arm(soon()).ok());
EXPECT_EQ(chain.state(), DamiaoChainState::Armed);
EXPECT_EQ(countLifecycleByte(bus->sent_batches, 0xFC), 2U);
bus->enqueueReplies({
feedback(0x11, 1),
feedback(0x12, 2),
});
DamiaoMitCommand commands[2]{};
commands[0].tau_ff_nm = 1.0;
commands[1].tau_ff_nm = -1.0;
DamiaoJointFeedback states[2]{};
ASSERT_TRUE(chain.exchange(
commands, 2, states, 2, soon()).ok());
EXPECT_EQ(chain.state(), DamiaoChainState::Active);
EXPECT_TRUE(states[0].valid);
EXPECT_TRUE(states[1].valid);
// J2 has direction=-1 and offset=-0.2.
EXPECT_NEAR(states[1].q_rad, -0.2003814697265625, 1e-12);
EXPECT_NEAR(states[1].dq_rad_s, -0.0146484375, 1e-12);
EXPECT_NEAR(states[1].tau_nm, -0.0048828125, 1e-12);
}
TEST(DamiaoCanFdChainTest, MissedFeedbackLatchesFaultAndNeverReenables)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
bus->enqueueReplies({feedback(0x11, 1)});
ASSERT_TRUE(chain.arm(soon()).ok());
DamiaoMitCommand command;
DamiaoJointFeedback state;
const auto result = chain.exchange(
&command, 1, &state, 1,
std::chrono::steady_clock::now() +
std::chrono::milliseconds(1));
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::Timeout);
EXPECT_EQ(chain.state(), DamiaoChainState::FaultLatched);
EXPECT_EQ(countLifecycleByte(bus->sent_batches, 0xFC), 1U);
EXPECT_GE(countLifecycleByte(bus->sent_batches, 0xFD), 1U);
// Clearing the fault is explicit and leaves the chain passive.
bus->enqueueReplies({feedback(0x11, 1)});
ASSERT_TRUE(chain.clearFault(soon()).ok());
EXPECT_EQ(chain.state(), DamiaoChainState::Passive);
EXPECT_EQ(countLifecycleByte(bus->sent_batches, 0xFC), 1U);
}
TEST(DamiaoCanFdChainTest, DuplicateFeedbackCannotSatisfyAGroupCycle)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus,
{joint("J1", 1, 0x11, 1),
joint("J2", 2, 0x12, 2)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
bus->enqueueReplies({
feedback(0x11, 1),
feedback(0x12, 2),
});
ASSERT_TRUE(chain.arm(soon()).ok());
bus->enqueueReplies({
feedback(0x11, 1),
feedback(0x11, 1),
});
DamiaoMitCommand commands[2]{};
DamiaoJointFeedback states[2]{};
EXPECT_FALSE(chain.exchange(
commands, 2, states, 2,
std::chrono::steady_clock::now() +
std::chrono::milliseconds(1)).ok());
EXPECT_EQ(chain.state(), DamiaoChainState::FaultLatched);
EXPECT_EQ(chain.statistics().duplicate_feedback, 1U);
}
TEST(DamiaoCanFdChainTest, RejectsUnreviewedStatusAndClassicFrame)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
bus->enqueueReplies({feedback(0x11, 1)});
ASSERT_TRUE(chain.arm(soon()).ok());
bus->enqueueReplies({feedback(0x11, 1, 2)});
DamiaoMitCommand command;
DamiaoJointFeedback state;
EXPECT_FALSE(chain.exchange(
&command, 1, &state, 1, soon()).ok());
EXPECT_EQ(chain.state(), DamiaoChainState::FaultLatched);
auto second_bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain second(
second_bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(second.init().ok());
ASSERT_TRUE(second.openPassive().ok());
auto classic = feedback(0x11, 1);
classic.is_fd = false;
classic.bitrate_switch = false;
second_bus->enqueueReplies({classic});
EXPECT_FALSE(second.arm(soon()).ok());
EXPECT_EQ(second.state(), DamiaoChainState::FaultLatched);
auto third_bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain third(
third_bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(third.init().ok());
ASSERT_TRUE(third.openPassive().ok());
auto error_passive = feedback(0x11, 1);
error_passive.error_state_indicator = true;
third_bus->enqueueReplies({error_passive});
EXPECT_FALSE(third.arm(soon()).ok());
EXPECT_EQ(third.state(), DamiaoChainState::FaultLatched);
}
TEST(DamiaoCanFdChainTest, HardwareEnableRequiresReviewedHealthContract)
{
auto bus = std::make_shared<FakeCanbus>();
auto unreviewed = joint("J1", 1, 0x11, 1);
unreviewed.healthy_status_mask = 0U;
DamiaoCanFdChain chain(
bus, {unreviewed},
DamiaoChainOptions{true, true, true});
const auto result = chain.init();
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::InvalidArgument);
EXPECT_FALSE(bus->initialized);
}
TEST(DamiaoCanFdChainTest, DisableReportsUnconfirmedSafetyFrames)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
bus->enqueueReplies({feedback(0x11, 1)});
ASSERT_TRUE(chain.arm(soon()).ok());
bus->send_result = false;
const auto result = chain.disable();
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::CommandFailed);
EXPECT_EQ(chain.state(), DamiaoChainState::FaultLatched);
}
TEST(DamiaoCanFdChainTest, ExpiredDeadlineAfterDrainNeverCommitsEnable)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus, {joint("J1", 1, 0x11, 1)},
DamiaoChainOptions{true, true, true});
ASSERT_TRUE(chain.init().ok());
ASSERT_TRUE(chain.openPassive().ok());
bus->drain_delay = std::chrono::milliseconds(3);
bus->enqueueReplies({feedback(0x11, 1)});
const auto result = chain.arm(
std::chrono::steady_clock::now() +
std::chrono::milliseconds(1));
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::Timeout);
EXPECT_EQ(chain.state(), DamiaoChainState::FaultLatched);
EXPECT_EQ(countLifecycleByte(bus->sent_batches, 0xFC), 0U);
EXPECT_GE(countLifecycleByte(bus->sent_batches, 0xFD), 1U);
}
TEST(DamiaoCanFdChainTest, ConfigurationRejectsAmbiguousMappings)
{
auto bus = std::make_shared<FakeCanbus>();
DamiaoCanFdChain chain(
bus,
{joint("J1", 1, 0x11, 1),
joint("J1", 2, 0x12, 2)},
DamiaoChainOptions{true, true, false});
const auto result = chain.init();
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::InvalidArgument);
EXPECT_FALSE(bus->initialized);
}
} // namespace
} // namespace cmvr::device

View File

@ -1,150 +0,0 @@
#include "arm/ume_robot_arm/include/damiao_mit_codec.h"
#include <array>
#include <cmath>
#include <limits>
#include <gtest/gtest.h>
namespace cmvr::device {
namespace {
void expectPayload(const CanFrame& frame,
const std::array<std::uint8_t, 8>& expected)
{
ASSERT_EQ(frame.len, expected.size());
for (std::size_t i = 0; i < expected.size(); ++i) {
EXPECT_EQ(frame.data[i], expected[i]) << "byte " << i;
}
}
TEST(DamiaoMitCodecTest, MatchesLegacyPythonGoldenVectors)
{
CanFrame frame;
DamiaoMitCommand zero;
auto result = DamiaoMitCodec::encodeMit(
1, DamiaoMotorModel::DM4310, zero, true, true, frame);
ASSERT_TRUE(result);
EXPECT_EQ(result.saturation_mask, DAMIAO_SATURATION_NONE);
EXPECT_TRUE(frame.is_fd);
EXPECT_TRUE(frame.bitrate_switch);
expectPayload(frame, {0x7F, 0xFF, 0x7F, 0xF0,
0x00, 0x00, 0x07, 0xFF});
DamiaoMitCommand nontrivial;
nontrivial.kp = 100.0;
nontrivial.kd = 1.0;
nontrivial.q_rad = 1.25;
nontrivial.dq_rad_s = -2.5;
nontrivial.tau_ff_nm = 3.0;
result = DamiaoMitCodec::encodeMit(
1, DamiaoMotorModel::DM4310, nontrivial, false, false, frame);
ASSERT_TRUE(result);
expectPayload(frame, {0x8C, 0xCC, 0x75, 0x43,
0x33, 0x33, 0x3A, 0x65});
}
TEST(DamiaoMitCodecTest, ReportsProtocolSaturationWithoutHidingIt)
{
DamiaoMitCommand command;
command.q_rad = 100.0;
command.dq_rad_s = -100.0;
command.kp = 600.0;
command.kd = -1.0;
command.tau_ff_nm = 100.0;
CanFrame frame;
const auto result = DamiaoMitCodec::encodeMit(
2, DamiaoMotorModel::DM4310, command, false, false, frame);
ASSERT_TRUE(result);
EXPECT_EQ(
result.saturation_mask,
DAMIAO_SATURATION_Q | DAMIAO_SATURATION_DQ |
DAMIAO_SATURATION_KP | DAMIAO_SATURATION_KD |
DAMIAO_SATURATION_TAU);
}
TEST(DamiaoMitCodecTest, RejectsNonFiniteInput)
{
DamiaoMitCommand command;
command.tau_ff_nm = std::numeric_limits<double>::quiet_NaN();
CanFrame frame;
const auto result = DamiaoMitCodec::encodeMit(
1, DamiaoMotorModel::DM4310, command, false, false, frame);
EXPECT_FALSE(result);
EXPECT_EQ(result.error, DamiaoCodecError::NonFiniteInput);
}
TEST(DamiaoMitCodecTest, EncodesLifecycleFramesWithoutEnablingImplicitly)
{
CanFrame frame;
ASSERT_EQ(DamiaoMitCodec::encodeMode(
3, DamiaoMode::Enable, true, true, frame),
DamiaoCodecError::None);
expectPayload(frame, {0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFC});
ASSERT_EQ(DamiaoMitCodec::encodeMode(
3, DamiaoMode::Disable, true, true, frame),
DamiaoCodecError::None);
EXPECT_EQ(frame.data[7], 0xFD);
ASSERT_EQ(DamiaoMitCodec::encodeMode(
3, DamiaoMode::SetZero, true, true, frame),
DamiaoCodecError::None);
EXPECT_EQ(frame.data[7], 0xFE);
ASSERT_EQ(DamiaoMitCodec::encodeMode(
3, DamiaoMode::ClearFault, true, true, frame),
DamiaoCodecError::None);
EXPECT_EQ(frame.data[7], 0xFB);
}
TEST(DamiaoMitCodecTest, DecodesLegacyFeedbackAndRequiresConfiguredId)
{
CanFrame frame;
frame.id = 0x11;
frame.len = 8;
frame.is_fd = true;
frame.bitrate_switch = true;
frame.rx_monotonic_ns = 1234567;
frame.data[0] = 0xA1;
frame.data[1] = 0x80;
frame.data[2] = 0x00;
frame.data[3] = 0x80;
frame.data[4] = 0x08;
frame.data[5] = 0x00;
frame.data[6] = 40;
frame.data[7] = 41;
DamiaoJointFeedback feedback;
EXPECT_EQ(DamiaoMitCodec::decodeFeedback(
frame, 0x12, DamiaoMotorModel::DM4310, feedback),
DamiaoCodecError::UnexpectedFeedbackId);
EXPECT_FALSE(feedback.valid);
ASSERT_EQ(DamiaoMitCodec::decodeFeedback(
frame, 0x11, DamiaoMotorModel::DM4310, feedback),
DamiaoCodecError::None);
EXPECT_TRUE(feedback.valid);
EXPECT_EQ(feedback.reported_motor_id, 1);
EXPECT_EQ(feedback.status, 0x0A);
EXPECT_EQ(feedback.driver_temperature_raw, 40);
EXPECT_EQ(feedback.motor_temperature_raw, 41);
EXPECT_EQ(feedback.rx_monotonic_ns, 1234567);
EXPECT_NEAR(feedback.q_rad, 0.0003814697265625, 1e-12);
EXPECT_NEAR(feedback.dq_rad_s, 0.0146484375, 1e-12);
EXPECT_NEAR(feedback.tau_nm, 0.0048828125, 1e-12);
}
TEST(DamiaoMitCodecTest, ContainsAllLegacyMotorRanges)
{
EXPECT_DOUBLE_EQ(
DamiaoMitCodec::limitsFor(DamiaoMotorModel::DM8009).tau_max_nm,
54.0);
EXPECT_DOUBLE_EQ(
DamiaoMitCodec::limitsFor(DamiaoMotorModel::DMH3510).dq_max_rad_s,
280.0);
EXPECT_FALSE(
DamiaoMitCodec::limitsFor(DamiaoMotorModel::Unknown).valid());
}
} // namespace
} // namespace cmvr::device

View File

@ -1,338 +0,0 @@
#include "arm/ume_robot_arm/include/ume_robot_arm.h"
#include <chrono>
#include <cstdint>
#include <deque>
#include <functional>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
#include "canbus/abstract_canbus.h"
#include "common/io/proto_file_io.h"
#ifndef CMVR_UME_ARM_CONFIG_PATH
#define CMVR_UME_ARM_CONFIG_PATH ""
#endif
namespace cmvr::device {
namespace {
class LoopbackDamiaoBus final : public AbstractCanbus {
public:
std::string typeName() const override { return "LoopbackDamiaoBus"; }
bool init() override
{
std::lock_guard lock(mutex);
initialized = true;
return true;
}
bool start() override
{
std::lock_guard lock(mutex);
started = true;
is_started_ = true;
return true;
}
bool stop() override
{
std::lock_guard lock(mutex);
started = false;
is_started_ = false;
return true;
}
msgs::ErrorCode send(
const std::vector<CanFrame>& frames,
int32_t* frame_num) override
{
std::lock_guard lock(mutex);
if (!started || !frame_num ||
*frame_num != static_cast<int32_t>(frames.size())) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
if (!send_result) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
sent_batches.push_back(frames);
for (const auto& frame : frames) {
if (frame.id < 1U || frame.id > 8U) {
continue;
}
CanFrame reply;
reply.id = 0x10U + frame.id;
reply.len = 8U;
reply.is_fd = true;
reply.bitrate_switch = true;
reply.rx_monotonic_ns =
std::chrono::duration_cast<std::chrono::nanoseconds>(
std::chrono::steady_clock::now().time_since_epoch())
.count();
reply.data[0] = static_cast<std::uint8_t>(frame.id);
reply.data[1] = 0x80U;
reply.data[2] = 0x00U;
reply.data[3] = 0x80U;
reply.data[4] = 0x08U;
reply.data[5] = 0x00U;
replies.push_back(reply);
}
return msgs::ErrorCode::OK;
}
msgs::ErrorCode receive(
std::vector<CanFrame>* frames,
int32_t* frame_num) override
{
std::lock_guard lock(mutex);
if (!started || !frames || !frame_num || replies.empty()) {
return msgs::ErrorCode::CAN_CLIENT_ERROR_RECV_FAILED;
}
frames->clear();
frames->push_back(replies.front());
replies.pop_front();
*frame_num = 1;
return msgs::ErrorCode::OK;
}
bool discardPendingFrames() override
{
std::lock_guard lock(mutex);
replies.clear();
return started;
}
std::string getErrorString(int32_t) override { return {}; }
void setSendResult(const bool result)
{
std::lock_guard lock(mutex);
send_result = result;
}
std::size_t lifecycleCount(const std::uint8_t byte) const
{
std::lock_guard lock(mutex);
std::size_t count = 0;
for (const auto& batch : sent_batches) {
for (const auto& frame : batch) {
if (frame.len == 8U &&
frame.data[0] == 0xFFU &&
frame.data[7] == byte) {
++count;
}
}
}
return count;
}
bool initialized{false};
bool started{false};
bool send_result{true};
std::deque<CanFrame> replies;
std::vector<std::vector<CanFrame>> sent_batches;
mutable std::mutex mutex;
};
config::RobotArmConfig configFor(const bool hardware_enabled)
{
config::RobotArmConfig cfg;
cfg.set_id("ume_right");
auto* ume = cfg.mutable_ume();
ume->set_hardware_enabled(hardware_enabled);
ume->set_control_frequency_hz(800U);
ume->set_cycle_deadline_us(1000U);
ume->set_feedback_watchdog_ms(20U);
auto* can = ume->mutable_can();
can->set_interface_name("fake-can");
can->set_enable_fd(true);
can->set_bitrate_switch(true);
can->set_send_timeout_us(100U);
can->set_receive_timeout_us(100U);
can->set_receive_own_messages(false);
for (std::uint32_t i = 1; i <= 8U; ++i) {
auto* joint = ume->add_joints();
joint->set_joint_name("RJ" + std::to_string(i));
joint->set_command_id(i);
joint->set_feedback_id(0x10U + i);
joint->set_reported_motor_id(i);
joint->set_model(config::DAMIAO_MOTOR_MODEL_DM4310);
joint->set_direction(1);
joint->set_joint_lower_rad(-2.0);
joint->set_joint_upper_rad(2.0);
joint->set_max_velocity_rad_s(3.0);
joint->set_max_torque_nm(2.0);
joint->add_healthy_feedback_status(0U);
joint->set_max_driver_temperature_raw(80U);
joint->set_max_motor_temperature_raw(90U);
}
return cfg;
}
bool waitUntil(
const std::function<bool()>& predicate,
const std::chrono::milliseconds timeout)
{
const auto deadline = std::chrono::steady_clock::now() + timeout;
while (std::chrono::steady_clock::now() < deadline) {
if (predicate()) {
return true;
}
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return predicate();
}
TEST(UmeRobotArmTest, LifecycleIsPassiveUntilExplicitFreshTorqueCommand)
{
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(configFor(true), bus);
ASSERT_TRUE(arm.init());
EXPECT_EQ(bus->lifecycleCount(0xFCU), 0U);
ASSERT_TRUE(arm.start());
EXPECT_EQ(bus->lifecycleCount(0xFCU), 0U);
TorqueServoOptions options;
options.period = 0.00125;
options.command_watchdog_ms = 100U;
ASSERT_TRUE(arm.startTorqueMode(options).ok());
JointTorqueCommand command;
command.torque.assign(8U, 0.0);
ASSERT_TRUE(arm.servoTorque(command).ok());
ASSERT_TRUE(arm.torqueOn().ok());
ASSERT_TRUE(waitUntil(
[&arm] { return arm.getJointState().sequence > 0U; },
std::chrono::milliseconds(30)));
const auto state = arm.getJointState();
EXPECT_TRUE(state.position_valid);
EXPECT_TRUE(state.velocity_valid);
EXPECT_TRUE(state.effort_valid);
EXPECT_EQ(state.position.size(), 8U);
EXPECT_EQ(bus->lifecycleCount(0xFCU), 8U);
EXPECT_EQ(arm.getControlMode(), ControlMode::Torque);
EXPECT_TRUE(arm.stop());
EXPECT_GE(bus->lifecycleCount(0xFDU), 8U);
}
TEST(UmeRobotArmTest, StaleCommandLatchesFaultAndNeverReenables)
{
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(configFor(true), bus);
ASSERT_TRUE(arm.init());
ASSERT_TRUE(arm.start());
TorqueServoOptions options;
options.period = 0.001;
options.command_watchdog_ms = 2U;
ASSERT_TRUE(arm.startTorqueMode(options).ok());
JointTorqueCommand command;
command.torque.assign(8U, 0.0);
ASSERT_TRUE(arm.servoTorque(command).ok());
ASSERT_TRUE(arm.torqueOn().ok());
ASSERT_TRUE(waitUntil(
[&arm] { return arm.isFault(); },
std::chrono::milliseconds(50)));
EXPECT_FALSE(arm.busy());
EXPECT_EQ(bus->lifecycleCount(0xFCU), 8U);
EXPECT_GE(bus->lifecycleCount(0xFDU), 8U);
EXPECT_EQ(arm.healthSnapshot().state, DeviceHealthState::Fault);
}
TEST(UmeRobotArmTest, HardwareGateRejectsEnableWithoutWritingIt)
{
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(configFor(false), bus);
ASSERT_TRUE(arm.init());
ASSERT_TRUE(arm.start());
ASSERT_TRUE(arm.startTorqueMode(TorqueServoOptions{}).ok());
JointTorqueCommand command;
command.torque.assign(8U, 0.0);
ASSERT_TRUE(arm.servoTorque(command).ok());
const auto result = arm.torqueOn();
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::CommandRejected);
EXPECT_EQ(bus->lifecycleCount(0xFCU), 0U);
}
TEST(UmeRobotArmTest, PositionServoIsExplicitlyUnsupported)
{
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(configFor(false), bus);
JointPositionCommand command;
command.position.assign(8U, 0.0);
const auto result = arm.servoJ(command);
EXPECT_EQ(result.code, ArmErrorCode::UnsupportedCommand);
}
TEST(UmeRobotArmTest, RejectsCycleDeadlineLongerThanControlPeriod)
{
auto cfg = configFor(false);
cfg.mutable_ume()->set_cycle_deadline_us(2000U);
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(cfg, bus);
EXPECT_FALSE(arm.init());
EXPECT_FALSE(bus->initialized);
EXPECT_EQ(
arm.healthSnapshot().state,
DeviceHealthState::Fault);
}
TEST(UmeRobotArmTest, RejectsReportedMotorIdBeforeNarrowingConversion)
{
auto cfg = configFor(false);
cfg.mutable_ume()->mutable_joints(0)->set_reported_motor_id(257U);
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(cfg, bus);
EXPECT_FALSE(arm.init());
EXPECT_FALSE(bus->initialized);
EXPECT_EQ(arm.healthSnapshot().state, DeviceHealthState::Fault);
}
TEST(UmeRobotArmTest, EmergencyStopReportsUnconfirmedDisable)
{
auto bus = std::make_shared<LoopbackDamiaoBus>();
UmeRobotArm arm(configFor(true), bus);
ASSERT_TRUE(arm.init());
ASSERT_TRUE(arm.start());
bus->setSendResult(false);
const auto result = arm.emergencyStop();
EXPECT_FALSE(result.ok());
EXPECT_EQ(result.code, ArmErrorCode::CommandFailed);
EXPECT_TRUE(arm.isEmergencyStopped());
EXPECT_TRUE(arm.isFault());
EXPECT_NE(
arm.healthSnapshot().error_message.find("zero/disable failed"),
std::string::npos);
}
TEST(UmeRobotArmTest, CheckedInDualArmConfigParsesAndKeepsHardwareDisabled)
{
config::ArmRootConfig root;
ASSERT_TRUE(ProtoMessageIo::getProtoFromAsciiFile(
CMVR_UME_ARM_CONFIG_PATH, &root));
ASSERT_EQ(root.arm().robot_arms_size(), 2);
for (const auto& arm : root.arm().robot_arms()) {
ASSERT_TRUE(arm.has_ume());
EXPECT_EQ(arm.ume().joints_size(), 8);
EXPECT_FALSE(arm.ume().hardware_enabled());
EXPECT_TRUE(arm.ume().can().enable_fd());
EXPECT_TRUE(arm.ume().can().bitrate_switch());
EXPECT_GT(arm.ume().can().send_timeout_us(), 0U);
EXPECT_FALSE(arm.ume().can().receive_own_messages());
}
}
} // namespace
} // namespace cmvr::device

View File

@ -1,205 +0,0 @@
#include "common/base/logging/logger.h"
#include "pcan_client.h"
#include <fcntl.h>
#include <iostream>
#include <thread>
#include <chrono>
#include "cmvr/msgs/error_code.pb.h"
#include "cstdio"
namespace cmvr {
namespace device {
#define CAN_ID_MASK 0x1FFFF800U // can_filter mask
#define CAN_STANDARD_MAX_ID 0x7FFU
using cmvr::msgs::ErrorCode;
using cmvr::msgs::CANCardParameter;
PcanClient::PcanClient(const config::SocketCanConfig &cfg) {
port_ = static_cast<CANCardParameter::CANChannelId>(cfg.channel_id());
interface_ = CANCardParameter::NATIVE;
enable_can_err_check_ = false;
}
PcanClient::~PcanClient() {
stop();
}
bool PcanClient::init() {
#define LPCSTR const char*
/// <summary>
/// Sets a TPCANDevice value. The input can be numeric, in hexadecimal or decimal format, or as string denoting
/// a TPCANDevice value name.
/// </summary>
LPCSTR DeviceType = "PCAN_PCI";
/// <summary>
/// Sets value in range of a double. The input can be hexadecimal or decimal format.
/// </summary>
LPCSTR DeviceID = "";
/// <summary>
/// Sets a zero-based index value in range of a double. The input can be hexadecimal or decimal format.
/// </summary>
LPCSTR ControllerNumber = "";
/// <summary>
/// Sets a valid Internet Protocol address
/// </summary>
LPCSTR IPAddress = "";
/// <summary>
/// Sets a valid GUID for a PCAN device
/// </summary>
LPCSTR DeviceGUID = "";
char sParameters[260];
if (DeviceType != "")
snprintf(sParameters, sizeof(sParameters), "%s=%s", LOOKUP_DEVICE_TYPE, DeviceType);
if (DeviceID != "")
{
if (sParameters != "")
snprintf(sParameters, sizeof(sParameters), "%s, ", sParameters);
snprintf(sParameters, sizeof(sParameters), "%s%s=%s", sParameters, LOOKUP_DEVICE_ID, DeviceID);
}
if (ControllerNumber != "")
{
if (sParameters != "")
snprintf(sParameters, sizeof(sParameters), "%s, ", sParameters);
snprintf(sParameters, sizeof(sParameters), "%s%s=%s", sParameters, LOOKUP_CONTROLLER_NUMBER, ControllerNumber);
}
if (IPAddress != "")
{
if (sParameters != "")
snprintf(sParameters, sizeof(sParameters), "%s, ", sParameters);
snprintf(sParameters, sizeof(sParameters), "%s%s=%s", sParameters, LOOKUP_IP_ADDRESS, IPAddress);
}
if (DeviceGUID != "")
{
if (sParameters != "")
snprintf(sParameters, sizeof(sParameters), "%s, ", sParameters);
snprintf(sParameters, sizeof(sParameters), "%s%s=%s", sParameters, LOOKUP_DEVICE_GUID, DeviceGUID);
}
TPCANHandle handle;
TPCANStatus stsResult = CAN_LookUpChannel((LPSTR)sParameters, &handle);
TPCANStatus ret = CAN_Initialize(PcanHandle, Bitrate);
if (ret != PCAN_ERROR_OK) {
CMVR_LOG(ERROR) << "send message failed, error code: " << ret;
return false;
}
TPCANStatus state = CAN_GetStatus(PcanHandle);
if (state & PCAN_ERROR_BUSOFF) {
// 进入 bus-off,尝试复位总线
CMVR_LOG(ERROR) << "send message failed, error code: " << ret;
return false;
}
return true;
}
bool PcanClient::start() {
is_started_ = true;
return true;
}
bool PcanClient::stop() {
if (is_started_) {
is_started_ = false;
CAN_Uninitialize(dev_handler_);
CMVR_LOG(INFO) << "close socket can ok. port:" << port_;
}
return true;
}
cmvr::msgs::ErrorCode PcanClient::send(const std::vector<CanFrame> &frames, int32_t *const frame_num) {
if (frame_num == nullptr) {
CMVR_LOG(FATAL) << "frame_num is null";
}
if (frames.size() != static_cast<size_t>(*frame_num)) {
CMVR_LOG(FATAL) << "frames size does not match frame_num";
}
if (!is_started_) {
CMVR_LOG(ERROR) << "Nvidia can client has not been initiated! Please init first!";
return ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
for (size_t i = 0; i < frames.size() && i < MAX_CAN_SEND_FRAME_LEN; ++i) {
if (frames[i].len > CANBUS_MESSAGE_LENGTH || frames[i].len < 0) {
CMVR_LOG(ERROR) << "frames[" << i << "].len = " << frames[i].len
<< ", which is not equal to can message data length ("
<< CANBUS_MESSAGE_LENGTH << ").";
return ErrorCode::CAN_CLIENT_ERROR_SEND_FAILED;
}
if (frames[i].id > CAN_STANDARD_MAX_ID) {
send_frames_[i].ID = (frames[i].id & CAN_EFF_MASK) | CAN_EFF_FLAG;
} else {
send_frames_[i].ID = (frames[i].id & CAN_SFF_MASK);
}
// CMVR_LOG(INFO) << "send can id is " << send_frames_[i].can_id;
send_frames_[i].LEN = frames[i].len;
std::memcpy(send_frames_[i].DATA, frames[i].data, frames[i].len);
send_frames_[i].MSGTYPE = PCAN_MESSAGE_EXTENDED;
// Synchronous transmission of CAN messages
TPCANStatus ret = CAN_Write(PcanHandle, &send_frames_[i]);
if (ret != PCAN_ERROR_OK) {
CMVR_LOG(ERROR) << "send message failed, error code: " << ret;
return ErrorCode::CAN_CLIENT_ERROR_BASE;
}
}
return ErrorCode::OK;
}
cmvr::msgs::ErrorCode PcanClient::receive(std::vector<CanFrame> *const frames, int32_t *const frame_num) {
if (!is_started_) {
CMVR_LOG(ERROR) << "Nvidia can client is not init! Please init first!";
return ErrorCode::CAN_CLIENT_ERROR_RECV_FAILED;
}
if (*frame_num > MAX_CAN_RECV_FRAME_LEN || *frame_num < 0) {
CMVR_LOG(ERROR) << "recv can frame num not in range[0, " << MAX_CAN_RECV_FRAME_LEN
<< "], frame_num:" << *frame_num;
// TODO(Authors): check the difference of returning frame_num/error_code
return ErrorCode::CAN_CLIENT_ERROR_FRAME_NUM;
}
TPCANTimestamp CANTimeStamp;
for (int32_t i = 0; i < *frame_num && i < MAX_CAN_RECV_FRAME_LEN; ++i) {
CanFrame cf;
// We execute the "Read" function of the PCANBasic
TPCANStatus ret = CAN_Read(PcanHandle, &recv_frames_[i], &CANTimeStamp);
if (ret != PCAN_ERROR_OK) {
CMVR_LOG(ERROR) << "receive message failed, error code: " << ret;
return ErrorCode::CAN_CLIENT_ERROR_BASE;
}
if (recv_frames_[i].LEN > CANBUS_MESSAGE_LENGTH ||
recv_frames_[i].LEN < 0) {
CMVR_LOG(ERROR) << "recv_frames_[" << i
<< "].can_dlc = " << recv_frames_[i].LEN
<< ", which is not equal to can message data length ("
<< CANBUS_MESSAGE_LENGTH << ").";
return ErrorCode::CAN_CLIENT_ERROR_RECV_FAILED;
}
if (recv_frames_[i].ID > CAN_STANDARD_MAX_ID) {
cf.id = enable_can_err_check_
? recv_frames_[i].ID & CAN_EFF_MASK | CAN_ERR_FLAG
: recv_frames_[i].ID & CAN_EFF_MASK;
} else {
cf.id = (recv_frames_[i].ID & CAN_SFF_MASK);
}
CMVR_LOG(INFO) << "Socket can receive can id is " << recv_frames_[i].ID;
cf.len = recv_frames_[i].LEN;
std::memcpy(cf.data, recv_frames_[i].DATA, recv_frames_[i].LEN);
frames->push_back(cf);
}
return ErrorCode::OK;
}
std::string PcanClient::getErrorString(const int32_t status) {
return "";
}
} // namespace device
} // namespace cmvr

View File

@ -1,86 +0,0 @@
//
// Created by lgv on 2025/8/7.
//
/**
* @file
* @brief Defines the SocketCanClientRaw class which inherits AbstractCanbus.
*/
#pragma once
#include <unistd.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <linux/can.h>
#include <linux/can/raw.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include "cmvr/msgs/error_code.pb.h"
#include "cmvr/msgs/can_card_parameter.pb.h"
#include "cmvr/config/motor_config/motor_config.pb.h"
#include "gflags/gflags.h"
#include "../../abstract_canbus.h"
#include "canbus/common/canbus_consts.h"
#include <PCANBasic.h>
namespace cmvr {
namespace device {
class PcanClient final : public AbstractCanbus {
public:
explicit PcanClient(const config::SocketCanConfig &cfg);
~PcanClient();
std::string typeName() const override { return "PcanClient"; }
bool init() override;
bool start() override;
bool stop() override;
/**
* @brief Send messages
* @param frames The messages to send.
* @param frame_num The amount of messages to send.
* @return The status of the sending action
*/
cmvr::msgs::ErrorCode send(const std::vector<CanFrame> &frames,
int32_t *const frame_num) override;
/**
* @brief Receive messages
* @param frames The messages to receive.
* @param frame_num The amount of messages to receive.
* @return The status of the receiving action
*/
cmvr::msgs::ErrorCode receive(std::vector<CanFrame> *const frames,
int32_t *const frame_num) override;
/**
* @brief Get the error string.
* @param status The status to get the error string.
*/
std::string getErrorString(const int32_t status) override;
private:
int dev_handler_ = 0;
cmvr::msgs::CANCardParameter::CANChannelId port_;
cmvr::msgs::CANCardParameter::CANInterface interface_;
TPCANMsg send_frames_[MAX_CAN_SEND_FRAME_LEN];
TPCANMsg recv_frames_[MAX_CAN_RECV_FRAME_LEN];
//
bool enable_can_err_check_{false};
const TPCANHandle PcanHandle = PCAN_USBBUS1;
const TPCANBaudrate Bitrate = PCAN_BAUD_1M;
};
}
}

View File

@ -1,46 +0,0 @@
#include "common/base/logging/logger.h"
//
// Created by lgv on 2025/8/7.
//
#include "cmvr/msgs/error_code.pb.h"
#include "cmvr/msgs/can_card_parameter.pb.h"
#include "canbus/can_client/pcan/pcan_client.h"
#include "gtest/gtest.h"
namespace cmvr {
namespace device {
using cmvr::msgs::ErrorCode;
using cmvr::msgs::CANCardParameter;
TEST(PcanClienTest, simple_test) {
CANCardParameter param;
param.set_brand(CANCardParameter::SOCKET_CAN_RAW);
param.set_channel_id(CANCardParameter::CHANNEL_ID_ZERO);
config::SocketCanConfig cfg;
cfg.set_channel_id(0);
PcanClient socket_can_client(cfg);
socket_can_client.init();
// EXPECT_EQ(socket_can_client.start(), ErrorCode::CAN_CLIENT_ERROR_BASE);
socket_can_client.start();
std::vector<CanFrame> frames;
// int32_t num = 0;
// EXPECT_EQ(socket_can_client.send(frames, &num),
// ErrorCode::OK);
// ++num;
// EXPECT_EQ(socket_can_client.receive(&frames, &num),
// ErrorCode::OK);
// CMVR_LOG(INFO) << frames.at(0).CanFrameString();
CanFrame can_frame;
can_frame.id = 0x123;
can_frame.len = 8;
memset(can_frame.data, 0xA3, sizeof(can_frame.data));
frames.clear();
frames.push_back(can_frame);
EXPECT_EQ(socket_can_client.sendSingleFrame(frames),
ErrorCode::OK);
socket_can_client.stop();
}
}
}

View File

@ -7,30 +7,3 @@ add_library(cmvr_es::device::rh56dftp_dexhand ALIAS rh56dftp_dexhand)
target_link_libraries(rh56dftp_dexhand PRIVATE cmvr_es::hardware cmvr_es::proto -lmodbus)
install(TARGETS rh56dftp_dexhand LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(rh56dftp_dexhand_stop_all_test
tests/rh56dftp_dexhand_stop_all_test.cpp
)
target_link_libraries(rh56dftp_dexhand_stop_all_test PRIVATE
cmvr_es::device::rh56dftp_dexhand
gtest
gtest_main
pthread
)
add_test(
NAME rh56dftp_dexhand_stop_all_test
COMMAND rh56dftp_dexhand_stop_all_test
)
set(_rh56_stop_all_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _rh56_stop_all_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(rh56dftp_dexhand_stop_all_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_rh56_stop_all_test_environment}"
)
endif()

View File

@ -1,348 +0,0 @@
#include "devices/dexhand/rh56dftp_dexhand/include/rh56dftp_dexhand.h"
#include <array>
#include <chrono>
#include <condition_variable>
#include <deque>
#include <future>
#include <memory>
#include <mutex>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
namespace cmvr::device {
namespace {
using namespace std::chrono_literals;
class FakeModbusController final : public ModbusController {
public:
bool open(const std::string&, int) override
{
std::lock_guard lock(mutex_);
open_ = true;
return true;
}
void close() override
{
std::lock_guard lock(mutex_);
open_ = false;
}
bool isOpen() const override
{
std::lock_guard lock(mutex_);
return open_;
}
bool writeRegisters(
int,
const uint16_t* values,
const int count) override
{
std::unique_lock lock(mutex_);
++write_calls_;
write_started_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_write_; });
if (!write_succeeds_) {
return false;
}
actual_angles_.assign(values, values + count);
return true;
}
bool readRegisterBlock(
const int address,
const int count,
std::vector<uint16_t>& values) override
{
std::unique_lock lock(mutex_);
++read_calls_;
read_started_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_read_; });
const std::vector<uint16_t>* source = &actual_angles_;
std::vector<uint16_t> sampled_angles;
if (address == 1546 && !actual_angle_samples_.empty()) {
const auto sample = actual_angle_samples_.front();
actual_angle_samples_.pop_front();
sampled_angles.assign(sample.begin(), sample.end());
source = &sampled_angles;
}
values.assign(static_cast<std::size_t>(count), 0U);
for (std::size_t index = 0;
index < values.size() && index < source->size();
++index) {
values[index] = (*source)[index];
}
return read_succeeds_;
}
void setActualAngles(const std::array<uint16_t, 6>& values)
{
std::lock_guard lock(mutex_);
actual_angles_.assign(values.begin(), values.end());
actual_angle_samples_.clear();
}
void setActualAngleSamples(
std::deque<std::array<uint16_t, 6>> samples)
{
std::lock_guard lock(mutex_);
actual_angle_samples_ = std::move(samples);
}
void setWriteSucceeds(const bool succeeds)
{
std::lock_guard lock(mutex_);
write_succeeds_ = succeeds;
}
void blockNextRead()
{
std::lock_guard lock(mutex_);
block_read_ = true;
read_started_ = false;
}
void releaseRead()
{
{
std::lock_guard lock(mutex_);
block_read_ = false;
}
condition_.notify_all();
}
bool waitForRead(const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [this] { return read_started_; });
}
bool waitForReadCalls(
const int expected,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [this, expected] { return read_calls_ >= expected; });
}
void blockNextWrite()
{
std::lock_guard lock(mutex_);
block_write_ = true;
write_started_ = false;
}
void releaseWrite()
{
{
std::lock_guard lock(mutex_);
block_write_ = false;
}
condition_.notify_all();
}
bool waitForWrite(const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [this] { return write_started_; });
}
int readCalls() const
{
std::lock_guard lock(mutex_);
return read_calls_;
}
int writeCalls() const
{
std::lock_guard lock(mutex_);
return write_calls_;
}
private:
mutable std::mutex mutex_;
std::condition_variable condition_;
std::vector<uint16_t> actual_angles_{6U, 0U};
std::deque<std::array<uint16_t, 6>> actual_angle_samples_;
bool open_{false};
bool block_read_{false};
bool block_write_{false};
bool read_started_{false};
bool write_started_{false};
bool read_succeeds_{true};
bool write_succeeds_{true};
int read_calls_{0};
int write_calls_{0};
};
struct TestHand {
TestHand()
{
config.set_id("rh56-test");
config.set_ip("fake-modbus");
auto controller = std::make_unique<FakeModbusController>();
fake = controller.get();
hand = std::make_unique<RH56DFTPDexhand>(
config, std::move(controller));
EXPECT_TRUE(hand->init());
}
~TestHand()
{
if (hand) {
hand->stop();
}
}
config::RH56DFTPDexHandConfig config;
FakeModbusController* fake{nullptr};
std::unique_ptr<RH56DFTPDexhand> hand;
};
TEST(RH56DFTPDexhandStopAllTest, IdleTactileDeviceStopsWithoutClosingLifecycle)
{
TestHand fixture;
EXPECT_TRUE(fixture.hand->stopOperationalActivity());
EXPECT_EQ(fixture.hand->state(), AbstractDexHand::Status::INITIALIZED);
EXPECT_TRUE(fixture.fake->isOpen());
const int reads_before = fixture.fake->readCalls();
(void)fixture.hand->getSensorData(
AbstractDexHand::FingerType::INDEX,
AbstractDexHand::TactileRegion::TIP);
EXPECT_EQ(fixture.fake->readCalls(), reads_before);
}
TEST(RH56DFTPDexhandStopAllTest, UnreachedAngleTargetFailsClosedThenRecovers)
{
TestHand fixture;
const std::vector<int> target{100, 200, 300, 400, 500, 600};
fixture.hand->setAngles(target);
fixture.fake->setActualAngles({0, 0, 0, 0, 0, 0});
EXPECT_FALSE(fixture.hand->stopOperationalActivity());
fixture.fake->setActualAngles({100, 200, 300, 400, 500, 600});
EXPECT_TRUE(fixture.hand->stopOperationalActivity());
EXPECT_TRUE(fixture.fake->isOpen());
}
TEST(RH56DFTPDexhandStopAllTest, MovingSampleAtTargetDoesNotConfirmStop)
{
TestHand fixture;
const std::vector<int> target{100, 200, 300, 400, 500, 600};
fixture.hand->setAngles(target);
fixture.fake->setActualAngleSamples({
{100, 200, 300, 400, 500, 600},
{103, 203, 303, 403, 503, 603},
{106, 206, 306, 406, 506, 606},
});
EXPECT_FALSE(fixture.hand->stopOperationalActivity());
fixture.fake->setActualAngles({100, 200, 300, 400, 500, 600});
EXPECT_TRUE(fixture.hand->stopOperationalActivity());
}
TEST(RH56DFTPDexhandStopAllTest, FailedAngleWriteRemainsUnconfirmed)
{
TestHand fixture;
fixture.fake->setActualAngles({0, 0, 0, 0, 0, 0});
fixture.fake->setWriteSucceeds(false);
fixture.hand->setAngles({100, 200, 300, 400, 500, 600});
EXPECT_FALSE(fixture.hand->stopOperationalActivity());
}
TEST(RH56DFTPDexhandStopAllTest, StopWaitsForAdmittedAngleWrite)
{
TestHand fixture;
fixture.fake->blockNextWrite();
const std::vector<int> target{100, 200, 300, 400, 500, 600};
auto command = std::async(std::launch::async, [&] {
fixture.hand->setAngles(target);
});
ASSERT_TRUE(fixture.fake->waitForWrite(500ms));
auto stop = std::async(std::launch::async, [&] {
return fixture.hand->stopOperationalActivity();
});
EXPECT_EQ(stop.wait_for(20ms), std::future_status::timeout);
fixture.fake->releaseWrite();
EXPECT_EQ(command.wait_for(500ms), std::future_status::ready);
command.get();
ASSERT_EQ(stop.wait_for(500ms), std::future_status::ready);
EXPECT_TRUE(stop.get());
const int writes_before = fixture.fake->writeCalls();
fixture.hand->setAngles(target);
EXPECT_EQ(fixture.fake->writeCalls(), writes_before);
EXPECT_TRUE(fixture.hand->resumeOperationalActivity());
fixture.hand->setAngles(target);
EXPECT_EQ(fixture.fake->writeCalls(), writes_before + 1);
}
TEST(RH56DFTPDexhandStopAllTest, StopWaitsForAdmittedTactileRead)
{
TestHand fixture;
fixture.fake->blockNextRead();
auto read = std::async(std::launch::async, [&] {
return fixture.hand->getSensorData(
AbstractDexHand::FingerType::INDEX,
AbstractDexHand::TactileRegion::TIP);
});
ASSERT_TRUE(fixture.fake->waitForRead(500ms));
auto stop = std::async(std::launch::async, [&] {
return fixture.hand->stopOperationalActivity();
});
EXPECT_EQ(stop.wait_for(20ms), std::future_status::timeout);
fixture.fake->releaseRead();
EXPECT_EQ(read.wait_for(500ms), std::future_status::ready);
(void)read.get();
ASSERT_EQ(stop.wait_for(500ms), std::future_status::ready);
EXPECT_TRUE(stop.get());
}
TEST(RH56DFTPDexhandStopAllTest, StopDrainsAndPausesBackgroundTactilePolling)
{
TestHand fixture;
ASSERT_TRUE(fixture.hand->start());
const int reads_before_block = fixture.fake->readCalls();
fixture.fake->blockNextRead();
ASSERT_TRUE(fixture.fake->waitForReadCalls(reads_before_block + 1, 500ms));
auto stop = std::async(std::launch::async, [&] {
return fixture.hand->stopOperationalActivity();
});
EXPECT_EQ(stop.wait_for(20ms), std::future_status::timeout);
fixture.fake->releaseRead();
ASSERT_EQ(stop.wait_for(500ms), std::future_status::ready);
EXPECT_TRUE(stop.get());
const int reads_after_stop = fixture.fake->readCalls();
std::this_thread::sleep_for(30ms);
EXPECT_EQ(fixture.fake->readCalls(), reads_after_stop);
ASSERT_TRUE(fixture.hand->resumeOperationalActivity());
EXPECT_TRUE(fixture.fake->waitForReadCalls(reads_after_stop + 1, 500ms));
}
} // namespace
} // namespace cmvr::device

View File

@ -34,14 +34,3 @@ RobotArm 和业务 Task 只依赖 `MotorManager`/`AbstractMotor` 的稳定接口
- 软件 `emergencyStop` 和 Quick Stop 不具备功能安全等级;
- 真实设备必须具有经风险评估确定的硬接线急停、安全继电器和驱动器安全链;
- 新硬件配置保持 `enable: false`,完成方向、限位和故障注入验证后才能启用。
## 测试
```bash
cmake --build build --target grpc_motor_service_test -j4
ctest --test-dir build \
-R '^grpc_motor_service_test$' \
--output-on-failure
```
该测试使用 fake motor,不替代真实总线、驱动器或安全链验证。

View File

@ -7,32 +7,3 @@ add_library(cmvr_es::device::ffmpeg_speaker ALIAS ffmpeg_speaker)
target_link_libraries(ffmpeg_speaker PRIVATE -lpulse-simple -lpulse cmvr_es::proto)
install(TARGETS ffmpeg_speaker LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(ffmpeg_speaker_lifecycle_test
tests/ffmpeg_speaker_lifecycle_test.cpp
)
target_link_libraries(ffmpeg_speaker_lifecycle_test
PRIVATE
cmvr_es::device::ffmpeg_speaker
avcodec
avformat
avutil
swresample
)
add_test(
NAME ffmpeg_speaker_lifecycle_test
COMMAND ffmpeg_speaker_lifecycle_test
)
set(_ffmpeg_speaker_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _ffmpeg_speaker_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(ffmpeg_speaker_lifecycle_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ffmpeg_speaker_test_environment}"
)
endif()

View File

@ -1,54 +0,0 @@
#include "include/ffmpeg_speaker.h"
#include <iostream>
namespace {
bool check(const bool condition, const char* expression, const int line)
{
if (condition) {
return true;
}
std::cerr << "CHECK failed at line " << line << ": " << expression << '\n';
return false;
}
#define CHECK_TRUE(expression) \
do { \
if (!check(static_cast<bool>(expression), #expression, __LINE__)) { \
return 1; \
} \
} while (false)
} // namespace
int main()
{
cmvr::config::FFMpegSpeakerConfig config;
config.set_id("lifecycle-test-speaker");
cmvr::device::ffmpegSpeaker speaker(config);
cmvr::device::SpeakerState state{};
CHECK_TRUE(speaker.init());
speaker.getState(state);
CHECK_TRUE(state.is_initialized);
speaker.resetPlayState();
speaker.getState(state);
CHECK_TRUE(state.is_initialized);
CHECK_TRUE(speaker.stopPlayback());
speaker.getState(state);
CHECK_TRUE(state.is_initialized);
speaker.stopStreaming();
speaker.getState(state);
CHECK_TRUE(state.is_initialized);
CHECK_TRUE(speaker.stop());
speaker.getState(state);
CHECK_TRUE(!state.is_initialized);
std::cout << "ffmpeg_speaker_lifecycle_test: PASS\n";
return 0;
}

View File

@ -229,16 +229,6 @@ ring generation 不等于 `TrackDescriptor::generation`,ring 的 `ReadResult.s
## 测试
MediaSourceManager:
```bash
cmake --build build --target media_source_manager_test
ctest \
--test-dir build \
-R '^media_source_manager_test$' \
--output-on-failure
```
DeviceManager 已有 `device_manager_snapshot_test`,覆盖全量状态表、生命周期失败、
异常限长、排序和值快照并发读取。TaskManager 仍缺少独立 CTest。修改其行为时
至少补充:

View File

@ -12,23 +12,3 @@ add_library(
ALIAS control_authority_manager
)
install(TARGETS control_authority_manager ARCHIVE DESTINATION lib)
if(BUILD_TESTING)
add_executable(control_authority_manager_test
tests/control_authority_manager_test.cpp
)
target_link_libraries(control_authority_manager_test
PRIVATE
cmvr_es::control_authority_manager
gtest
gtest_main
pthread
)
add_test(
NAME control_authority_manager_test
COMMAND control_authority_manager_test
)
set_tests_properties(control_authority_manager_test PROPERTIES
TIMEOUT 10
)
endif()

View File

@ -1,923 +0,0 @@
#include "manager/control_authority_manager/include/control_authority_manager.h"
#include <chrono>
#include <future>
#include <thread>
#include <gtest/gtest.h>
namespace cmvr::control {
namespace {
using namespace std::chrono_literals;
class ControlAuthorityManagerTest : public ::testing::Test {
protected:
void SetUp() override
{
ControlAuthorityManager::instance().clear();
}
void TearDown() override
{
ControlAuthorityManager::instance().clear();
}
};
TEST_F(ControlAuthorityManagerTest, LeaseIsExclusiveAndExactReleaseRestoresAccess)
{
auto& manager = ControlAuthorityManager::instance();
const auto first =
manager.tryAcquire("right_arm", "session-a", 100ms);
ASSERT_TRUE(first.acquired);
EXPECT_TRUE(manager.validate(first.token));
EXPECT_TRUE(manager.isLeased("right_arm"));
const auto conflict =
manager.tryAcquire("right_arm", "session-b", 100ms);
EXPECT_FALSE(conflict.acquired);
manager.release(first.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
EXPECT_TRUE(
manager.tryAcquire("right_arm", "session-b", 100ms)
.acquired);
}
TEST_F(ControlAuthorityManagerTest, StaleGenerationCannotReleaseNewLease)
{
auto& manager = ControlAuthorityManager::instance();
const auto old =
manager.tryAcquire("right_arm", "session-a", 100ms);
ASSERT_TRUE(old.acquired);
manager.release(old.token);
const auto current =
manager.tryAcquire("right_arm", "session-a", 100ms);
ASSERT_TRUE(current.acquired);
ASSERT_NE(
old.token.generation,
current.token.generation);
manager.release(old.token);
EXPECT_TRUE(manager.validate(current.token));
}
TEST_F(ControlAuthorityManagerTest,
SafetyBarrierAtomicallyPreemptsControlAndRejectsOtherOwners)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 100ms);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(manager.validate(control.token));
EXPECT_TRUE(manager.validate(barrier.token));
const auto move_during_stop =
manager.tryAcquire("right_arm", "new-move", 100ms);
EXPECT_FALSE(move_during_stop.acquired);
const auto second_stop = manager.preemptAcquire(
"right_arm", "second-stop", 100ms);
ASSERT_TRUE(second_stop.acquired) << second_stop.detail;
manager.release(control.token);
EXPECT_TRUE(manager.validate(barrier.token));
manager.release(barrier.token);
EXPECT_TRUE(manager.validate(second_stop.token));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 100ms)
.acquired);
manager.release(second_stop.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
SafetyPreemptionReturnsWhileDispatchIsInFlightAndWaitsForBoth)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
auto pending_barrier = std::async(
std::launch::async,
[&manager]() {
return manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
});
const auto preempt_status = pending_barrier.wait_for(100ms);
if (preempt_status != std::future_status::ready) {
dispatch = {};
const auto cleanup_barrier = pending_barrier.get();
if (cleanup_barrier.acquired) {
manager.release(cleanup_barrier.token);
}
FAIL() << "safety preemption waited for an in-flight dispatch";
return;
}
const auto acquired_barrier = pending_barrier.get();
ASSERT_TRUE(acquired_barrier.acquired)
<< acquired_barrier.detail;
EXPECT_FALSE(manager.validate(control.token));
EXPECT_FALSE(manager.tryBeginDispatch(control.token).acquired());
EXPECT_FALSE(manager.waitForPreemptedRelease(
acquired_barrier.token, 10ms));
manager.release(control.token);
EXPECT_FALSE(manager.waitForPreemptedRelease(
acquired_barrier.token, 10ms));
dispatch = {};
EXPECT_TRUE(manager.waitForPreemptedRelease(
acquired_barrier.token, 10ms));
manager.release(acquired_barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
DispatchOnOneResourceDoesNotDelaySafetyPreemptionOnAnother)
{
auto& manager = ControlAuthorityManager::instance();
const auto right_control =
manager.tryAcquire("right_arm", "right-move", 1s);
const auto left_control =
manager.tryAcquire("left_arm", "left-move", 1s);
ASSERT_TRUE(right_control.acquired);
ASSERT_TRUE(left_control.acquired);
auto right_dispatch = manager.tryBeginDispatch(right_control.token);
ASSERT_TRUE(right_dispatch.acquired());
auto pending_left_barrier = std::async(
std::launch::async,
[&manager]() {
return manager.preemptAcquire(
"left_arm", "left-stop", 1s);
});
const auto preempt_status = pending_left_barrier.wait_for(100ms);
if (preempt_status != std::future_status::ready) {
right_dispatch = {};
const auto cleanup_barrier = pending_left_barrier.get();
if (cleanup_barrier.acquired) {
manager.release(cleanup_barrier.token);
}
FAIL() << "one resource's dispatch blocked another resource's stop";
return;
}
const auto left_barrier = pending_left_barrier.get();
ASSERT_TRUE(left_barrier.acquired) << left_barrier.detail;
manager.release(left_control.token);
EXPECT_TRUE(manager.waitForPreemptedRelease(
left_barrier.token, 0ms));
manager.release(left_barrier.token);
EXPECT_TRUE(right_dispatch.acquired());
right_dispatch = {};
manager.release(right_control.token);
}
TEST_F(ControlAuthorityManagerTest,
DispatchGuardDestructorReleasesTheInFlightFence)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
ControlAcquireResult barrier;
{
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
manager.release(control.token);
EXPECT_FALSE(manager.waitForPreemptedRelease(
barrier.token, 0ms));
}
EXPECT_TRUE(manager.waitForPreemptedRelease(barrier.token, 0ms));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
DispatchGuardMoveAssignmentReleasesOnlyItsPreviousFence)
{
auto& manager = ControlAuthorityManager::instance();
const auto right_control =
manager.tryAcquire("right_arm", "right-move", 1s);
const auto left_control =
manager.tryAcquire("left_arm", "left-move", 1s);
ASSERT_TRUE(right_control.acquired);
ASSERT_TRUE(left_control.acquired);
auto right_dispatch = manager.tryBeginDispatch(right_control.token);
auto left_dispatch = manager.tryBeginDispatch(left_control.token);
ASSERT_TRUE(right_dispatch.acquired());
ASSERT_TRUE(left_dispatch.acquired());
const auto right_barrier = manager.preemptAcquire(
"right_arm", "right-stop", 1s);
const auto left_barrier = manager.preemptAcquire(
"left_arm", "left-stop", 1s);
ASSERT_TRUE(right_barrier.acquired) << right_barrier.detail;
ASSERT_TRUE(left_barrier.acquired) << left_barrier.detail;
manager.release(right_control.token);
manager.release(left_control.token);
right_dispatch = std::move(left_dispatch);
EXPECT_TRUE(right_dispatch.acquired());
EXPECT_FALSE(left_dispatch.acquired());
EXPECT_TRUE(manager.waitForPreemptedRelease(
right_barrier.token, 0ms));
EXPECT_FALSE(manager.waitForPreemptedRelease(
left_barrier.token, 0ms));
right_dispatch = {};
EXPECT_TRUE(manager.waitForPreemptedRelease(
left_barrier.token, 0ms));
manager.release(right_barrier.token);
manager.release(left_barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
RevokeKeepsAnInFlightDispatchFencedFromNormalSuccessors)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
manager.revoke("right_arm");
EXPECT_FALSE(manager.validate(control.token));
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "successor", 1s).acquired);
manager.release(control.token);
EXPECT_FALSE(
manager.tryAcquire("right_arm", "successor", 1s).acquired);
dispatch = {};
const auto successor =
manager.tryAcquire("right_arm", "successor", 1s);
ASSERT_TRUE(successor.acquired) << successor.detail;
manager.release(successor.token);
}
TEST_F(ControlAuthorityManagerTest,
ClearKeepsInFlightDispatchesWhileErasingIdleEntries)
{
auto& manager = ControlAuthorityManager::instance();
const auto active =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(active.acquired);
ASSERT_TRUE(manager.tryAcquire("idle_arm", "idle-session", 1s).acquired);
auto dispatch = manager.tryBeginDispatch(active.token);
ASSERT_TRUE(dispatch.acquired());
manager.clear();
EXPECT_FALSE(
manager.tryAcquire("right_arm", "successor", 1s).acquired);
const auto idle_successor =
manager.tryAcquire("idle_arm", "idle-successor", 1s);
ASSERT_TRUE(idle_successor.acquired) << idle_successor.detail;
manager.release(idle_successor.token);
dispatch = {};
const auto active_successor =
manager.tryAcquire("right_arm", "successor", 1s);
ASSERT_TRUE(active_successor.acquired) << active_successor.detail;
manager.release(active_successor.token);
}
TEST_F(ControlAuthorityManagerTest,
ExpiredLeaseKeepsInFlightDispatchFencedFromNormalSuccessors)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 10ms);
ASSERT_TRUE(control.acquired);
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
std::this_thread::sleep_for(20ms);
EXPECT_FALSE(manager.validate(control.token));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "successor", 1s).acquired);
manager.release(control.token);
EXPECT_FALSE(
manager.tryAcquire("right_arm", "successor", 1s).acquired);
dispatch = {};
const auto successor =
manager.tryAcquire("right_arm", "successor", 1s);
ASSERT_TRUE(successor.acquired) << successor.detail;
manager.release(successor.token);
}
TEST_F(ControlAuthorityManagerTest,
DispatchGuardSurvivesAuthorityMapRehash)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
for (int index = 0; index < 512; ++index) {
ASSERT_TRUE(manager.tryAcquire(
"rehash-resource-" + std::to_string(index),
"rehash-owner",
1s).acquired);
}
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
manager.release(control.token);
EXPECT_FALSE(manager.waitForPreemptedRelease(barrier.token, 0ms));
dispatch = {};
EXPECT_TRUE(manager.waitForPreemptedRelease(barrier.token, 0ms));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
StaleLeaseCannotBeginDispatchAfterSafetyPreemption)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(manager.tryBeginDispatch(control.token).acquired());
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
ReleasedLastSafetyBarrierKeepsPreemptedHandlerFenced)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
manager.release(barrier.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 1s).acquired);
manager.release(control.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
EXPECT_TRUE(
manager.tryAcquire("right_arm", "new-move", 1s).acquired);
}
TEST_F(ControlAuthorityManagerTest,
SafetyBarrierWaitsForPreemptedNormalLeaseRelease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
auto wait_result = std::async(
std::launch::async,
[&manager, token = barrier.token]() {
return manager.waitForPreemptedRelease(token, 1s);
});
EXPECT_EQ(
wait_result.wait_for(30ms),
std::future_status::timeout);
manager.release(control.token);
EXPECT_TRUE(wait_result.get());
EXPECT_TRUE(manager.validate(barrier.token));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
ConditionalSafetyBarrierTracksPreemptedNormalLeaseRelease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
auto dispatch = manager.tryBeginDispatch(control.token);
ASSERT_TRUE(dispatch.acquired());
const auto barrier = manager.preemptAcquireIfCurrent(
control.token, "timed-out-action", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
dispatch = {};
EXPECT_FALSE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
manager.release(control.token);
EXPECT_TRUE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
ReleasedSafetyHolderStopsWaitingWithoutAffectingOtherHolder)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto first_barrier = manager.preemptAcquire(
"right_arm", "first-stop", 1s);
ASSERT_TRUE(first_barrier.acquired) << first_barrier.detail;
const auto second_barrier = manager.preemptAcquire(
"right_arm", "second-stop", 1s);
ASSERT_TRUE(second_barrier.acquired) << second_barrier.detail;
auto first_wait = std::async(
std::launch::async,
[&manager, token = first_barrier.token]() {
return manager.waitForPreemptedRelease(token, 1s);
});
auto second_wait = std::async(
std::launch::async,
[&manager, token = second_barrier.token]() {
return manager.waitForPreemptedRelease(token, 1s);
});
EXPECT_EQ(first_wait.wait_for(30ms), std::future_status::timeout);
EXPECT_EQ(second_wait.wait_for(30ms), std::future_status::timeout);
manager.release(first_barrier.token);
EXPECT_FALSE(first_wait.get());
EXPECT_EQ(second_wait.wait_for(30ms), std::future_status::timeout);
manager.release(control.token);
EXPECT_TRUE(second_wait.get());
manager.release(second_barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
PreemptedReleaseRequiresExactNormalLeaseToken)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
auto forged = control.token;
forged.owner_id = "different-owner";
manager.release(forged);
EXPECT_FALSE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
manager.release(control.token);
EXPECT_TRUE(
manager.waitForPreemptedRelease(barrier.token, 0ms));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
ClearWakesPreemptedReleaseWaiterAndInvalidatesSafetyHolder)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
auto wait_result = std::async(
std::launch::async,
[&manager, token = barrier.token]() {
return manager.waitForPreemptedRelease(token, 1s);
});
EXPECT_EQ(
wait_result.wait_for(30ms),
std::future_status::timeout);
manager.clear();
EXPECT_FALSE(wait_result.get());
manager.release(control.token);
}
TEST_F(ControlAuthorityManagerTest,
RevokeWakesPreemptedReleaseWaiterAndInvalidatesSafetyHolder)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
auto wait_result = std::async(
std::launch::async,
[&manager, token = barrier.token]() {
return manager.waitForPreemptedRelease(token, 1s);
});
EXPECT_EQ(
wait_result.wait_for(30ms),
std::future_status::timeout);
manager.revoke("right_arm");
EXPECT_FALSE(wait_result.get());
manager.release(control.token);
}
TEST_F(ControlAuthorityManagerTest,
ExpiredNormalLeaseStillRequiresHandlerReleaseAfterPreemption)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 10ms);
ASSERT_TRUE(control.acquired);
std::this_thread::sleep_for(20ms);
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
manager.release(control.token);
EXPECT_TRUE(
manager.waitForPreemptedRelease(barrier.token, 0ms));
manager.release(barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
QuarantinedFallbackTracksOriginalNormalHandlerRelease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
ASSERT_TRUE(manager.quarantineIfCurrent(control.token));
const auto barrier = manager.preemptAcquire(
"right_arm", "stop-operation", 1s);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(
manager.waitForPreemptedRelease(barrier.token, 10ms));
manager.release(control.token);
EXPECT_TRUE(
manager.waitForPreemptedRelease(barrier.token, 0ms));
manager.release(barrier.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
manager.revoke("right_arm");
}
TEST_F(ControlAuthorityManagerTest,
WaitRejectsStaleSafetyTokenForSuccessorEntry)
{
auto& manager = ControlAuthorityManager::instance();
const auto old_control =
manager.tryAcquire("right_arm", "old-move", 1s);
ASSERT_TRUE(old_control.acquired);
const auto old_barrier = manager.preemptAcquire(
"right_arm", "old-stop", 1s);
ASSERT_TRUE(old_barrier.acquired) << old_barrier.detail;
manager.release(old_barrier.token);
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 1s).acquired);
manager.release(old_control.token);
const auto successor =
manager.tryAcquire("right_arm", "new-move", 1s);
ASSERT_TRUE(successor.acquired);
const auto current_barrier = manager.preemptAcquire(
"right_arm", "new-stop", 1s);
ASSERT_TRUE(current_barrier.acquired) << current_barrier.detail;
EXPECT_FALSE(manager.waitForPreemptedRelease(
old_barrier.token, 0ms));
EXPECT_FALSE(manager.waitForPreemptedRelease(
current_barrier.token, 10ms));
manager.release(successor.token);
EXPECT_TRUE(manager.waitForPreemptedRelease(
current_barrier.token, 0ms));
manager.release(current_barrier.token);
}
TEST_F(ControlAuthorityManagerTest,
ConditionalSafetyBarrierPreemptsMatchingCurrentLease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(control.acquired);
const auto barrier = manager.preemptAcquireIfCurrent(
control.token, "timed-out-action", 100ms);
ASSERT_TRUE(barrier.acquired) << barrier.detail;
EXPECT_FALSE(manager.validate(control.token));
EXPECT_TRUE(manager.validate(barrier.token));
manager.release(control.token);
EXPECT_TRUE(manager.validate(barrier.token));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 100ms)
.acquired);
manager.release(barrier.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
ConditionalSafetyBarrierDoesNotPreemptSuccessorForStaleToken)
{
auto& manager = ControlAuthorityManager::instance();
const auto old =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(old.acquired);
const auto direct_stop = manager.preemptAcquire(
"right_arm", "direct-stop", 100ms);
ASSERT_TRUE(direct_stop.acquired) << direct_stop.detail;
manager.release(direct_stop.token);
EXPECT_FALSE(
manager.tryAcquire("right_arm", "move-session", 100ms).acquired);
manager.release(old.token);
const auto successor =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(successor.acquired);
ASSERT_NE(old.token.generation, successor.token.generation);
const auto barrier = manager.preemptAcquireIfCurrent(
old.token, "delayed-stop", 100ms);
EXPECT_FALSE(barrier.acquired);
EXPECT_FALSE(barrier.token.valid());
EXPECT_TRUE(manager.validate(successor.token));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "competing-move", 100ms)
.acquired);
manager.release(successor.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
ConditionalSafetyBarrierDoesNotJoinExistingSafetyBarrier)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(control.acquired);
const auto existing_barrier = manager.preemptAcquire(
"right_arm", "direct-stop", 100ms);
ASSERT_TRUE(existing_barrier.acquired) << existing_barrier.detail;
const auto delayed_barrier = manager.preemptAcquireIfCurrent(
control.token, "delayed-action-stop", 100ms);
EXPECT_FALSE(delayed_barrier.acquired);
EXPECT_FALSE(delayed_barrier.token.valid());
EXPECT_TRUE(manager.validate(existing_barrier.token));
manager.release(existing_barrier.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
manager.release(control.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
EXPECT_TRUE(
manager.tryAcquire("right_arm", "new-move", 100ms)
.acquired);
}
TEST_F(ControlAuthorityManagerTest,
QuarantineSurvivesNormalAndTemporarySafetyTokenRelease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 20ms);
ASSERT_TRUE(control.acquired);
ASSERT_TRUE(manager.quarantineIfCurrent(control.token));
EXPECT_FALSE(manager.validate(control.token));
EXPECT_TRUE(manager.isLeased("right_arm"));
manager.release(control.token);
std::this_thread::sleep_for(30ms);
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 100ms)
.acquired);
const auto temporary_stop = manager.preemptAcquire(
"right_arm", "temporary-stop", 100ms);
ASSERT_TRUE(temporary_stop.acquired) << temporary_stop.detail;
EXPECT_TRUE(manager.validate(temporary_stop.token));
manager.release(temporary_stop.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 100ms)
.acquired);
manager.revoke("right_arm");
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
QuarantineWithStaleTokenDoesNotAffectSuccessor)
{
auto& manager = ControlAuthorityManager::instance();
const auto old =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(old.acquired);
manager.release(old.token);
const auto successor =
manager.tryAcquire("right_arm", "move-session", 100ms);
ASSERT_TRUE(successor.acquired);
ASSERT_NE(old.token.generation, successor.token.generation);
EXPECT_FALSE(manager.quarantineIfCurrent(old.token));
EXPECT_TRUE(manager.validate(successor.token));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "competing-move", 100ms)
.acquired);
manager.release(successor.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
RetiredSafetyHolderStaysFailClosedUntilConfirmedRecovery)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto failed_stop = manager.preemptAcquire(
"right_arm", "failed-stop", 1s);
ASSERT_TRUE(failed_stop.acquired) << failed_stop.detail;
manager.release(control.token);
ASSERT_TRUE(manager.waitForPreemptedRelease(
failed_stop.token, 0ms));
ASSERT_TRUE(manager.retireSafetyHolder(failed_stop.token));
EXPECT_FALSE(manager.validate(failed_stop.token));
// A delayed destructor release cannot undo the retained fail-closed state.
manager.release(failed_stop.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_FALSE(
manager.tryAcquire("right_arm", "new-move", 1s).acquired);
const auto recovery = manager.preemptAcquire(
"right_arm", "confirmed-recovery", 1s);
ASSERT_TRUE(recovery.acquired) << recovery.detail;
ASSERT_TRUE(manager.waitForPreemptedRelease(recovery.token, 0ms));
ASSERT_TRUE(manager.recoverRetiredSafetyHolders(recovery.token));
EXPECT_TRUE(manager.validate(recovery.token));
manager.release(recovery.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
RecoveryWaitsForPreemptedNormalHandlerToRelease)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
const auto failed_stop = manager.preemptAcquire(
"right_arm", "failed-stop", 1s);
ASSERT_TRUE(failed_stop.acquired) << failed_stop.detail;
ASSERT_TRUE(manager.retireSafetyHolder(failed_stop.token));
const auto recovery = manager.preemptAcquire(
"right_arm", "confirmed-recovery", 1s);
ASSERT_TRUE(recovery.acquired) << recovery.detail;
EXPECT_FALSE(manager.recoverRetiredSafetyHolders(recovery.token));
EXPECT_FALSE(manager.waitForPreemptedRelease(recovery.token, 10ms));
manager.release(control.token);
ASSERT_TRUE(manager.waitForPreemptedRelease(recovery.token, 0ms));
ASSERT_TRUE(manager.recoverRetiredSafetyHolders(recovery.token));
manager.release(recovery.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
RecoveryPreservesEveryOtherActiveSafetyHolder)
{
auto& manager = ControlAuthorityManager::instance();
const auto retired = manager.preemptAcquire(
"right_arm", "failed-stop", 1s);
ASSERT_TRUE(retired.acquired) << retired.detail;
ASSERT_TRUE(manager.retireSafetyHolder(retired.token));
const auto independent_stop = manager.preemptAcquire(
"right_arm", "independent-stop", 1s);
const auto recovery = manager.preemptAcquire(
"right_arm", "confirmed-recovery", 1s);
ASSERT_TRUE(independent_stop.acquired) << independent_stop.detail;
ASSERT_TRUE(recovery.acquired) << recovery.detail;
ASSERT_TRUE(manager.recoverRetiredSafetyHolders(recovery.token));
EXPECT_TRUE(manager.validate(independent_stop.token));
EXPECT_TRUE(manager.validate(recovery.token));
EXPECT_FALSE(manager.validate(retired.token));
manager.release(recovery.token);
EXPECT_TRUE(manager.isLeased("right_arm"));
EXPECT_TRUE(manager.validate(independent_stop.token));
manager.release(independent_stop.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
RetiredOrForgedSafetyTokenCannotAuthorizeRecovery)
{
auto& manager = ControlAuthorityManager::instance();
const auto retired = manager.preemptAcquire(
"right_arm", "failed-stop", 1s);
ASSERT_TRUE(retired.acquired) << retired.detail;
ASSERT_TRUE(manager.retireSafetyHolder(retired.token));
EXPECT_FALSE(manager.recoverRetiredSafetyHolders(retired.token));
const auto recovery = manager.preemptAcquire(
"right_arm", "confirmed-recovery", 1s);
ASSERT_TRUE(recovery.acquired) << recovery.detail;
auto forged = recovery.token;
forged.owner_id = "different-owner";
EXPECT_FALSE(manager.recoverRetiredSafetyHolders(forged));
EXPECT_TRUE(manager.isLeased("right_arm"));
ASSERT_TRUE(manager.recoverRetiredSafetyHolders(recovery.token));
manager.release(recovery.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest,
ConfirmedRecoveryCanClearTokenlessQuarantine)
{
auto& manager = ControlAuthorityManager::instance();
const auto control =
manager.tryAcquire("right_arm", "move-session", 1s);
ASSERT_TRUE(control.acquired);
ASSERT_TRUE(manager.quarantineIfCurrent(control.token));
const auto recovery = manager.preemptAcquire(
"right_arm", "confirmed-recovery", 1s);
ASSERT_TRUE(recovery.acquired) << recovery.detail;
EXPECT_FALSE(manager.recoverRetiredSafetyHolders(recovery.token));
manager.release(control.token);
ASSERT_TRUE(manager.waitForPreemptedRelease(recovery.token, 0ms));
ASSERT_TRUE(manager.recoverRetiredSafetyHolders(recovery.token));
manager.release(recovery.token);
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest, ExpiryAndRenewUseMonotonicLocalTime)
{
auto& manager = ControlAuthorityManager::instance();
const auto lease =
manager.tryAcquire("right_arm", "session-a", 20ms);
ASSERT_TRUE(lease.acquired);
std::this_thread::sleep_for(10ms);
ASSERT_TRUE(manager.renew(lease.token, 30ms));
std::this_thread::sleep_for(20ms);
EXPECT_TRUE(manager.validate(lease.token));
std::this_thread::sleep_for(20ms);
EXPECT_FALSE(manager.validate(lease.token));
EXPECT_FALSE(manager.isLeased("right_arm"));
}
TEST_F(ControlAuthorityManagerTest, DifferentArmsCanBeLeasedIndependently)
{
auto& manager = ControlAuthorityManager::instance();
EXPECT_TRUE(
manager.tryAcquire("right_arm", "session-a", 100ms)
.acquired);
EXPECT_TRUE(
manager.tryAcquire("left_arm", "session-b", 100ms)
.acquired);
}
} // namespace
} // namespace cmvr::control

View File

@ -56,27 +56,4 @@ if(BUILD_TESTING)
)
endif()
add_executable(device_manager_lifecycle_test
tests/device_manager_lifecycle_test.cpp
)
target_link_libraries(device_manager_lifecycle_test PRIVATE
cmvr_es::device_manager
gtest
gtest_main
pthread
)
add_test(
NAME device_manager_lifecycle_test
COMMAND device_manager_lifecycle_test
)
set(_device_manager_lifecycle_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _device_manager_lifecycle_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(device_manager_lifecycle_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_device_manager_lifecycle_test_environment}"
)
endif()

View File

@ -1,153 +0,0 @@
#include "manager/device_manager/include/device_manager.h"
#include <stdexcept>
#include <gtest/gtest.h>
namespace {
class LifecycleDevice final : public cmvr::device::AbstractDevice {
public:
explicit LifecycleDevice(const std::string& id)
: AbstractDevice(id)
{
}
cmvr::device::DeviceKind kind() const noexcept override
{
return cmvr::device::DeviceKind::Camera;
}
std::string typeName() const override { return "LifecycleDevice"; }
bool start() override
{
++start_calls;
if (throw_on_start) {
throw std::runtime_error("start failure");
}
return start_result;
}
bool stop() override
{
++stop_calls;
return true;
}
bool start_result{true};
bool throw_on_start{false};
int start_calls{0};
int stop_calls{0};
};
class DeviceManagerLifecycleTest : public ::testing::Test {
protected:
void SetUp() override
{
cmvr::device::DeviceManager::destroyInstance();
}
void TearDown() override
{
cmvr::device::DeviceManager::destroyInstance();
}
};
TEST_F(DeviceManagerLifecycleTest,
EnabledDeviceCreationFailureMarksInitializationFailed)
{
cmvr::config::DeviceManagerConfig config;
auto* entry = config.add_devices();
entry->set_id("unsupported");
entry->set_type(
cmvr::config::DeviceConfigEntry::DEVICE_TYPE_UNKNOWN);
entry->set_enable(true);
auto& manager =
cmvr::device::DeviceManager::getInstance(config);
EXPECT_FALSE(manager.initialized());
EXPECT_FALSE(manager.start());
}
TEST_F(DeviceManagerLifecycleTest, DisabledInvalidDeviceIsIgnored)
{
cmvr::config::DeviceManagerConfig config;
auto* entry = config.add_devices();
entry->set_id("disabled");
entry->set_type(
cmvr::config::DeviceConfigEntry::DEVICE_TYPE_UNKNOWN);
entry->set_enable(false);
auto& manager =
cmvr::device::DeviceManager::getInstance(config);
EXPECT_TRUE(manager.initialized());
EXPECT_TRUE(manager.start());
}
TEST_F(DeviceManagerLifecycleTest,
DeviceStartFailureIsReturnedAndTriggersStop)
{
cmvr::config::DeviceManagerConfig config;
auto& manager =
cmvr::device::DeviceManager::getInstance(config);
ASSERT_TRUE(manager.initialized());
auto device =
std::make_shared<LifecycleDevice>("start_failure");
device->start_result = false;
manager.registerDevice(device);
EXPECT_FALSE(manager.start());
EXPECT_EQ(device->start_calls, 1);
EXPECT_EQ(device->stop_calls, 1);
}
TEST_F(DeviceManagerLifecycleTest,
DeviceStartExceptionIsReturnedAndTriggersStop)
{
cmvr::config::DeviceManagerConfig config;
auto& manager =
cmvr::device::DeviceManager::getInstance(config);
ASSERT_TRUE(manager.initialized());
auto device =
std::make_shared<LifecycleDevice>("start_exception");
device->throw_on_start = true;
manager.registerDevice(device);
EXPECT_FALSE(manager.start());
EXPECT_EQ(device->start_calls, 1);
EXPECT_EQ(device->stop_calls, 1);
}
TEST_F(DeviceManagerLifecycleTest,
EnforceSelectedCannotStartWithMissingConfiguredTarget)
{
cmvr::config::DeviceManagerConfig config;
auto* safety = config.mutable_safety();
safety->set_mode(
cmvr::config::SafetyManagerConfig::ENFORCE_SELECTED);
safety->add_enforced_device_ids("missing-arm");
auto& manager = cmvr::device::DeviceManager::getInstance(config);
ASSERT_TRUE(manager.initialized());
EXPECT_FALSE(manager.start());
EXPECT_EQ(
manager.safetyManager().snapshot().system_state,
cmvr::safety::SystemAdmissionState::Starting);
}
TEST_F(DeviceManagerLifecycleTest,
EnforceSelectedCannotSilentlyCoverNoDevices)
{
cmvr::config::DeviceManagerConfig config;
config.mutable_safety()->set_mode(
cmvr::config::SafetyManagerConfig::ENFORCE_SELECTED);
auto& manager = cmvr::device::DeviceManager::getInstance(config);
ASSERT_TRUE(manager.initialized());
EXPECT_FALSE(manager.start());
}
} // namespace

View File

@ -1,7 +1,6 @@
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
cmake_minimum_required(VERSION 3.22)
project(cmvr_media_source_manager LANGUAGES CXX)
enable_testing()
add_subdirectory(
${CMAKE_CURRENT_SOURCE_DIR}/../../service/grpc/stop_all
${CMAKE_CURRENT_BINARY_DIR}/stop_all
@ -43,55 +42,4 @@ if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
)
add_library(cmvr_es::device_media_source_adapter ALIAS device_media_source_adapter)
if(BUILD_TESTING)
add_executable(device_media_source_adapter_test
tests/device_media_source_adapter_test.cpp
)
target_compile_features(device_media_source_adapter_test PRIVATE cxx_std_17)
target_link_libraries(device_media_source_adapter_test
PRIVATE
cmvr_es::device_media_source_adapter
gtest
gtest_main
)
add_test(
NAME device_media_source_adapter_test
COMMAND device_media_source_adapter_test
)
set(_device_media_source_adapter_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _device_media_source_adapter_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(device_media_source_adapter_test PROPERTIES
ENVIRONMENT
"${_device_media_source_adapter_test_environment}"
)
endif()
endif()
option(CMVR_MEDIA_SOURCE_MANAGER_BUILD_TESTS
"Build the standalone MediaSourceManager self-test"
${PROJECT_IS_TOP_LEVEL})
if(CMVR_MEDIA_SOURCE_MANAGER_BUILD_TESTS)
find_package(Threads REQUIRED)
add_executable(media_source_manager_test
tests/media_source_manager_test.cpp
)
target_compile_features(media_source_manager_test PRIVATE cxx_std_17)
target_link_libraries(media_source_manager_test
PRIVATE
cmvr_es::media_source_manager
Threads::Threads
)
# This self-test only links the static Hub and pthreads. In the root build,
# the project-wide third-party RUNPATH can otherwise make the loader pick up
# a vendor libstdc++.so (for example from the AUBO SDK), even though the test
# has no dependency on that SDK.
set_target_properties(media_source_manager_test PROPERTIES
SKIP_BUILD_RPATH TRUE
)
add_test(NAME media_source_manager_test COMMAND media_source_manager_test)
endif()

View File

@ -1,113 +0,0 @@
#include "manager/media_source_manager/include/device_media_source_adapter.h"
#include <atomic>
#include <chrono>
#include <memory>
#include <string>
#include <gtest/gtest.h>
#include "manager/safety_manager/include/device_safety_endpoint.h"
namespace cmvr::media {
namespace {
class FakeSensorEndpoint final : public safety::DeviceSafetyEndpoint {
public:
explicit FakeSensorEndpoint(std::string device_id)
{
descriptor_.device_id = std::move(device_id);
descriptor_.kind = device::DeviceKind::Camera;
descriptor_.default_policy = safety::SafetyPolicyFamily::Sensor;
descriptor_.maximum_snapshot_age = std::chrono::seconds(1);
descriptor_.supports_active_refresh = true;
}
safety::DeviceSafetyDescriptor descriptor() const override
{
return descriptor_;
}
void bindPublisher(safety::SafetySnapshotPublisher publisher) override
{
publisher_ = std::move(publisher);
}
void requestSafetyRefresh() noexcept override
{
if (!publisher_) {
return;
}
safety::DeviceSafetySnapshot snapshot;
snapshot.device_id = descriptor_.device_id;
snapshot.condition = safety::SafetyCondition::Nominal;
snapshot.device_generation = 1;
snapshot.sample_sequence = ++sequence_;
snapshot.observed_at = safety::SafetyClock::now();
snapshot.connected = safety::TriState::True;
snapshot.operational_ready = safety::TriState::True;
snapshot.quiescent = safety::TriState::True;
snapshot.motion_active = safety::TriState::False;
snapshot.actuator_enabled = safety::TriState::False;
snapshot.emergency_stop_active = safety::TriState::False;
snapshot.protective_stop_active = safety::TriState::False;
snapshot.fault_active = safety::TriState::False;
(void)publisher_(std::move(snapshot));
}
safety::HardwareCheckResult validateBeforeDispatch(
const safety::AdmissionPermit& permit) override
{
++hardware_checks;
last_intent = permit.intent;
return {true, safety::SafetyReason::None, {}};
}
safety::RecoveryCheckResult reconcileAdmissionState(
const safety::RecoveryContext&) override
{
return {true, safety::SafetyReason::None, {}};
}
std::atomic<int> hardware_checks{0};
safety::CommandIntent last_intent{safety::CommandIntent::Observe};
private:
safety::DeviceSafetyDescriptor descriptor_;
safety::SafetySnapshotPublisher publisher_;
std::atomic<std::uint64_t> sequence_{0};
};
TEST(DeviceMediaSourceAdapterTest,
SensorStartUsesFinalCheckAndQuarantineRejectsRestart)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeSensorEndpoint>("camera");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
endpoint->requestSafetyRefresh();
coordinator.updateDeviceRuntimeState(
"camera",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
{
auto dispatch = beginMediaSourceStartDispatch(coordinator, "camera");
ASSERT_TRUE(dispatch.acquired());
EXPECT_EQ(endpoint->hardware_checks.load(), 1);
EXPECT_EQ(endpoint->last_intent, safety::CommandIntent::StartActivity);
}
coordinator.quarantineDevice(
"camera", safety::SafetyReason::OutcomeUnknown,
"uncertain-media-start");
auto rejected = beginMediaSourceStartDispatch(coordinator, "camera");
EXPECT_FALSE(rejected.acquired());
EXPECT_EQ(endpoint->hardware_checks.load(), 1);
}
} // namespace
} // namespace cmvr::media

View File

@ -16,50 +16,3 @@ target_link_libraries(safety_manager PUBLIC
add_library(cmvr_es::safety_manager ALIAS safety_manager)
install(TARGETS safety_manager LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(safety_snapshot_store_test
tests/safety_snapshot_store_test.cpp
)
target_link_libraries(safety_snapshot_store_test PRIVATE
cmvr_es::safety_manager
gtest
gtest_main
pthread
)
add_test(
NAME safety_snapshot_store_test
COMMAND safety_snapshot_store_test
)
set_tests_properties(safety_snapshot_store_test PROPERTIES TIMEOUT 10)
add_executable(command_ledger_test
tests/command_ledger_test.cpp
)
target_link_libraries(command_ledger_test PRIVATE
cmvr_es::safety_manager
gtest
gtest_main
pthread
)
add_test(
NAME command_ledger_test
COMMAND command_ledger_test
)
set_tests_properties(command_ledger_test PROPERTIES TIMEOUT 10)
add_executable(safety_manager_test
tests/safety_manager_test.cpp
)
target_link_libraries(safety_manager_test PRIVATE
cmvr_es::safety_manager
gtest
gtest_main
pthread
)
add_test(
NAME safety_manager_test
COMMAND safety_manager_test
)
set_tests_properties(safety_manager_test PROPERTIES TIMEOUT 15)
endif()

View File

@ -13,7 +13,6 @@
#include "manager/safety_manager/include/command_ledger.h"
#include "manager/safety_manager/include/device_safety_endpoint.h"
#include "manager/safety_manager/include/safety_participant.h"
#include "manager/safety_manager/include/safety_snapshot_store.h"
namespace cmvr::safety {
@ -174,7 +173,6 @@ public:
SafetyManager& operator=(const SafetyManager&) = delete;
bool registerDevice(DeviceSafetyRegistration registration);
bool unregisterDevice(const std::string& device_id);
bool registerParticipant(std::shared_ptr<SafetyParticipant> participant);
bool unregisterParticipant(const std::string& participant_id);
@ -182,15 +180,12 @@ public:
const std::string& device_id,
device::ManagedDeviceState lifecycle,
device::DeviceHealthSnapshot health = {});
bool publishSafetySnapshot(DeviceSafetySnapshot snapshot);
std::optional<std::uint64_t> advanceDeviceGeneration(
const std::string& device_id);
StartupCoverageResult validateStartupCoverage(
SafetyClock::time_point deadline);
void markStartupComplete();
void beginShutdown() noexcept;
AdmissionDecision evaluate(const AdmissionRequest& request) const;
AdmissionResult admit(const AdmissionRequest& request);
// Lightweight session check. This validates the coordinator-owned epoch,
// generation, freshness, and admission state without calling the device
@ -208,16 +203,16 @@ public:
RecoveryResult recover(const RecoveryRequest& request);
SafetyManagerSnapshot snapshot() const;
SafetySnapshotStore& snapshotStore() noexcept;
const SafetySnapshotStore& snapshotStore() const noexcept;
CommandLedger& commandLedger() noexcept;
const CommandLedger& commandLedger() const noexcept;
const std::string& serviceInstanceId() const noexcept;
const SafetyManagerConfig& config() const noexcept;
private:
friend class DispatchGuard;
struct Impl;
bool publishSafetySnapshot(DeviceSafetySnapshot snapshot);
void beginShutdown() noexcept;
AdmissionDecision evaluate(const AdmissionRequest& request) const;
void endDispatch_(const std::string& device_id) noexcept;
std::unique_ptr<Impl> impl_;
};

View File

@ -1,4 +1,5 @@
#include "manager/safety_manager/include/safety_manager.h"
#include "manager/safety_manager/include/safety_snapshot_store.h"
#include <algorithm>
#include <atomic>
@ -531,51 +532,6 @@ bool SafetyManager::registerDevice(DeviceSafetyRegistration registration)
return true;
}
bool SafetyManager::unregisterDevice(const std::string& device_id)
{
std::shared_ptr<DeviceSafetyEndpoint> endpoint;
std::string participant_id;
{
std::lock_guard lock(impl_->mutex);
const auto found = impl_->devices.find(device_id);
if (found == impl_->devices.end()) {
return false;
}
if (found->second.in_flight_dispatches != 0) {
return false;
}
found->second.publisher_binding->active.store(
false, std::memory_order_release);
endpoint = found->second.endpoint;
if (found->second.participant) {
participant_id =
found->second.participant->descriptor().participant_id;
impl_->participants.erase(participant_id);
const auto runtime =
impl_->participant_runtime.find(participant_id);
if (runtime != impl_->participant_runtime.end()) {
runtime->second.registered = false;
if (!runtime->second.barrier_active &&
impl_->retained_barriers.count(participant_id) == 0U) {
impl_->participant_runtime.erase(runtime);
}
}
}
found->second.admission_state = DeviceAdmissionState::Removed;
impl_->devices.erase(found);
impl_->addEventLocked(
SafetyReason::DeviceUnavailable,
device_id,
{},
"device safety capability unregistered");
}
if (endpoint) {
endpoint->bindPublisher({});
}
impl_->snapshots.unregisterDevice(device_id);
return true;
}
bool SafetyManager::registerParticipant(
std::shared_ptr<SafetyParticipant> participant)
{
@ -2529,26 +2485,11 @@ SafetyManagerSnapshot SafetyManager::snapshot() const
return result;
}
SafetySnapshotStore& SafetyManager::snapshotStore() noexcept
{
return impl_->snapshots;
}
const SafetySnapshotStore& SafetyManager::snapshotStore() const noexcept
{
return impl_->snapshots;
}
CommandLedger& SafetyManager::commandLedger() noexcept
{
return impl_->ledger;
}
const CommandLedger& SafetyManager::commandLedger() const noexcept
{
return impl_->ledger;
}
const std::string& SafetyManager::serviceInstanceId() const noexcept
{
return impl_->service_instance_id;

View File

@ -1,122 +0,0 @@
#include "manager/safety_manager/include/command_ledger.h"
#include <atomic>
#include <chrono>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
namespace cmvr::safety {
namespace {
CommandKey key(const std::string& id)
{
return {"anonymous", id};
}
CommandOutcome completedOutcome()
{
CommandOutcome outcome;
outcome.lifecycle = CommandLifecycle::Completed;
outcome.reason = SafetyReason::None;
outcome.serialized_response = "done";
return outcome;
}
TEST(CommandLedgerTest, SameIdJoinsAndDifferentPayloadConflicts)
{
CommandLedger ledger;
const auto first = ledger.reserve(key("command-1"), "payload-a");
ASSERT_EQ(first.status, CommandReservationStatus::AcceptedNew);
EXPECT_EQ(
ledger.reserve(key("command-1"), "payload-a").status,
CommandReservationStatus::JoinedInFlight);
EXPECT_EQ(
ledger.reserve(key("command-1"), "payload-b").status,
CommandReservationStatus::CommandIdConflict);
ASSERT_TRUE(ledger.complete(first.ticket, completedOutcome()));
const auto cached = ledger.reserve(key("command-1"), "payload-a");
ASSERT_EQ(cached.status, CommandReservationStatus::CachedResult);
ASSERT_TRUE(cached.cached_outcome.has_value());
EXPECT_EQ(cached.cached_outcome->serialized_response, "done");
}
TEST(CommandLedgerTest, ConcurrentCallersNeverCreateASecondReservation)
{
CommandLedger ledger;
std::atomic<int> accepted{0};
std::vector<std::thread> workers;
for (int index = 0; index < 16; ++index) {
workers.emplace_back([&] {
const auto result = ledger.reserve(key("shared"), "payload");
if (result.status == CommandReservationStatus::AcceptedNew) {
accepted.fetch_add(1);
}
});
}
for (auto& worker : workers) {
worker.join();
}
EXPECT_EQ(accepted.load(), 1);
EXPECT_EQ(ledger.acceptedIdCount(), 1U);
}
TEST(CommandLedgerTest, OutcomeUnknownIsCachedAndNeverReservedAgain)
{
CommandLedger ledger;
const auto first = ledger.reserve(key("uncertain"), "payload");
ASSERT_EQ(first.status, CommandReservationStatus::AcceptedNew);
CommandOutcome outcome;
outcome.lifecycle = CommandLifecycle::OutcomeUnknown;
outcome.reason = SafetyReason::OutcomeUnknown;
outcome.hardware_submission_possible = true;
ASSERT_TRUE(ledger.complete(first.ticket, outcome));
const auto retry = ledger.reserve(key("uncertain"), "payload");
ASSERT_EQ(retry.status, CommandReservationStatus::CachedResult);
ASSERT_TRUE(retry.cached_outcome.has_value());
EXPECT_EQ(
retry.cached_outcome->lifecycle, CommandLifecycle::OutcomeUnknown);
EXPECT_TRUE(retry.cached_outcome->hardware_submission_possible);
}
TEST(CommandLedgerTest, EvictedResultLeavesAnExactTombstone)
{
CommandLedger ledger({1, 3});
auto first = ledger.reserve(key("first"), "payload-1");
ASSERT_TRUE(ledger.complete(first.ticket, completedOutcome()));
auto second = ledger.reserve(key("second"), "payload-2");
ASSERT_TRUE(ledger.complete(second.ticket, completedOutcome()));
EXPECT_EQ(
ledger.reserve(key("first"), "payload-1").status,
CommandReservationStatus::ResultEvicted);
EXPECT_EQ(
ledger.reserve(key("first"), "different").status,
CommandReservationStatus::CommandIdConflict);
auto third = ledger.reserve(key("third"), "payload-3");
ASSERT_EQ(third.status, CommandReservationStatus::AcceptedNew);
EXPECT_EQ(
ledger.reserve(key("fourth"), "payload-4").status,
CommandReservationStatus::LedgerExhausted);
}
TEST(CommandLedgerTest, WaitTimesOutWithoutChangingExecution)
{
CommandLedger ledger;
const auto reservation = ledger.reserve(key("slow"), "payload");
ASSERT_EQ(reservation.status, CommandReservationStatus::AcceptedNew);
EXPECT_FALSE(ledger.wait(
reservation.ticket,
SafetyClock::now() + std::chrono::milliseconds(5)).has_value());
EXPECT_EQ(
ledger.reserve(key("slow"), "payload").status,
CommandReservationStatus::JoinedInFlight);
}
} // namespace
} // namespace cmvr::safety

View File

@ -1,782 +0,0 @@
#include "manager/safety_manager/include/safety_manager.h"
#include <atomic>
#include <chrono>
#include <memory>
#include <string>
#include <gtest/gtest.h>
namespace cmvr::safety {
namespace {
DeviceSafetyDescriptor controlDescriptor(std::string device_id = "arm")
{
DeviceSafetyDescriptor descriptor;
descriptor.device_id = std::move(device_id);
descriptor.kind = device::DeviceKind::Arm;
descriptor.default_policy = SafetyPolicyFamily::Control;
descriptor.maximum_snapshot_age = std::chrono::seconds(1);
descriptor.requires_safe_stop = true;
descriptor.supports_active_refresh = true;
return descriptor;
}
class FakeEndpoint final : public DeviceSafetyEndpoint {
public:
explicit FakeEndpoint(DeviceSafetyDescriptor descriptor)
: descriptor_(std::move(descriptor))
{
}
DeviceSafetyDescriptor descriptor() const override
{
return descriptor_;
}
void bindPublisher(SafetySnapshotPublisher publisher) override
{
publisher_ = std::move(publisher);
}
void requestSafetyRefresh() noexcept override
{
if (!publisher_ || !publish_on_refresh) {
return;
}
DeviceSafetySnapshot snapshot;
snapshot.device_id = descriptor_.device_id;
snapshot.condition = condition;
snapshot.device_generation = generation;
snapshot.sample_sequence = ++sequence;
snapshot.observed_at = SafetyClock::now();
snapshot.connected = connected;
snapshot.operational_ready = ready;
snapshot.quiescent = quiescent;
snapshot.motion_active =
quiescent == TriState::True ? TriState::False : TriState::Unknown;
snapshot.emergency_stop_active = emergency_stop;
snapshot.protective_stop_active = protective_stop;
snapshot.fault_active = fault;
(void)publisher_(std::move(snapshot));
}
HardwareCheckResult validateBeforeDispatch(
const AdmissionPermit&) override
{
++hardware_checks;
return final_check;
}
RecoveryCheckResult reconcileAdmissionState(
const RecoveryContext&) override
{
++recoveries;
return recovery_check;
}
RecoveryCheckResult restoreOperationalState(
const RecoveryContext&) override
{
++operational_restores;
if (operational_restore_check.reconciled &&
restore_to_nominal_on_success) {
condition = SafetyCondition::Nominal;
connected = TriState::True;
ready = TriState::True;
quiescent = TriState::True;
emergency_stop = TriState::False;
protective_stop = TriState::False;
fault = TriState::False;
}
return operational_restore_check;
}
DeviceSafetyDescriptor descriptor_;
SafetySnapshotPublisher publisher_;
SafetyCondition condition{SafetyCondition::Nominal};
TriState connected{TriState::True};
TriState ready{TriState::True};
TriState quiescent{TriState::True};
TriState emergency_stop{TriState::False};
TriState protective_stop{TriState::False};
TriState fault{TriState::False};
HardwareCheckResult final_check{true, SafetyReason::None, {}};
RecoveryCheckResult recovery_check{true, SafetyReason::None, {}};
RecoveryCheckResult operational_restore_check{
true, SafetyReason::None, {}};
std::uint64_t generation{1};
std::uint64_t sequence{0};
bool publish_on_refresh{true};
std::atomic<int> hardware_checks{0};
std::atomic<int> recoveries{0};
std::atomic<int> operational_restores{0};
bool restore_to_nominal_on_success{true};
};
class FakeParticipant final : public SafetyParticipant {
public:
ParticipantDescriptor descriptor() const override
{
return {"arm", ParticipantPhase::Actuator, true,
std::chrono::milliseconds(100)};
}
BarrierToken beginBarrier(
const SafetyOperationContext& context) override
{
++barriers;
return {"arm", context.operation_id, context.safety_epoch,
static_cast<std::uint64_t>(barriers.load())};
}
ParticipantResult requestQuiesce(
const BarrierToken&,
const SafetyOperationContext&) override
{
++stop_requests;
return stop_result;
}
ParticipantResult verifyQuiescent(
const BarrierToken&,
const SafetyOperationContext&) override
{
++verifications;
return verify_result;
}
RecoveryCheckResult recoverAdmission(
const BarrierToken&,
const RecoveryContext&) override
{
++recoveries;
return recovery_result;
}
ParticipantResult releaseBarrier(
const BarrierToken&) noexcept override
{
++releases;
return release_result;
}
ParticipantResult stop_result{true, SafetyReason::None, {}};
ParticipantResult verify_result{true, SafetyReason::None, {}};
RecoveryCheckResult recovery_result{true, SafetyReason::None, {}};
ParticipantResult release_result{true, SafetyReason::None, {}};
std::atomic<int> barriers{0};
std::atomic<int> stop_requests{0};
std::atomic<int> verifications{0};
std::atomic<int> recoveries{0};
std::atomic<int> releases{0};
};
AdmissionRequest actuateRequest()
{
AdmissionRequest request;
request.command = {
"/cmvr.api.ArmService/moveJ",
CommandIntent::Actuate,
SafetyPolicyFamily::Control,
true,
false};
request.device_id = "arm";
request.command_id = "command-1";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
return request;
}
TEST(SafetyManagerTest, ShadowReportsDenyWithoutChangingLegacyBehavior)
{
SafetyManager coordinator;
ASSERT_TRUE(coordinator.registerDevice({controlDescriptor(), {}, {}}));
coordinator.markStartupComplete();
const auto result = coordinator.admit(actuateRequest());
EXPECT_TRUE(result.decision.allowed);
EXPECT_FALSE(result.decision.policy_allowed);
EXPECT_FALSE(result.decision.enforced);
EXPECT_EQ(result.decision.reason, SafetyReason::SafetyStateMissing);
EXPECT_TRUE(result.permit.has_value());
}
TEST(SafetyManagerTest,
EnforceSelectedStartupRejectsEmptyOrUnknownCoverage)
{
SafetyManagerConfig empty_config;
empty_config.enforcement_mode = EnforcementMode::EnforceSelected;
SafetyManager empty(empty_config);
const auto empty_result = empty.validateStartupCoverage(
SafetyClock::now() + std::chrono::milliseconds(10));
ASSERT_FALSE(empty_result.ready);
ASSERT_EQ(empty_result.issues.size(), 1U);
EXPECT_EQ(empty_result.issues.front().reason, SafetyReason::InvalidArgument);
SafetyManagerConfig missing_config;
missing_config.enforcement_mode = EnforcementMode::EnforceSelected;
missing_config.enforced_device_ids.insert("missing-arm");
SafetyManager missing(missing_config);
const auto missing_result = missing.validateStartupCoverage(
SafetyClock::now() + std::chrono::milliseconds(10));
ASSERT_FALSE(missing_result.ready);
ASSERT_EQ(missing_result.issues.size(), 1U);
EXPECT_EQ(missing_result.issues.front().target_id, "missing-arm");
EXPECT_EQ(missing_result.issues.front().reason, SafetyReason::DeviceNotFound);
}
TEST(SafetyManagerTest,
EnforceAllStartupRequiresEndpointParticipantAndFreshSnapshot)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager missing_capability(config);
ASSERT_TRUE(missing_capability.registerDevice(
{controlDescriptor(), {}, {}}));
const auto structural = missing_capability.validateStartupCoverage(
SafetyClock::now() + std::chrono::milliseconds(10));
EXPECT_FALSE(structural.ready);
EXPECT_EQ(structural.issues.size(), 2U);
SafetyManager missing_sample(config);
auto silent_endpoint =
std::make_shared<FakeEndpoint>(controlDescriptor());
silent_endpoint->publish_on_refresh = false;
ASSERT_TRUE(missing_sample.registerDevice({
controlDescriptor(),
silent_endpoint,
std::make_shared<FakeParticipant>()}));
const auto stale = missing_sample.validateStartupCoverage(
SafetyClock::now() + std::chrono::milliseconds(10));
ASSERT_FALSE(stale.ready);
ASSERT_EQ(stale.issues.size(), 1U);
EXPECT_EQ(stale.issues.front().reason, SafetyReason::SafetyStateMissing);
}
TEST(SafetyManagerTest,
HardwareUnsafeSnapshotBlocksAdmissionButNotStructuralStartup)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Unsafe;
endpoint->emergency_stop = TriState::True;
ASSERT_TRUE(coordinator.registerDevice({
controlDescriptor(), endpoint, std::make_shared<FakeParticipant>()}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
const auto coverage = coordinator.validateStartupCoverage(
SafetyClock::now() + std::chrono::milliseconds(50));
EXPECT_TRUE(coverage.ready);
coordinator.markStartupComplete();
const auto admission = coordinator.admit(actuateRequest());
EXPECT_FALSE(admission.decision.allowed);
EXPECT_EQ(
admission.decision.reason, SafetyReason::EmergencyStopActive);
}
TEST(SafetyManagerTest, EnforceAllFailsClosedOnUnknownControlState)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
ASSERT_TRUE(coordinator.registerDevice({controlDescriptor(), {}, {}}));
coordinator.markStartupComplete();
const auto result = coordinator.admit(actuateRequest());
EXPECT_FALSE(result.decision.allowed);
EXPECT_FALSE(result.decision.policy_allowed);
EXPECT_TRUE(result.decision.enforced);
EXPECT_FALSE(result.permit.has_value());
}
TEST(SafetyManagerTest, ControlSafetyBitsMustBeExplicitlyFalse)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->protective_stop = TriState::Unknown;
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
const auto result = coordinator.admit(actuateRequest());
EXPECT_FALSE(result.decision.allowed);
EXPECT_EQ(result.decision.reason, SafetyReason::ProtectiveStopActive);
ASSERT_EQ(coordinator.snapshot().devices.size(), 1U);
EXPECT_EQ(
coordinator.snapshot().devices.front().admission_state,
DeviceAdmissionState::Blocked);
}
TEST(SafetyManagerTest, EnforcedDispatchRunsFinalHardwareCheck)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
auto admission = coordinator.admit(actuateRequest());
ASSERT_TRUE(admission.decision.allowed) << admission.decision.detail;
ASSERT_TRUE(admission.permit.has_value());
auto dispatch = coordinator.beginDispatch(*admission.permit);
EXPECT_TRUE(dispatch.acquired());
EXPECT_EQ(endpoint->hardware_checks.load(), 1);
}
TEST(SafetyManagerTest,
StartActivityMayEnterFromRestrictedButActuationMayNot)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Restricted;
endpoint->ready = TriState::False;
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
auto start = actuateRequest();
start.command.intent = CommandIntent::StartActivity;
const auto start_result = coordinator.admit(start);
ASSERT_TRUE(start_result.decision.allowed)
<< start_result.decision.detail;
ASSERT_TRUE(start_result.permit.has_value());
EXPECT_TRUE(coordinator.beginDispatch(*start_result.permit).acquired());
const auto actuation = coordinator.admit(actuateRequest());
EXPECT_FALSE(actuation.decision.allowed);
EXPECT_EQ(actuation.decision.reason, SafetyReason::HardwareUnsafe);
}
TEST(SafetyManagerTest, SuccessfulStopInvalidatesOldPermitAndReopens)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
auto participant = std::make_shared<FakeParticipant>();
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, participant}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
auto admission = coordinator.admit(actuateRequest());
ASSERT_TRUE(admission.permit.has_value());
const auto old_epoch = admission.permit->safety_epoch;
const auto stopped = coordinator.stopAll(
"stop-1", SafetyClock::now() + std::chrono::seconds(1));
ASSERT_TRUE(stopped.success);
EXPECT_EQ(stopped.system_state, SystemAdmissionState::Open);
EXPECT_GT(stopped.current_safety_epoch, old_epoch);
const auto revalidated =
coordinator.revalidatePermit(*admission.permit);
EXPECT_FALSE(revalidated.safe);
EXPECT_EQ(revalidated.reason, SafetyReason::SafetyLatched);
EXPECT_FALSE(coordinator.beginDispatch(*admission.permit).acquired());
EXPECT_EQ(participant->stop_requests.load(), 1);
EXPECT_EQ(participant->verifications.load(), 1);
const auto snapshot = coordinator.snapshot();
ASSERT_EQ(snapshot.participants.size(), 1U);
EXPECT_EQ(snapshot.participants.front().descriptor.participant_id, "arm");
EXPECT_FALSE(snapshot.participants.front().barrier_active);
EXPECT_FALSE(snapshot.participants.front().barrier_retained);
EXPECT_TRUE(snapshot.participants.front().last_request.recorded);
EXPECT_TRUE(snapshot.participants.front().last_request.success);
EXPECT_TRUE(snapshot.participants.front().last_verify.recorded);
EXPECT_TRUE(snapshot.participants.front().last_verify.success);
EXPECT_TRUE(snapshot.participants.front().last_release.recorded);
EXPECT_TRUE(snapshot.participants.front().last_release.success);
}
TEST(SafetyManagerTest, FailedStopRequiresVerifiedRecovery)
{
SafetyManagerConfig config;
config.enforcement_mode = EnforcementMode::EnforceAll;
SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
auto participant = std::make_shared<FakeParticipant>();
participant->verify_result = {
false, SafetyReason::StopUnconfirmed, "motion not confirmed"};
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, participant}));
coordinator.updateDeviceRuntimeState(
"arm", device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
const auto stopped = coordinator.stopAll(
"stop-failed", SafetyClock::now() + std::chrono::seconds(1));
ASSERT_FALSE(stopped.success);
ASSERT_EQ(stopped.system_state, SystemAdmissionState::Latched);
const auto latched = coordinator.snapshot();
ASSERT_EQ(latched.participants.size(), 1U);
EXPECT_TRUE(latched.participants.front().barrier_active);
EXPECT_TRUE(latched.participants.front().barrier_retained);
EXPECT_TRUE(latched.participants.front().last_verify.recorded);
EXPECT_FALSE(latched.participants.front().last_verify.success);
EXPECT_FALSE(latched.participants.front().last_release.recorded);
participant->verify_result = {true, SafetyReason::None, {}};
RecoveryRequest request;
request.recovery_id = "recovery-1";
request.all_devices = true;
request.expected_safety_epoch = stopped.current_safety_epoch;
request.verify_only = false;
request.reason = "operator confirmed work cell is clear";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
const auto recovered = coordinator.recover(request);
EXPECT_EQ(recovered.result, RecoveryResultCode::Recovered);
EXPECT_EQ(recovered.system_state, SystemAdmissionState::Open);
EXPECT_EQ(endpoint->recoveries.load(), 1);
EXPECT_EQ(participant->recoveries.load(), 1);
const auto reopened = coordinator.snapshot();
ASSERT_EQ(reopened.participants.size(), 1U);
EXPECT_FALSE(reopened.participants.front().barrier_active);
EXPECT_FALSE(reopened.participants.front().barrier_retained);
EXPECT_TRUE(reopened.participants.front().last_release.recorded);
EXPECT_TRUE(reopened.participants.front().last_release.success);
}
TEST(SafetyManagerTest, RecoveryCannotIgnoreEmergencyStop)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
auto participant = std::make_shared<FakeParticipant>();
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, participant}));
coordinator.markStartupComplete();
coordinator.quarantineDevice("arm", SafetyReason::OutcomeUnknown);
const auto before = coordinator.snapshot();
endpoint->emergency_stop = TriState::True;
RecoveryRequest request;
request.recovery_id = "recovery-estop";
request.all_devices = true;
request.expected_safety_epoch = before.safety_epoch;
request.verify_only = false;
request.reason = "test";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
const auto recovered = coordinator.recover(request);
EXPECT_EQ(recovered.result, RecoveryResultCode::BlockerRemains);
EXPECT_EQ(recovered.system_state, SystemAdmissionState::Latched);
ASSERT_FALSE(recovered.targets.empty());
EXPECT_EQ(
recovered.targets.front().reason,
SafetyReason::EmergencyStopActive);
EXPECT_EQ(endpoint->recoveries.load(), 0);
}
TEST(SafetyManagerTest,
OperationalRestoreClearsRecoverableHardwareAndSoftwareState)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Unsafe;
endpoint->ready = TriState::False;
endpoint->protective_stop = TriState::True;
endpoint->quiescent = TriState::True;
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.markStartupComplete();
coordinator.quarantineDevice("arm", SafetyReason::OutcomeUnknown);
const auto before = coordinator.snapshot();
RecoveryRequest request;
request.recovery_id = "restore-operational";
request.all_devices = true;
request.expected_safety_epoch = before.safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator confirmed the work cell is clear";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return true; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::Recovered);
EXPECT_EQ(restored.system_state, SystemAdmissionState::Open);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_TRUE(restored.targets.front().success)
<< restored.targets.front().detail;
EXPECT_EQ(endpoint->operational_restores.load(), 1);
EXPECT_EQ(endpoint->recoveries.load(), 1);
EXPECT_EQ(
coordinator.snapshot().devices.front().admission_state,
DeviceAdmissionState::Open);
}
TEST(SafetyManagerTest, OperationalRestoreFailsClosedOnActiveEmergencyStop)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Unsafe;
endpoint->ready = TriState::False;
endpoint->emergency_stop = TriState::True;
endpoint->quiescent = TriState::True;
endpoint->operational_restore_check = {
false,
SafetyReason::EmergencyStopActive,
"hardware emergency-stop input is still active"};
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.markStartupComplete();
coordinator.quarantineDevice("arm", SafetyReason::OutcomeUnknown);
const auto before = coordinator.snapshot();
RecoveryRequest request;
request.recovery_id = "restore-active-estop";
request.all_devices = true;
request.expected_safety_epoch = before.safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return true; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::BlockerRemains);
EXPECT_EQ(restored.system_state, SystemAdmissionState::Latched);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_FALSE(restored.targets.front().success);
EXPECT_EQ(
restored.targets.front().reason,
SafetyReason::EmergencyStopActive);
EXPECT_EQ(endpoint->operational_restores.load(), 0);
EXPECT_EQ(endpoint->recoveries.load(), 0);
}
TEST(SafetyManagerTest, OperationalRestoreDoesNotRecoverAnActiveDevice)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Unsafe;
endpoint->ready = TriState::False;
endpoint->quiescent = TriState::False;
endpoint->fault = TriState::True;
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.markStartupComplete();
coordinator.quarantineDevice("arm", SafetyReason::OutcomeUnknown);
RecoveryRequest request;
request.recovery_id = "restore-active-device";
request.all_devices = true;
request.expected_safety_epoch = coordinator.snapshot().safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return true; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::BlockerRemains);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_EQ(
restored.targets.front().reason,
SafetyReason::DeviceStillMoving);
EXPECT_EQ(endpoint->operational_restores.load(), 0);
EXPECT_EQ(endpoint->recoveries.load(), 0);
}
TEST(SafetyManagerTest, OperationalRestoreAuditFailurePreventsDeviceRecovery)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
endpoint->condition = SafetyCondition::Unsafe;
endpoint->ready = TriState::False;
endpoint->protective_stop = TriState::True;
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.markStartupComplete();
coordinator.quarantineDevice("arm", SafetyReason::OutcomeUnknown);
RecoveryRequest request;
request.recovery_id = "restore-audit-failure";
request.all_devices = true;
request.expected_safety_epoch = coordinator.snapshot().safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return false; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::BlockerRemains);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_EQ(
restored.targets.front().reason,
SafetyReason::RecoveryAuditFailed);
EXPECT_EQ(endpoint->operational_restores.load(), 0);
EXPECT_EQ(endpoint->recoveries.load(), 0);
}
TEST(SafetyManagerTest, OperationalRestoreRequiresExplicitAuthorization)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, {}}));
coordinator.markStartupComplete();
RecoveryRequest request;
request.recovery_id = "restore-without-authorization";
request.all_devices = true;
request.expected_safety_epoch = coordinator.snapshot().safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::Failed);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_EQ(
restored.targets.front().reason,
SafetyReason::InvalidArgument);
EXPECT_EQ(endpoint->operational_restores.load(), 0);
}
TEST(SafetyManagerTest,
OperationalRestoreAuditFailureWithNoDevicesRemainsLatched)
{
SafetyManager coordinator;
coordinator.markStartupComplete();
RecoveryRequest request;
request.recovery_id = "empty-restore-audit-failure";
request.all_devices = true;
request.expected_safety_epoch = coordinator.snapshot().safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return false; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::BlockerRemains);
EXPECT_EQ(restored.system_state, SystemAdmissionState::Latched);
ASSERT_EQ(restored.targets.size(), 1U);
EXPECT_EQ(restored.targets.front().target_id, "system");
EXPECT_EQ(
restored.targets.front().reason,
SafetyReason::RecoveryAuditFailed);
}
TEST(SafetyManagerTest,
OperationalRestoreDoesNotPartiallyReleaseSoftwareAdmission)
{
SafetyManager coordinator;
auto first = std::make_shared<FakeEndpoint>(
controlDescriptor("arm-first"));
first->condition = SafetyCondition::Unsafe;
first->ready = TriState::False;
first->protective_stop = TriState::True;
auto second = std::make_shared<FakeEndpoint>(
controlDescriptor("arm-second"));
second->condition = SafetyCondition::Unsafe;
second->ready = TriState::False;
second->fault = TriState::True;
second->operational_restore_check = {
false, SafetyReason::DeviceFault, "fault reset failed"};
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor("arm-first"), first, {}}));
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor("arm-second"), second, {}}));
coordinator.markStartupComplete();
coordinator.quarantineDevice(
"arm-first", SafetyReason::OutcomeUnknown);
coordinator.quarantineDevice(
"arm-second", SafetyReason::OutcomeUnknown);
RecoveryRequest request;
request.recovery_id = "restore-partial-failure";
request.all_devices = true;
request.expected_safety_epoch = coordinator.snapshot().safety_epoch;
request.verify_only = false;
request.restore_operational_state = true;
request.reason = "operator requested recovery";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return true; };
const auto restored = coordinator.recover(request);
EXPECT_EQ(restored.result, RecoveryResultCode::BlockerRemains);
EXPECT_EQ(restored.system_state, SystemAdmissionState::Latched);
EXPECT_EQ(first->operational_restores.load(), 1);
EXPECT_EQ(second->operational_restores.load(), 1);
EXPECT_EQ(first->recoveries.load(), 0);
EXPECT_EQ(second->recoveries.load(), 0);
const auto snapshot = coordinator.snapshot();
ASSERT_EQ(snapshot.devices.size(), 2U);
for (const auto& device : snapshot.devices) {
EXPECT_EQ(
device.admission_state,
DeviceAdmissionState::Quarantined)
<< device.descriptor.device_id;
}
}
TEST(SafetyManagerTest, RecoveryAuditFailureCannotReleaseLatch)
{
SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>(controlDescriptor());
auto participant = std::make_shared<FakeParticipant>();
participant->verify_result = {
false, SafetyReason::StopUnconfirmed, "motion not confirmed"};
ASSERT_TRUE(coordinator.registerDevice(
{controlDescriptor(), endpoint, participant}));
coordinator.markStartupComplete();
const auto stopped = coordinator.stopAll(
"stop-audit", SafetyClock::now() + std::chrono::seconds(1));
ASSERT_FALSE(stopped.success);
participant->verify_result = {true, SafetyReason::None, {}};
RecoveryRequest request;
request.recovery_id = "recovery-audit";
request.all_devices = true;
request.expected_safety_epoch = stopped.current_safety_epoch;
request.verify_only = false;
request.reason = "operator inspected the work cell";
request.deadline = SafetyClock::now() + std::chrono::seconds(1);
request.authorize_clear = [] { return false; };
const auto recovered = coordinator.recover(request);
EXPECT_EQ(recovered.result, RecoveryResultCode::BlockerRemains);
EXPECT_EQ(recovered.system_state, SystemAdmissionState::Latched);
ASSERT_FALSE(recovered.targets.empty());
EXPECT_EQ(
recovered.targets.front().reason,
SafetyReason::RecoveryAuditFailed);
EXPECT_EQ(endpoint->recoveries.load(), 0);
EXPECT_EQ(participant->recoveries.load(), 0);
EXPECT_EQ(participant->releases.load(), 0);
}
} // namespace
} // namespace cmvr::safety

View File

@ -1,111 +0,0 @@
#include "manager/safety_manager/include/safety_snapshot_store.h"
#include <atomic>
#include <chrono>
#include <thread>
#include <gtest/gtest.h>
namespace cmvr::safety {
namespace {
DeviceSafetyDescriptor descriptor()
{
DeviceSafetyDescriptor result;
result.device_id = "arm";
result.kind = device::DeviceKind::Arm;
result.default_policy = SafetyPolicyFamily::Control;
result.maximum_snapshot_age = std::chrono::milliseconds(50);
result.requires_safe_stop = true;
return result;
}
DeviceSafetySnapshot sample(
const std::uint64_t generation,
const std::uint64_t sequence,
const SafetyClock::time_point observed_at = SafetyClock::now())
{
DeviceSafetySnapshot result;
result.device_id = "arm";
result.condition = SafetyCondition::Nominal;
result.device_generation = generation;
result.sample_sequence = sequence;
result.observed_at = observed_at;
result.connected = TriState::True;
result.operational_ready = TriState::True;
result.quiescent = TriState::True;
result.motion_active = TriState::False;
result.emergency_stop_active = TriState::False;
result.protective_stop_active = TriState::False;
result.fault_active = TriState::False;
return result;
}
TEST(SafetySnapshotStoreTest, RejectsOldGenerationAndSequence)
{
SafetySnapshotStore store;
ASSERT_TRUE(store.registerDevice(descriptor(), 3));
EXPECT_FALSE(store.publish(sample(2, 1)));
ASSERT_TRUE(store.publish(sample(3, 2)));
EXPECT_FALSE(store.publish(sample(3, 2)));
EXPECT_FALSE(store.publish(sample(3, 1)));
EXPECT_TRUE(store.publish(sample(4, 1)));
const auto view = store.get("arm");
ASSERT_TRUE(view.registered);
EXPECT_EQ(view.snapshot.device_generation, 4U);
EXPECT_EQ(view.snapshot.sample_sequence, 1U);
}
TEST(SafetySnapshotStoreTest, FreshnessUsesMonotonicObservationTime)
{
SafetySnapshotStore store;
ASSERT_TRUE(store.registerDevice(descriptor()));
const auto observed = SafetyClock::now();
ASSERT_TRUE(store.publish(sample(1, 1, observed)));
EXPECT_TRUE(store.get(
"arm", observed + std::chrono::milliseconds(49)).fresh);
const auto stale = store.get(
"arm", observed + std::chrono::milliseconds(51));
EXPECT_FALSE(stale.fresh);
EXPECT_EQ(stale.sample_age, std::chrono::milliseconds(51));
}
TEST(SafetySnapshotStoreTest, BumpGenerationRequiresANewSample)
{
SafetySnapshotStore store;
ASSERT_TRUE(store.registerDevice(descriptor()));
ASSERT_TRUE(store.publish(sample(1, 8)));
ASSERT_EQ(store.bumpGeneration("arm"), 2U);
const auto view = store.get("arm");
EXPECT_FALSE(view.has_sample);
EXPECT_FALSE(view.fresh);
EXPECT_EQ(view.snapshot.device_generation, 2U);
EXPECT_FALSE(store.publish(sample(1, 9)));
EXPECT_TRUE(store.publish(sample(2, 1)));
}
TEST(SafetySnapshotStoreTest, WaiterObservesOnlyANewerSample)
{
SafetySnapshotStore store;
ASSERT_TRUE(store.registerDevice(descriptor()));
ASSERT_TRUE(store.publish(sample(1, 1)));
std::atomic<bool> published{false};
std::thread writer([&] {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
published.store(store.publish(sample(1, 2)));
});
SafetySnapshotView view;
EXPECT_TRUE(store.waitForNewerSample(
"arm", 1, SafetyClock::now() + std::chrono::seconds(1), view));
writer.join();
EXPECT_TRUE(published.load());
EXPECT_EQ(view.snapshot.sample_sequence, 2U);
}
} // namespace
} // namespace cmvr::safety

View File

@ -16,30 +16,3 @@ target_link_libraries(task_manager
add_library(cmvr_es::task_manager ALIAS task_manager)
install(TARGETS task_manager LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(task_manager_lifecycle_test
tests/task_manager_lifecycle_test.cpp
)
target_link_libraries(task_manager_lifecycle_test PRIVATE
cmvr_es::task_manager
cmvr_es::stop_all_admission_gate
gtest
gtest_main
pthread
)
add_test(
NAME task_manager_lifecycle_test
COMMAND task_manager_lifecycle_test
)
set(_task_manager_lifecycle_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _task_manager_lifecycle_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(task_manager_lifecycle_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_task_manager_lifecycle_test_environment}"
)
endif()

View File

@ -1,428 +0,0 @@
#include "manager/task_manager/include/task_manager.h"
#include <atomic>
#include <condition_variable>
#include <future>
#include <memory>
#include <mutex>
#include <stdexcept>
#include <string>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
#include "task/task_factory.h"
namespace {
struct TaskBehavior {
bool init_result{true};
bool start_result{true};
bool throw_on_start{false};
bool stop_activity_result{true};
bool block_start{false};
bool query_snapshot_on_stop{false};
};
TaskBehavior task_behavior;
std::vector<std::string> stop_order;
class LifecycleTask final : public cmvr::task::Task {
public:
explicit LifecycleTask(
std::string id,
const cmvr::task::TaskShutdownPhase shutdown_phase =
cmvr::task::TaskShutdownPhase::DEPENDENT_ACTIVITY)
: id_(std::move(id)),
shutdown_phase_(shutdown_phase)
{
}
const std::string& id() const override { return id_; }
cmvr::task::TaskRunMode runMode() const override
{
return cmvr::task::TaskRunMode::BLOCKING_SERVICE;
}
cmvr::task::TaskShutdownPhase shutdownPhase() const override
{
return shutdown_phase_;
}
bool init() override
{
++init_calls;
state_ = task_behavior.init_result
? cmvr::task::TaskState::IDLE
: cmvr::task::TaskState::FAILED;
return task_behavior.init_result;
}
bool start() override
{
++start_calls;
{
std::unique_lock lock(start_mutex);
start_entered = true;
start_condition.notify_all();
start_condition.wait(lock, [] {
return !task_behavior.block_start;
});
}
if (task_behavior.throw_on_start) {
throw std::runtime_error("start failure");
}
state_ = task_behavior.start_result
? cmvr::task::TaskState::RUNNING
: cmvr::task::TaskState::FAILED;
return task_behavior.start_result;
}
bool step(double) override { return true; }
void stop() override
{
++stop_calls;
if (task_behavior.query_snapshot_on_stop) {
(void)cmvr::task::TaskManager::activitySnapshotIfInitialized();
}
stop_order.push_back(id_);
state_ = cmvr::task::TaskState::STOPPED;
}
bool stopActivity() override
{
++stop_activity_calls;
return task_behavior.stop_activity_result;
}
cmvr::task::TaskState state() const override { return state_; }
bool isBusy() const override
{
return state_ == cmvr::task::TaskState::RUNNING;
}
bool isFinished() const override
{
return state_ == cmvr::task::TaskState::STOPPED;
}
bool isFailed() const override
{
return state_ == cmvr::task::TaskState::FAILED;
}
std::string stateString() const override
{
return cmvr::task::taskStateToString(state_);
}
std::string detailStatusString() const override
{
return stateString();
}
int init_calls{0};
int start_calls{0};
int stop_calls{0};
int stop_activity_calls{0};
std::mutex start_mutex;
std::condition_variable start_condition;
bool start_entered{false};
private:
std::string id_;
cmvr::task::TaskShutdownPhase shutdown_phase_;
cmvr::task::TaskState state_{
cmvr::task::TaskState::UNINITIALIZED};
};
std::shared_ptr<LifecycleTask> created_task;
std::shared_ptr<LifecycleTask> created_ingress_task;
cmvr::config::TaskManagerConfig enabledTaskConfig()
{
cmvr::config::TaskManagerConfig config;
auto* entry = config.add_tasks();
entry->set_id("lifecycle_task");
entry->set_type(
cmvr::config::TaskConfigEntry::TASK_TYPE_UME_TELEOP);
entry->set_enable(true);
entry->set_run_mode(
cmvr::config::TaskConfigEntry::
TASK_RUN_MODE_BLOCKING_SERVICE);
return config;
}
class TaskManagerLifecycleTest : public ::testing::Test {
protected:
void SetUp() override
{
cmvr::task::TaskManager::destroyInstance();
cmvr::service::globalStopAllAdmissionGate().clearForTesting();
task_behavior = {};
created_task.reset();
created_ingress_task.reset();
stop_order.clear();
cmvr::task::TaskFactory::registerCreator(
cmvr::config::TaskConfigEntry::TASK_TYPE_UME_TELEOP,
[](const cmvr::config::TaskConfigEntry& entry) {
created_task =
std::make_shared<LifecycleTask>(entry.id());
return created_task;
});
}
void TearDown() override
{
if (created_task) {
{
std::lock_guard lock(created_task->start_mutex);
task_behavior.block_start = false;
}
created_task->start_condition.notify_all();
}
cmvr::task::TaskManager::destroyInstance();
cmvr::service::globalStopAllAdmissionGate().clearForTesting();
created_task.reset();
created_ingress_task.reset();
stop_order.clear();
}
};
TEST_F(TaskManagerLifecycleTest,
EnabledTaskInitFailureMarksInitializationFailed)
{
task_behavior.init_result = false;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_NE(created_task, nullptr);
EXPECT_FALSE(manager.initialized());
EXPECT_FALSE(manager.startRunTask());
EXPECT_FALSE(manager.running());
EXPECT_EQ(created_task->init_calls, 1);
EXPECT_EQ(created_task->start_calls, 0);
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest,
TaskStartFailureIsReturnedAndRunningRemainsFalse)
{
task_behavior.start_result = false;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_TRUE(manager.initialized());
ASSERT_NE(created_task, nullptr);
EXPECT_FALSE(manager.startRunTask());
EXPECT_FALSE(manager.running());
EXPECT_EQ(created_task->start_calls, 1);
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest,
TaskStartExceptionIsReturnedAndRunningRemainsFalse)
{
task_behavior.throw_on_start = true;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_TRUE(manager.initialized());
ASSERT_NE(created_task, nullptr);
EXPECT_FALSE(manager.startRunTask());
EXPECT_FALSE(manager.running());
EXPECT_EQ(created_task->start_calls, 1);
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest, SuccessfulStartAndStopAreReported)
{
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_TRUE(manager.initialized());
ASSERT_NE(created_task, nullptr);
EXPECT_TRUE(manager.startRunTask());
EXPECT_TRUE(manager.running());
manager.stopRunTask();
EXPECT_FALSE(manager.running());
EXPECT_EQ(created_task->start_calls, 1);
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest,
CommandIngressStopsBeforeDependentTaskActivity)
{
cmvr::task::TaskFactory::registerCreator(
cmvr::config::TaskConfigEntry::TASK_TYPE_GRPC_SERVER,
[](const cmvr::config::TaskConfigEntry& entry) {
created_ingress_task = std::make_shared<LifecycleTask>(
entry.id(),
cmvr::task::TaskShutdownPhase::COMMAND_INGRESS);
return created_ingress_task;
});
auto config = enabledTaskConfig();
auto* ingress = config.add_tasks();
ingress->set_id("control_ingress");
ingress->set_type(
cmvr::config::TaskConfigEntry::TASK_TYPE_GRPC_SERVER);
ingress->set_enable(true);
ingress->set_run_mode(
cmvr::config::TaskConfigEntry::TASK_RUN_MODE_BLOCKING_SERVICE);
auto& manager = cmvr::task::TaskManager::getInstance(config);
ASSERT_TRUE(manager.initialized());
ASSERT_TRUE(manager.startRunTask());
manager.stopRunTask();
ASSERT_EQ(stop_order.size(), 2U);
EXPECT_EQ(stop_order[0], "control_ingress");
EXPECT_EQ(stop_order[1], "lifecycle_task");
}
TEST_F(TaskManagerLifecycleTest,
DestroyDoesNotHoldSingletonLockWhileStoppingTasks)
{
task_behavior.query_snapshot_on_stop = true;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_TRUE(manager.initialized());
ASSERT_TRUE(manager.startRunTask());
auto destroy = std::async(std::launch::async, [] {
cmvr::task::TaskManager::destroyInstance();
});
ASSERT_EQ(
destroy.wait_for(std::chrono::seconds(1)),
std::future_status::ready);
destroy.get();
ASSERT_NE(created_task, nullptr);
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest,
StopAllActivitiesDoesNotStopSchedulerOrTaskLifecycle)
{
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_TRUE(manager.initialized());
ASSERT_TRUE(manager.startRunTask());
ASSERT_NE(created_task, nullptr);
EXPECT_TRUE(manager.stopAllActivities());
EXPECT_TRUE(manager.running());
EXPECT_EQ(created_task->stop_activity_calls, 1);
EXPECT_EQ(created_task->stop_calls, 0);
manager.stopRunTask();
EXPECT_EQ(created_task->stop_calls, 1);
}
TEST_F(TaskManagerLifecycleTest,
StopAllActivitiesReportsUnconfirmedOperationalStop)
{
task_behavior.stop_activity_result = false;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
std::vector<std::string> failures;
EXPECT_FALSE(manager.stopAllActivities(&failures));
ASSERT_EQ(failures.size(), 1U);
EXPECT_NE(failures.front().find("lifecycle_task"), std::string::npos);
EXPECT_EQ(created_task->stop_calls, 0);
}
TEST_F(TaskManagerLifecycleTest,
StopAllActivitiesIsSuccessfulWhenManagerIsNotInitialized)
{
cmvr::task::TaskManager::destroyInstance();
std::vector<std::string> failures;
EXPECT_TRUE(
cmvr::task::TaskManager::stopAllActivitiesIfInitialized(&failures));
EXPECT_TRUE(failures.empty());
}
TEST_F(TaskManagerLifecycleTest, StartIsRejectedWhileStopAllAdmissionIsClosed)
{
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
auto& gate = cmvr::service::globalStopAllAdmissionGate();
const auto ticket = gate.beginStopAll();
EXPECT_FALSE(manager.startRunTask());
EXPECT_FALSE(manager.running());
ASSERT_NE(created_task, nullptr);
EXPECT_EQ(created_task->start_calls, 0);
EXPECT_TRUE(gate.finishStopAll(ticket, true));
EXPECT_TRUE(manager.startRunTask());
EXPECT_TRUE(manager.running());
}
TEST_F(TaskManagerLifecycleTest,
StartCrossingStopAllGenerationRollsBackStartedTasks)
{
task_behavior.block_start = true;
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
ASSERT_NE(created_task, nullptr);
std::atomic<bool> start_result{true};
std::thread starter([&] {
start_result.store(manager.startRunTask());
});
bool start_entered = false;
{
std::unique_lock lock(created_task->start_mutex);
start_entered = created_task->start_condition.wait_for(
lock, std::chrono::seconds(2), [&] {
return created_task->start_entered;
});
}
if (!start_entered) {
{
std::lock_guard lock(created_task->start_mutex);
task_behavior.block_start = false;
}
created_task->start_condition.notify_all();
starter.join();
FAIL() << "task start did not reach the generation-race barrier";
}
auto& gate = cmvr::service::globalStopAllAdmissionGate();
const auto ticket = gate.beginStopAll();
{
std::lock_guard lock(created_task->start_mutex);
task_behavior.block_start = false;
}
created_task->start_condition.notify_all();
starter.join();
EXPECT_FALSE(start_result.load());
EXPECT_FALSE(manager.running());
EXPECT_EQ(created_task->start_calls, 1);
EXPECT_EQ(created_task->stop_calls, 1);
EXPECT_TRUE(gate.finishStopAll(ticket, true));
EXPECT_TRUE(manager.startRunTask());
}
TEST_F(TaskManagerLifecycleTest,
FailedStopAllKeepsTaskStartupRejectedUntilSuccessfulRound)
{
auto& manager =
cmvr::task::TaskManager::getInstance(enabledTaskConfig());
auto& gate = cmvr::service::globalStopAllAdmissionGate();
auto ticket = gate.beginStopAll();
EXPECT_FALSE(gate.finishStopAll(ticket, false));
EXPECT_FALSE(manager.startRunTask());
ASSERT_NE(created_task, nullptr);
EXPECT_EQ(created_task->start_calls, 0);
ticket = gate.beginStopAll();
EXPECT_TRUE(gate.finishStopAll(ticket, true));
EXPECT_TRUE(manager.startRunTask());
}
} // namespace

View File

@ -19,33 +19,3 @@ target_link_libraries(cmvr_runtime PUBLIC
add_library(cmvr_es::runtime ALIAS cmvr_runtime)
install(TARGETS cmvr_runtime LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
if(BUILD_TESTING)
add_executable(runtime_lifecycle_test
tests/runtime_lifecycle_test.cpp
)
target_compile_features(runtime_lifecycle_test PRIVATE cxx_std_17)
target_include_directories(runtime_lifecycle_test PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(runtime_lifecycle_test PRIVATE
cmvr_es::runtime
gtest
gtest_main
pthread
)
add_test(
NAME runtime_lifecycle_test
COMMAND runtime_lifecycle_test
)
set(_runtime_lifecycle_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _runtime_lifecycle_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(runtime_lifecycle_test PROPERTIES
TIMEOUT 20
ENVIRONMENT "${_runtime_lifecycle_test_environment}"
)
endif()

View File

@ -1,266 +0,0 @@
#include "runtime/include/cmvr_runtime.h"
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#include <algorithm>
#include <array>
#include <cstdlib>
#include <filesystem>
#include <string>
#include <gtest/gtest.h>
#include "cmvr/config/cmvr_es_config/cmvr_es_config.pb.h"
#include "cmvr/config/device_manager_config/device_manager_config.pb.h"
#include "cmvr/config/grpc_server_config/grpc_server_config.pb.h"
#include "cmvr/config/logger_config/logger_config.pb.h"
#include "cmvr/config/task_manager_config/task_manager_config.pb.h"
#include "common/io/proto_file_io.h"
namespace {
class TempConfigTree {
public:
TempConfigTree()
{
std::array<char, 64> pattern{};
const std::string value =
"/tmp/cmvr-runtime-lifecycle-XXXXXX";
std::copy(value.begin(), value.end(), pattern.begin());
char* created = ::mkdtemp(pattern.data());
if (created) {
root_ = created;
}
}
~TempConfigTree()
{
if (root_.empty()) {
return;
}
std::error_code error;
std::filesystem::remove_all(root_, error);
}
bool valid() const { return !root_.empty(); }
template <typename Message>
bool write(const std::string& name, const Message& message) const
{
return ProtoMessageIo::setProtoToAsciiFile(
message, (root_ / name).string());
}
std::string path(const std::string& name) const
{
return (root_ / name).string();
}
bool writeLogger() const
{
cmvr::config::LoggerRootConfig root;
auto* logger = root.mutable_logger();
logger->set_minimum_level(
cmvr::config::LOG_LEVEL_INFO);
auto* route = logger->add_routes();
route->set_level(cmvr::config::LOG_LEVEL_INFO);
route->set_terminal(false);
route->set_file(false);
return write("logger.pb.txt", root);
}
bool writeRoot() const
{
cmvr::config::CMVRESRootConfig root;
auto* config = root.mutable_cmvr_es();
config->set_logger_config_file("logger.pb.txt");
config->set_device_manager_config_file(
"device_manager.pb.txt");
config->set_task_manager_config_file(
"task_manager.pb.txt");
return write("cmvr_es.pb.txt", root);
}
private:
std::filesystem::path root_;
};
class OccupiedTcpPort {
public:
OccupiedTcpPort()
{
fd_ = ::socket(AF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0);
if (fd_ < 0) {
return;
}
sockaddr_in address{};
address.sin_family = AF_INET;
address.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
address.sin_port = 0;
if (::bind(fd_, reinterpret_cast<sockaddr*>(&address),
sizeof(address)) != 0 ||
::listen(fd_, 1) != 0) {
::close(fd_);
fd_ = -1;
return;
}
socklen_t length = sizeof(address);
if (::getsockname(fd_,
reinterpret_cast<sockaddr*>(&address),
&length) != 0) {
::close(fd_);
fd_ = -1;
return;
}
port_ = ntohs(address.sin_port);
}
~OccupiedTcpPort()
{
if (fd_ >= 0) {
::close(fd_);
}
}
bool valid() const { return fd_ >= 0 && port_ != 0; }
std::string port() const { return std::to_string(port_); }
private:
int fd_{-1};
unsigned short port_{0};
};
TEST(RuntimeLifecycleTest, EnabledDeviceInitFailureFailsRuntimeInit)
{
TempConfigTree tree;
ASSERT_TRUE(tree.valid());
ASSERT_TRUE(tree.writeLogger());
ASSERT_TRUE(tree.writeRoot());
cmvr::config::DeviceManagerRootConfig devices;
auto* entry =
devices.mutable_device_manager()->add_devices();
entry->set_id("unsupported");
entry->set_type(
cmvr::config::DeviceConfigEntry::DEVICE_TYPE_UNKNOWN);
entry->set_enable(true);
ASSERT_TRUE(tree.write("device_manager.pb.txt", devices));
cmvr::config::TaskManagerRootConfig tasks;
ASSERT_TRUE(tree.write("task_manager.pb.txt", tasks));
cmvr::Runtime runtime;
EXPECT_FALSE(runtime.init(tree.path("cmvr_es.pb.txt")));
EXPECT_FALSE(runtime.initialized());
EXPECT_FALSE(runtime.tasksStarted());
}
TEST(RuntimeLifecycleTest, EnabledTaskInitFailureFailsRuntimeInit)
{
TempConfigTree tree;
ASSERT_TRUE(tree.valid());
ASSERT_TRUE(tree.writeLogger());
ASSERT_TRUE(tree.writeRoot());
cmvr::config::DeviceManagerRootConfig devices;
ASSERT_TRUE(tree.write("device_manager.pb.txt", devices));
cmvr::config::TaskManagerRootConfig tasks;
auto* entry = tasks.mutable_task_manager()->add_tasks();
entry->set_id("unsupported");
entry->set_type(
cmvr::config::TaskConfigEntry::TASK_TYPE_UNKNOWN);
entry->set_enable(true);
entry->set_run_mode(
cmvr::config::TaskConfigEntry::
TASK_RUN_MODE_BLOCKING_SERVICE);
ASSERT_TRUE(tree.write("task_manager.pb.txt", tasks));
cmvr::Runtime runtime;
EXPECT_FALSE(runtime.init(tree.path("cmvr_es.pb.txt")));
EXPECT_FALSE(runtime.initialized());
EXPECT_FALSE(runtime.tasksStarted());
}
TEST(RuntimeLifecycleTest,
TaskConfigLoadFailureRollsBackDeviceManagerSingleton)
{
TempConfigTree first_tree;
ASSERT_TRUE(first_tree.valid());
ASSERT_TRUE(first_tree.writeLogger());
ASSERT_TRUE(first_tree.writeRoot());
cmvr::config::DeviceManagerRootConfig first_devices;
first_devices.mutable_device_manager()->set_name("first");
ASSERT_TRUE(first_tree.write(
"device_manager.pb.txt", first_devices));
// Deliberately do not create task_manager.pb.txt.
cmvr::Runtime runtime;
ASSERT_FALSE(
runtime.init(first_tree.path("cmvr_es.pb.txt")));
ASSERT_FALSE(runtime.initialized());
TempConfigTree second_tree;
ASSERT_TRUE(second_tree.valid());
ASSERT_TRUE(second_tree.writeLogger());
ASSERT_TRUE(second_tree.writeRoot());
cmvr::config::DeviceManagerRootConfig second_devices;
second_devices.mutable_device_manager()->set_name("second");
ASSERT_TRUE(second_tree.write(
"device_manager.pb.txt", second_devices));
cmvr::config::TaskManagerRootConfig second_tasks;
ASSERT_TRUE(second_tree.write(
"task_manager.pb.txt", second_tasks));
ASSERT_TRUE(
runtime.init(second_tree.path("cmvr_es.pb.txt")));
EXPECT_EQ(runtime.deviceManager().name(), "second");
}
TEST(RuntimeLifecycleTest, GrpcBindFailureDoesNotMarkTasksStarted)
{
OccupiedTcpPort occupied_port;
ASSERT_TRUE(occupied_port.valid());
TempConfigTree tree;
ASSERT_TRUE(tree.valid());
ASSERT_TRUE(tree.writeLogger());
ASSERT_TRUE(tree.writeRoot());
cmvr::config::DeviceManagerRootConfig devices;
ASSERT_TRUE(tree.write("device_manager.pb.txt", devices));
cmvr::config::GRPCServerRootConfig grpc;
auto* grpc_config = grpc.mutable_grpc_server();
grpc_config->set_id("grpc_server");
grpc_config->set_host("127.0.0.1");
grpc_config->set_port(occupied_port.port());
ASSERT_TRUE(tree.write("grpc.pb.txt", grpc));
cmvr::config::TaskManagerRootConfig tasks;
auto* entry = tasks.mutable_task_manager()->add_tasks();
entry->set_id("grpc_server");
entry->set_type(
cmvr::config::TaskConfigEntry::TASK_TYPE_GRPC_SERVER);
entry->set_enable(true);
entry->set_run_mode(
cmvr::config::TaskConfigEntry::
TASK_RUN_MODE_BLOCKING_SERVICE);
entry->set_config_file("grpc.pb.txt");
ASSERT_TRUE(tree.write("task_manager.pb.txt", tasks));
cmvr::Runtime runtime;
ASSERT_TRUE(runtime.init(tree.path("cmvr_es.pb.txt")));
EXPECT_FALSE(runtime.startTasks());
EXPECT_FALSE(runtime.tasksStarted());
EXPECT_FALSE(runtime.taskManager().running());
}
} // namespace

View File

@ -121,7 +121,6 @@ ActionQueue 遵循以下执行语义:
- 实现:[`grpc/server/include/grpc_motor_service.h`](grpc/server/include/grpc_motor_service.h)
和 [`grpc/server/src/grpc_motor_service.cpp`](grpc/server/src/grpc_motor_service.cpp)
- 注册:[`../task/grpc_server_task/src/grpc_server_task.cpp`](../task/grpc_server_task/src/grpc_server_task.cpp)
- 单元测试:[`grpc/server/tests/grpc_motor_service_test.cpp`](grpc/server/tests/grpc_motor_service_test.cpp)
服务按单电机仲裁。同步 Profile 命令、Cyclic Position/Velocity 双向流、
`setEnabled`、状态读取和软件 `emergencyStop` 共用同一控制权状态:

View File

@ -49,136 +49,6 @@ add_library(cmvr_es::service ALIAS service)
install(TARGETS service LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(stop_all_admission_gate_test
stop_all/tests/stop_all_admission_gate_test.cpp
stop_all/src/stop_all_admission_gate.cpp
)
target_include_directories(stop_all_admission_gate_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(stop_all_admission_gate_test PRIVATE
gtest
gtest_main
pthread
)
add_test(
NAME stop_all_admission_gate_test
COMMAND stop_all_admission_gate_test
)
set_tests_properties(stop_all_admission_gate_test PROPERTIES TIMEOUT 10)
add_executable(stop_operation_dispatcher_test
stop_all/tests/stop_operation_dispatcher_test.cpp
stop_all/src/stop_operation_dispatcher.cpp
)
target_include_directories(stop_operation_dispatcher_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(stop_operation_dispatcher_test PRIVATE
gtest
gtest_main
pthread
)
add_test(
NAME stop_operation_dispatcher_test
COMMAND stop_operation_dispatcher_test
)
set_tests_properties(stop_operation_dispatcher_test PROPERTIES TIMEOUT 10)
add_executable(camera_operational_activity_registry_test
server/tests/camera_operational_activity_registry_test.cpp
)
target_include_directories(camera_operational_activity_registry_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(camera_operational_activity_registry_test PRIVATE
cmvr_es::proto
cmvr_es::camera_operational_activity_registry
gtest
gtest_main
pthread
)
add_test(
NAME camera_operational_activity_registry_test
COMMAND camera_operational_activity_registry_test
)
set_tests_properties(camera_operational_activity_registry_test PROPERTIES
TIMEOUT 10)
add_executable(camera_ptz_activity_registry_test
server/tests/camera_ptz_activity_registry_test.cpp
server/src/camera_ptz_activity_registry.cpp
stop_all/src/stop_all_admission_gate.cpp
)
target_include_directories(camera_ptz_activity_registry_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(camera_ptz_activity_registry_test PRIVATE
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME camera_ptz_activity_registry_test
COMMAND camera_ptz_activity_registry_test
)
set_tests_properties(camera_ptz_activity_registry_test PROPERTIES TIMEOUT 10)
add_executable(media_activity_coordinator_test
server/tests/media_activity_coordinator_test.cpp
server/src/media_activity_coordinator.cpp
stop_all/src/stop_all_admission_gate.cpp
)
target_include_directories(media_activity_coordinator_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(media_activity_coordinator_test PRIVATE
cmvr_es::logging
pthread
)
add_test(
NAME media_activity_coordinator_test
COMMAND media_activity_coordinator_test
)
set(_grpc_media_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _grpc_media_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(media_activity_coordinator_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_media_test_environment}"
)
add_executable(motor_activity_coordinator_test
server/tests/motor_activity_coordinator_test.cpp
server/src/motor_activity_coordinator.cpp
)
target_include_directories(motor_activity_coordinator_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(motor_activity_coordinator_test PRIVATE
cmvr_es::logging
pthread
)
add_test(
NAME motor_activity_coordinator_test
COMMAND motor_activity_coordinator_test
)
set_tests_properties(motor_activity_coordinator_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_media_test_environment}"
)
add_executable(grpc_camera_stream_policy_test
server/tests/grpc_camera_stream_policy_test.cpp
)
@ -191,306 +61,6 @@ if(BUILD_TESTING)
COMMAND grpc_camera_stream_policy_test
)
set_tests_properties(grpc_camera_stream_policy_test PROPERTIES TIMEOUT 10)
add_executable(grpc_system_service_test
server/tests/grpc_system_service_test.cpp
)
target_include_directories(grpc_system_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_system_service_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_system_service_test
COMMAND grpc_system_service_test
)
set(_grpc_system_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _grpc_system_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(grpc_system_service_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_error_logging_interceptor_test
server/tests/grpc_error_logging_interceptor_test.cpp
server/src/grpc_error_logging_interceptor.cpp
)
target_include_directories(grpc_error_logging_interceptor_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(grpc_error_logging_interceptor_test
PRIVATE
cmvr_es::logging
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_error_logging_interceptor_test
COMMAND grpc_error_logging_interceptor_test
)
set_tests_properties(grpc_error_logging_interceptor_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_security_test
server/tests/grpc_security_test.cpp
server/src/grpc_security.cpp
)
target_include_directories(grpc_security_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(grpc_security_test
PRIVATE
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_security_test
COMMAND grpc_security_test
)
set_tests_properties(grpc_security_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_command_transaction_test
server/tests/grpc_command_transaction_test.cpp
server/src/grpc_command_transaction.cpp
server/src/grpc_safety_proto.cpp
server/src/grpc_security.cpp
)
target_include_directories(grpc_command_transaction_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(grpc_command_transaction_test PRIVATE
cmvr_es::safety_manager
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_command_transaction_test
COMMAND grpc_command_transaction_test
)
set_tests_properties(grpc_command_transaction_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_arm_service_test
server/tests/grpc_arm_service_test.cpp
)
target_include_directories(grpc_arm_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_arm_service_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_arm_service_test
COMMAND grpc_arm_service_test
)
set_tests_properties(grpc_arm_service_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_arm_teleop_service_test
server/tests/grpc_arm_teleop_service_test.cpp
)
target_include_directories(grpc_arm_teleop_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(grpc_arm_teleop_service_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_arm_teleop_service_test
COMMAND grpc_arm_teleop_service_test
)
set(_grpc_arm_teleop_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _grpc_arm_teleop_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(grpc_arm_teleop_service_test PROPERTIES
TIMEOUT 20
ENVIRONMENT "${_grpc_arm_teleop_test_environment}"
)
add_executable(grpc_robot_arm_teleop_backend_test
server/tests/grpc_robot_arm_teleop_backend_test.cpp
)
target_include_directories(grpc_robot_arm_teleop_backend_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
)
target_link_libraries(grpc_robot_arm_teleop_backend_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_robot_arm_teleop_backend_test
COMMAND grpc_robot_arm_teleop_backend_test
)
set_tests_properties(grpc_robot_arm_teleop_backend_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_arm_teleop_test_environment}"
)
add_executable(grpc_motor_service_test
server/tests/grpc_motor_service_test.cpp
)
target_include_directories(grpc_motor_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_motor_service_test
PRIVATE
service
gtest
gtest_main
pthread
)
add_test(
NAME grpc_motor_service_test
COMMAND grpc_motor_service_test
)
set(_grpc_motor_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _grpc_motor_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(grpc_motor_service_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_motor_test_environment}"
)
add_executable(grpc_agv_service_test
server/tests/grpc_agv_service_test.cpp
)
target_include_directories(grpc_agv_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_agv_service_test
PRIVATE
service
gtest
gtest_main
pthread
)
add_test(
NAME grpc_agv_service_test
COMMAND grpc_agv_service_test
)
set(_grpc_agv_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}"
)
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _grpc_agv_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(grpc_agv_service_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_grpc_agv_test_environment}"
)
add_executable(grpc_head_service_test
server/tests/grpc_head_service_test.cpp
)
target_include_directories(grpc_head_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_head_service_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_head_service_test
COMMAND grpc_head_service_test
)
set_tests_properties(grpc_head_service_test PROPERTIES
TIMEOUT 15
ENVIRONMENT "${_grpc_system_test_environment}"
)
add_executable(grpc_dexhand_service_test
server/tests/grpc_dexhand_service_test.cpp
)
target_include_directories(grpc_dexhand_service_test
PRIVATE
${CMAKE_SOURCE_DIR}/cmvr-es
${CMAKE_SOURCE_DIR}/cmvr-es/manager/device_manager
)
target_link_libraries(grpc_dexhand_service_test
PRIVATE
service
cmvr_es::proto
gtest
gtest_main
pthread
)
add_test(
NAME grpc_dexhand_service_test
COMMAND grpc_dexhand_service_test
)
set_tests_properties(grpc_dexhand_service_test PROPERTIES
TIMEOUT 15
ENVIRONMENT "${_grpc_system_test_environment}"
)
endif()
# --------------------------------------------------------

View File

@ -14,25 +14,3 @@ target_link_libraries(arm_teleop_client
add_library(cmvr_es::arm_teleop_client ALIAS arm_teleop_client)
install(TARGETS arm_teleop_client ARCHIVE DESTINATION lib)
if(BUILD_TESTING)
add_executable(grpc_arm_teleop_client_test
tests/grpc_arm_teleop_client_test.cpp
)
target_compile_features(grpc_arm_teleop_client_test PRIVATE cxx_std_17)
target_link_libraries(grpc_arm_teleop_client_test
PRIVATE
cmvr_es::arm_teleop_client
Threads::Threads
)
add_test(NAME grpc_arm_teleop_client_test COMMAND grpc_arm_teleop_client_test)
set(_arm_teleop_client_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _arm_teleop_client_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(grpc_arm_teleop_client_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_arm_teleop_client_test_environment}")
endif()

View File

@ -1,220 +0,0 @@
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdio>
#include <iostream>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <grpcpp/grpcpp.h>
#include <unistd.h>
#include "cmvr/api/arm_teleop_v1.grpc.pb.h"
#include "service/grpc/client/include/grpc_arm_teleop_client.h"
namespace {
using namespace std::chrono_literals;
namespace api = cmvr::api::armteleop::v1;
class TestArmTeleopService final : public api::ArmTeleopService::Service {
public:
grpc::Status Teleoperate(
grpc::ServerContext*,
grpc::ServerReaderWriter<api::ServerFrame, api::ClientFrame>* stream) override
{
api::ClientFrame frame;
if (!stream->Read(&frame) || !frame.has_open()) {
return grpc::Status(
grpc::StatusCode::INVALID_ARGUMENT,
"OpenSession must be first");
}
{
std::lock_guard lock(mutex_);
open_received_ = true;
}
condition_.notify_all();
api::ServerFrame opened;
opened.mutable_status()->set_session_id("client-test-session");
opened.mutable_status()->set_phase(api::SESSION_PHASE_OPENED);
if (!stream->Write(opened)) {
return grpc::Status::OK;
}
while (stream->Read(&frame)) {
if (frame.has_heartbeat()) {
heartbeat_received_.store(true);
condition_.notify_all();
}
}
handler_finished_.store(true);
condition_.notify_all();
return grpc::Status::OK;
}
bool waitForOpen(const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(lock, timeout, [this] { return open_received_; });
}
bool waitForHeartbeat(const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [this] { return heartbeat_received_.load(); });
}
bool waitForHandlerFinish(const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [this] { return handler_finished_.load(); });
}
private:
std::mutex mutex_;
std::condition_variable condition_;
bool open_received_{false};
std::atomic<bool> heartbeat_received_{false};
std::atomic<bool> handler_finished_{false};
};
int fail(const std::string& detail)
{
std::cerr << "grpc_arm_teleop_client_test: " << detail << '\n';
return 1;
}
} // namespace
int main()
{
TestArmTeleopService service;
const std::string socket_path =
"/tmp/cmvr_arm_teleop_client_test_" +
std::to_string(static_cast<long long>(::getpid())) + ".sock";
std::remove(socket_path.c_str());
const std::string endpoint = "unix:" + socket_path;
grpc::ServerBuilder builder;
builder.AddListeningPort(
endpoint,
grpc::InsecureServerCredentials());
builder.RegisterService(&service);
std::unique_ptr<grpc::Server> server = builder.BuildAndStart();
if (!server) {
return fail("failed to start in-process gRPC server");
}
auto channel = grpc::CreateChannel(
endpoint,
grpc::InsecureChannelCredentials());
cmvr::teleop::GrpcArmTeleopClient client(channel);
api::OpenSession open;
open.set_protocol_major(1);
open.set_protocol_minor(0);
open.set_client_instance_id("grpc-client-test");
open.mutable_expected_robot()->set_robot_id("test-arm");
open.set_watchdog_timeout_ms(100);
open.set_requested_lease_ms(500);
std::mutex frame_mutex;
std::condition_variable frame_condition;
bool opened_received = false;
grpc::Status session_status;
std::thread session_thread([&] {
session_status = client.runSession(
open,
[&](const api::ServerFrame& frame) {
if (frame.has_status() &&
frame.status().phase() == api::SESSION_PHASE_OPENED) {
{
std::lock_guard lock(frame_mutex);
opened_received = true;
}
frame_condition.notify_all();
}
});
});
if (!service.waitForOpen(2s)) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("server did not receive OpenSession");
}
{
std::unique_lock lock(frame_mutex);
if (!frame_condition.wait_for(lock, 2s, [&] { return opened_received; })) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("client did not receive OPENED status");
}
}
if (!client.isSessionActive()) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("client did not expose an active session");
}
const std::uint64_t generation =
client.activeSessionGeneration();
if (generation == 0) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("active stream did not expose a session generation");
}
api::ClientHeartbeat heartbeat;
heartbeat.set_sequence(1);
if (client.sendHeartbeat(heartbeat, generation + 1)) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("stale session generation was allowed to write");
}
if (!client.sendHeartbeat(heartbeat, generation) ||
!service.waitForHeartbeat(2s)) {
client.tryCancel();
session_thread.join();
server->Shutdown();
return fail("heartbeat did not traverse the active stream");
}
const auto cancel_begin = std::chrono::steady_clock::now();
client.tryCancel();
session_thread.join();
const auto cancel_elapsed = std::chrono::steady_clock::now() - cancel_begin;
if (cancel_elapsed > 2s) {
server->Shutdown();
return fail("TryCancel did not unblock and join the session promptly");
}
if (session_status.error_code() != grpc::StatusCode::CANCELLED) {
server->Shutdown();
return fail(
"cancelled session returned unexpected status: " +
std::to_string(session_status.error_code()));
}
if (client.isSessionActive()) {
server->Shutdown();
return fail("client retained an active stream after cancellation");
}
if (!service.waitForHandlerFinish(2s)) {
server->Shutdown();
return fail("server handler did not observe client cancellation");
}
server->Shutdown();
std::remove(socket_path.c_str());
std::cout << "grpc_arm_teleop_client_test: PASS\n";
return 0;
}

View File

@ -1,491 +0,0 @@
#include "service/grpc/server/include/camera_operational_activity_registry.h"
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
class TestCamera final : public device::AbstractCamera {
public:
explicit TestCamera(std::string id)
{
id_ = std::move(id);
state_.is_initialized = true;
}
std::string typeName() const override { return "TestCamera"; }
void getState(device::CameraState& state) override
{
std::lock_guard lock(mutex_);
state = state_;
}
bool start() override
{
++lifecycle_start_calls_;
return true;
}
bool stop() override
{
++lifecycle_stop_calls_;
std::lock_guard lock(mutex_);
operational_active_ = false;
state_.is_opened = false;
return !fail_lifecycle_stop_;
}
bool startOperationalActivity() override
{
++operational_start_calls_;
{
std::unique_lock lock(mutex_);
start_entered_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_start_; });
if (fail_operational_start_) {
return false;
}
operational_active_ = true;
state_.is_opened = true;
}
return true;
}
bool stopOperationalActivity() override
{
++operational_stop_calls_;
std::unique_lock lock(mutex_);
stop_entered_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_stop_; });
if (fail_operational_stop_) {
return false;
}
operational_active_ = false;
state_.is_opened = false;
return true;
}
void setFailOperationalStart(const bool fail)
{
fail_operational_start_ = fail;
}
void setFailOperationalStop(const bool fail)
{
fail_operational_stop_ = fail;
}
void blockStop()
{
std::lock_guard lock(mutex_);
block_stop_ = true;
stop_entered_ = false;
}
void waitForStopEntered()
{
std::unique_lock lock(mutex_);
condition_.wait(lock, [this] { return stop_entered_; });
}
void releaseStop()
{
{
std::lock_guard lock(mutex_);
block_stop_ = false;
}
condition_.notify_all();
}
void blockStart()
{
std::lock_guard lock(mutex_);
block_start_ = true;
start_entered_ = false;
}
void waitForStartEntered()
{
std::unique_lock lock(mutex_);
condition_.wait(lock, [this] { return start_entered_; });
}
void releaseStart()
{
{
std::lock_guard lock(mutex_);
block_start_ = false;
}
condition_.notify_all();
}
bool operationalActive() const
{
std::lock_guard lock(mutex_);
return operational_active_;
}
int lifecycleStartCalls() const { return lifecycle_start_calls_; }
int lifecycleStopCalls() const { return lifecycle_stop_calls_; }
int operationalStartCalls() const { return operational_start_calls_; }
int operationalStopCalls() const { return operational_stop_calls_; }
private:
mutable std::mutex mutex_;
std::condition_variable condition_;
bool operational_active_{false};
bool fail_operational_start_{false};
bool fail_operational_stop_{false};
bool fail_lifecycle_stop_{false};
bool block_start_{false};
bool start_entered_{false};
bool block_stop_{false};
bool stop_entered_{false};
std::atomic<int> lifecycle_start_calls_{0};
std::atomic<int> lifecycle_stop_calls_{0};
std::atomic<int> operational_start_calls_{0};
std::atomic<int> operational_stop_calls_{0};
};
class CameraOperationalActivityRegistryTest : public ::testing::Test {
protected:
void SetUp() override
{
globalStopAllAdmissionGate().clearForTesting();
}
void TearDown() override
{
globalStopAllAdmissionGate().clearForTesting();
}
};
TEST_F(CameraOperationalActivityRegistryTest,
StopAllStopsTrackedActivityWithoutLifecycleStopAndCanRestart)
{
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
EXPECT_EQ(
registry.start(camera->id(), camera),
CameraOperationalActivityRegistry::DispatchResult::Success);
EXPECT_TRUE(camera->operationalActive());
EXPECT_EQ(registry.activeCameraCount(), 1U);
auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_EQ(registry.activeCameraCount(), 0U);
ASSERT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
EXPECT_EQ(
registry.start(camera->id(), camera),
CameraOperationalActivityRegistry::DispatchResult::Success);
EXPECT_TRUE(camera->operationalActive());
EXPECT_EQ(camera->operationalStartCalls(), 2);
EXPECT_EQ(camera->lifecycleStartCalls(), 0);
}
TEST_F(CameraOperationalActivityRegistryTest,
FailedOperationalStopRemainsTrackedAndKeepsAdmissionClosed)
{
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
ASSERT_EQ(
registry.start(camera->id(), camera),
CameraOperationalActivityRegistry::DispatchResult::Success);
camera->setFailOperationalStop(true);
auto ticket = globalStopAllAdmissionGate().beginStopAll();
std::vector<std::string> failures;
EXPECT_FALSE(registry.stopAllActivities(&failures));
EXPECT_EQ(registry.activeCameraCount(), 1U);
ASSERT_EQ(failures.size(), 1U);
EXPECT_EQ(
registry.start(camera->id(), camera),
CameraOperationalActivityRegistry::DispatchResult::RejectedByStopAll);
EXPECT_FALSE(globalStopAllAdmissionGate().finishStopAll(ticket, false));
camera->setFailOperationalStop(false);
ticket = globalStopAllAdmissionGate().beginStopAll();
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
EXPECT_EQ(registry.activeCameraCount(), 0U);
}
TEST_F(CameraOperationalActivityRegistryTest,
StopAllWaitsForRacingStartThenStopsTheStartedActivity)
{
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
camera->blockStart();
CameraOperationalActivityRegistry::DispatchResult start_result =
CameraOperationalActivityRegistry::DispatchResult::DeviceFailure;
std::thread start_thread([&] {
start_result = registry.start(camera->id(), camera);
});
camera->waitForStartEntered();
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
std::atomic<bool> stop_returned{false};
bool stop_result = false;
std::thread stop_thread([&] {
stop_result = registry.stopAllActivities();
stop_returned = true;
});
std::this_thread::yield();
EXPECT_FALSE(stop_returned.load());
camera->releaseStart();
start_thread.join();
stop_thread.join();
EXPECT_EQ(
start_result,
CameraOperationalActivityRegistry::DispatchResult::Success);
EXPECT_TRUE(stop_result);
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(CameraOperationalActivityRegistryTest,
TrackedIdsExposeAStartThatIsStillInsideDriverIo)
{
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera.pending");
camera->blockStart();
CameraOperationalActivityRegistry::DispatchResult start_result =
CameraOperationalActivityRegistry::DispatchResult::DeviceFailure;
std::thread start_thread([&] {
start_result = registry.start(camera->id(), camera);
});
camera->waitForStartEntered();
const auto snapshot_started = std::chrono::steady_clock::now();
EXPECT_EQ(
registry.trackedDeviceIds(),
(std::vector<std::string>{"camera.pending"}));
EXPECT_LT(
std::chrono::steady_clock::now() - snapshot_started,
std::chrono::milliseconds(100));
camera->releaseStart();
start_thread.join();
EXPECT_EQ(
start_result,
CameraOperationalActivityRegistry::DispatchResult::Success);
}
TEST_F(CameraOperationalActivityRegistryTest,
DefaultOperationalStopFailsClosed)
{
class UnsupportedCamera final : public device::AbstractCamera {
public:
UnsupportedCamera() { id_ = "unsupported"; }
std::string typeName() const override { return "UnsupportedCamera"; }
void getState(device::CameraState& state) override { state = {}; }
};
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<UnsupportedCamera>();
ASSERT_EQ(
registry.start(camera->id(), camera),
CameraOperationalActivityRegistry::DispatchResult::Success);
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
EXPECT_FALSE(registry.stopAllActivities());
EXPECT_EQ(registry.activeCameraCount(), 1U);
EXPECT_FALSE(globalStopAllAdmissionGate().finishStopAll(ticket, false));
}
TEST_F(CameraOperationalActivityRegistryTest,
StopForDeviceIsSelectiveAndActiveIdsReflectFailures)
{
CameraOperationalActivityRegistry registry;
auto first = std::make_shared<TestCamera>("camera.first");
auto second = std::make_shared<TestCamera>("camera.second");
ASSERT_EQ(
registry.start(first->id(), first),
CameraOperationalActivityRegistry::DispatchResult::Success);
ASSERT_EQ(
registry.start(second->id(), second),
CameraOperationalActivityRegistry::DispatchResult::Success);
EXPECT_EQ(
registry.activeDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
EXPECT_EQ(
registry.trackedDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
first->setFailOperationalStop(true);
std::vector<std::string> failures;
EXPECT_FALSE(registry.stopActivitiesForDevice(first->id(), &failures));
EXPECT_EQ(failures.size(), 1U);
EXPECT_TRUE(first->operationalActive());
EXPECT_TRUE(second->operationalActive());
EXPECT_EQ(second->operationalStopCalls(), 0);
first->setFailOperationalStop(false);
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
EXPECT_EQ(
registry.activeDeviceIds(),
(std::vector<std::string>{"camera.second"}));
EXPECT_TRUE(registry.stopActivitiesForDevice("missing"));
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_TRUE(registry.activeDeviceIds().empty());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
EXPECT_EQ(first->lifecycleStopCalls(), 0);
EXPECT_EQ(second->lifecycleStopCalls(), 0);
}
TEST_F(CameraOperationalActivityRegistryTest,
InventoryFallbackStopsOncePerStopAllRoundAndCanStopAgainLater)
{
CameraOperationalActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("inventory-camera");
ASSERT_TRUE(camera->startOperationalActivity());
auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopActivitiesForDevice(camera->id(), camera));
EXPECT_TRUE(registry.stopActivitiesForDevice(camera->id(), camera));
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
ASSERT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
ASSERT_TRUE(camera->startOperationalActivity());
ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopActivitiesForDevice(camera->id(), camera));
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStopCalls(), 2);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(CameraOperationalActivityRegistryTest,
TrackedCameraTakesPrecedenceOverInventoryFallback)
{
CameraOperationalActivityRegistry registry;
auto tracked = std::make_shared<TestCamera>("camera");
auto fallback = std::make_shared<TestCamera>("camera");
ASSERT_EQ(
registry.start(tracked->id(), tracked),
CameraOperationalActivityRegistry::DispatchResult::Success);
ASSERT_TRUE(fallback->startOperationalActivity());
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopActivitiesForDevice(
tracked->id(), fallback));
EXPECT_FALSE(tracked->operationalActive());
EXPECT_EQ(tracked->operationalStopCalls(), 1);
EXPECT_TRUE(fallback->operationalActive());
EXPECT_EQ(fallback->operationalStopCalls(), 0);
EXPECT_EQ(tracked->lifecycleStopCalls(), 0);
EXPECT_EQ(fallback->lifecycleStopCalls(), 0);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(CameraOperationalActivityRegistryTest,
ActiveDeviceIdCannotBeReboundToAnotherCameraInstance)
{
CameraOperationalActivityRegistry registry;
auto original = std::make_shared<TestCamera>("camera");
auto replacement = std::make_shared<TestCamera>("camera");
ASSERT_EQ(
registry.start(original->id(), original),
CameraOperationalActivityRegistry::DispatchResult::Success);
CameraOperationalActivityRegistry::ActivityToken replacement_token;
EXPECT_EQ(
registry.start(
replacement->id(), replacement, &replacement_token),
CameraOperationalActivityRegistry::DispatchResult::DeviceFailure);
EXPECT_FALSE(replacement_token.valid());
EXPECT_TRUE(original->operationalActive());
EXPECT_FALSE(replacement->operationalActive());
EXPECT_EQ(replacement->operationalStartCalls(), 0);
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_FALSE(original->operationalActive());
EXPECT_EQ(original->operationalStopCalls(), 1);
EXPECT_EQ(replacement->operationalStopCalls(), 0);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(CameraOperationalActivityRegistryTest,
DifferentDevicesStopConcurrentlyAndSameDeviceStopIsSerialized)
{
CameraOperationalActivityRegistry registry;
auto first = std::make_shared<TestCamera>("camera.first");
auto second = std::make_shared<TestCamera>("camera.second");
ASSERT_EQ(
registry.start(first->id(), first),
CameraOperationalActivityRegistry::DispatchResult::Success);
ASSERT_EQ(
registry.start(second->id(), second),
CameraOperationalActivityRegistry::DispatchResult::Success);
first->blockStop();
second->blockStop();
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
std::thread first_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
});
first->waitForStopEntered();
const auto snapshot_started = std::chrono::steady_clock::now();
EXPECT_EQ(
registry.trackedDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
EXPECT_LT(
std::chrono::steady_clock::now() - snapshot_started,
std::chrono::milliseconds(100));
std::thread second_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(second->id()));
});
second->waitForStopEntered();
std::atomic<bool> matching_stop_returned{false};
std::thread matching_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
matching_stop_returned = true;
});
std::this_thread::yield();
EXPECT_FALSE(matching_stop_returned.load());
second->releaseStop();
second_stop.join();
first->releaseStop();
first_stop.join();
matching_stop.join();
EXPECT_TRUE(matching_stop_returned.load());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
} // namespace
} // namespace cmvr::service

View File

@ -1,349 +0,0 @@
#include "service/grpc/server/include/camera_ptz_activity_registry.h"
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <mutex>
#include <thread>
#include <utility>
#include <vector>
#include <gtest/gtest.h>
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
class TestCamera final : public device::AbstractCamera {
public:
struct Call {
device::PtzCommand command;
bool stop;
int speed;
};
explicit TestCamera(std::string id)
{
id_ = std::move(id);
}
std::string typeName() const override { return "TestCamera"; }
void getState(device::CameraState& state) override { state = {}; }
bool controlPtz(
const device::PtzCommand command,
const bool stop,
const int speed) override
{
std::unique_lock lock(mutex_);
calls_.push_back({command, stop, speed});
if (stop) {
stop_entered_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_stop_; });
}
return !(stop && fail_stop_);
}
bool stop() override
{
++lifecycle_stop_calls_;
return true;
}
std::vector<Call> calls() const
{
std::lock_guard lock(mutex_);
return calls_;
}
void setFailStop(const bool fail) { fail_stop_ = fail; }
void blockStop()
{
std::lock_guard lock(mutex_);
block_stop_ = true;
stop_entered_ = false;
}
void waitForStopEntered()
{
std::unique_lock lock(mutex_);
condition_.wait(lock, [this] { return stop_entered_; });
}
void releaseStop()
{
{
std::lock_guard lock(mutex_);
block_stop_ = false;
}
condition_.notify_all();
}
int lifecycleStopCalls() const { return lifecycle_stop_calls_; }
private:
mutable std::mutex mutex_;
std::condition_variable condition_;
std::vector<Call> calls_;
bool fail_stop_{false};
bool block_stop_{false};
bool stop_entered_{false};
int lifecycle_stop_calls_{0};
};
class CameraPtzActivityRegistryTest : public ::testing::Test {
protected:
void SetUp() override
{
globalStopAllAdmissionGate().clearForTesting();
}
void TearDown() override
{
globalStopAllAdmissionGate().clearForTesting();
}
};
TEST_F(CameraPtzActivityRegistryTest,
StopAllMatchesEveryActiveStartAndNeverStopsLifecycle)
{
CameraPtzActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::PanLeft, false, 4),
CameraPtzActivityRegistry::DispatchResult::Success);
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::ZoomIn, false, 7),
CameraPtzActivityRegistry::DispatchResult::Success);
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_EQ(registry.activeCommandCount(), 0U);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
ASSERT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
const auto calls = camera->calls();
ASSERT_EQ(calls.size(), 4U);
EXPECT_FALSE(calls[0].stop);
EXPECT_FALSE(calls[1].stop);
EXPECT_TRUE(calls[2].stop);
EXPECT_TRUE(calls[3].stop);
}
TEST_F(CameraPtzActivityRegistryTest,
FailedStopRemainsTrackedForRetryAndAdmissionRecovers)
{
CameraPtzActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
ASSERT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::TiltUp, false, 3),
CameraPtzActivityRegistry::DispatchResult::Success);
auto ticket = globalStopAllAdmissionGate().beginStopAll();
camera->setFailStop(true);
std::vector<std::string> failures;
EXPECT_FALSE(registry.stopAllActivities(&failures));
EXPECT_EQ(registry.activeCommandCount(), 1U);
ASSERT_FALSE(failures.empty());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, false) == false);
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::ZoomOut, false, 5),
CameraPtzActivityRegistry::DispatchResult::RejectedByStopAll);
ticket = globalStopAllAdmissionGate().beginStopAll();
camera->setFailStop(false);
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::ZoomOut, false, 5),
CameraPtzActivityRegistry::DispatchResult::Success);
}
TEST_F(CameraPtzActivityRegistryTest,
ExplicitStopRemainsAvailableWhileStartAdmissionIsLatched)
{
CameraPtzActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
ASSERT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::PanLeft, false, 4),
CameraPtzActivityRegistry::DispatchResult::Success);
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_FALSE(globalStopAllAdmissionGate().finishStopAll(ticket, false));
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::ZoomIn, false, 4),
CameraPtzActivityRegistry::DispatchResult::RejectedByStopAll);
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::PanLeft, true, 4),
CameraPtzActivityRegistry::DispatchResult::Success);
EXPECT_EQ(registry.activeCommandCount(), 0U);
const auto calls = camera->calls();
ASSERT_EQ(calls.size(), 2U);
EXPECT_FALSE(calls.front().stop);
EXPECT_TRUE(calls.back().stop);
}
TEST_F(CameraPtzActivityRegistryTest,
StopForDeviceIsSelectiveAndActiveIdsReflectFailures)
{
CameraPtzActivityRegistry registry;
auto first = std::make_shared<TestCamera>("camera.first");
auto second = std::make_shared<TestCamera>("camera.second");
ASSERT_EQ(
registry.control(
first->id(), first, device::PtzCommand::PanLeft, false, 4),
CameraPtzActivityRegistry::DispatchResult::Success);
ASSERT_EQ(
registry.control(
second->id(), second, device::PtzCommand::ZoomIn, false, 7),
CameraPtzActivityRegistry::DispatchResult::Success);
EXPECT_EQ(
registry.activeDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
EXPECT_EQ(
registry.trackedDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
first->setFailStop(true);
std::vector<std::string> failures;
EXPECT_FALSE(registry.stopActivitiesForDevice(first->id(), &failures));
EXPECT_EQ(registry.activeCommandCount(), 2U);
EXPECT_EQ(failures.size(), 1U);
EXPECT_EQ(second->calls().size(), 1U);
first->setFailStop(false);
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
EXPECT_EQ(registry.activeCommandCount(), 1U);
EXPECT_EQ(
registry.activeDeviceIds(),
(std::vector<std::string>{"camera.second"}));
EXPECT_TRUE(registry.stopActivitiesForDevice("missing"));
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_TRUE(registry.activeDeviceIds().empty());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
EXPECT_EQ(first->lifecycleStopCalls(), 0);
EXPECT_EQ(second->lifecycleStopCalls(), 0);
}
TEST_F(CameraPtzActivityRegistryTest,
DifferentDevicesStopConcurrentlyButMatchingControlIsSerialized)
{
CameraPtzActivityRegistry registry;
auto first = std::make_shared<TestCamera>("camera.first");
auto second = std::make_shared<TestCamera>("camera.second");
ASSERT_EQ(
registry.control(
first->id(), first, device::PtzCommand::PanLeft, false, 4),
CameraPtzActivityRegistry::DispatchResult::Success);
ASSERT_EQ(
registry.control(
second->id(), second, device::PtzCommand::ZoomIn, false, 7),
CameraPtzActivityRegistry::DispatchResult::Success);
first->blockStop();
second->blockStop();
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
std::thread first_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
});
first->waitForStopEntered();
const auto snapshot_started = std::chrono::steady_clock::now();
EXPECT_EQ(
registry.trackedDeviceIds(),
(std::vector<std::string>{"camera.first", "camera.second"}));
EXPECT_LT(
std::chrono::steady_clock::now() - snapshot_started,
std::chrono::milliseconds(100));
std::thread second_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(second->id()));
});
second->waitForStopEntered();
std::atomic<bool> matching_stop_returned{false};
std::thread matching_stop([&] {
EXPECT_TRUE(registry.stopActivitiesForDevice(first->id()));
matching_stop_returned = true;
});
std::this_thread::yield();
EXPECT_FALSE(matching_stop_returned.load());
second->releaseStop();
second_stop.join();
first->releaseStop();
first_stop.join();
matching_stop.join();
EXPECT_TRUE(matching_stop_returned.load());
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(CameraPtzActivityRegistryTest,
DispatchFenceRunsInsidePerDeviceQueueBeforeHardwareMutation)
{
CameraPtzActivityRegistry registry;
auto camera = std::make_shared<TestCamera>("camera");
std::mutex mutex;
std::condition_variable condition;
bool first_fence_entered = false;
bool release_first_fence = false;
std::atomic<bool> second_fence_entered{false};
std::thread first([&] {
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::PanLeft, false, 4,
[&] {
std::unique_lock lock(mutex);
first_fence_entered = true;
condition.notify_all();
condition.wait(lock, [&] { return release_first_fence; });
return true;
}),
CameraPtzActivityRegistry::DispatchResult::Success);
});
{
std::unique_lock lock(mutex);
condition.wait(lock, [&] { return first_fence_entered; });
}
std::thread second([&] {
EXPECT_EQ(
registry.control(
camera->id(), camera, device::PtzCommand::ZoomIn, false, 7,
[&] {
second_fence_entered = true;
return false;
}),
CameraPtzActivityRegistry::DispatchResult::RejectedByDispatchFence);
});
std::this_thread::yield();
EXPECT_FALSE(second_fence_entered.load());
{
std::lock_guard lock(mutex);
release_first_fence = true;
}
condition.notify_all();
first.join();
second.join();
EXPECT_TRUE(second_fence_entered.load());
const auto calls = camera->calls();
ASSERT_EQ(calls.size(), 1U);
EXPECT_EQ(calls.front().command, device::PtzCommand::PanLeft);
}
} // namespace
} // namespace cmvr::service

View File

@ -1,806 +0,0 @@
#include "service/grpc/server/include/grpc_agv_service.h"
#include <chrono>
#include <future>
#include <memory>
#include <string>
#include <thread>
#include <vector>
#include <grpcpp/grpcpp.h>
#include <gtest/gtest.h>
#include "cmvr/config/device_manager_config/device_manager_config.pb.h"
#include "manager/control_authority_manager/include/control_authority_manager.h"
#include "manager/device_manager/include/device_manager.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
constexpr char kNativeErrorMessage[] =
"SEER Robokit command failed: ret_code=41200, err_msg=speed_illegal";
constexpr char kNativeNavigationErrorMessage[] =
"SEER Robokit command failed: ret_code=43051, err_msg=planner_rejected_pose";
class FakeAgv final : public device::AbstractAGV {
public:
FakeAgv()
{
id_ = "test-agv";
}
std::string typeName() const override { return "FakeAgv"; }
device::AgvResult emergencyStop() override
{
++emergency_stop_calls_;
emergency_stop_barrier_observed_ = normalLeaseIsBlocked_(
"test-probe:emergencyStop");
return device::AgvResult::success();
}
device::AgvResult navigateToPose(
const math::Pose2d& pose,
const device::AgvMotionOptions& options,
const device::AgvAdapterParams&) override
{
++navigate_pose_calls_;
pose_cancellation_bound_ =
static_cast<bool>(options.cancellation_requested);
pose_cancellation_requested_during_call_ =
pose_cancellation_bound_ && options.cancellation_requested();
if (pose_cancellation_requested_during_call_) {
return device::AgvResult::failure(
device::AgvErrorCode::TaskCanceled,
"navigation canceled before fake device dispatch");
}
pose_ = pose;
pose_options_ = options;
pose_options_.cancellation_requested = {};
return pose_result_;
}
device::AgvResult navigateToStation(
const std::string& station_id,
const device::AgvMotionOptions& options,
const device::AgvAdapterParams& adapter_params) override
{
station_id_ = station_id;
station_options_ = options;
station_adapter_params_ = adapter_params;
station_cancellation_bound_ =
static_cast<bool>(options.cancellation_requested);
station_cancellation_requested_during_call_ =
station_cancellation_bound_ && options.cancellation_requested();
station_options_.cancellation_requested = {};
return device::AgvResult::success();
}
device::AgvResult followPath(
const std::vector<device::AgvPathSegment>& path,
const device::AgvMotionOptions& options) override
{
path_ = path;
path_options_ = options;
path_cancellation_bound_ =
static_cast<bool>(options.cancellation_requested);
path_cancellation_requested_during_call_ =
path_cancellation_bound_ && options.cancellation_requested();
path_options_.cancellation_requested = {};
return device::AgvResult::success();
}
device::AgvResult setVelocity(const device::AgvVelocity&) override
{
++set_velocity_calls_;
return device::AgvResult::failure(
device::AgvErrorCode::CommandFailed,
kNativeErrorMessage);
}
device::AgvResult cancelNavigation() override
{
++cancel_navigation_calls_;
cancel_navigation_barrier_observed_ = normalLeaseIsBlocked_(
"test-probe:cancelNavigation");
return device::AgvResult::success();
}
device::AgvResult stopVelocityControl() override
{
++stop_velocity_calls_;
stop_velocity_barrier_observed_ = normalLeaseIsBlocked_(
"test-probe:stopVelocityControl");
return device::AgvResult::success();
}
device::AgvResult confirmMotionStopped() override
{
++confirm_stopped_calls_;
confirm_stopped_barrier_observed_ = normalLeaseIsBlocked_(
"test-probe:confirmMotionStopped");
return confirm_stopped_result_;
}
bool normalLeaseIsBlocked_(const std::string& owner)
{
auto& authority = control::ControlAuthorityManager::instance();
const auto probe = authority.tryAcquire(
id_, owner, std::chrono::hours(1));
if (probe.acquired) {
authority.release(probe.token);
}
return !probe.acquired;
}
math::Pose2d pose_{};
device::AgvMotionOptions pose_options_;
device::AgvResult pose_result_{device::AgvResult::success()};
std::string station_id_;
device::AgvMotionOptions station_options_;
device::AgvAdapterParams station_adapter_params_;
std::vector<device::AgvPathSegment> path_;
device::AgvMotionOptions path_options_;
bool pose_cancellation_bound_{false};
bool pose_cancellation_requested_during_call_{false};
bool station_cancellation_bound_{false};
bool station_cancellation_requested_during_call_{false};
bool path_cancellation_bound_{false};
bool path_cancellation_requested_during_call_{false};
int emergency_stop_calls_{0};
int cancel_navigation_calls_{0};
int stop_velocity_calls_{0};
int confirm_stopped_calls_{0};
int set_velocity_calls_{0};
int navigate_pose_calls_{0};
bool emergency_stop_barrier_observed_{false};
bool cancel_navigation_barrier_observed_{false};
bool stop_velocity_barrier_observed_{false};
bool confirm_stopped_barrier_observed_{false};
device::AgvResult confirm_stopped_result_{
device::AgvResult::success()};
};
class LegacyFollowPathAgv final : public device::AbstractAGV {
public:
std::string typeName() const override { return "LegacyFollowPathAgv"; }
device::AgvResult followPath(
const std::vector<device::AgvPathSegment>& path) override
{
path_ = path;
return device::AgvResult::success();
}
std::vector<device::AgvPathSegment> path_;
};
class GrpcAgvServiceTest : public ::testing::Test {
protected:
void SetUp() override
{
control::ControlAuthorityManager::instance().clear();
globalStopAllAdmissionGate().clearForTesting();
config::DeviceManagerConfig config;
auto& manager = device::DeviceManager::getInstance(config);
agv_ = std::make_shared<FakeAgv>();
manager.registerDevice(agv_);
service_ = std::make_unique<gRPCAgvServiceImpl>();
}
void TearDown() override
{
service_.reset();
agv_.reset();
device::DeviceManager::destroyInstance();
control::ControlAuthorityManager::instance().clear();
globalStopAllAdmissionGate().clearForTesting();
}
std::shared_ptr<FakeAgv> agv_;
std::unique_ptr<gRPCAgvServiceImpl> service_;
};
void setMotionOptions(msgs::AgvMotionOptions* options)
{
options->set_max_speed(0.4);
options->set_max_angular_speed(0.5);
options->set_max_acceleration(0.6);
options->set_max_angular_acceleration(0.7);
options->set_reach_distance(0.08);
options->set_reach_angle(0.09);
options->set_wait_timeout_ms(1234);
options->set_poll_interval_ms(55);
}
void expectMotionOptions(const device::AgvMotionOptions& options)
{
EXPECT_DOUBLE_EQ(options.max_speed, 0.4);
EXPECT_DOUBLE_EQ(options.max_angular_speed, 0.5);
EXPECT_DOUBLE_EQ(options.max_acceleration, 0.6);
EXPECT_DOUBLE_EQ(options.max_angular_acceleration, 0.7);
EXPECT_DOUBLE_EQ(options.reach_distance, 0.08);
EXPECT_DOUBLE_EQ(options.reach_angle, 0.09);
EXPECT_EQ(options.wait_timeout_ms, 1234);
EXPECT_EQ(options.poll_interval_ms, 55);
EXPECT_FALSE(options.asynchronous);
}
TEST_F(GrpcAgvServiceTest, NavigationRpcsForwardSpeedAndAccelerationOptions)
{
api::AgvNavigateToPoseCommand_Request pose_request;
pose_request.mutable_header()->set_device_id("test-agv");
pose_request.mutable_pose()->set_x(1.0);
pose_request.mutable_pose()->set_y(2.0);
pose_request.mutable_pose()->set_theta(0.5);
setMotionOptions(pose_request.mutable_options());
api::AgvNavigateToPoseCommand_Feedback pose_response;
grpc::ServerContext pose_context;
const auto pose_status = service_->navigateToPose(
&pose_context,
&pose_request,
&pose_response);
ASSERT_TRUE(pose_status.ok()) << pose_status.error_message();
EXPECT_TRUE(pose_response.header().success());
EXPECT_DOUBLE_EQ(agv_->pose_.x, 1.0);
EXPECT_DOUBLE_EQ(agv_->pose_.y, 2.0);
EXPECT_DOUBLE_EQ(agv_->pose_.theta, 0.5);
expectMotionOptions(agv_->pose_options_);
EXPECT_TRUE(agv_->pose_cancellation_bound_);
EXPECT_FALSE(agv_->pose_cancellation_requested_during_call_);
api::AgvNavigateToStationCommand_Request station_request;
station_request.mutable_header()->set_device_id("test-agv");
station_request.set_station_id("station-1");
setMotionOptions(station_request.mutable_options());
api::AgvNavigateToStationCommand_Feedback station_response;
grpc::ServerContext station_context;
const auto station_status = service_->navigateToStation(
&station_context,
&station_request,
&station_response);
ASSERT_TRUE(station_status.ok()) << station_status.error_message();
EXPECT_TRUE(station_response.header().success());
EXPECT_EQ(agv_->station_id_, "station-1");
expectMotionOptions(agv_->station_options_);
EXPECT_TRUE(agv_->station_cancellation_bound_);
EXPECT_FALSE(agv_->station_cancellation_requested_during_call_);
api::AgvFollowPathCommand_Request path_request;
path_request.mutable_header()->set_device_id("test-agv");
auto* segment = path_request.add_path();
segment->set_source_station("station-1");
segment->set_target_station("station-2");
setMotionOptions(path_request.mutable_options());
api::AgvFollowPathCommand_Feedback path_response;
grpc::ServerContext path_context;
const auto path_status = service_->followPath(
&path_context,
&path_request,
&path_response);
ASSERT_TRUE(path_status.ok()) << path_status.error_message();
EXPECT_TRUE(path_response.header().success());
ASSERT_EQ(agv_->path_.size(), 1U);
EXPECT_EQ(agv_->path_[0].source_station, "station-1");
EXPECT_EQ(agv_->path_[0].target_station, "station-2");
expectMotionOptions(agv_->path_options_);
EXPECT_TRUE(agv_->path_cancellation_bound_);
EXPECT_FALSE(agv_->path_cancellation_requested_during_call_);
}
TEST_F(GrpcAgvServiceTest, NativeControllerCodeIsReturnedInGrpcMessage)
{
api::AgvSetVelocityCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
request.mutable_velocity()->set_vx(0.1);
api::AgvSetVelocityCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->setVelocity(
&context,
&request,
&response);
EXPECT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
EXPECT_EQ(status.error_message(), kNativeErrorMessage);
EXPECT_FALSE(response.header().success());
EXPECT_EQ(response.header().error_message(), kNativeErrorMessage);
}
TEST_F(GrpcAgvServiceTest, NativeNavigationCodeIsReturnedInGrpcMessage)
{
agv_->pose_result_ = device::AgvResult::failure(
device::AgvErrorCode::CommandFailed,
kNativeNavigationErrorMessage);
api::AgvNavigateToPoseCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
request.mutable_pose()->set_x(1.0);
request.mutable_pose()->set_y(2.0);
api::AgvNavigateToPoseCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->navigateToPose(
&context,
&request,
&response);
EXPECT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
EXPECT_EQ(status.error_message(), kNativeNavigationErrorMessage);
EXPECT_FALSE(response.header().success());
EXPECT_EQ(
response.header().error_message(),
kNativeNavigationErrorMessage);
EXPECT_FALSE(agv_->pose_options_.asynchronous);
EXPECT_EQ(agv_->pose_options_.wait_timeout_ms, 0);
EXPECT_EQ(agv_->pose_options_.poll_interval_ms, 0);
EXPECT_TRUE(agv_->pose_cancellation_bound_);
EXPECT_FALSE(agv_->pose_cancellation_requested_during_call_);
}
TEST_F(GrpcAgvServiceTest, ExplicitAsynchronousNavigationIsForwarded)
{
api::AgvNavigateToStationCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
request.set_station_id("station-async");
request.mutable_options()->set_asynchronous(true);
api::AgvNavigateToStationCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->navigateToStation(
&context,
&request,
&response);
ASSERT_TRUE(status.ok()) << status.error_message();
EXPECT_TRUE(agv_->station_options_.asynchronous);
EXPECT_TRUE(agv_->station_cancellation_bound_);
EXPECT_FALSE(agv_->station_cancellation_requested_during_call_);
}
TEST_F(GrpcAgvServiceTest, ActionLeaseBlocksOrdinaryMutatingRpcs)
{
auto& authority = control::ControlAuthorityManager::instance();
const auto action_lease = authority.tryAcquire(
"test-agv",
"action-sequence:test-action",
std::chrono::hours(1));
ASSERT_TRUE(action_lease.acquired) << action_lease.detail;
api::AgvNavigateToPoseCommand_Request navigation_request;
navigation_request.mutable_header()->set_device_id("test-agv");
api::AgvNavigateToPoseCommand_Feedback navigation_response;
grpc::ServerContext navigation_context;
const auto navigation_status = service_->navigateToPose(
&navigation_context,
&navigation_request,
&navigation_response);
EXPECT_EQ(
navigation_status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_FALSE(navigation_response.header().success());
api::CommandHeader_Request clear_fault_request;
clear_fault_request.set_device_id("test-agv");
api::CommandHeader_Feedback clear_fault_response;
grpc::ServerContext clear_fault_context;
const auto clear_fault_status = service_->clearFault(
&clear_fault_context,
&clear_fault_request,
&clear_fault_response);
EXPECT_EQ(
clear_fault_status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_FALSE(clear_fault_response.success());
api::AgvMapCommand_Request switch_map_request;
switch_map_request.mutable_header()->set_device_id("test-agv");
switch_map_request.set_map_name("map-1");
api::AgvMapCommand_Feedback switch_map_response;
grpc::ServerContext switch_map_context;
const auto switch_map_status = service_->switchMap(
&switch_map_context,
&switch_map_request,
&switch_map_response);
EXPECT_EQ(
switch_map_status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_FALSE(switch_map_response.header().success());
authority.release(action_lease.token);
}
TEST_F(GrpcAgvServiceTest, NavigationCancellationIncludesControlLease)
{
auto& authority = control::ControlAuthorityManager::instance();
const auto barrier = authority.preemptAcquire(
"test-agv", "stop-all-test", std::chrono::hours(1));
ASSERT_TRUE(barrier.acquired) << barrier.detail;
api::AgvNavigateToPoseCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
api::AgvNavigateToPoseCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->navigateToPose(
&context, &request, &response);
EXPECT_EQ(
status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_EQ(agv_->navigate_pose_calls_, 0);
authority.release(barrier.token);
}
TEST_F(GrpcAgvServiceTest, SetVelocityDispatchRunsUnderControlFence)
{
api::AgvSetVelocityCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
request.mutable_velocity()->set_vx(0.1);
api::AgvSetVelocityCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->setVelocity(
&context, &request, &response);
EXPECT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
EXPECT_EQ(agv_->set_velocity_calls_, 1);
}
TEST_F(GrpcAgvServiceTest,
StopAllGateRejectsMutatingCommandsButAllowsReadsAndStops)
{
auto& admission = globalStopAllAdmissionGate();
const auto ticket = admission.beginStopAll();
ASSERT_TRUE(ticket.valid());
api::AgvNavigateToPoseCommand_Request navigation_request;
navigation_request.mutable_header()->set_device_id("test-agv");
api::AgvNavigateToPoseCommand_Feedback navigation_response;
grpc::ServerContext navigation_context;
const auto navigation_status = service_->navigateToPose(
&navigation_context, &navigation_request, &navigation_response);
api::AgvSetVelocityCommand_Request velocity_request;
velocity_request.mutable_header()->set_device_id("test-agv");
velocity_request.mutable_velocity()->set_vx(0.1);
api::AgvSetVelocityCommand_Feedback velocity_response;
grpc::ServerContext velocity_context;
const auto velocity_status = service_->setVelocity(
&velocity_context, &velocity_request, &velocity_response);
api::AgvRuntimeStateCommand_Request state_request;
state_request.mutable_header()->set_device_id("test-agv");
api::AgvRuntimeStateCommand_Feedback state_response;
grpc::ServerContext state_context;
const auto state_status = service_->getRuntimeState(
&state_context, &state_request, &state_response);
api::CommandHeader_Request stop_request;
stop_request.set_device_id("test-agv");
api::CommandHeader_Feedback stop_response;
grpc::ServerContext stop_context;
const auto stop_status = service_->cancelNavigation(
&stop_context, &stop_request, &stop_response);
EXPECT_EQ(
navigation_status.error_code(),
grpc::StatusCode::UNAVAILABLE);
EXPECT_FALSE(navigation_response.header().success());
EXPECT_EQ(agv_->navigate_pose_calls_, 0);
EXPECT_EQ(
velocity_status.error_code(),
grpc::StatusCode::UNAVAILABLE);
EXPECT_FALSE(velocity_response.header().success());
EXPECT_EQ(agv_->set_velocity_calls_, 0);
EXPECT_TRUE(state_status.ok()) << state_status.error_message();
EXPECT_TRUE(state_response.header().success());
EXPECT_TRUE(stop_status.ok()) << stop_status.error_message();
EXPECT_TRUE(stop_response.success())
<< stop_response.error_message();
EXPECT_EQ(agv_->cancel_navigation_calls_, 2);
EXPECT_TRUE(admission.finishStopAll(ticket, true));
const auto resumed_status = service_->navigateToPose(
&navigation_context, &navigation_request, &navigation_response);
EXPECT_TRUE(resumed_status.ok()) << resumed_status.error_message();
EXPECT_TRUE(navigation_response.header().success());
EXPECT_EQ(agv_->navigate_pose_calls_, 1);
}
TEST_F(GrpcAgvServiceTest, QueriesBypassAndSafetyStopsPreemptActionLease)
{
auto& authority = control::ControlAuthorityManager::instance();
const auto action_lease = authority.tryAcquire(
"test-agv",
"action-sequence:test-action",
std::chrono::hours(1));
ASSERT_TRUE(action_lease.acquired) << action_lease.detail;
api::AgvRuntimeStateCommand_Request state_request;
state_request.mutable_header()->set_device_id("test-agv");
api::AgvRuntimeStateCommand_Feedback state_response;
grpc::ServerContext state_context;
const auto state_status = service_->getRuntimeState(
&state_context,
&state_request,
&state_response);
EXPECT_TRUE(state_status.ok()) << state_status.error_message();
EXPECT_TRUE(state_response.header().success());
EXPECT_TRUE(authority.validate(action_lease.token));
api::CommandHeader_Request stop_request;
stop_request.set_device_id("test-agv");
api::CommandHeader_Feedback emergency_response;
grpc::ServerContext emergency_context;
auto emergency = std::async(
std::launch::async,
[this, &emergency_context, &stop_request, &emergency_response]() {
return service_->emergencyStop(
&emergency_context,
&stop_request,
&emergency_response);
});
const auto emergency_deadline =
std::chrono::steady_clock::now() + std::chrono::seconds(1);
while (authority.validate(action_lease.token) &&
std::chrono::steady_clock::now() < emergency_deadline) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
EXPECT_FALSE(authority.validate(action_lease.token));
authority.release(action_lease.token);
const auto emergency_status = emergency.get();
EXPECT_TRUE(emergency_status.ok()) << emergency_status.error_message();
EXPECT_TRUE(agv_->emergency_stop_barrier_observed_);
const auto released_lease_after_emergency = authority.tryAcquire(
"test-agv",
"action-sequence:after-emergency-release",
std::chrono::hours(1));
ASSERT_TRUE(released_lease_after_emergency.acquired)
<< released_lease_after_emergency.detail;
api::CommandHeader_Feedback cancel_response;
grpc::ServerContext cancel_context;
auto cancel = std::async(
std::launch::async,
[this, &cancel_context, &stop_request, &cancel_response]() {
return service_->cancelNavigation(
&cancel_context,
&stop_request,
&cancel_response);
});
const auto cancel_deadline =
std::chrono::steady_clock::now() + std::chrono::seconds(1);
while (authority.validate(released_lease_after_emergency.token) &&
std::chrono::steady_clock::now() < cancel_deadline) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
EXPECT_FALSE(authority.validate(
released_lease_after_emergency.token));
authority.release(released_lease_after_emergency.token);
const auto cancel_status = cancel.get();
EXPECT_TRUE(cancel_status.ok()) << cancel_status.error_message();
EXPECT_TRUE(agv_->cancel_navigation_barrier_observed_);
const auto released_lease_after_cancel = authority.tryAcquire(
"test-agv",
"action-sequence:after-cancel-release",
std::chrono::hours(1));
ASSERT_TRUE(released_lease_after_cancel.acquired)
<< released_lease_after_cancel.detail;
api::CommandHeader_Feedback velocity_response;
grpc::ServerContext velocity_context;
auto velocity = std::async(
std::launch::async,
[this, &velocity_context, &stop_request, &velocity_response]() {
return service_->stopVelocityControl(
&velocity_context,
&stop_request,
&velocity_response);
});
const auto velocity_deadline =
std::chrono::steady_clock::now() + std::chrono::seconds(1);
while (authority.validate(released_lease_after_cancel.token) &&
std::chrono::steady_clock::now() < velocity_deadline) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
EXPECT_FALSE(authority.validate(
released_lease_after_cancel.token));
authority.release(released_lease_after_cancel.token);
const auto velocity_status = velocity.get();
EXPECT_TRUE(velocity_status.ok()) << velocity_status.error_message();
EXPECT_TRUE(agv_->stop_velocity_barrier_observed_);
const auto lease_after_stops = authority.tryAcquire(
"test-agv",
"action-sequence:after-stops",
std::chrono::hours(1));
ASSERT_TRUE(lease_after_stops.acquired)
<< lease_after_stops.detail;
EXPECT_EQ(agv_->emergency_stop_calls_, 2);
EXPECT_EQ(agv_->cancel_navigation_calls_, 2);
EXPECT_EQ(agv_->stop_velocity_calls_, 2);
EXPECT_EQ(agv_->confirm_stopped_calls_, 3);
EXPECT_TRUE(agv_->confirm_stopped_barrier_observed_);
authority.release(lease_after_stops.token);
}
TEST_F(GrpcAgvServiceTest,
SafetyStopQuarantinesControlWhenStoppedStateIsUnconfirmed)
{
agv_->confirm_stopped_result_ = device::AgvResult::failure(
device::AgvErrorCode::Timeout,
"two zero-velocity samples were not observed");
api::CommandHeader_Request request;
request.set_device_id("test-agv");
api::CommandHeader_Feedback response;
grpc::ServerContext context;
const auto status = service_->cancelNavigation(
&context, &request, &response);
EXPECT_EQ(status.error_code(), grpc::StatusCode::DEADLINE_EXCEEDED);
EXPECT_FALSE(response.success());
EXPECT_NE(
response.error_message().find("confirmed stopped state"),
std::string::npos);
EXPECT_TRUE(agv_->cancel_navigation_barrier_observed_);
EXPECT_TRUE(agv_->confirm_stopped_barrier_observed_);
const auto lease =
control::ControlAuthorityManager::instance().tryAcquire(
"test-agv",
"normal-control-after-unconfirmed-stop",
std::chrono::hours(1));
EXPECT_FALSE(lease.acquired);
auto& authority = control::ControlAuthorityManager::instance();
const auto recovery = authority.preemptAcquire(
"test-agv", "confirmed-stop-recovery", std::chrono::hours(1));
ASSERT_TRUE(recovery.acquired) << recovery.detail;
ASSERT_TRUE(authority.waitForPreemptedRelease(
recovery.token, std::chrono::milliseconds::zero()));
ASSERT_TRUE(authority.recoverRetiredSafetyHolders(recovery.token));
authority.release(recovery.token);
const auto recovered = authority.tryAcquire(
"test-agv", "normal-control-after-recovery", std::chrono::hours(1));
EXPECT_TRUE(recovered.acquired) << recovered.detail;
authority.release(recovered.token);
}
TEST_F(GrpcAgvServiceTest, StopMappingFailureReleasesOrdinaryControlLease)
{
api::CommandHeader_Request request;
request.set_device_id("test-agv");
api::CommandHeader_Feedback response;
grpc::ServerContext context;
const auto status = service_->stopMapping(
&context, &request, &response);
EXPECT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
EXPECT_FALSE(response.success());
auto& authority = control::ControlAuthorityManager::instance();
const auto lease = authority.tryAcquire(
"test-agv", "normal-control-after-mapping-failure",
std::chrono::hours(1));
EXPECT_TRUE(lease.acquired) << lease.detail;
authority.release(lease.token);
}
TEST_F(GrpcAgvServiceTest, NavigateToStationForwardsPgvAdapterParams)
{
api::AgvNavigateToStationCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
request.set_station_id("AP1");
auto* values = request.mutable_adapter_params()->mutable_values();
(*values)["use_pgv"] = "true";
(*values)["pgv_adjust_dist"] = "0.3";
(*values)["pgv_adjust_cx"] = "-0.3";
(*values)["pgv_adjust_cy"] = "0";
api::AgvNavigateToStationCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->navigateToStation(
&context,
&request,
&response);
ASSERT_TRUE(status.ok()) << status.error_message();
EXPECT_TRUE(response.header().success());
EXPECT_EQ(agv_->station_id_, "AP1");
EXPECT_EQ(
agv_->station_adapter_params_.getString("use_pgv").value_or(""),
"true");
EXPECT_EQ(
agv_->station_adapter_params_.getString("pgv_adjust_dist").value_or(""),
"0.3");
EXPECT_EQ(
agv_->station_adapter_params_.getString("pgv_adjust_cx").value_or(""),
"-0.3");
EXPECT_EQ(
agv_->station_adapter_params_.getString("pgv_adjust_cy").value_or(""),
"0");
}
TEST_F(GrpcAgvServiceTest, NavigationErrorsMapToGrpcCodesAndPreserveDetails)
{
struct ErrorCase {
device::AgvErrorCode device_code;
grpc::StatusCode grpc_code;
};
const ErrorCase cases[] = {
{device::AgvErrorCode::InvalidArgument,
grpc::StatusCode::INVALID_ARGUMENT},
{device::AgvErrorCode::TaskCanceled,
grpc::StatusCode::CANCELLED},
{device::AgvErrorCode::Timeout,
grpc::StatusCode::DEADLINE_EXCEEDED},
};
for (const auto& test_case : cases) {
const std::string detail =
"SEER Robokit navigation detail for code="
+ std::to_string(static_cast<int>(test_case.device_code));
agv_->pose_result_ = device::AgvResult::failure(
test_case.device_code,
detail);
api::AgvNavigateToPoseCommand_Request request;
request.mutable_header()->set_device_id("test-agv");
api::AgvNavigateToPoseCommand_Feedback response;
grpc::ServerContext context;
const auto status = service_->navigateToPose(
&context,
&request,
&response);
EXPECT_EQ(status.error_code(), test_case.grpc_code);
EXPECT_EQ(status.error_message(), detail);
EXPECT_FALSE(response.header().success());
EXPECT_EQ(response.header().error_message(), detail);
}
}
TEST(AbstractAgvCompatibilityTest, FollowPathOptionsDelegateToLegacyOverride)
{
LegacyFollowPathAgv legacy;
device::AbstractAGV* abstract = &legacy;
const std::vector<device::AgvPathSegment> path = {
{"station-1", "station-2"},
};
device::AgvMotionOptions options;
const auto result = abstract->followPath(path, options);
ASSERT_TRUE(result.ok()) << result.message;
ASSERT_EQ(legacy.path_.size(), 1U);
EXPECT_EQ(legacy.path_[0].source_station, "station-1");
EXPECT_EQ(legacy.path_[0].target_station, "station-2");
}
TEST(AbstractAgvCompatibilityTest, SynchronousActionSupportDefaultsToFalse)
{
LegacyFollowPathAgv legacy;
EXPECT_FALSE(legacy.supportsSynchronousAction(
device::AgvActionKind::NavigateToPose));
EXPECT_FALSE(legacy.supportsSynchronousAction(
device::AgvActionKind::NavigateToStation));
EXPECT_FALSE(legacy.supportsSynchronousAction(
device::AgvActionKind::FollowPath));
}
} // namespace
} // namespace cmvr::service

File diff suppressed because it is too large Load Diff

View File

@ -1,920 +0,0 @@
#include "service/grpc/server/include/grpc_arm_teleop_service.h"
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdio>
#include <future>
#include <memory>
#include <mutex>
#include <set>
#include <stdexcept>
#include <string>
#include <thread>
#include <vector>
#include <grpcpp/grpcpp.h>
#include <gtest/gtest.h>
#include <unistd.h>
#include "manager/safety_manager/include/device_safety_endpoint.h"
#include "manager/safety_manager/include/safety_manager.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
using namespace std::chrono_literals;
std::atomic<std::uint64_t> g_socket_sequence{0};
arm_teleop::RobotManifest makeManifest()
{
arm_teleop::RobotManifest manifest;
manifest.set_robot_id("fake_humanoid_arm");
manifest.set_model_sha256(std::string(64, 'a'));
manifest.set_calibration_sha256(std::string(64, 'b'));
manifest.add_joint_names("shoulder_joint");
manifest.add_joint_names("elbow_joint");
manifest.set_position_unit("rad");
manifest.set_velocity_unit("rad/s");
manifest.set_effort_unit("N*m");
manifest.set_base_frame("base_link");
manifest.set_tool_frame("tool_link");
return manifest;
}
arm_teleop::ClientFrame makeOpenFrame(
const arm_teleop::RobotManifest& manifest,
const std::uint32_t watchdog_ms = 100,
const std::uint32_t lease_ms = 2000,
const bool request_force_feedback = false)
{
arm_teleop::ClientFrame frame;
auto* open = frame.mutable_open();
open->set_protocol_major(1);
open->set_protocol_minor(0);
open->set_client_instance_id("test-client");
*open->mutable_expected_robot() = manifest;
open->set_requested_command_rate_hz(200);
open->set_requested_state_rate_hz(100);
open->set_watchdog_timeout_ms(watchdog_ms);
open->set_requested_lease_ms(lease_ms);
open->set_request_force_feedback(request_force_feedback);
return frame;
}
arm_teleop::ClientFrame makeSetpoint(
const std::uint64_t sequence,
const std::uint32_t valid_for_us = 50000)
{
arm_teleop::ClientFrame frame;
auto* setpoint = frame.mutable_setpoint();
setpoint->set_sequence(sequence);
setpoint->add_position_rad(0.1 * static_cast<double>(sequence));
setpoint->add_position_rad(0.2 * static_cast<double>(sequence));
setpoint->add_velocity_rad_s(0.01);
setpoint->add_velocity_rad_s(0.02);
setpoint->set_valid_for_us(valid_for_us);
return frame;
}
arm_teleop::ClientFrame makeHeartbeat(const std::uint64_t sequence)
{
arm_teleop::ClientFrame frame;
frame.mutable_heartbeat()->set_sequence(sequence);
return frame;
}
arm_teleop::ClientFrame makeStop(
const arm_teleop::StopReason reason =
arm_teleop::STOP_REASON_OPERATOR_REQUEST)
{
arm_teleop::ClientFrame frame;
frame.mutable_stop()->set_reason(reason);
frame.mutable_stop()->set_detail("test stop");
return frame;
}
class FakeArmTeleopBackend final : public ArmTeleopBackend {
public:
explicit FakeArmTeleopBackend(
arm_teleop::RobotManifest manifest = makeManifest())
: manifest_(std::move(manifest))
{
}
bool available() const noexcept override { return true; }
arm_teleop::RobotManifest manifest() const override
{
recordThread();
return manifest_;
}
bool supportsForceFeedback() const noexcept override { return true; }
ArmTeleopBackendResult open(
const arm_teleop::OpenSession&) override
{
recordThread();
std::lock_guard lock(mutex_);
++open_calls_;
return open_result_;
}
ArmTeleopBackendResult applySetpoint(
const arm_teleop::JointSetpoint& setpoint,
const std::chrono::steady_clock::time_point deadline) override
{
if (std::chrono::steady_clock::now() >= deadline) {
return ArmTeleopBackendResult::failure(
grpc::StatusCode::DEADLINE_EXCEEDED,
"fake backend received an expired setpoint");
}
recordThread();
std::unique_lock lock(mutex_);
apply_entered_ = true;
apply_entered_sequence_ = setpoint.sequence();
cv_.notify_all();
cv_.wait(lock, [&]() { return !block_apply_; });
applied_sequences_.push_back(setpoint.sequence());
return apply_result_;
}
ArmTeleopBackendResult stop(
const arm_teleop::StopReason reason,
const std::string&) override
{
recordThread();
std::lock_guard lock(mutex_);
stop_reasons_.push_back(reason);
return stop_result_;
}
ArmTeleopBackendSnapshot snapshot() const override
{
recordThread();
std::lock_guard lock(mutex_);
ArmTeleopBackendSnapshot snapshot;
auto* state = &snapshot.joint_state;
state->set_sample_sequence(++sample_sequence_);
state->add_position_rad(0.1);
state->add_position_rad(0.2);
state->add_velocity_rad_s(0.01);
state->add_velocity_rad_s(0.02);
state->add_effort_nm(1.0);
state->add_effort_nm(2.0);
state->set_position_valid(true);
state->set_velocity_valid(true);
state->set_effort_valid(true);
state->set_effort_source(
arm_teleop::EFFORT_SOURCE_JOINT_SENSOR);
snapshot.safety.set_connected(true);
snapshot.safety.set_powered_on(true);
return snapshot;
}
void blockApply()
{
std::lock_guard lock(mutex_);
block_apply_ = true;
apply_entered_ = false;
apply_entered_sequence_ = 0;
}
void releaseApply()
{
{
std::lock_guard lock(mutex_);
block_apply_ = false;
}
cv_.notify_all();
}
bool waitForApply(
const std::uint64_t sequence,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return cv_.wait_for(lock, timeout, [&]() {
return apply_entered_ &&
apply_entered_sequence_ == sequence;
});
}
int openCalls() const
{
std::lock_guard lock(mutex_);
return open_calls_;
}
std::vector<std::uint64_t> appliedSequences() const
{
std::lock_guard lock(mutex_);
return applied_sequences_;
}
std::vector<arm_teleop::StopReason> stopReasons() const
{
std::lock_guard lock(mutex_);
return stop_reasons_;
}
std::size_t backendThreadCount() const
{
std::lock_guard lock(thread_mutex_);
return backend_threads_.size();
}
private:
void recordThread() const
{
std::lock_guard lock(thread_mutex_);
backend_threads_.insert(std::this_thread::get_id());
}
arm_teleop::RobotManifest manifest_;
mutable std::mutex mutex_;
mutable std::condition_variable cv_;
bool block_apply_{false};
bool apply_entered_{false};
std::uint64_t apply_entered_sequence_{0};
int open_calls_{0};
std::vector<std::uint64_t> applied_sequences_;
std::vector<arm_teleop::StopReason> stop_reasons_;
mutable std::uint64_t sample_sequence_{0};
ArmTeleopBackendResult open_result_{
ArmTeleopBackendResult::ok()};
ArmTeleopBackendResult apply_result_{
ArmTeleopBackendResult::ok()};
ArmTeleopBackendResult stop_result_{
ArmTeleopBackendResult::ok()};
mutable std::mutex thread_mutex_;
mutable std::set<std::thread::id> backend_threads_;
};
class FakeTeleopSafetyEndpoint final
: public safety::DeviceSafetyEndpoint {
public:
FakeTeleopSafetyEndpoint()
{
descriptor_.device_id = makeManifest().robot_id();
descriptor_.kind = device::DeviceKind::Arm;
descriptor_.default_policy =
safety::SafetyPolicyFamily::Control;
descriptor_.maximum_snapshot_age = 1s;
descriptor_.supports_active_refresh = true;
}
safety::DeviceSafetyDescriptor descriptor() const override
{
return descriptor_;
}
void bindPublisher(
safety::SafetySnapshotPublisher publisher) override
{
publisher_ = std::move(publisher);
}
void requestSafetyRefresh() noexcept override
{
if (!publisher_) {
return;
}
safety::DeviceSafetySnapshot snapshot;
snapshot.device_id = descriptor_.device_id;
snapshot.condition = safety::SafetyCondition::Nominal;
snapshot.device_generation = generation_;
snapshot.sample_sequence = ++sequence_;
snapshot.observed_at = safety::SafetyClock::now();
snapshot.connected = safety::TriState::True;
snapshot.operational_ready = safety::TriState::True;
snapshot.quiescent = safety::TriState::True;
snapshot.motion_active = safety::TriState::False;
snapshot.actuator_enabled = safety::TriState::True;
snapshot.emergency_stop_active = safety::TriState::False;
snapshot.protective_stop_active = safety::TriState::False;
snapshot.fault_active = safety::TriState::False;
(void)publisher_(std::move(snapshot));
}
void onDeviceGenerationChanged(
const std::uint64_t generation) noexcept override
{
generation_ = generation;
requestSafetyRefresh();
}
safety::HardwareCheckResult validateBeforeDispatch(
const safety::AdmissionPermit&) override
{
++hardware_checks_;
return {true, safety::SafetyReason::None, {}};
}
safety::RecoveryCheckResult reconcileAdmissionState(
const safety::RecoveryContext&) override
{
return {true, safety::SafetyReason::None, {}};
}
int hardwareChecks() const noexcept
{
return hardware_checks_.load();
}
private:
safety::DeviceSafetyDescriptor descriptor_;
safety::SafetySnapshotPublisher publisher_;
std::uint64_t generation_{1};
std::uint64_t sequence_{0};
std::atomic<int> hardware_checks_{0};
};
class TeleopServerHarness final {
public:
explicit TeleopServerHarness(
std::shared_ptr<ArmTeleopBackend> backend,
safety::SafetyManager* safety_manager = nullptr)
: service_(
std::move(backend), nullptr, nullptr,
safety_manager)
{
socket_path_ =
"/tmp/cmvr_arm_teleop_service_test_" +
std::to_string(static_cast<long long>(::getpid())) + "_" +
std::to_string(
g_socket_sequence.fetch_add(
1, std::memory_order_relaxed)) +
".sock";
std::remove(socket_path_.c_str());
const std::string address = "unix:" + socket_path_;
grpc::ServerBuilder builder;
builder.AddListeningPort(
address, grpc::InsecureServerCredentials());
builder.RegisterService(&service_);
server_ = builder.BuildAndStart();
if (!server_) {
throw std::runtime_error(
"failed to start in-process arm teleoperation server");
}
channel_ = grpc::CreateChannel(
address, grpc::InsecureChannelCredentials());
if (!channel_->WaitForConnected(
std::chrono::system_clock::now() + 2s)) {
throw std::runtime_error(
"failed to connect arm teleoperation test channel");
}
stub_ = arm_teleop::ArmTeleopService::NewStub(channel_);
}
~TeleopServerHarness()
{
if (server_) {
server_->Shutdown();
server_->Wait();
}
if (!socket_path_.empty()) {
std::remove(socket_path_.c_str());
}
}
arm_teleop::ArmTeleopService::Stub& stub() { return *stub_; }
private:
ArmTeleopServiceImpl service_;
std::unique_ptr<grpc::Server> server_;
std::shared_ptr<grpc::Channel> channel_;
std::unique_ptr<arm_teleop::ArmTeleopService::Stub> stub_;
std::string socket_path_;
};
template <typename Stream>
void expectOpeningFrames(Stream& stream)
{
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream.Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_OPENED);
EXPECT_FALSE(response.status().session_id().empty());
ASSERT_TRUE(stream.Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_READY);
EXPECT_TRUE(response.safety().connected());
}
TEST(ArmTeleopServiceTest, ProductionDisabledBackendRejectsOpen)
{
TeleopServerHarness harness(makeDisabledArmTeleopBackend());
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(makeOpenFrame(makeManifest())));
ASSERT_TRUE(stream->WritesDone());
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
EXPECT_TRUE(response.safety().fault());
const grpc::Status status = stream->Finish();
EXPECT_EQ(
status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
}
TEST(ArmTeleopServiceTest, RequiresOpenAsFirstFrame)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(makeSetpoint(1)));
ASSERT_TRUE(stream->WritesDone());
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
const grpc::Status status = stream->Finish();
EXPECT_EQ(
status.error_code(),
grpc::StatusCode::INVALID_ARGUMENT);
EXPECT_EQ(backend->openCalls(), 0);
}
TEST(ArmTeleopServiceTest, RejectsManifestMismatchBeforeBackendOpen)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
auto mismatched = makeManifest();
mismatched.set_calibration_sha256(std::string(64, 'c'));
ASSERT_TRUE(stream->Write(makeOpenFrame(mismatched)));
ASSERT_TRUE(stream->WritesDone());
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
const grpc::Status status = stream->Finish();
EXPECT_EQ(
status.error_code(),
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_EQ(backend->openCalls(), 0);
}
TEST(ArmTeleopServiceTest, RejectsNonIncreasingSequenceAndStops)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(makeOpenFrame(makeManifest())));
expectOpeningFrames(*stream);
ASSERT_TRUE(stream->Write(makeSetpoint(1)));
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_ACTIVE);
EXPECT_EQ(response.status().applied_sequence(), 1U);
ASSERT_TRUE(stream->Write(makeHeartbeat(1)));
ASSERT_TRUE(stream->WritesDone());
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
EXPECT_EQ(
response.status().stop_reason(),
arm_teleop::STOP_REASON_PROTOCOL_ERROR);
const grpc::Status status = stream->Finish();
EXPECT_EQ(
status.error_code(),
grpc::StatusCode::INVALID_ARGUMENT);
ASSERT_FALSE(backend->stopReasons().empty());
EXPECT_EQ(
backend->stopReasons().back(),
arm_teleop::STOP_REASON_PROTOCOL_ERROR);
EXPECT_EQ(backend->backendThreadCount(), 1U);
}
TEST(ArmTeleopServiceTest, ProtocolErrorCancelsReaderWithoutClientHalfClose)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(makeOpenFrame(makeManifest())));
expectOpeningFrames(*stream);
ASSERT_TRUE(stream->Write(makeHeartbeat(1)));
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_READY);
// Deliberately keep the client write half open after the duplicate
// sequence. The server must cancel its reader and return promptly.
ASSERT_TRUE(stream->Write(makeHeartbeat(1)));
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
EXPECT_EQ(
response.status().stop_reason(),
arm_teleop::STOP_REASON_PROTOCOL_ERROR);
const auto status = stream->Finish();
// TryCancel is required to interrupt the server reader's blocking Read
// when the peer deliberately keeps its write half open. Depending on
// gRPC completion ordering, the client may therefore observe CANCELLED
// after it has already received the explicit protocol-error frame.
EXPECT_TRUE(
status.error_code() == grpc::StatusCode::INVALID_ARGUMENT ||
status.error_code() == grpc::StatusCode::CANCELLED)
<< status.error_message();
}
TEST(ArmTeleopServiceTest, WatchdogExpiresWithoutValidClientActivity)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(
makeOpenFrame(makeManifest(), 20, 2000)));
expectOpeningFrames(*stream);
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_WATCHDOG_EXPIRED);
EXPECT_EQ(
response.status().stop_reason(),
arm_teleop::STOP_REASON_WATCHDOG);
const grpc::Status status = stream->Finish();
EXPECT_TRUE(
status.error_code() == grpc::StatusCode::DEADLINE_EXCEEDED ||
status.error_code() == grpc::StatusCode::CANCELLED)
<< status.error_message();
ASSERT_FALSE(backend->stopReasons().empty());
EXPECT_EQ(
backend->stopReasons().back(),
arm_teleop::STOP_REASON_WATCHDOG);
}
TEST(ArmTeleopServiceTest, ValidHeartbeatsRenewControlLease)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 3s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(
makeOpenFrame(makeManifest(), 100, 200)));
expectOpeningFrames(*stream);
arm_teleop::ServerFrame response;
for (std::uint64_t sequence = 1; sequence <= 7; ++sequence) {
std::this_thread::sleep_for(40ms);
ASSERT_TRUE(stream->Write(makeHeartbeat(sequence)));
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_READY);
EXPECT_EQ(
response.status().received_sequence(),
sequence);
EXPECT_GT(response.status().lease_remaining_ms(), 0U);
}
ASSERT_TRUE(stream->Write(makeStop()));
ASSERT_TRUE(stream->WritesDone());
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_STOPPED);
EXPECT_TRUE(stream->Finish().ok());
}
TEST(ArmTeleopServiceTest, RejectsSecondControllerWhileLeaseIsActive)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext first_context;
first_context.set_deadline(
std::chrono::system_clock::now() + 3s);
auto first_stream =
harness.stub().Teleoperate(&first_context);
ASSERT_TRUE(first_stream->Write(
makeOpenFrame(makeManifest(), 500, 2000)));
expectOpeningFrames(*first_stream);
grpc::ClientContext second_context;
second_context.set_deadline(
std::chrono::system_clock::now() + 2s);
auto second_stream =
harness.stub().Teleoperate(&second_context);
ASSERT_TRUE(second_stream->Write(
makeOpenFrame(makeManifest(), 500, 2000)));
ASSERT_TRUE(second_stream->WritesDone());
arm_teleop::ServerFrame response;
ASSERT_TRUE(second_stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
const grpc::Status second_status =
second_stream->Finish();
EXPECT_EQ(
second_status.error_code(),
grpc::StatusCode::RESOURCE_EXHAUSTED);
ASSERT_TRUE(first_stream->Write(makeStop()));
ASSERT_TRUE(first_stream->WritesDone());
ASSERT_TRUE(first_stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_STOPPED);
EXPECT_TRUE(first_stream->Finish().ok());
}
TEST(ArmTeleopServiceTest, LatestOnlySlotDropsIntermediateSetpoints)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 3s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(
makeOpenFrame(makeManifest(), 500, 2000)));
expectOpeningFrames(*stream);
backend->blockApply();
ASSERT_TRUE(stream->Write(makeSetpoint(1, 400000)));
ASSERT_TRUE(backend->waitForApply(1, 1s));
ASSERT_TRUE(stream->Write(makeSetpoint(2, 400000)));
ASSERT_TRUE(stream->Write(makeSetpoint(3, 400000)));
ASSERT_TRUE(stream->Write(makeSetpoint(4, 400000)));
std::this_thread::sleep_for(30ms);
backend->releaseApply();
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(response.status().applied_sequence(), 1U);
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(response.status().applied_sequence(), 4U);
EXPECT_GE(response.status().dropped_setpoints(), 2U);
ASSERT_TRUE(stream->Write(makeStop()));
ASSERT_TRUE(stream->WritesDone());
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_STOPPED);
EXPECT_TRUE(stream->Finish().ok());
const auto applied = backend->appliedSequences();
ASSERT_EQ(applied.size(), 2U);
EXPECT_EQ(applied[0], 1U);
EXPECT_EQ(applied[1], 4U);
EXPECT_EQ(backend->backendThreadCount(), 1U);
}
TEST(ArmTeleopServiceTest, ExpiredSetpointIsNeverDispatched)
{
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 3s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(
makeOpenFrame(makeManifest(), 500, 2000)));
expectOpeningFrames(*stream);
backend->blockApply();
ASSERT_TRUE(stream->Write(makeSetpoint(1, 400000)));
ASSERT_TRUE(backend->waitForApply(1, 1s));
ASSERT_TRUE(stream->Write(makeSetpoint(2, 1000)));
std::this_thread::sleep_for(30ms);
backend->releaseApply();
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(response.status().applied_sequence(), 1U);
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_HOLDING);
EXPECT_EQ(response.status().received_sequence(), 2U);
EXPECT_EQ(response.status().applied_sequence(), 1U);
EXPECT_EQ(response.status().rejected_setpoints(), 1U);
ASSERT_TRUE(stream->Write(makeStop()));
ASSERT_TRUE(stream->WritesDone());
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_STOPPED);
EXPECT_TRUE(stream->Finish().ok());
const auto applied = backend->appliedSequences();
ASSERT_EQ(applied.size(), 1U);
EXPECT_EQ(applied.front(), 1U);
}
TEST(ArmTeleopServiceTest,
StopAllFencesDispatchRejectsAdmissionAndAllowsReuse)
{
auto& authority = control::ControlAuthorityManager::instance();
auto& admission = globalStopAllAdmissionGate();
authority.clear();
admission.clearForTesting();
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend);
grpc::ClientContext active_context;
active_context.set_deadline(
std::chrono::system_clock::now() + 3s);
auto active_stream = harness.stub().Teleoperate(&active_context);
ASSERT_TRUE(active_stream->Write(
makeOpenFrame(makeManifest(), 500, 2000)));
expectOpeningFrames(*active_stream);
backend->blockApply();
ASSERT_TRUE(active_stream->Write(makeSetpoint(1, 400000)));
ASSERT_TRUE(backend->waitForApply(1, 1s));
const auto stop_all_ticket = admission.beginStopAll();
ASSERT_TRUE(stop_all_ticket.valid());
grpc::ClientContext blocked_context;
blocked_context.set_deadline(
std::chrono::system_clock::now() + 2s);
auto blocked_stream = harness.stub().Teleoperate(&blocked_context);
ASSERT_TRUE(blocked_stream->Write(makeOpenFrame(makeManifest())));
ASSERT_TRUE(blocked_stream->WritesDone());
arm_teleop::ServerFrame response;
ASSERT_TRUE(blocked_stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_REJECTED);
const auto blocked_status = blocked_stream->Finish();
EXPECT_EQ(
blocked_status.error_code(), grpc::StatusCode::UNAVAILABLE);
EXPECT_EQ(backend->openCalls(), 1);
const auto safety_lease = authority.preemptAcquire(
makeManifest().robot_id(), "stop-all-test",
std::chrono::hours(1));
ASSERT_TRUE(safety_lease.acquired) << safety_lease.detail;
const auto safety_token = safety_lease.token;
auto dispatch_fence = std::async(
std::launch::async,
[&authority, safety_token] {
return authority.waitForPreemptedRelease(safety_token, 1s);
});
EXPECT_EQ(
dispatch_fence.wait_for(50ms), std::future_status::timeout);
backend->releaseApply();
ASSERT_EQ(
dispatch_fence.wait_for(1s), std::future_status::ready);
EXPECT_TRUE(dispatch_fence.get());
ASSERT_TRUE(active_stream->Read(&response));
EXPECT_EQ(response.status().applied_sequence(), 1U);
ASSERT_TRUE(active_stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_LEASE_LOST);
EXPECT_EQ(
response.status().stop_reason(),
arm_teleop::STOP_REASON_LEASE_REVOKED);
const auto active_status = active_stream->Finish();
EXPECT_TRUE(
active_status.error_code() == grpc::StatusCode::ABORTED ||
active_status.error_code() == grpc::StatusCode::CANCELLED)
<< active_status.error_message();
const auto applied = backend->appliedSequences();
ASSERT_EQ(applied.size(), 1U);
EXPECT_EQ(applied.front(), 1U);
const auto stopped = backend->stopReasons();
ASSERT_FALSE(stopped.empty());
EXPECT_EQ(
stopped.back(), arm_teleop::STOP_REASON_LEASE_REVOKED);
authority.release(safety_token);
ASSERT_TRUE(admission.finishStopAll(stop_all_ticket, true));
grpc::ClientContext resumed_context;
resumed_context.set_deadline(
std::chrono::system_clock::now() + 2s);
auto resumed_stream = harness.stub().Teleoperate(&resumed_context);
ASSERT_TRUE(resumed_stream->Write(makeOpenFrame(makeManifest())));
expectOpeningFrames(*resumed_stream);
ASSERT_TRUE(resumed_stream->Write(makeStop()));
ASSERT_TRUE(resumed_stream->WritesDone());
ASSERT_TRUE(resumed_stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_STOPPED);
EXPECT_TRUE(resumed_stream->Finish().ok());
EXPECT_EQ(backend->openCalls(), 2);
authority.clear();
admission.clearForTesting();
}
TEST(ArmTeleopServiceTest,
CoordinatorInvalidationStopsExistingSessionBeforeAnotherSetpoint)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeTeleopSafetyEndpoint>();
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
makeManifest().robot_id(),
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
auto backend = std::make_shared<FakeArmTeleopBackend>();
TeleopServerHarness harness(backend, &coordinator);
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = harness.stub().Teleoperate(&context);
ASSERT_TRUE(stream->Write(makeOpenFrame(makeManifest(), 500, 1500)));
expectOpeningFrames(*stream);
EXPECT_EQ(endpoint->hardwareChecks(), 1);
ASSERT_TRUE(stream->Write(makeSetpoint(1)));
arm_teleop::ServerFrame response;
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(response.status().phase(), arm_teleop::SESSION_PHASE_ACTIVE);
EXPECT_EQ(response.status().applied_sequence(), 1U);
EXPECT_EQ(endpoint->hardwareChecks(), 2);
coordinator.quarantineDevice(
makeManifest().robot_id(),
safety::SafetyReason::OutcomeUnknown,
"test-quarantine");
ASSERT_TRUE(stream->Read(&response));
EXPECT_EQ(
response.status().phase(),
arm_teleop::SESSION_PHASE_LEASE_LOST);
EXPECT_EQ(
response.status().stop_reason(),
arm_teleop::STOP_REASON_EMERGENCY_STOP);
const auto status = stream->Finish();
EXPECT_TRUE(
status.error_code() == grpc::StatusCode::FAILED_PRECONDITION ||
status.error_code() == grpc::StatusCode::CANCELLED)
<< status.error_message();
EXPECT_EQ(backend->appliedSequences(),
(std::vector<std::uint64_t>{1U}));
ASSERT_FALSE(backend->stopReasons().empty());
EXPECT_EQ(
backend->stopReasons().back(),
arm_teleop::STOP_REASON_EMERGENCY_STOP);
}
} // namespace
} // namespace cmvr::service

View File

@ -1,454 +0,0 @@
#include "service/grpc/server/include/grpc_command_transaction.h"
#include <atomic>
#include <chrono>
#include <memory>
#include <stdexcept>
#include <string>
#include <gtest/gtest.h>
#include "cmvr/api/arm_command.pb.h"
#include "manager/safety_manager/include/device_safety_endpoint.h"
namespace cmvr::service {
namespace {
class FakeEndpoint final : public safety::DeviceSafetyEndpoint {
public:
explicit FakeEndpoint(std::string device_id)
{
descriptor_.device_id = std::move(device_id);
descriptor_.kind = device::DeviceKind::Arm;
descriptor_.default_policy = safety::SafetyPolicyFamily::Control;
descriptor_.maximum_snapshot_age = std::chrono::seconds(1);
descriptor_.supports_active_refresh = true;
}
safety::DeviceSafetyDescriptor descriptor() const override
{
return descriptor_;
}
void bindPublisher(safety::SafetySnapshotPublisher publisher) override
{
publisher_ = std::move(publisher);
}
void requestSafetyRefresh() noexcept override
{
if (!publisher_) {
return;
}
safety::DeviceSafetySnapshot snapshot;
snapshot.device_id = descriptor_.device_id;
snapshot.condition = safety::SafetyCondition::Nominal;
snapshot.device_generation = 1;
snapshot.sample_sequence = ++sequence_;
snapshot.observed_at = safety::SafetyClock::now();
snapshot.connected = safety::TriState::True;
snapshot.operational_ready = safety::TriState::True;
snapshot.quiescent = safety::TriState::True;
snapshot.motion_active = safety::TriState::False;
snapshot.actuator_enabled = safety::TriState::True;
snapshot.emergency_stop_active = safety::TriState::False;
snapshot.protective_stop_active = safety::TriState::False;
snapshot.fault_active = safety::TriState::False;
(void)publisher_(std::move(snapshot));
}
safety::HardwareCheckResult validateBeforeDispatch(
const safety::AdmissionPermit&) override
{
++hardware_checks;
return final_check;
}
safety::RecoveryCheckResult reconcileAdmissionState(
const safety::RecoveryContext&) override
{
return {true, safety::SafetyReason::None, {}};
}
safety::DeviceSafetyDescriptor descriptor_;
safety::SafetySnapshotPublisher publisher_;
safety::HardwareCheckResult final_check{
true, safety::SafetyReason::None, {}};
std::atomic<std::uint64_t> sequence_{0};
std::atomic<int> hardware_checks{0};
};
api::MoveJ_Request moveRequest(
const safety::SafetyManager& coordinator,
const std::string& command_id,
const double target = 0.25)
{
api::MoveJ_Request request;
request.mutable_header()->set_device_id("arm");
request.mutable_header()->set_command_id(command_id);
request.mutable_header()->set_expected_service_instance_id(
coordinator.serviceInstanceId());
request.mutable_header()->set_valid_for_ms(1000);
request.mutable_target()->add_position(target);
return request;
}
grpc::Status executeMove(
safety::SafetyManager& coordinator,
const api::MoveJ_Request& request,
api::MoveJ_Response& response,
int& dispatches,
const bool throw_after_dispatch = false)
{
grpc::ServerContext context;
return executeRegisteredGrpcCommand(
makeDefaultGrpcSecurityGateway(),
&context,
coordinator,
"/cmvr.api.ArmService/moveJ",
&request,
&response,
[&](GrpcCommandTransaction& transaction) {
if (!transaction.beginDispatch()) {
return transaction.dispatchStatus();
}
++dispatches;
if (throw_after_dispatch) {
throw std::runtime_error("simulated lost driver acknowledgement");
}
response.mutable_header()->set_success(true);
return grpc::Status::OK;
});
}
TEST(GrpcCommandTransactionTest,
DeterministicHashIgnoresRetryIdentityButIncludesPayload)
{
safety::SafetyManager coordinator;
auto first = moveRequest(coordinator, "command-1", 0.25);
auto retry = first;
retry.mutable_header()->set_command_id("command-2");
retry.mutable_header()->set_valid_for_ms(2000);
retry.mutable_header()->mutable_timestamp()->set_seconds(1234);
auto changed = retry;
changed.mutable_target()->set_position(0, 0.5);
const auto first_hash = deterministicGrpcPayloadHash(
"/cmvr.api.ArmService/moveJ", first);
EXPECT_FALSE(first_hash.empty());
EXPECT_EQ(
first_hash,
deterministicGrpcPayloadHash(
"/cmvr.api.ArmService/moveJ", retry));
EXPECT_NE(
first_hash,
deterministicGrpcPayloadHash(
"/cmvr.api.ArmService/moveJ", changed));
EXPECT_NE(
first_hash,
deterministicGrpcPayloadHash(
"/cmvr.api.ArmService/moveL", first));
}
TEST(GrpcCommandTransactionTest, SameIdReturnsCachedResponseWithoutRedispatch)
{
safety::SafetyManager coordinator;
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.markStartupComplete();
const auto request = moveRequest(coordinator, "command-cache");
api::MoveJ_Response first_response;
int dispatches = 0;
ASSERT_TRUE(executeMove(
coordinator, request, first_response, dispatches).ok());
ASSERT_TRUE(first_response.header().success());
EXPECT_EQ(dispatches, 1);
auto retry = request;
retry.mutable_header()->set_valid_for_ms(2500);
retry.mutable_header()->mutable_timestamp()->set_seconds(42);
api::MoveJ_Response cached_response;
ASSERT_TRUE(executeMove(
coordinator, retry, cached_response, dispatches).ok());
EXPECT_EQ(dispatches, 1);
EXPECT_TRUE(cached_response.header().success());
EXPECT_EQ(
cached_response.header().execution_state(),
api::COMMAND_EXECUTION_STATE_COMPLETED);
EXPECT_EQ(cached_response.header().command_id(), "command-cache");
auto conflict = request;
conflict.mutable_target()->set_position(0, 0.75);
api::MoveJ_Response conflict_response;
const auto conflict_status = executeMove(
coordinator, conflict, conflict_response, dispatches);
EXPECT_EQ(conflict_status.error_code(), grpc::StatusCode::ALREADY_EXISTS);
EXPECT_EQ(dispatches, 1);
EXPECT_EQ(
conflict_response.header().reason_code(),
api::COMMAND_REASON_CODE_COMMAND_ID_CONFLICT);
}
TEST(GrpcCommandTransactionTest,
EnforcedCommandRequiresIdentityAndRunsFinalHardwareCheck)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
auto missing_identity = moveRequest(coordinator, "");
api::MoveJ_Response rejected;
int dispatches = 0;
const auto rejected_status = executeMove(
coordinator, missing_identity, rejected, dispatches);
EXPECT_EQ(
rejected_status.error_code(), grpc::StatusCode::INVALID_ARGUMENT);
EXPECT_EQ(dispatches, 0);
EXPECT_EQ(
rejected.header().reason_code(),
api::COMMAND_REASON_CODE_COMMAND_ID_REQUIRED);
auto accepted = moveRequest(coordinator, "command-enforced");
api::MoveJ_Response accepted_response;
ASSERT_TRUE(executeMove(
coordinator, accepted, accepted_response, dispatches).ok());
EXPECT_EQ(dispatches, 1);
EXPECT_EQ(endpoint->hardware_checks.load(), 1);
EXPECT_EQ(
accepted_response.header().device_generation(), 1U);
}
TEST(GrpcCommandTransactionTest,
ExceptionAfterDispatchIsQuarantinedAndNeverRedispatched)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
const auto request = moveRequest(coordinator, "command-unknown");
api::MoveJ_Response response;
int dispatches = 0;
ASSERT_TRUE(executeMove(
coordinator, request, response, dispatches, true).ok());
EXPECT_EQ(dispatches, 1);
EXPECT_EQ(
response.header().reason_code(),
api::COMMAND_REASON_CODE_OUTCOME_UNKNOWN);
ASSERT_EQ(coordinator.snapshot().devices.size(), 1U);
EXPECT_EQ(
coordinator.snapshot().devices.front().admission_state,
safety::DeviceAdmissionState::Quarantined);
api::MoveJ_Response retry_response;
ASSERT_TRUE(executeMove(
coordinator, request, retry_response, dispatches).ok());
EXPECT_EQ(dispatches, 1);
EXPECT_EQ(
retry_response.header().execution_state(),
api::COMMAND_EXECUTION_STATE_OUTCOME_UNKNOWN);
}
TEST(GrpcCommandTransactionTest,
ScopedDispatchChecksHardwareForEverySubmission)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
const auto request = moveRequest(coordinator, "command-scoped");
api::MoveJ_Response response;
grpc::ServerContext context;
int dispatches = 0;
const auto status = executeRegisteredGrpcCommand(
makeDefaultGrpcSecurityGateway(),
&context,
coordinator,
"/cmvr.api.ArmService/moveJ",
&request,
&response,
[&](GrpcCommandTransaction& transaction) {
for (int index = 0; index < 2; ++index) {
auto dispatch = transaction.beginScopedDispatch();
if (!dispatch.acquired()) {
return transaction.dispatchStatus();
}
++dispatches;
}
response.mutable_header()->set_success(true);
return grpc::Status::OK;
});
EXPECT_TRUE(status.ok());
EXPECT_TRUE(response.header().success());
EXPECT_EQ(dispatches, 2);
EXPECT_EQ(endpoint->hardware_checks.load(), 2);
}
TEST(GrpcCommandTransactionTest,
RevokedActuationPermitCannotSuppressInternalSafetyStop)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
const auto request = moveRequest(coordinator, "command-revoked");
api::MoveJ_Response response;
grpc::ServerContext context;
int actuations = 0;
int safety_stops = 0;
const auto status = executeRegisteredGrpcCommand(
makeDefaultGrpcSecurityGateway(),
&context,
coordinator,
"/cmvr.api.ArmService/moveJ",
&request,
&response,
[&](GrpcCommandTransaction& transaction) {
{
auto dispatch = transaction.beginScopedDispatch();
if (!dispatch.acquired()) {
return transaction.dispatchStatus();
}
++actuations;
}
const auto stop_all = coordinator.stopAll("revoke-scoped-permit");
EXPECT_TRUE(stop_all.success);
EXPECT_FALSE(transaction.revalidate());
const auto revoked_status = transaction.dispatchStatus();
EXPECT_FALSE(transaction.beginScopedDispatch().acquired());
auto stop_dispatch = transaction.beginSafetyStopDispatch();
if (stop_dispatch.acquired()) {
++safety_stops;
}
response.mutable_header()->set_success(false);
return revoked_status;
});
// Ledger-backed commands report their terminal outcome in Feedback.
EXPECT_TRUE(status.ok());
EXPECT_FALSE(response.header().success());
EXPECT_EQ(
response.header().reason_code(),
api::COMMAND_REASON_CODE_SAFETY_LATCHED);
EXPECT_EQ(actuations, 1);
EXPECT_EQ(safety_stops, 1);
EXPECT_EQ(endpoint->hardware_checks.load(), 2);
}
TEST(GrpcCommandTransactionTest,
ServerDerivedStopRemainsDispatchableWhenActuationIsQuarantined)
{
safety::SafetyManagerConfig config;
config.enforcement_mode = safety::EnforcementMode::EnforceAll;
safety::SafetyManager coordinator(config);
auto endpoint = std::make_shared<FakeEndpoint>("arm");
ASSERT_TRUE(coordinator.registerDevice(
{endpoint->descriptor(), endpoint, {}}));
coordinator.updateDeviceRuntimeState(
"arm",
device::ManagedDeviceState::Running,
{device::DeviceHealthState::Healthy, {}});
coordinator.markStartupComplete();
coordinator.quarantineDevice(
"arm", safety::SafetyReason::OutcomeUnknown,
"uncertain-ptz-start");
const auto registered = defaultGrpcMethodPolicyRegistry().find(
"/cmvr.api.CameraService/ControlPtz");
ASSERT_TRUE(registered.has_value());
auto start_request = moveRequest(coordinator, "ptz-start");
api::MoveJ_Response start_response;
grpc::ServerContext start_context;
int start_dispatches = 0;
const auto start_status = executeServerDerivedGrpcCommand(
makeDefaultGrpcSecurityGateway(),
&start_context,
coordinator,
"/cmvr.api.CameraService/ControlPtz",
*registered,
&start_request,
&start_response,
[&](GrpcCommandTransaction& transaction) {
if (!transaction.beginDispatch()) {
return transaction.dispatchStatus();
}
++start_dispatches;
start_response.mutable_header()->set_success(true);
return grpc::Status::OK;
});
EXPECT_TRUE(start_status.ok());
EXPECT_EQ(start_dispatches, 0);
EXPECT_FALSE(start_response.header().success());
EXPECT_EQ(
start_response.header().reason_code(),
api::COMMAND_REASON_CODE_SAFETY_LATCHED);
auto stop_request = moveRequest(coordinator, "ptz-stop");
api::MoveJ_Response stop_response;
grpc::ServerContext stop_context;
auto stop_policy = *registered;
stop_policy.access = GrpcAccessClass::Stop;
stop_policy.command_intent = safety::CommandIntent::Stop;
stop_policy.safety_lane = true;
int stop_dispatches = 0;
const auto stop_status = executeServerDerivedGrpcCommand(
makeDefaultGrpcSecurityGateway(),
&stop_context,
coordinator,
"/cmvr.api.CameraService/ControlPtz",
std::move(stop_policy),
&stop_request,
&stop_response,
[&](GrpcCommandTransaction& transaction) {
if (!transaction.beginDispatch()) {
return transaction.dispatchStatus();
}
++stop_dispatches;
stop_response.mutable_header()->set_success(true);
return grpc::Status::OK;
});
EXPECT_TRUE(stop_status.ok());
EXPECT_TRUE(stop_response.header().success());
EXPECT_EQ(stop_dispatches, 1);
EXPECT_EQ(endpoint->hardware_checks.load(), 1);
}
} // namespace
} // namespace cmvr::service

View File

@ -1,351 +0,0 @@
#include "service/grpc/server/include/grpc_dexhand_service.h"
#include <array>
#include <atomic>
#include <cstdio>
#include <chrono>
#include <condition_variable>
#include <future>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include <unistd.h>
#include <grpcpp/grpcpp.h>
#include <gtest/gtest.h>
#include "cmvr/config/device_manager_config/device_manager_config.pb.h"
#include "manager/control_authority_manager/include/control_authority_manager.h"
#include "manager/device_manager/include/device_manager.h"
#include "service/grpc/server/include/media_activity_coordinator.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
using namespace std::chrono_literals;
class FakeDexHand final : public device::AbstractDexHand {
public:
FakeDexHand() {
id_ = "test-dexhand";
sensor_points_[0] = TactilePoint::fromFz(42);
}
std::string typeName() const override { return "FakeDexHand"; }
Status state() const override { return Status::STREAMING; }
std::string lastError() const override { return {}; }
bool stopOperationalActivity() override {
++stop_operational_calls;
return true;
}
bool resumeOperationalActivity() override {
++resume_operational_calls;
return true;
}
void setAngles(const std::vector<int>&) override {
++set_angle_calls;
std::unique_lock lock(command_mutex_);
command_entered_ = true;
command_cv_.notify_all();
command_cv_.wait(lock, [this] { return !block_angle_command_; });
}
void setPositions(const std::vector<int>&) override {
++set_position_calls;
}
void setVelocities(const std::vector<int>&) override {
++set_speed_calls;
}
void setForce(const std::vector<int>&) override {
++set_force_calls;
}
void setPresetAct(int) override {
++set_preset_calls;
}
void setTactilePollingRegions(
const std::vector<TactileRegionKey>&) override {
++configure_sensor_calls;
}
std::vector<TactileRegionData> getSensorData() override {
++sensor_read_calls;
return {sensorRegion()};
}
TactileRegionData getSensorData(
FingerType finger, TactileRegion region) override {
return finger == FingerType::INDEX && region == TactileRegion::TIP
? sensorRegion()
: TactileRegionData{};
}
ResultantForce getResultantForce(
FingerType finger, TactileRegion region) override {
return finger == FingerType::INDEX && region == TactileRegion::TIP
? sensor_points_[0]
: ResultantForce{};
}
void blockAngleCommand() {
std::lock_guard lock(command_mutex_);
block_angle_command_ = true;
command_entered_ = false;
}
bool waitForAngleCommand(const std::chrono::milliseconds timeout) {
std::unique_lock lock(command_mutex_);
return command_cv_.wait_for(
lock, timeout, [this] { return command_entered_; });
}
void releaseAngleCommand() {
{
std::lock_guard lock(command_mutex_);
block_angle_command_ = false;
}
command_cv_.notify_all();
}
std::atomic<int> set_position_calls{0};
std::atomic<int> set_angle_calls{0};
std::atomic<int> set_force_calls{0};
std::atomic<int> set_speed_calls{0};
std::atomic<int> set_preset_calls{0};
std::atomic<int> configure_sensor_calls{0};
std::atomic<int> sensor_read_calls{0};
std::atomic<int> stop_operational_calls{0};
std::atomic<int> resume_operational_calls{0};
private:
TactileRegionData sensorRegion() {
return TactileRegionData(
FingerType::INDEX,
TactileRegion::TIP,
TactileMatrixView{sensor_points_.data(), 1, 1},
"fake-tactile");
}
std::array<TactilePoint, 1> sensor_points_{};
std::mutex command_mutex_;
std::condition_variable command_cv_;
bool block_angle_command_{false};
bool command_entered_{false};
};
class GrpcDexHandServiceTest : public ::testing::Test {
protected:
void SetUp() override {
device::DeviceManager::destroyInstance();
control::ControlAuthorityManager::instance().clear();
globalStopAllAdmissionGate().clearForTesting();
config::DeviceManagerConfig config;
auto& manager = device::DeviceManager::getInstance(config);
hand_ = std::make_shared<FakeDexHand>();
manager.registerDevice(hand_);
service_ = std::make_unique<gRPCDexHandServiceImpl>();
}
void TearDown() override {
hand_->releaseAngleCommand();
if (server_) {
server_->Shutdown();
server_->Wait();
}
stub_.reset();
service_.reset();
hand_.reset();
if (!socket_path_.empty()) {
std::remove(socket_path_.c_str());
}
device::DeviceManager::destroyInstance();
control::ControlAuthorityManager::instance().clear();
globalStopAllAdmissionGate().clearForTesting();
}
bool startGrpcServer() {
socket_path_ =
"/tmp/cmvr_dexhand_service_test_" +
std::to_string(static_cast<long long>(::getpid())) + ".sock";
std::remove(socket_path_.c_str());
const std::string address = "unix:" + socket_path_;
grpc::ServerBuilder builder;
builder.AddListeningPort(
address,
grpc::InsecureServerCredentials());
builder.RegisterService(service_.get());
server_ = builder.BuildAndStart();
if (!server_) {
return false;
}
stub_ = api::DexHandService::NewStub(grpc::CreateChannel(
address,
grpc::InsecureChannelCredentials()));
return stub_ != nullptr;
}
static api::GetSensorDataStreamCommand_Request sensorStreamRequest() {
api::GetSensorDataStreamCommand_Request request;
request.mutable_header()->set_device_id("test-dexhand");
return request;
}
std::shared_ptr<FakeDexHand> hand_;
std::unique_ptr<gRPCDexHandServiceImpl> service_;
std::unique_ptr<grpc::Server> server_;
std::unique_ptr<api::DexHandService::Stub> stub_;
std::string socket_path_;
};
TEST_F(GrpcDexHandServiceTest, StopAllGateRejectsEveryControlCommand) {
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
grpc::ServerContext position_context;
api::SetDexHandPositionsCommand_Request position_request;
api::SetDexHandPositionsCommand_Feedback position_response;
position_request.mutable_header()->set_device_id("test-dexhand");
EXPECT_TRUE(service_->SetDexHandPos(
&position_context, &position_request, &position_response).ok());
EXPECT_FALSE(position_response.header().success());
grpc::ServerContext angle_context;
api::SetDexHandAnglesCommand_Request angle_request;
api::SetDexHandAnglesCommand_Feedback angle_response;
angle_request.mutable_header()->set_device_id("test-dexhand");
EXPECT_TRUE(service_->SetDexHandAngle(
&angle_context, &angle_request, &angle_response).ok());
EXPECT_FALSE(angle_response.header().success());
grpc::ServerContext force_context;
api::SetDexHandForceCommand_Request force_request;
api::SetDexHandForceCommand_Feedback force_response;
force_request.mutable_header()->set_device_id("test-dexhand");
EXPECT_TRUE(service_->SetDexHandForce(
&force_context, &force_request, &force_response).ok());
EXPECT_FALSE(force_response.header().success());
grpc::ServerContext speed_context;
api::SetDexHandSpeedCommand_Request speed_request;
api::SetDexHandSpeedCommand_Feedback speed_response;
speed_request.mutable_header()->set_device_id("test-dexhand");
EXPECT_TRUE(service_->SetDexHandSpeed(
&speed_context, &speed_request, &speed_response).ok());
EXPECT_FALSE(speed_response.header().success());
grpc::ServerContext preset_context;
api::SetDexHandPresetActCommand_Request preset_request;
api::SetDexHandPresetActCommand_Feedback preset_response;
preset_request.mutable_header()->set_device_id("test-dexhand");
EXPECT_TRUE(service_->SetDexHandPresetAct(
&preset_context, &preset_request, &preset_response).ok());
EXPECT_FALSE(preset_response.header().success());
EXPECT_EQ(hand_->set_position_calls.load(), 0);
EXPECT_EQ(hand_->set_angle_calls.load(), 0);
EXPECT_EQ(hand_->set_force_calls.load(), 0);
EXPECT_EQ(hand_->set_speed_calls.load(), 0);
EXPECT_EQ(hand_->set_preset_calls.load(), 0);
EXPECT_EQ(hand_->resume_operational_calls.load(), 0);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(GrpcDexHandServiceTest,
SafetyPreemptionCannotPassAnExecutingDeviceDispatch) {
hand_->blockAngleCommand();
grpc::ServerContext context;
api::SetDexHandAnglesCommand_Request request;
api::SetDexHandAnglesCommand_Feedback response;
request.mutable_header()->set_device_id("test-dexhand");
request.add_values()->set_value(0.5F);
auto rpc = std::async(std::launch::async, [&] {
return service_->SetDexHandAngle(&context, &request, &response);
});
ASSERT_TRUE(hand_->waitForAngleCommand(1s));
auto& authority = control::ControlAuthorityManager::instance();
auto safety_result = authority.preemptAcquire(
"test-dexhand",
"test-stop-all",
std::chrono::duration_cast<
control::ControlAuthorityManager::Duration>(1h));
ASSERT_TRUE(safety_result.acquired);
const auto safety_token = safety_result.token;
auto dispatch_fence = std::async(std::launch::async,
[&authority, safety_token] {
return authority.waitForPreemptedRelease(safety_token, 1s);
});
EXPECT_EQ(
dispatch_fence.wait_for(50ms), std::future_status::timeout);
hand_->releaseAngleCommand();
ASSERT_EQ(rpc.wait_for(1s), std::future_status::ready);
EXPECT_TRUE(rpc.get().ok());
EXPECT_TRUE(response.header().success());
ASSERT_EQ(dispatch_fence.wait_for(1s), std::future_status::ready);
EXPECT_TRUE(dispatch_fence.get());
authority.release(safety_token);
}
TEST_F(GrpcDexHandServiceTest,
StopAllCancelsOldSensorStreamAndARecoveredStreamResumesActivity) {
ASSERT_TRUE(startGrpcServer());
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 3s);
auto stream = stub_->GetSensorDataStream(&context);
ASSERT_TRUE(stream->Write(sensorStreamRequest()));
api::GetSensorDataStreamCommand_Feedback feedback;
ASSERT_TRUE(stream->Read(&feedback));
ASSERT_TRUE(feedback.header().success());
ASSERT_GE(hand_->sensor_read_calls.load(), 1);
const auto admission_ticket = globalStopAllAdmissionGate().beginStopAll();
const auto media_ticket = globalMediaActivityCoordinator().beginStopAll();
ASSERT_TRUE(admission_ticket.valid());
ASSERT_TRUE(media_ticket.valid());
stream->WritesDone();
while (stream->Read(&feedback)) {
}
const auto status = stream->Finish();
EXPECT_TRUE(
status.ok() || status.error_code() == grpc::StatusCode::CANCELLED);
EXPECT_TRUE(globalMediaActivityCoordinator().waitForStopped(
media_ticket, 1s));
const int stopped_stream_reads = hand_->sensor_read_calls.load();
std::this_thread::sleep_for(50ms);
EXPECT_EQ(hand_->sensor_read_calls.load(), stopped_stream_reads);
EXPECT_TRUE(globalMediaActivityCoordinator().finishStopAll(
media_ticket, true));
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(
admission_ticket, true));
grpc::ClientContext resumed_context;
resumed_context.set_deadline(std::chrono::system_clock::now() + 3s);
auto resumed = stub_->GetSensorDataStream(&resumed_context);
ASSERT_TRUE(resumed->Write(sensorStreamRequest()));
ASSERT_TRUE(resumed->Read(&feedback));
EXPECT_TRUE(feedback.header().success());
EXPECT_GT(hand_->sensor_read_calls.load(), stopped_stream_reads);
EXPECT_GE(hand_->resume_operational_calls.load(), 2);
resumed_context.TryCancel();
resumed->WritesDone();
while (resumed->Read(&feedback)) {
}
(void)resumed->Finish();
}
} // namespace
} // namespace cmvr::service

View File

@ -1,864 +0,0 @@
#include "service/grpc/server/include/grpc_error_logging_interceptor.h"
#include <atomic>
#include <algorithm>
#include <array>
#include <chrono>
#include <condition_variable>
#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iterator>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <utility>
#include <vector>
#include <grpcpp/grpcpp.h>
#include <grpcpp/generic/generic_stub.h>
#include <grpcpp/impl/client_unary_call.h>
#include <grpcpp/impl/rpc_method.h>
#include <gtest/gtest.h>
#include <unistd.h>
#include "cmvr/api/agv_service.grpc.pb.h"
#include "cmvr/api/camera_service.grpc.pb.h"
#include "cmvr/api/test_service.grpc.pb.h"
#include "common/base/logging/logger.h"
namespace cmvr::service {
namespace {
std::atomic<std::uint64_t> g_socket_sequence{0};
void setRpcDeadline(grpc::ClientContext& context)
{
context.set_deadline(
std::chrono::system_clock::now() + std::chrono::seconds(3));
}
grpc::ByteBuffer byteBuffer(const std::string& payload)
{
const grpc::Slice slice(payload);
return grpc::ByteBuffer(&slice, 1);
}
std::string byteBufferString(const grpc::ByteBuffer& buffer)
{
std::vector<grpc::Slice> slices;
EXPECT_TRUE(buffer.Dump(&slices).ok());
std::string payload;
for (const auto& slice : slices) {
payload.append(
reinterpret_cast<const char*>(slice.begin()), slice.size());
}
return payload;
}
grpc::Status rawUnaryCall(const std::shared_ptr<grpc::Channel>& channel,
const std::string& method,
const std::string& request_payload,
grpc::ByteBuffer& response)
{
grpc::ClientContext context;
setRpcDeadline(context);
const auto request = byteBuffer(request_payload);
const grpc::internal::RpcMethod rpc_method(
method.c_str(), grpc::internal::RpcMethod::NORMAL_RPC);
return grpc::internal::BlockingUnaryCall(
channel.get(), rpc_method, &context, request, &response);
}
class ErrorLoggingTestService final : public api::TestService::Service {
public:
grpc::Status Call(grpc::ServerContext* context,
const api::TestReqeust* request,
api::TestResponse* response) override
{
if (request->data() == "grpc-error") {
return grpc::Status(
grpc::StatusCode::INTERNAL, "transport sentinel");
}
if (request->data() == "cancelled") {
return grpc::Status(
grpc::StatusCode::CANCELLED, "client closed stream");
}
if (request->data() == "server-cancel") {
context->TryCancel();
return grpc::Status::OK;
}
if (request->data() == "client-cancel") {
{
std::lock_guard lock(cancel_mutex_);
cancel_started_ = true;
}
cancel_started_condition_.notify_all();
const auto timeout =
std::chrono::steady_clock::now() + std::chrono::seconds(3);
while (!context->IsCancelled() &&
std::chrono::steady_clock::now() < timeout) {
std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
return grpc::Status::OK;
}
response->set_data("ok");
return grpc::Status::OK;
}
bool waitForCancelableCall()
{
std::unique_lock lock(cancel_mutex_);
return cancel_started_condition_.wait_for(
lock, std::chrono::seconds(3),
[this] { return cancel_started_; });
}
private:
std::mutex cancel_mutex_;
std::condition_variable cancel_started_condition_;
bool cancel_started_{false};
};
class ErrorLoggingAgvService final : public api::AgvService::Service {
public:
grpc::Status emergencyStop(
grpc::ServerContext*,
const api::CommandHeader_Request* request,
api::CommandHeader_Feedback* response) override
{
if (request->device_id() == "missing") {
response->set_success(false);
response->set_error_message("missing sentinel");
return grpc::Status(
grpc::StatusCode::NOT_FOUND, "missing sentinel");
}
response->set_success(false);
response->set_error_message("direct sentinel");
return grpc::Status::OK;
}
grpc::Status streamMap(
grpc::ServerContext*,
const api::AgvMapStreamCommand_Request* request,
grpc::ServerWriter<api::AgvMapStreamCommand_Feedback>* writer) override
{
const auto write_failure = [writer](const std::string& detail) {
api::AgvMapStreamCommand_Feedback response;
response.mutable_header()->set_success(false);
response.mutable_header()->set_error_message(detail);
return writer->Write(response);
};
if (request->resume_token() == "multiple") {
write_failure("first stream sentinel");
write_failure("second stream sentinel");
return grpc::Status::OK;
}
if (request->resume_token() == "hold") {
write_failure("immediate stream sentinel");
std::unique_lock lock(stream_mutex_);
stream_released_.wait_for(
lock, std::chrono::seconds(3),
[this] { return release_stream_; });
return grpc::Status::OK;
}
if (request->resume_token() == "different") {
write_failure("application stream sentinel");
return grpc::Status(
grpc::StatusCode::INTERNAL, "status stream sentinel");
}
if (request->resume_token() == "long-different") {
const std::string common_prefix(1100, 'x');
write_failure(common_prefix + " application");
return grpc::Status(
grpc::StatusCode::INTERNAL,
common_prefix + " status");
}
write_failure("stream sentinel");
return grpc::Status(
grpc::StatusCode::INTERNAL, "stream sentinel");
}
void releaseHeldStream()
{
{
std::lock_guard lock(stream_mutex_);
release_stream_ = true;
}
stream_released_.notify_all();
}
private:
std::mutex stream_mutex_;
std::condition_variable stream_released_;
bool release_stream_{false};
};
class ErrorLoggingCameraService final : public api::CameraService::Service {
public:
grpc::Status StartCamera(
grpc::ServerContext*,
const api::StartCameraCommand_Request*,
api::StartCameraCommand_Feedback* response) override
{
response->mutable_header()->set_success(false);
response->mutable_header()->set_error_message("nested sentinel");
return grpc::Status::OK;
}
grpc::Status GetRGBImage(
grpc::ServerContext*,
const api::GetRGBImageCommand_Request*,
api::GetRGBImageCommand_Feedback* response) override
{
response->mutable_header()->set_success(true);
response->mutable_color_frame()->set_data(
std::string(2 * 1024 * 1024, 'x'));
return grpc::Status::OK;
}
};
class RawCameraService final
: public api::CameraService::WithRawCallbackMethod_StartCamera<
api::CameraService::Service> {
public:
explicit RawCameraService(std::string response)
: response_(std::move(response))
{
}
grpc::ServerUnaryReactor* StartCamera(
grpc::CallbackServerContext* context,
const grpc::ByteBuffer*,
grpc::ByteBuffer* response) override
{
*response = byteBuffer(response_);
auto* reactor = context->DefaultReactor();
reactor->Finish(grpc::Status::OK);
return reactor;
}
private:
std::string response_;
};
struct RawCallResult {
grpc::Status status;
std::vector<GrpcFailureRecord> records;
std::string response;
};
class ScopedServer final {
public:
ScopedServer(std::unique_ptr<grpc::Server> server,
std::string socket_path = {})
: server_(std::move(server)), socket_path_(std::move(socket_path))
{
}
~ScopedServer()
{
if (server_) {
server_->Shutdown();
server_->Wait();
}
if (!socket_path_.empty()) {
std::remove(socket_path_.c_str());
}
}
grpc::Server* get() const { return server_.get(); }
private:
std::unique_ptr<grpc::Server> server_;
std::string socket_path_;
};
class ScopedSocket final {
public:
explicit ScopedSocket(std::string path) : path_(std::move(path))
{
std::remove(path_.c_str());
}
~ScopedSocket() { std::remove(path_.c_str()); }
private:
std::string path_;
};
RawCallResult callRawStartCamera(const std::string& response_payload)
{
std::mutex records_mutex;
std::vector<GrpcFailureRecord> records;
RawCameraService service(response_payload);
grpc::ServerBuilder builder;
const std::string address =
"unix:/tmp/cmvr_grpc_error_logging_raw_" +
std::to_string(static_cast<long long>(::getpid())) + "_" +
std::to_string(g_socket_sequence.fetch_add(1U)) + ".sock";
const std::string socket_path = address.substr(5);
ScopedSocket socket(socket_path);
builder.AddListeningPort(address, grpc::InsecureServerCredentials());
builder.RegisterService(&service);
std::vector<std::unique_ptr<
grpc::experimental::ServerInterceptorFactoryInterface>> factories;
factories.emplace_back(makeGrpcErrorLoggingInterceptorFactory(
[&records, &records_mutex](const GrpcFailureRecord& record) {
std::lock_guard lock(records_mutex);
records.push_back(record);
}));
builder.experimental().SetInterceptorCreators(std::move(factories));
ScopedServer server(builder.BuildAndStart());
EXPECT_NE(server.get(), nullptr);
if (server.get() == nullptr) {
return {};
}
const auto channel = grpc::CreateChannel(
address, grpc::InsecureChannelCredentials());
api::StartCameraCommand_Request request;
grpc::ByteBuffer response;
const auto status = rawUnaryCall(
channel, "/cmvr.api.CameraService/StartCamera",
request.SerializeAsString(), response);
std::lock_guard lock(records_mutex);
return {status, records, byteBufferString(response)};
}
class GrpcErrorLoggingInterceptorTest : public testing::Test {
protected:
void SetUp() override
{
grpc::ServerBuilder builder;
socket_path_ =
"/tmp/cmvr_grpc_error_logging_interceptor_test_" +
std::to_string(static_cast<long long>(::getpid())) + "_" +
std::to_string(g_socket_sequence.fetch_add(1U)) + ".sock";
std::remove(socket_path_.c_str());
const std::string address = "unix:" + socket_path_;
builder.AddListeningPort(
address, grpc::InsecureServerCredentials());
builder.RegisterService(&test_service_);
builder.RegisterService(&agv_service_);
builder.RegisterService(&camera_service_);
std::vector<std::unique_ptr<
grpc::experimental::ServerInterceptorFactoryInterface>> factories;
factories.emplace_back(makeGrpcErrorLoggingInterceptorFactory(
[this](const GrpcFailureRecord& record) {
{
std::lock_guard lock(records_mutex_);
records_.push_back(record);
}
records_changed_.notify_all();
}));
builder.experimental().SetInterceptorCreators(std::move(factories));
server_ = builder.BuildAndStart();
ASSERT_NE(server_, nullptr);
const auto channel = grpc::CreateChannel(
address,
grpc::InsecureChannelCredentials());
test_stub_ = api::TestService::NewStub(channel);
agv_stub_ = api::AgvService::NewStub(channel);
camera_stub_ = api::CameraService::NewStub(channel);
}
void TearDown() override
{
if (server_) {
server_->Shutdown();
server_->Wait();
}
test_stub_.reset();
agv_stub_.reset();
camera_stub_.reset();
if (!socket_path_.empty()) {
std::remove(socket_path_.c_str());
}
}
std::vector<GrpcFailureRecord> records()
{
std::lock_guard lock(records_mutex_);
return records_;
}
std::vector<GrpcFailureRecord> waitForRecords(
const std::size_t count,
const std::chrono::milliseconds timeout = std::chrono::seconds(3))
{
std::unique_lock lock(records_mutex_);
records_changed_.wait_for(
lock, timeout, [this, count] { return records_.size() >= count; });
return records_;
}
ErrorLoggingTestService test_service_;
ErrorLoggingAgvService agv_service_;
ErrorLoggingCameraService camera_service_;
std::unique_ptr<grpc::Server> server_;
std::unique_ptr<api::TestService::Stub> test_stub_;
std::unique_ptr<api::AgvService::Stub> agv_stub_;
std::unique_ptr<api::CameraService::Stub> camera_stub_;
std::string socket_path_;
std::mutex records_mutex_;
std::condition_variable records_changed_;
std::vector<GrpcFailureRecord> records_;
};
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsNonOkGrpcStatus)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("grpc-error");
const grpc::Status status = test_stub_->Call(&context, request, &response);
ASSERT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured.front().method, "/cmvr.api.TestService/Call");
EXPECT_EQ(captured.front().status_code, grpc::StatusCode::INTERNAL);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::ERROR);
EXPECT_EQ(captured.front().detail, "transport sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsDirectFeedbackFailure)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::CommandHeader_Request request;
api::CommandHeader_Feedback response;
ASSERT_TRUE(agv_stub_->emergencyStop(&context, request, &response).ok());
ASSERT_FALSE(response.success());
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(captured.front().method, "/cmvr.api.AgvService/emergencyStop");
EXPECT_EQ(captured.front().status_code, grpc::StatusCode::OK);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::ERROR);
EXPECT_EQ(captured.front().detail, "direct sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsCancellationAsWarning)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("cancelled");
const grpc::Status status = test_stub_->Call(&context, request, &response);
ASSERT_EQ(status.error_code(), grpc::StatusCode::CANCELLED);
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::WARNING);
EXPECT_EQ(captured.front().detail, "client closed stream");
}
TEST(GrpcErrorLoggingInterceptorFileTest, WarningStatusIsFlushedToFile)
{
std::array<char, 80> directory_pattern{};
const std::string pattern = "/tmp/cmvr-grpc-log-test-XXXXXX";
std::copy(pattern.begin(), pattern.end(), directory_pattern.begin());
const char* created = ::mkdtemp(directory_pattern.data());
ASSERT_NE(created, nullptr);
const std::filesystem::path directory(created);
struct Cleanup {
~Cleanup()
{
logging::shutdownLogging();
if (!socket_path.empty()) {
std::remove(socket_path.c_str());
}
std::error_code error;
std::filesystem::remove_all(directory, error);
}
std::filesystem::path directory;
std::string socket_path;
} cleanup{directory, {}};
config::LoggerConfig config;
config.set_minimum_level(config::LOG_LEVEL_WARNING);
config.set_directory(directory.string());
config.set_flush_interval_seconds(3600);
auto* warning_route = config.add_routes();
warning_route->set_level(config::LOG_LEVEL_WARNING);
warning_route->set_file(true);
ASSERT_TRUE(logging::initLogging(config, "grpc_log_test", directory));
ErrorLoggingTestService service;
grpc::ServerBuilder builder;
const std::string socket_path =
"/tmp/cmvr_grpc_error_logging_file_test_" +
std::to_string(static_cast<long long>(::getpid())) + "_" +
std::to_string(g_socket_sequence.fetch_add(1U)) + ".sock";
cleanup.socket_path = socket_path;
ScopedSocket socket(socket_path);
const std::string address = "unix:" + socket_path;
builder.AddListeningPort(address, grpc::InsecureServerCredentials());
builder.RegisterService(&service);
std::vector<std::unique_ptr<
grpc::experimental::ServerInterceptorFactoryInterface>> factories;
factories.emplace_back(makeGrpcErrorLoggingInterceptorFactory());
builder.experimental().SetInterceptorCreators(std::move(factories));
ScopedServer server(builder.BuildAndStart());
ASSERT_NE(server.get(), nullptr);
const auto channel = grpc::CreateChannel(
address, grpc::InsecureChannelCredentials());
auto stub = api::TestService::NewStub(channel);
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("cancelled");
const grpc::Status status = stub->Call(&context, request, &response);
ASSERT_EQ(status.error_code(), grpc::StatusCode::CANCELLED);
std::ifstream input(directory / "grpc_log_test.log");
const std::string contents{
std::istreambuf_iterator<char>(input),
std::istreambuf_iterator<char>()};
EXPECT_NE(contents.find("/cmvr.api.TestService/Call"), std::string::npos);
EXPECT_NE(contents.find("code=1(CANCELLED)"), std::string::npos);
EXPECT_NE(contents.find("client closed stream"), std::string::npos);
}
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsServerCancellationReturnedAsOk)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("server-cancel");
const grpc::Status status = test_stub_->Call(&context, request, &response);
ASSERT_EQ(status.error_code(), grpc::StatusCode::CANCELLED);
// TryCancel is best effort: the final status may be intercepted before
// the cancellation hook. Either way, the interceptor must not recurse or
// emit duplicate records.
const auto captured = waitForRecords(1U, std::chrono::milliseconds(50));
ASSERT_LE(captured.size(), 1U);
if (!captured.empty()) {
EXPECT_EQ(captured.front().kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured.front().status_code, grpc::StatusCode::CANCELLED);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::WARNING);
EXPECT_EQ(
captured.front().detail,
"RPC cancellation was requested by the edge server before completion");
}
}
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsClientCancellation)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("client-cancel");
grpc::Status status;
std::thread call([&] {
status = test_stub_->Call(&context, request, &response);
});
const bool call_started = test_service_.waitForCancelableCall();
context.TryCancel();
call.join();
ASSERT_TRUE(call_started);
ASSERT_EQ(status.error_code(), grpc::StatusCode::CANCELLED);
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured.front().status_code, grpc::StatusCode::CANCELLED);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::WARNING);
EXPECT_EQ(
captured.front().detail,
"RPC was cancelled by the client or transport before completion");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
RecordsStatusWhenNonOkSuppressesUnaryResponse)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::CommandHeader_Request request;
api::CommandHeader_Feedback response;
request.set_device_id("missing");
const grpc::Status status =
agv_stub_->emergencyStop(&context, request, &response);
ASSERT_EQ(status.error_code(), grpc::StatusCode::NOT_FOUND);
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured.front().status_code, grpc::StatusCode::NOT_FOUND);
EXPECT_EQ(captured.front().severity, GrpcFailureSeverity::WARNING);
EXPECT_EQ(captured.front().detail, "missing sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest, RecordsNestedFeedbackFailure)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::StartCameraCommand_Request request;
api::StartCameraCommand_Feedback response;
ASSERT_TRUE(camera_stub_->StartCamera(&context, request, &response).ok());
ASSERT_FALSE(response.header().success());
const auto captured = waitForRecords(1U);
ASSERT_EQ(captured.size(), 1U);
EXPECT_EQ(captured.front().kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(captured.front().method, "/cmvr.api.CameraService/StartCamera");
EXPECT_EQ(captured.front().detail, "nested sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
RecordsStreamingResponseAndFinalNonOkStatus)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::AgvMapStreamCommand_Request request;
auto reader = agv_stub_->streamMap(&context, request);
api::AgvMapStreamCommand_Feedback response;
ASSERT_TRUE(reader->Read(&response));
ASSERT_FALSE(response.header().success());
const grpc::Status status = reader->Finish();
ASSERT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
const auto captured = waitForRecords(2U);
ASSERT_EQ(captured.size(), 2U);
EXPECT_EQ(captured[0].kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(captured[0].method, "/cmvr.api.AgvService/streamMap");
EXPECT_EQ(captured[0].status_code, grpc::StatusCode::OK);
EXPECT_EQ(captured[0].severity, GrpcFailureSeverity::ERROR);
EXPECT_EQ(captured[0].detail, "stream sentinel");
EXPECT_EQ(captured[1].kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured[1].status_code, grpc::StatusCode::INTERNAL);
EXPECT_EQ(captured[1].severity, GrpcFailureSeverity::ERROR);
EXPECT_EQ(captured[1].detail, "stream sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
RecordsStreamingFailureBeforeTheStreamFinishes)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::AgvMapStreamCommand_Request request;
request.set_resume_token("hold");
auto reader = agv_stub_->streamMap(&context, request);
api::AgvMapStreamCommand_Feedback response;
const bool read = reader->Read(&response);
const auto captured_before_finish = waitForRecords(1U);
agv_service_.releaseHeldStream();
const grpc::Status status = reader->Finish();
ASSERT_TRUE(read);
ASSERT_TRUE(status.ok());
ASSERT_EQ(captured_before_finish.size(), 1U);
EXPECT_EQ(
captured_before_finish.front().detail,
"immediate stream sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
RecordsEveryStreamingFailureResponse)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::AgvMapStreamCommand_Request request;
request.set_resume_token("multiple");
auto reader = agv_stub_->streamMap(&context, request);
api::AgvMapStreamCommand_Feedback response;
ASSERT_TRUE(reader->Read(&response));
ASSERT_TRUE(reader->Read(&response));
ASSERT_TRUE(reader->Finish().ok());
const auto captured = waitForRecords(2U);
ASSERT_EQ(captured.size(), 2U);
EXPECT_EQ(captured[0].detail, "first stream sentinel");
EXPECT_EQ(captured[1].detail, "second stream sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
PreservesDifferentResponseAndStatusErrors)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::AgvMapStreamCommand_Request request;
request.set_resume_token("different");
auto reader = agv_stub_->streamMap(&context, request);
api::AgvMapStreamCommand_Feedback response;
ASSERT_TRUE(reader->Read(&response));
const grpc::Status status = reader->Finish();
ASSERT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
const auto captured = waitForRecords(2U);
ASSERT_EQ(captured.size(), 2U);
EXPECT_EQ(captured[0].kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(captured[0].detail, "application stream sentinel");
EXPECT_EQ(captured[1].kind, GrpcFailureKind::GRPC_STATUS);
EXPECT_EQ(captured[1].status_code, grpc::StatusCode::INTERNAL);
EXPECT_EQ(captured[1].detail, "status stream sentinel");
}
TEST_F(GrpcErrorLoggingInterceptorTest,
DoesNotDeduplicateLongErrorsByTruncatedPrefix)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::AgvMapStreamCommand_Request request;
request.set_resume_token("long-different");
auto reader = agv_stub_->streamMap(&context, request);
api::AgvMapStreamCommand_Feedback response;
ASSERT_TRUE(reader->Read(&response));
const grpc::Status status = reader->Finish();
ASSERT_EQ(status.error_code(), grpc::StatusCode::INTERNAL);
const auto captured = waitForRecords(2U);
ASSERT_EQ(captured.size(), 2U);
EXPECT_EQ(captured[0].kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(captured[1].kind, GrpcFailureKind::GRPC_STATUS);
}
TEST(GrpcErrorLoggingInterceptorWireTest, RequiresHeaderAsFirstField)
{
api::CommandHeader_Feedback header;
header.set_success(false);
header.set_error_message("out-of-order sentinel");
std::string payload;
payload.push_back(static_cast<char>(0x12));
payload.push_back(static_cast<char>(0x01));
payload.push_back('x');
payload.push_back(static_cast<char>(0x0a));
payload.push_back(static_cast<char>(header.ByteSizeLong()));
payload.append(header.SerializeAsString());
const auto result = callRawStartCamera(payload);
ASSERT_TRUE(result.status.ok());
ASSERT_EQ(result.response, payload);
ASSERT_EQ(result.records.size(), 1U);
EXPECT_EQ(
result.records.front().kind,
GrpcFailureKind::MALFORMED_RESPONSE);
}
TEST(GrpcErrorLoggingInterceptorWireTest, DoesNotScanPayloadAfterHeader)
{
api::CommandHeader_Feedback header;
header.set_success(false);
header.set_error_message("leading header sentinel");
std::string payload;
payload.push_back(static_cast<char>(0x0a));
payload.push_back(static_cast<char>(header.ByteSizeLong()));
payload.append(header.SerializeAsString());
payload.push_back(static_cast<char>(0x12));
payload.push_back(static_cast<char>(0xff));
payload.append(2U * 1024U * 1024U, 'x');
const auto result = callRawStartCamera(payload);
ASSERT_TRUE(result.status.ok());
ASSERT_EQ(result.records.size(), 1U);
EXPECT_EQ(result.records.front().kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(result.records.front().detail, "leading header sentinel");
}
TEST(GrpcErrorLoggingInterceptorWireTest, TreatsExplicitEmptyHeaderAsFailure)
{
const std::string payload{
static_cast<char>(0x0a), static_cast<char>(0x00)};
const auto result = callRawStartCamera(payload);
ASSERT_TRUE(result.status.ok());
ASSERT_EQ(result.records.size(), 1U);
EXPECT_EQ(result.records.front().kind, GrpcFailureKind::APPLICATION);
EXPECT_EQ(
result.records.front().detail,
"operation failed without an error message");
}
TEST(GrpcErrorLoggingInterceptorWireTest, RejectsInvalidHeaderWireType)
{
const std::string payload{
static_cast<char>(0x08), static_cast<char>(0x01)};
const auto result = callRawStartCamera(payload);
ASSERT_TRUE(result.status.ok());
ASSERT_EQ(result.records.size(), 1U);
EXPECT_EQ(
result.records.front().kind,
GrpcFailureKind::MALFORMED_RESPONSE);
}
TEST(GrpcErrorLoggingInterceptorWireTest, RejectsInvalidUtf8ErrorMessage)
{
const std::string payload{
static_cast<char>(0x0a), static_cast<char>(0x04),
static_cast<char>(0x12), static_cast<char>(0x02),
static_cast<char>(0xc3), static_cast<char>(0x28)};
const auto result = callRawStartCamera(payload);
ASSERT_TRUE(result.status.ok());
ASSERT_EQ(result.records.size(), 1U);
EXPECT_EQ(
result.records.front().kind,
GrpcFailureKind::MALFORMED_RESPONSE);
}
TEST_F(GrpcErrorLoggingInterceptorTest, DoesNotRecordSuccessfulLargeResponse)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::GetRGBImageCommand_Request request;
api::GetRGBImageCommand_Feedback response;
ASSERT_TRUE(camera_stub_->GetRGBImage(&context, request, &response).ok());
ASSERT_TRUE(response.header().success());
ASSERT_EQ(response.color_frame().data().size(), 2U * 1024U * 1024U);
EXPECT_TRUE(records().empty());
}
TEST_F(GrpcErrorLoggingInterceptorTest, IgnoresSuccessfulResponseWithoutHeader)
{
grpc::ClientContext context;
setRpcDeadline(context);
api::TestReqeust request;
api::TestResponse response;
request.set_data("ok");
ASSERT_TRUE(test_stub_->Call(&context, request, &response).ok());
EXPECT_EQ(response.data(), "ok");
EXPECT_TRUE(records().empty());
}
} // namespace
} // namespace cmvr::service

View File

@ -1,391 +0,0 @@
#include "service/grpc/server/include/grpc_head_service.h"
#include <atomic>
#include <chrono>
#include <memory>
#include <string>
#include <thread>
#include <grpcpp/grpcpp.h>
#include <gtest/gtest.h>
#include "cmvr/config/device_manager_config/device_manager_config.pb.h"
#include "manager/device_manager/include/device_manager.h"
#include "service/grpc/server/include/media_activity_coordinator.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
namespace cmvr::service {
namespace {
using namespace std::chrono_literals;
class FakeBiohead final : public device::AbstractBiohead {
public:
FakeBiohead() { id_ = "test-head"; }
std::string typeName() const override { return "FakeBiohead"; }
bool stop() override
{
++lifecycle_stop_calls;
return true;
}
bool setExpressionPoseIfCurrent(
const OperationalToken token,
device::FacialExpressionState&,
double,
double) override
{
return recordIfCurrent(token, set_expression_calls);
}
bool streamFacialPoseIfCurrent(
const OperationalToken token,
device::FacialExpressionState&,
double,
double) override
{
return recordIfCurrent(token, stream_expression_calls);
}
bool speakStartIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, speak_start_calls);
}
bool expressionHappyIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, happy_calls);
}
bool expressionSurprisedIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, surprise_calls);
}
bool expressionTiredIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, tired_calls);
}
bool expressionAngryIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, angry_calls);
}
bool expressionSadnessIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, sadness_calls);
}
bool expressionYawnIfCurrent(const OperationalToken token) override
{
return recordIfCurrent(token, yawn_calls);
}
void speakstop() override { ++speak_stop_calls; }
bool stopOperationalActivity() override
{
invalidateOperationalActivities_();
++operational_stop_calls;
++speak_stop_calls;
return stop_confirmed.load(std::memory_order_acquire);
}
bool recordIfCurrent(
const OperationalToken token,
std::atomic<int>& calls)
{
return runIfOperationalActivityCurrent_(token, [&] { ++calls; });
}
std::atomic<int> set_expression_calls{0};
std::atomic<int> stream_expression_calls{0};
std::atomic<int> speak_start_calls{0};
std::atomic<int> speak_stop_calls{0};
std::atomic<int> happy_calls{0};
std::atomic<int> surprise_calls{0};
std::atomic<int> tired_calls{0};
std::atomic<int> angry_calls{0};
std::atomic<int> sadness_calls{0};
std::atomic<int> yawn_calls{0};
std::atomic<int> operational_stop_calls{0};
std::atomic<int> lifecycle_stop_calls{0};
std::atomic<bool> stop_confirmed{true};
};
class GrpcHeadServiceTest : public ::testing::Test {
protected:
void SetUp() override
{
device::DeviceManager::destroyInstance();
globalStopAllAdmissionGate().clearForTesting();
config::DeviceManagerConfig config;
auto& manager = device::DeviceManager::getInstance(config);
head_ = std::make_shared<FakeBiohead>();
manager.registerDevice(head_);
service_ = std::make_unique<gRPCMBioHeadServiceImpl>();
}
void TearDown() override
{
if (server_) {
server_->Shutdown();
server_->Wait();
}
stub_.reset();
service_.reset();
head_.reset();
device::DeviceManager::destroyInstance();
globalStopAllAdmissionGate().clearForTesting();
}
bool startGrpcServer()
{
int selected_port = 0;
grpc::ServerBuilder builder;
builder.AddListeningPort(
"127.0.0.1:0",
grpc::InsecureServerCredentials(),
&selected_port);
builder.RegisterService(service_.get());
server_ = builder.BuildAndStart();
if (!server_ || selected_port <= 0) {
return false;
}
const std::string address =
"127.0.0.1:" + std::to_string(selected_port);
stub_ = api::BioHeadService::NewStub(grpc::CreateChannel(
address, grpc::InsecureChannelCredentials()));
return stub_ != nullptr;
}
static api::StreamFacialExpression_Request streamRequest()
{
api::StreamFacialExpression_Request request;
request.mutable_header()->set_device_id("test-head");
request.mutable_expr()->mutable_jaw()->set_x(0.5F);
return request;
}
std::shared_ptr<FakeBiohead> head_;
std::unique_ptr<gRPCMBioHeadServiceImpl> service_;
std::unique_ptr<grpc::Server> server_;
std::unique_ptr<api::BioHeadService::Stub> stub_;
};
TEST_F(GrpcHeadServiceTest,
OperationalStopInvalidatesOldTokenWithoutStoppingLifecycle)
{
const auto old_token = head_->beginOperationalActivity();
ASSERT_TRUE(head_->recordIfCurrent(old_token, head_->happy_calls));
EXPECT_TRUE(head_->stopOperationalActivity());
EXPECT_FALSE(head_->recordIfCurrent(old_token, head_->happy_calls));
EXPECT_EQ(head_->happy_calls.load(), 1);
EXPECT_EQ(head_->operational_stop_calls.load(), 1);
EXPECT_EQ(head_->lifecycle_stop_calls.load(), 0);
const auto current_token = head_->beginOperationalActivity();
EXPECT_NE(current_token, old_token);
EXPECT_TRUE(head_->recordIfCurrent(current_token, head_->happy_calls));
EXPECT_EQ(head_->happy_calls.load(), 2);
}
TEST_F(GrpcHeadServiceTest,
StopAllGateRejectsMotionButAllowsOperationalStopRpcs)
{
const auto ticket = globalStopAllAdmissionGate().beginStopAll();
ASSERT_TRUE(ticket.valid());
api::Happy_Request happy_request;
happy_request.mutable_header()->set_device_id("test-head");
api::Happy_Feedback happy_response;
grpc::ServerContext happy_context;
EXPECT_TRUE(service_->Happy(
&happy_context, &happy_request, &happy_response).ok());
EXPECT_FALSE(happy_response.header().success());
EXPECT_EQ(head_->happy_calls.load(), 0);
api::Surprise_Request surprise_request;
surprise_request.mutable_header()->set_device_id("test-head");
api::Surprise_Feedback surprise_response;
grpc::ServerContext surprise_context;
EXPECT_TRUE(service_->Surprise(
&surprise_context, &surprise_request, &surprise_response).ok());
EXPECT_FALSE(surprise_response.header().success());
EXPECT_EQ(head_->surprise_calls.load(), 0);
api::ExpressionTired_Request tired_request;
tired_request.mutable_header()->set_device_id("test-head");
api::ExpressionTired_Feedback tired_response;
grpc::ServerContext tired_context;
EXPECT_TRUE(service_->ExpressionTired(
&tired_context, &tired_request, &tired_response).ok());
EXPECT_FALSE(tired_response.header().success());
EXPECT_EQ(head_->tired_calls.load(), 0);
api::ExpressionAngry_Request angry_request;
angry_request.mutable_header()->set_device_id("test-head");
api::ExpressionAngry_Feedback angry_response;
grpc::ServerContext angry_context;
EXPECT_TRUE(service_->ExpressionAngry(
&angry_context, &angry_request, &angry_response).ok());
EXPECT_FALSE(angry_response.header().success());
EXPECT_EQ(head_->angry_calls.load(), 0);
api::ExpressionSadness_Request sadness_request;
sadness_request.mutable_header()->set_device_id("test-head");
api::ExpressionSadness_Feedback sadness_response;
grpc::ServerContext sadness_context;
EXPECT_TRUE(service_->ExpressionSadness(
&sadness_context, &sadness_request, &sadness_response).ok());
EXPECT_FALSE(sadness_response.header().success());
EXPECT_EQ(head_->sadness_calls.load(), 0);
api::ExpressionYawn_Request yawn_request;
yawn_request.mutable_header()->set_device_id("test-head");
api::ExpressionYawn_Feedback yawn_response;
grpc::ServerContext yawn_context;
EXPECT_TRUE(service_->ExpressionYawn(
&yawn_context, &yawn_request, &yawn_response).ok());
EXPECT_FALSE(yawn_response.header().success());
EXPECT_EQ(head_->yawn_calls.load(), 0);
api::SetFacialExpression_Request expression_request;
expression_request.mutable_header()->set_device_id("test-head");
api::SetFacialExpression_Feedback expression_response;
grpc::ServerContext expression_context;
EXPECT_TRUE(service_->SetExpression(
&expression_context,
&expression_request,
&expression_response).ok());
EXPECT_FALSE(expression_response.header().success());
EXPECT_EQ(head_->set_expression_calls.load(), 0);
api::SpeakStart_Request speak_request;
speak_request.mutable_header()->set_device_id("test-head");
api::SpeakStart_Feedback speak_response;
grpc::ServerContext speak_context;
EXPECT_TRUE(service_->SpeakStart(
&speak_context, &speak_request, &speak_response).ok());
EXPECT_FALSE(speak_response.header().success());
EXPECT_EQ(head_->speak_start_calls.load(), 0);
api::SpeakStop_Request speak_stop_request;
speak_stop_request.mutable_header()->set_device_id("test-head");
api::SpeakStop_Feedback speak_stop_response;
grpc::ServerContext speak_stop_context;
EXPECT_TRUE(service_->SpeakStop(
&speak_stop_context,
&speak_stop_request,
&speak_stop_response).ok());
EXPECT_TRUE(speak_stop_response.header().success());
api::EmergencyStop_Request stop_request;
stop_request.mutable_header()->set_device_id("test-head");
api::EmergencyStop_Feedback stop_response;
grpc::ServerContext stop_context;
EXPECT_TRUE(service_->EmergencyStop(
&stop_context, &stop_request, &stop_response).ok());
EXPECT_TRUE(stop_response.header().success());
EXPECT_EQ(head_->operational_stop_calls.load(), 1);
EXPECT_EQ(head_->lifecycle_stop_calls.load(), 0);
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(ticket, true));
}
TEST_F(GrpcHeadServiceTest,
StreamIsCancelledByStopAllAndNewStreamWorksAfterRecovery)
{
ASSERT_TRUE(startGrpcServer());
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = stub_->StreamExpression(&context);
ASSERT_TRUE(stream->Write(streamRequest()));
api::StreamFacialExpression_Feedback feedback;
ASSERT_TRUE(stream->Read(&feedback));
ASSERT_TRUE(feedback.header().success());
ASSERT_EQ(head_->stream_expression_calls.load(), 1);
const auto admission_ticket = globalStopAllAdmissionGate().beginStopAll();
const auto media_ticket = globalMediaActivityCoordinator().beginStopAll();
ASSERT_TRUE(admission_ticket.valid());
ASSERT_TRUE(media_ticket.valid());
(void)stream->Write(streamRequest());
stream->WritesDone();
while (stream->Read(&feedback)) {
}
const auto status = stream->Finish();
EXPECT_TRUE(
status.ok() || status.error_code() == grpc::StatusCode::CANCELLED);
EXPECT_TRUE(globalMediaActivityCoordinator().waitForStopped(
media_ticket, 1s));
EXPECT_EQ(head_->stream_expression_calls.load(), 1);
EXPECT_TRUE(globalMediaActivityCoordinator().finishStopAll(
media_ticket, true));
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(
admission_ticket, true));
grpc::ClientContext resumed_context;
resumed_context.set_deadline(std::chrono::system_clock::now() + 2s);
auto resumed = stub_->StreamExpression(&resumed_context);
ASSERT_TRUE(resumed->Write(streamRequest()));
ASSERT_TRUE(resumed->Read(&feedback));
EXPECT_TRUE(feedback.header().success());
EXPECT_EQ(head_->stream_expression_calls.load(), 2);
resumed_context.TryCancel();
resumed->WritesDone();
while (resumed->Read(&feedback)) {
}
(void)resumed->Finish();
}
TEST_F(GrpcHeadServiceTest,
StopAllCancelsStreamBeforeItsFirstFrameCanClearStopState)
{
ASSERT_TRUE(startGrpcServer());
grpc::ClientContext context;
context.set_deadline(std::chrono::system_clock::now() + 2s);
auto stream = stub_->StreamExpression(&context);
std::this_thread::sleep_for(20ms);
const auto admission_ticket = globalStopAllAdmissionGate().beginStopAll();
const auto media_ticket = globalMediaActivityCoordinator().beginStopAll();
ASSERT_TRUE(admission_ticket.valid());
ASSERT_TRUE(media_ticket.valid());
(void)stream->Write(streamRequest());
stream->WritesDone();
api::StreamFacialExpression_Feedback feedback;
while (stream->Read(&feedback)) {
}
(void)stream->Finish();
EXPECT_TRUE(globalMediaActivityCoordinator().waitForStopped(
media_ticket, 1s));
EXPECT_EQ(head_->stream_expression_calls.load(), 0);
EXPECT_TRUE(globalMediaActivityCoordinator().finishStopAll(
media_ticket, true));
EXPECT_TRUE(globalStopAllAdmissionGate().finishStopAll(
admission_ticket, true));
}
TEST_F(GrpcHeadServiceTest, UnconfirmedOperationalStopIsReported)
{
head_->stop_confirmed = false;
api::EmergencyStop_Request request;
request.mutable_header()->set_device_id("test-head");
api::EmergencyStop_Feedback response;
grpc::ServerContext context;
EXPECT_TRUE(service_->EmergencyStop(&context, &request, &response).ok());
EXPECT_FALSE(response.header().success());
EXPECT_EQ(head_->operational_stop_calls.load(), 1);
EXPECT_EQ(head_->lifecycle_stop_calls.load(), 0);
}
} // namespace
} // namespace cmvr::service

File diff suppressed because it is too large Load Diff

View File

@ -1,525 +0,0 @@
#include "service/grpc/server/include/grpc_robot_arm_teleop_backend.h"
#include <chrono>
#include <cstddef>
#include <memory>
#include <optional>
#include <string>
#include <thread>
#include <utility>
#include <vector>
#include <gtest/gtest.h>
namespace cmvr::service {
namespace {
class FakeRobotArm final : public device::RobotArm {
public:
FakeRobotArm()
{
id_ = "right_arm";
model_.name = id_;
model_.dof = 2;
model_.joint_names = {"joint_1", "joint_2"};
model_.joint_limits = {
{-1.0, 1.0, 2.0, 5.0, 10.0},
{-0.5, 0.5, 3.0, 6.0, 10.0}};
state_.connected = true;
state_.powered_on = true;
state_.robot_mode = device::RobotMode::Idle;
state_.safety_mode = device::SafetyMode::Normal;
state_.actual_joint_state.position = {0.0, 0.0};
state_.actual_joint_state.velocity = {0.0, 0.0};
state_.actual_joint_state.effort = {1.0, 2.0};
state_.actual_joint_state.sequence = 7;
state_.actual_joint_state.position_valid = true;
state_.actual_joint_state.velocity_valid = true;
state_.actual_joint_state.effort_valid = true;
}
std::string typeName() const override { return "FakeRobotArm"; }
device::RobotModel getRobotModel() const override { return model_; }
std::size_t getDof() const override { return model_.dof; }
device::ArmState getRobotState() const override
{
++get_state_calls;
return state_;
}
device::JointGroupState getJointState() const override
{
return state_.actual_joint_state;
}
device::CartesianPose getTcpPose(
device::FrameType = device::FrameType::Base) const override
{
return {};
}
device::RobotMode getRobotMode() const override
{
return state_.robot_mode;
}
device::SafetyMode getSafetyMode() const override
{
return state_.safety_mode;
}
device::ControlMode getControlMode() const override
{
return device::ControlMode::Servo;
}
bool supportsTeleopGroupServo() const noexcept override
{
return group_servo_capability;
}
device::JointEffortSource jointEffortSource() const noexcept override
{
return effort_source;
}
device::Result torqueOn() override
{
++torque_on_calls;
return device::Result::success();
}
device::Result torqueOff() override { return device::Result::success(); }
device::Result calibrateZeroQ(const std::string&) override
{
return device::Result::success();
}
device::Result emergencyStop() override
{
return device::Result::success();
}
device::Result protectiveStop() override
{
return device::Result::success();
}
device::Result setSpeedScaling(double) override
{
return device::Result::success();
}
double getSpeedScaling() const override { return 1.0; }
bool isProtectiveStopped() const override { return false; }
bool isEmergencyStopped() const override { return false; }
bool isFault() const override { return state_.fault; }
device::Result moveJ(
const device::JointPositionCommand&,
const device::MotionOptions&) override
{
return device::Result::success();
}
device::Result speedJ(
const device::JointVelocityCommand&, double, double) override
{
return device::Result::success();
}
device::Result stopJ(double) override
{
return device::Result::success();
}
device::Result moveL(
const device::CartesianPose&,
const device::MotionOptions&,
device::FrameType = device::FrameType::Base) override
{
return device::Result::success();
}
device::Result speedL(
const device::CartesianVelocity&,
double,
double,
device::FrameType = device::FrameType::Base) override
{
return device::Result::success();
}
device::Result stopL(std::optional<double> = std::nullopt) override
{
return device::Result::success();
}
device::Result stopMotion() override
{
++stop_motion_calls;
return stop_motion_result;
}
device::Result startServoMode(
const device::ServoOptions& options) override
{
++start_servo_calls;
last_servo_period = options.period;
return start_servo_result;
}
device::Result servoJ(
const device::JointPositionCommand& target) override
{
++servo_j_calls;
last_command = target.position;
if (servo_sleep.count() > 0) {
std::this_thread::sleep_for(servo_sleep);
}
return servo_j_result;
}
device::Result servoL(
const device::CartesianPose&,
device::FrameType = device::FrameType::Base) override
{
return device::Result::success();
}
device::Result servoSpeedJ(
const device::JointVelocityCommand&) override
{
return device::Result::success();
}
device::Result servoSpeedL(
const device::CartesianVelocity&,
device::FrameType = device::FrameType::Base) override
{
return device::Result::success();
}
device::Result stopServoMode() override
{
++stop_servo_calls;
return stop_servo_result;
}
device::Result connect(const std::string&, int) override
{
return device::Result::success();
}
device::Result disconnect() override
{
return device::Result::success();
}
bool isConnected() const override { return state_.connected; }
device::Result powerOn() override { return torqueOn(); }
device::Result powerOff() override { return torqueOff(); }
device::Result brakeRelease() override
{
return device::Result::success();
}
device::Result shutdown() override
{
return device::Result::success();
}
device::Result clearFault() override
{
return device::Result::success();
}
device::Result unlockProtectiveStop() override
{
return device::Result::success();
}
device::Result loadProgram(const std::string&) override
{
return device::Result::success();
}
device::Result playProgram() override
{
return device::Result::success();
}
device::Result pauseProgram() override
{
return device::Result::success();
}
device::Result stopProgram() override
{
return device::Result::success();
}
std::vector<double> ik(
const std::string&,
const std::string&,
const device::CartesianPose&) override
{
return {};
}
std::shared_ptr<cmvr::IKSolver> kinematicsSolver() const override
{
return nullptr;
}
device::CartesianPose fk(
const std::string&, const std::string&) override
{
return {};
}
device::CartesianPose fk(bool = true) override { return {}; }
device::CartesianVelocity getSpeedLCommandTwistBase() const override
{
return {};
}
bool busy() const override { return false; }
bool group_servo_capability{true};
device::JointEffortSource effort_source{
device::JointEffortSource::Unspecified};
mutable int get_state_calls{0};
int torque_on_calls{0};
int start_servo_calls{0};
int servo_j_calls{0};
int stop_motion_calls{0};
int stop_servo_calls{0};
double last_servo_period{0.0};
std::vector<double> last_command;
std::chrono::microseconds servo_sleep{0};
device::Result start_servo_result{device::Result::success()};
device::Result servo_j_result{device::Result::success()};
device::Result stop_motion_result{device::Result::success()};
device::Result stop_servo_result{device::Result::success()};
device::RobotModel model_;
device::ArmState state_;
};
config::ArmTeleopBackendConfig validConfig()
{
config::ArmTeleopBackendConfig config;
config.set_enable(true);
config.set_device_id("right_arm");
config.set_model_sha256(std::string(64, 'a'));
config.set_calibration_sha256(std::string(64, 'b'));
config.set_base_frame("base_link");
config.set_tool_frame("tool_link");
config.set_servo_period_s(0.01);
config.set_max_apply_duration_us(5000);
config.set_require_powered(true);
config.set_max_initial_position_step_rad(0.2);
config.set_max_position_step_rad(0.015);
return config;
}
arm_teleop::JointSetpoint setpoint(
const double first,
const double second,
const double first_velocity = 0.0,
const double second_velocity = 0.0)
{
arm_teleop::JointSetpoint value;
value.set_sequence(1);
value.add_position_rad(first);
value.add_position_rad(second);
value.add_velocity_rad_s(first_velocity);
value.add_velocity_rad_s(second_velocity);
value.set_valid_for_us(5000);
return value;
}
arm_teleop::OpenSession openRequest()
{
arm_teleop::OpenSession request;
request.set_requested_command_rate_hz(100);
return request;
}
std::chrono::steady_clock::time_point liveDeadline()
{
return std::chrono::steady_clock::now() +
std::chrono::seconds(1);
}
TEST(RobotArmTeleopBackendTest, RejectsArmWithoutExplicitGroupServoCapability)
{
auto arm = std::make_shared<FakeRobotArm>();
arm->group_servo_capability = false;
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
EXPECT_FALSE(backend->available());
EXPECT_NE(
backend->unavailableReason().find("capability"),
std::string::npos);
EXPECT_EQ(arm->start_servo_calls, 0);
}
TEST(RobotArmTeleopBackendTest, OpenStartsServoButNeverPowersArm)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->available())
<< backend->unavailableReason();
EXPECT_TRUE(backend->open(openRequest()).success);
EXPECT_EQ(arm->start_servo_calls, 1);
EXPECT_DOUBLE_EQ(arm->last_servo_period, 0.01);
EXPECT_EQ(arm->torque_on_calls, 0);
}
TEST(RobotArmTeleopBackendTest, AppliesSetpointAndAlwaysRunsBothStopPaths)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
ASSERT_TRUE(
backend->applySetpoint(
setpoint(0.1, 0.1), liveDeadline()).success);
EXPECT_EQ(arm->servo_j_calls, 1);
EXPECT_EQ(arm->last_command, (std::vector<double>{0.1, 0.1}));
arm->stop_motion_result = device::Result::failure(
device::ArmErrorCode::CommandFailed, "motion stop failed");
const auto result = backend->stop(
arm_teleop::STOP_REASON_OPERATOR_REQUEST, "test");
EXPECT_FALSE(result.success);
EXPECT_EQ(arm->stop_motion_calls, 1);
EXPECT_EQ(arm->stop_servo_calls, 1);
}
TEST(RobotArmTeleopBackendTest, RejectsInitialAndContinuousPositionSteps)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
EXPECT_EQ(
backend->applySetpoint(
setpoint(0.21, 0.0), liveDeadline()).status_code,
grpc::StatusCode::OUT_OF_RANGE);
ASSERT_TRUE(
backend->applySetpoint(
setpoint(0.1, 0.1), liveDeadline()).success);
EXPECT_EQ(
backend->applySetpoint(
setpoint(0.12, 0.1), liveDeadline()).status_code,
grpc::StatusCode::OUT_OF_RANGE);
EXPECT_EQ(arm->servo_j_calls, 1);
}
TEST(RobotArmTeleopBackendTest, RejectsJointPositionAndVelocityLimits)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
EXPECT_EQ(
backend->applySetpoint(
setpoint(1.01, 0.0), liveDeadline()).status_code,
grpc::StatusCode::OUT_OF_RANGE);
EXPECT_EQ(
backend->applySetpoint(
setpoint(0.0, 0.0, 2.01, 0.0), liveDeadline())
.status_code,
grpc::StatusCode::OUT_OF_RANGE);
EXPECT_EQ(arm->servo_j_calls, 0);
}
TEST(RobotArmTeleopBackendTest, DetectsServoApplyTimeout)
{
auto arm = std::make_shared<FakeRobotArm>();
auto config = validConfig();
config.set_max_apply_duration_us(500);
const auto backend =
makeRobotArmTeleopBackend(arm, config);
ASSERT_TRUE(backend->open(openRequest()).success);
arm->servo_sleep = std::chrono::microseconds(1500);
const auto result =
backend->applySetpoint(
setpoint(0.1, 0.1), liveDeadline());
EXPECT_FALSE(result.success);
EXPECT_EQ(
result.status_code,
grpc::StatusCode::DEADLINE_EXCEEDED);
EXPECT_EQ(arm->servo_j_calls, 1);
}
TEST(RobotArmTeleopBackendTest, RejectsInsufficientDeadlineBudgetBeforeDispatch)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
const auto result = backend->applySetpoint(
setpoint(0.1, 0.1),
std::chrono::steady_clock::now() +
std::chrono::microseconds(100));
EXPECT_FALSE(result.success);
EXPECT_EQ(
result.status_code,
grpc::StatusCode::DEADLINE_EXCEEDED);
EXPECT_EQ(arm->servo_j_calls, 0);
}
TEST(RobotArmTeleopBackendTest, ExpiredDeadlineNeverDispatchesServoCommand)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
const auto result = backend->applySetpoint(
setpoint(0.1, 0.1),
std::chrono::steady_clock::now());
EXPECT_FALSE(result.success);
EXPECT_EQ(
result.status_code,
grpc::StatusCode::DEADLINE_EXCEEDED);
EXPECT_EQ(arm->servo_j_calls, 0);
}
TEST(RobotArmTeleopBackendTest, RejectsUnsupportedRateAndEarlyRedispatch)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
auto too_fast = openRequest();
too_fast.set_requested_command_rate_hz(101);
EXPECT_EQ(
backend->open(too_fast).status_code,
grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_EQ(arm->start_servo_calls, 0);
ASSERT_TRUE(backend->open(openRequest()).success);
ASSERT_TRUE(
backend->applySetpoint(
setpoint(0.1, 0.1), liveDeadline()).success);
EXPECT_EQ(
backend->applySetpoint(
setpoint(0.105, 0.105), liveDeadline()).status_code,
grpc::StatusCode::RESOURCE_EXHAUSTED);
EXPECT_EQ(arm->servo_j_calls, 1);
}
TEST(RobotArmTeleopBackendTest, SnapshotUsesCacheAndHidesUnverifiedEffort)
{
auto arm = std::make_shared<FakeRobotArm>();
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
const int calls_after_open = arm->get_state_calls;
const auto first = backend->snapshot();
const auto second = backend->snapshot();
EXPECT_EQ(arm->get_state_calls, calls_after_open);
EXPECT_TRUE(first.joint_state.position_valid());
EXPECT_TRUE(first.joint_state.velocity_valid());
EXPECT_FALSE(first.joint_state.effort_valid());
EXPECT_EQ(first.joint_state.effort_nm_size(), 0);
EXPECT_EQ(
second.joint_state.effort_source(),
arm_teleop::EFFORT_SOURCE_UNSPECIFIED);
}
TEST(RobotArmTeleopBackendTest, PublishesEffortOnlyWithExplicitSource)
{
auto arm = std::make_shared<FakeRobotArm>();
arm->effort_source = device::JointEffortSource::JointSensor;
const auto backend =
makeRobotArmTeleopBackend(arm, validConfig());
ASSERT_TRUE(backend->open(openRequest()).success);
const auto snapshot = backend->snapshot();
EXPECT_TRUE(backend->supportsForceFeedback());
EXPECT_TRUE(snapshot.joint_state.effort_valid());
EXPECT_EQ(snapshot.joint_state.effort_nm_size(), 2);
EXPECT_EQ(
snapshot.joint_state.effort_source(),
arm_teleop::EFFORT_SOURCE_JOINT_SENSOR);
}
} // namespace
} // namespace cmvr::service

View File

@ -1,294 +0,0 @@
#include "service/grpc/server/include/grpc_security.h"
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include <google/protobuf/descriptor.h>
#include <gtest/gtest.h>
#include "cmvr/api/agv_service.pb.h"
#include "cmvr/api/arm_service.pb.h"
#include "cmvr/api/arm_teleop_v1.pb.h"
#include "cmvr/api/biohead_service.pb.h"
#include "cmvr/api/camera_service.pb.h"
#include "cmvr/api/dexhand_service.pb.h"
#include "cmvr/api/hlc_service.pb.h"
#include "cmvr/api/microphone_service.pb.h"
#include "cmvr/api/motor_service.pb.h"
#include "cmvr/api/speaker_service.pb.h"
#include "cmvr/api/system_service.pb.h"
#include "cmvr/api/test_service.pb.h"
namespace cmvr::service {
namespace {
GrpcMethodPolicy readPolicy()
{
return {
"/cmvr.api.SystemService/GetSystemInfo",
GrpcAccessClass::Read,
GrpcRole::Observer};
}
GrpcMethodPolicy recoveryPolicy()
{
return {
"/cmvr.api.SystemService/RecoverSafetyState",
GrpcAccessClass::Recover,
GrpcRole::SafetyAdmin};
}
class SafetyAdminProvider final : public GrpcAuthenticationProvider {
public:
GrpcAuthenticationResult authenticate(const GrpcCallFacts&) const override
{
GrpcPrincipal principal;
principal.id = "maintenance";
principal.method = GrpcAuthenticationMethod::StaticToken;
principal.authenticated = true;
principal.roles = {GrpcRole::SafetyAdmin};
return {std::move(principal), grpc::Status::OK};
}
};
TEST(GrpcSecurityConfigTest,
LegacyConfigPreservesAnonymousAccessButDisablesRecovery)
{
config::GRPCServerConfig config;
const auto result = resolveGrpcSecurityConfig(config, "0.0.0.0");
ASSERT_TRUE(result.valid) << result.error;
EXPECT_TRUE(result.config.legacy_compatibility);
EXPECT_TRUE(result.config.insecure_non_loopback);
EXPECT_EQ(
result.config.authentication, GrpcAuthenticationMethod::Disabled);
EXPECT_EQ(
result.config.recovery_exposure, GrpcRecoveryExposure::Disabled);
EXPECT_FALSE(result.warnings.empty());
}
TEST(GrpcSecurityConfigTest,
ExplicitNonLoopbackInsecureRequiresAcknowledgement)
{
config::GRPCServerConfig config;
auto* security = config.mutable_security();
security->set_transport_mode(config::GRPCSecurityConfig::INSECURE);
security->set_authentication_mode(config::GRPCSecurityConfig::DISABLED);
security->set_recovery_exposure(
config::GRPCSecurityConfig::RECOVERY_DISABLED);
const auto rejected = resolveGrpcSecurityConfig(config, "0.0.0.0");
EXPECT_FALSE(rejected.valid);
security->set_allow_insecure_non_loopback(true);
const auto accepted = resolveGrpcSecurityConfig(config, "0.0.0.0");
ASSERT_TRUE(accepted.valid) << accepted.error;
EXPECT_TRUE(accepted.config.insecure_non_loopback);
}
TEST(GrpcSecurityConfigTest,
UnsupportedAuthenticationNeverFallsBackToDisabled)
{
config::GRPCServerConfig config;
auto* security = config.mutable_security();
security->set_transport_mode(config::GRPCSecurityConfig::INSECURE);
security->set_authentication_mode(
config::GRPCSecurityConfig::STATIC_TOKEN);
security->set_recovery_exposure(
config::GRPCSecurityConfig::RECOVERY_AUTHORIZED);
const auto result = resolveGrpcSecurityConfig(config, "127.0.0.1");
EXPECT_FALSE(result.valid);
EXPECT_NE(result.error.find("DISABLED"), std::string::npos);
}
TEST(GrpcSecurityConfigTest, EnabledRecoveryRequiresPersistentAuditFile)
{
config::GRPCServerConfig config;
auto* security = config.mutable_security();
security->set_transport_mode(config::GRPCSecurityConfig::INSECURE);
security->set_authentication_mode(config::GRPCSecurityConfig::DISABLED);
security->set_recovery_exposure(
config::GRPCSecurityConfig::RECOVERY_LOCAL_ONLY);
const auto rejected =
resolveGrpcSecurityConfig(config, "127.0.0.1");
EXPECT_FALSE(rejected.valid);
EXPECT_NE(rejected.error.find("audit_file"), std::string::npos);
security->set_audit_file("/var/lib/cmvr-es/recovery-audit.jsonl");
const auto accepted =
resolveGrpcSecurityConfig(config, "127.0.0.1");
ASSERT_TRUE(accepted.valid) << accepted.error;
EXPECT_EQ(
accepted.config.recovery_audit_file,
"/var/lib/cmvr-es/recovery-audit.jsonl");
}
TEST(GrpcSecurityGatewayTest, DisabledProviderDoesNotTrustIdentityMetadata)
{
auto gateway = makeDefaultGrpcSecurityGateway();
GrpcCallFacts facts;
facts.peer = "ipv4:10.0.0.5:12345";
facts.metadata.emplace("principal", "safety-admin");
facts.metadata.emplace("role", "SafetyAdmin");
const auto call = gateway->beginCall(std::move(facts), readPolicy());
ASSERT_TRUE(call.allowed()) << call.status().error_message();
EXPECT_EQ(call.context().principal.id, "anonymous");
EXPECT_FALSE(call.context().principal.authenticated);
ASSERT_EQ(call.context().principal.roles.size(), 1U);
EXPECT_EQ(call.context().principal.roles.front(), GrpcRole::Anonymous);
}
TEST(GrpcSecurityGatewayTest, RecoveryIsDisabledBeforeLedgerAdmission)
{
auto gateway = makeDefaultGrpcSecurityGateway();
const auto call = gateway->beginCall(GrpcCallFacts{}, recoveryPolicy());
EXPECT_FALSE(call.allowed());
EXPECT_EQ(
call.status().error_code(), grpc::StatusCode::FAILED_PRECONDITION);
EXPECT_EQ(call.status().error_message(), "RECOVERY_RPC_DISABLED");
}
TEST(GrpcSecurityGatewayTest, LocalOnlyRecoveryUsesActualPeerClassification)
{
GrpcSecurityRuntimeConfig config;
config.recovery_exposure = GrpcRecoveryExposure::LocalOnly;
auto gateway = makeGrpcSecurityGateway(config);
GrpcCallFacts remote;
remote.peer = "ipv4:192.168.1.20:42000";
EXPECT_FALSE(gateway->beginCall(remote, recoveryPolicy()).allowed());
GrpcCallFacts local;
local.peer = "ipv4:127.0.0.1:42000";
EXPECT_TRUE(gateway->beginCall(local, recoveryPolicy()).allowed());
EXPECT_TRUE(isLocalGrpcPeer("ipv6:[::1]"));
EXPECT_TRUE(isLocalGrpcPeer("unix:/run/cmvr-es.sock"));
EXPECT_FALSE(isLocalGrpcPeer("ipv4:10.0.0.1:50051"));
}
TEST(GrpcSecurityGatewayTest, AuthorizedRecoveryAcceptsSafetyAdminProvider)
{
GrpcSecurityRuntimeConfig config;
config.authentication = GrpcAuthenticationMethod::StaticToken;
config.recovery_exposure = GrpcRecoveryExposure::Authorized;
auto gateway = std::make_shared<GrpcSecurityGateway>(
config,
std::make_shared<SafetyAdminProvider>(),
std::make_shared<CompatibilityGrpcAuthorizationPolicy>(
GrpcRecoveryExposure::Authorized));
const auto call = gateway->beginCall(GrpcCallFacts{}, recoveryPolicy());
ASSERT_TRUE(call.allowed()) << call.status().error_message();
EXPECT_EQ(call.context().principal.id, "maintenance");
}
TEST(GrpcSecurityGatewayTest, AuditUsesEffectiveServerPrincipal)
{
std::vector<GrpcSecurityAuditRecord> records;
GrpcSecurityRuntimeConfig config;
auto gateway = makeGrpcSecurityGateway(
config,
[&records](const GrpcSecurityAuditRecord& record) {
records.push_back(record);
});
GrpcCallFacts facts;
facts.metadata.emplace("x-correlation-id", "request-42");
ASSERT_TRUE(gateway->beginCall(std::move(facts), readPolicy()).allowed());
ASSERT_EQ(records.size(), 1U);
EXPECT_EQ(records.front().correlation_id, "request-42");
EXPECT_EQ(records.front().principal_id, "anonymous");
EXPECT_FALSE(records.front().authenticated);
}
TEST(GrpcMethodPolicyRegistryTest, RejectsDuplicatesAndSortsSnapshot)
{
GrpcMethodPolicyRegistry registry;
EXPECT_TRUE(registry.registerPolicy(recoveryPolicy()));
EXPECT_TRUE(registry.registerPolicy(readPolicy()));
EXPECT_FALSE(registry.registerPolicy(readPolicy()));
const auto policies = registry.snapshot();
ASSERT_EQ(policies.size(), 2U);
EXPECT_LT(policies[0].full_method_name, policies[1].full_method_name);
EXPECT_TRUE(registry.find(readPolicy().full_method_name).has_value());
EXPECT_FALSE(registry.find("/unknown/method").has_value());
}
TEST(GrpcMethodPolicyRegistryTest,
DefaultRegistryCoversEveryCompiledApiMethod)
{
const auto& registry = defaultGrpcMethodPolicyRegistry();
const auto* pool = google::protobuf::DescriptorPool::generated_pool();
const std::vector<std::string> services{
"cmvr.api.AgvService",
"cmvr.api.ArmService",
"cmvr.api.armteleop.v1.ArmTeleopService",
"cmvr.api.BioHeadService",
"cmvr.api.CameraService",
"cmvr.api.DexHandService",
"cmvr.api.HlcService",
"cmvr.api.MicPhoneService",
"cmvr.api.MotorService",
"cmvr.api.SpeakerService",
"cmvr.api.SystemService",
"cmvr.api.TestService"};
std::size_t method_count = 0;
for (const auto& service_name : services) {
const auto* service = pool->FindServiceByName(service_name);
ASSERT_NE(service, nullptr) << service_name;
for (int index = 0; index < service->method_count(); ++index) {
const auto* method = service->method(index);
const std::string full_name =
"/" + service_name + "/" +
std::string(method->name());
const auto policy = registry.find(full_name);
ASSERT_TRUE(policy.has_value()) << full_name;
EXPECT_EQ(
policy->mutating,
policy->access != GrpcAccessClass::Read) << full_name;
if (policy->mutating) {
EXPECT_NE(
policy->command_intent,
safety::CommandIntent::Observe) << full_name;
}
++method_count;
}
}
EXPECT_EQ(registry.snapshot().size(), method_count);
}
TEST(GrpcMethodPolicyRegistryTest,
TouchIsAControlActuationRatherThanAReadOnlySensorCall)
{
const auto policy = defaultGrpcMethodPolicyRegistry().find(
"/cmvr.api.HlcService/touch");
ASSERT_TRUE(policy.has_value());
EXPECT_EQ(policy->access, GrpcAccessClass::Mutate);
EXPECT_EQ(policy->command_intent, safety::CommandIntent::Actuate);
EXPECT_EQ(policy->policy_family, safety::SafetyPolicyFamily::Control);
EXPECT_TRUE(policy->mutating);
EXPECT_FALSE(policy->safety_lane);
}
TEST(GrpcMethodPolicyRegistryTest, UnregisteredMethodFailsClosed)
{
const auto call = beginRegisteredGrpcCall(
makeDefaultGrpcSecurityGateway(), nullptr,
"/cmvr.api.UnknownService/Mutate");
EXPECT_FALSE(call.allowed());
EXPECT_EQ(call.status().error_code(), grpc::StatusCode::INTERNAL);
}
} // namespace
} // namespace cmvr::service

File diff suppressed because it is too large Load Diff

View File

@ -1,279 +0,0 @@
#include "service/grpc/server/include/media_activity_coordinator.h"
#include <atomic>
#include <chrono>
#include <future>
#include <iostream>
#include <stdexcept>
#include <thread>
namespace {
bool check(const bool condition, const char* expression, const int line)
{
if (condition) {
return true;
}
std::cerr << "CHECK failed at line " << line << ": " << expression << '\n';
return false;
}
#define CHECK_TRUE(expression) \
do { \
if (!check(static_cast<bool>(expression), #expression, __LINE__)) { \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using namespace std::chrono_literals;
{
cmvr::service::MediaActivityCoordinator dispatch_coordinator;
auto dispatch_session = dispatch_coordinator.beginSession();
CHECK_TRUE(dispatch_session);
std::promise<void> dispatch_entered;
auto dispatch_entered_future = dispatch_entered.get_future();
std::promise<void> release_dispatch;
auto release_dispatch_future = release_dispatch.get_future();
auto dispatch_future = std::async(std::launch::async, [&] {
return dispatch_session.runIfCurrent([&] {
dispatch_entered.set_value();
release_dispatch_future.wait();
});
});
dispatch_entered_future.wait();
const auto dispatch_ticket = dispatch_coordinator.beginStopAll();
CHECK_TRUE(dispatch_ticket.valid());
CHECK_TRUE(!dispatch_coordinator.waitForStopped(
dispatch_ticket, 20ms));
release_dispatch.set_value();
CHECK_TRUE(dispatch_future.get());
dispatch_session.reset();
CHECK_TRUE(dispatch_coordinator.waitForStopped(dispatch_ticket, 100ms));
CHECK_TRUE(dispatch_coordinator.finishStopAll(dispatch_ticket, true));
}
{
cmvr::service::MediaActivityCoordinator generation_coordinator;
auto old_generation_session = generation_coordinator.beginSession();
CHECK_TRUE(old_generation_session);
const auto generation_ticket = generation_coordinator.beginStopAll();
CHECK_TRUE(generation_ticket.valid());
std::atomic<int> dispatched_operations{0};
CHECK_TRUE(!old_generation_session.runIfCurrent(
[&] { ++dispatched_operations; }));
CHECK_TRUE(dispatched_operations.load(std::memory_order_acquire) == 0);
old_generation_session.reset();
CHECK_TRUE(
generation_coordinator.waitForStopped(generation_ticket, 100ms));
CHECK_TRUE(generation_coordinator.finishStopAll(generation_ticket, true));
auto current_generation_session = generation_coordinator.beginSession();
CHECK_TRUE(current_generation_session);
CHECK_TRUE(current_generation_session.runIfCurrent(
[&] { ++dispatched_operations; }));
CHECK_TRUE(dispatched_operations.load(std::memory_order_acquire) == 1);
}
{
cmvr::service::MediaActivityCoordinator deferred_coordinator;
std::atomic<int> deferred_cancel_calls{0};
auto deferred_session = deferred_coordinator.beginSession(
[&] { ++deferred_cancel_calls; });
CHECK_TRUE(deferred_session);
const auto deferred_ticket =
deferred_coordinator.beginStopAll(true);
CHECK_TRUE(deferred_ticket.valid());
CHECK_TRUE(deferred_session.cancelled());
CHECK_TRUE(!deferred_session.runIfCurrent([] {}));
CHECK_TRUE(
deferred_cancel_calls.load(std::memory_order_acquire) == 0);
CHECK_TRUE(
deferred_coordinator.requestCancellation(deferred_ticket));
CHECK_TRUE(
deferred_cancel_calls.load(std::memory_order_acquire) == 1);
CHECK_TRUE(
deferred_coordinator.requestCancellation(deferred_ticket));
CHECK_TRUE(
deferred_cancel_calls.load(std::memory_order_acquire) == 1);
deferred_session.reset();
CHECK_TRUE(
deferred_coordinator.waitForStopped(deferred_ticket, 100ms));
CHECK_TRUE(
deferred_coordinator.finishStopAll(deferred_ticket, true));
CHECK_TRUE(
!deferred_coordinator.requestCancellation(deferred_ticket));
}
{
cmvr::service::MediaActivityCoordinator parallel_coordinator;
std::promise<void> blocked_cancel_entered;
auto blocked_cancel_entered_future =
blocked_cancel_entered.get_future();
std::promise<void> release_blocked_cancel;
auto release_blocked_cancel_future =
release_blocked_cancel.get_future().share();
std::promise<void> peer_cancel_entered;
auto peer_cancel_entered_future = peer_cancel_entered.get_future();
std::atomic<int> blocked_cancel_calls{0};
std::atomic<int> peer_cancel_calls{0};
auto blocked_session = parallel_coordinator.beginSession([&] {
++blocked_cancel_calls;
blocked_cancel_entered.set_value();
release_blocked_cancel_future.wait();
});
auto peer_session = parallel_coordinator.beginSession([&] {
++peer_cancel_calls;
peer_cancel_entered.set_value();
});
CHECK_TRUE(blocked_session && peer_session);
const auto ticket = parallel_coordinator.beginStopAll(true);
std::vector<cmvr::service::DeferredStopOperation> operations;
std::string collect_error;
CHECK_TRUE(parallel_coordinator.collectCancellationOperations(
ticket, operations, &collect_error));
CHECK_TRUE(collect_error.empty());
CHECK_TRUE(operations.size() == 2);
CHECK_TRUE(operations[0].resource_key != operations[1].resource_key);
auto first = std::async(std::launch::async, operations[0].operation);
auto second = std::async(std::launch::async, operations[1].operation);
CHECK_TRUE(blocked_cancel_entered_future.wait_for(100ms) ==
std::future_status::ready);
CHECK_TRUE(peer_cancel_entered_future.wait_for(100ms) ==
std::future_status::ready);
release_blocked_cancel.set_value();
CHECK_TRUE(first.get().success);
CHECK_TRUE(second.get().success);
CHECK_TRUE(operations[0].operation().success);
CHECK_TRUE(operations[1].operation().success);
CHECK_TRUE(blocked_cancel_calls.load() == 1);
CHECK_TRUE(peer_cancel_calls.load() == 1);
blocked_session.reset();
peer_session.reset();
CHECK_TRUE(parallel_coordinator.waitForStopped(ticket, 100ms));
CHECK_TRUE(parallel_coordinator.finishStopAll(ticket, true));
CHECK_TRUE(!parallel_coordinator.collectCancellationOperations(
ticket, operations, &collect_error));
CHECK_TRUE(!collect_error.empty());
}
{
cmvr::service::MediaActivityCoordinator exception_coordinator;
std::atomic<int> throwing_cancel_calls{0};
auto throwing_session = exception_coordinator.beginSession([&] {
++throwing_cancel_calls;
throw std::runtime_error("cancel failed");
});
CHECK_TRUE(throwing_session);
const auto ticket = exception_coordinator.beginStopAll(true);
std::vector<cmvr::service::DeferredStopOperation> operations;
CHECK_TRUE(exception_coordinator.collectCancellationOperations(
ticket, operations));
CHECK_TRUE(operations.size() == 1);
const auto result = operations[0].operation();
const auto cached_result = operations[0].operation();
CHECK_TRUE(!result.success);
CHECK_TRUE(result.detail.find("cancel failed") != std::string::npos);
CHECK_TRUE(cached_result.detail == result.detail);
CHECK_TRUE(throwing_cancel_calls.load() == 1);
throwing_session.reset();
CHECK_TRUE(exception_coordinator.waitForStopped(ticket, 100ms));
CHECK_TRUE(!exception_coordinator.finishStopAll(ticket, false));
}
{
cmvr::service::DeferredStopOperation detached_operation;
cmvr::service::MediaActivityCoordinator::Session retained_session;
std::atomic<int> detached_cancel_calls{0};
{
cmvr::service::MediaActivityCoordinator ephemeral_coordinator;
retained_session = ephemeral_coordinator.beginSession(
[&] { ++detached_cancel_calls; });
const auto ticket =
ephemeral_coordinator.beginStopAll(true);
std::vector<cmvr::service::DeferredStopOperation> operations;
CHECK_TRUE(
ephemeral_coordinator.collectCancellationOperations(
ticket, operations));
CHECK_TRUE(operations.size() == 1);
detached_operation = std::move(operations[0]);
}
CHECK_TRUE(detached_operation.operation().success);
CHECK_TRUE(detached_cancel_calls.load() == 1);
retained_session.reset();
}
cmvr::service::MediaActivityCoordinator coordinator;
std::atomic<int> cancel_calls{0};
auto old_session = coordinator.beginSession([&] { ++cancel_calls; });
CHECK_TRUE(old_session);
CHECK_TRUE(old_session.claimExclusiveResource("speaker:test"));
auto competing_session = coordinator.beginSession();
CHECK_TRUE(competing_session);
CHECK_TRUE(!competing_session.claimExclusiveResource("speaker:test"));
competing_session.reset();
const auto ticket = coordinator.beginStopAll();
CHECK_TRUE(ticket.valid());
CHECK_TRUE(cancel_calls.load(std::memory_order_acquire) == 1);
CHECK_TRUE(old_session.cancelled());
CHECK_TRUE(!old_session.runIfCurrent([] {}));
CHECK_TRUE(!coordinator.beginSession());
CHECK_TRUE(!coordinator.waitForStopped(ticket, 5ms));
old_session.reset();
CHECK_TRUE(coordinator.waitForStopped(ticket, 100ms));
CHECK_TRUE(coordinator.finishStopAll(ticket, true));
auto resumed_session = coordinator.beginSession();
CHECK_TRUE(resumed_session);
CHECK_TRUE(resumed_session.claimExclusiveResource("speaker:test"));
const auto concurrent_ticket_a = coordinator.beginStopAll();
const auto concurrent_ticket_b = coordinator.beginStopAll();
resumed_session.reset();
CHECK_TRUE(coordinator.waitForStopped(concurrent_ticket_a, 100ms));
CHECK_TRUE(coordinator.finishStopAll(concurrent_ticket_a, true));
CHECK_TRUE(!coordinator.beginSession());
CHECK_TRUE(coordinator.finishStopAll(concurrent_ticket_b, true));
CHECK_TRUE(coordinator.beginSession());
{
cmvr::service::MediaActivityCoordinator detailed_coordinator;
const auto first = detailed_coordinator.beginStopAll(true);
const auto second = detailed_coordinator.beginStopAll(true);
const auto first_result =
detailed_coordinator.finishStopAllDetailed(first, true);
CHECK_TRUE(first_result.ticket_consumed);
CHECK_TRUE(first_result.participant_stopped);
CHECK_TRUE(!first_result.admission_resumed);
const auto second_result =
detailed_coordinator.finishStopAllDetailed(second, true);
CHECK_TRUE(second_result.ticket_consumed);
CHECK_TRUE(second_result.participant_stopped);
CHECK_TRUE(second_result.admission_resumed);
CHECK_TRUE(detailed_coordinator.beginSession());
}
std::cout << "media_activity_coordinator_test: PASS\n";
return 0;
}

View File

@ -1,283 +0,0 @@
#include "service/grpc/server/include/motor_activity_coordinator.h"
#include <atomic>
#include <chrono>
#include <future>
#include <iostream>
#include <stdexcept>
#include <thread>
namespace {
bool check(const bool condition, const char* expression, const int line)
{
if (condition) {
return true;
}
std::cerr << "CHECK failed at line " << line << ": " << expression << '\n';
return false;
}
#define CHECK_TRUE(expression) \
do { \
if (!check(static_cast<bool>(expression), #expression, __LINE__)) { \
return 1; \
} \
} while (false)
} // namespace
int main()
{
using namespace std::chrono_literals;
using cmvr::service::MotorActivityCoordinator;
MotorActivityCoordinator coordinator;
std::atomic<int> cancel_calls{0};
std::atomic<int> quick_stop_calls{0};
std::atomic<bool> busy{true};
auto registration = coordinator.registerControl(
[&] { ++cancel_calls; },
[&] {
++quick_stop_calls;
return true;
},
[&] { return !busy.load(std::memory_order_acquire); },
"test motor");
CHECK_TRUE(registration);
const auto ticket = coordinator.beginStopAll();
CHECK_TRUE(ticket.valid());
CHECK_TRUE(cancel_calls.load(std::memory_order_acquire) == 1);
CHECK_TRUE(!coordinator.lockAdmission().accepting());
std::string initial_error;
CHECK_TRUE(coordinator.requestStop(ticket, &initial_error));
CHECK_TRUE(initial_error.empty());
CHECK_TRUE(quick_stop_calls.load(std::memory_order_acquire) == 1);
auto stop_future = std::async(std::launch::async, [&] {
std::string error;
return coordinator.waitForStopped(ticket, 1s, &error);
});
CHECK_TRUE(stop_future.wait_for(20ms) == std::future_status::timeout);
busy.store(false, std::memory_order_release);
coordinator.notifyStateChanged();
CHECK_TRUE(stop_future.get());
CHECK_TRUE(coordinator.finishStopAll(ticket, true));
CHECK_TRUE(coordinator.lockAdmission().accepting());
std::atomic<int> quick_stops_in_flight{0};
std::atomic<int> maximum_quick_stops{0};
auto make_serial_registration = [&](const char* description) {
return coordinator.registerControl(
[] {},
[&] {
const int active = ++quick_stops_in_flight;
int maximum = maximum_quick_stops.load();
while (maximum < active &&
!maximum_quick_stops.compare_exchange_weak(
maximum, active)) {
}
std::this_thread::sleep_for(5ms);
--quick_stops_in_flight;
return true;
},
[] { return true; },
description);
};
auto serial_a = make_serial_registration("serial motor a");
auto serial_b = make_serial_registration("serial motor b");
CHECK_TRUE(serial_a && serial_b);
const auto serial_ticket = coordinator.beginStopAll();
CHECK_TRUE(serial_ticket.valid());
CHECK_TRUE(coordinator.stopAndWait(serial_ticket, 1s));
CHECK_TRUE(maximum_quick_stops.load(std::memory_order_acquire) == 1);
CHECK_TRUE(coordinator.finishStopAll(serial_ticket, true));
{
MotorActivityCoordinator parallel_coordinator;
std::promise<void> blocked_stop_entered;
auto blocked_stop_entered_future =
blocked_stop_entered.get_future();
std::promise<void> release_blocked_stop;
auto release_blocked_stop_future =
release_blocked_stop.get_future().share();
std::promise<void> peer_stop_entered;
auto peer_stop_entered_future = peer_stop_entered.get_future();
std::atomic<int> blocked_cancel_calls{0};
std::atomic<int> blocked_stop_calls{0};
std::atomic<int> peer_cancel_calls{0};
std::atomic<int> peer_stop_calls{0};
auto blocked = parallel_coordinator.registerControl(
[&] { ++blocked_cancel_calls; },
[&] {
if (blocked_cancel_calls.load() != 1) {
return false;
}
++blocked_stop_calls;
blocked_stop_entered.set_value();
release_blocked_stop_future.wait();
return true;
},
[] { return true; },
"blocked motor");
auto peer = parallel_coordinator.registerControl(
[&] { ++peer_cancel_calls; },
[&] {
if (peer_cancel_calls.load() != 1) {
return false;
}
++peer_stop_calls;
peer_stop_entered.set_value();
return true;
},
[] { return true; },
"peer motor");
CHECK_TRUE(blocked && peer);
const auto parallel_ticket =
parallel_coordinator.beginStopAll(true);
CHECK_TRUE(parallel_ticket.valid());
CHECK_TRUE(blocked_cancel_calls.load() == 0);
CHECK_TRUE(peer_cancel_calls.load() == 0);
std::vector<cmvr::service::DeferredStopOperation> operations;
std::string collect_error;
CHECK_TRUE(parallel_coordinator.collectStopOperations(
parallel_ticket, operations, &collect_error));
CHECK_TRUE(collect_error.empty());
CHECK_TRUE(operations.size() == 2);
CHECK_TRUE(operations[0].resource_key != operations[1].resource_key);
auto first = std::async(std::launch::async, operations[0].operation);
auto second = std::async(std::launch::async, operations[1].operation);
CHECK_TRUE(blocked_stop_entered_future.wait_for(100ms) ==
std::future_status::ready);
CHECK_TRUE(peer_stop_entered_future.wait_for(100ms) ==
std::future_status::ready);
release_blocked_stop.set_value();
CHECK_TRUE(first.get().success);
CHECK_TRUE(second.get().success);
CHECK_TRUE(operations[0].operation().success);
CHECK_TRUE(operations[1].operation().success);
CHECK_TRUE(blocked_cancel_calls.load() == 1);
CHECK_TRUE(blocked_stop_calls.load() == 1);
CHECK_TRUE(peer_cancel_calls.load() == 1);
CHECK_TRUE(peer_stop_calls.load() == 1);
CHECK_TRUE(parallel_coordinator.finishStopAll(
parallel_ticket, true));
}
{
MotorActivityCoordinator exception_coordinator;
std::atomic<int> cancel_calls_for_exception{0};
std::atomic<int> stop_calls_after_exception{0};
auto throwing = exception_coordinator.registerControl(
[&] {
++cancel_calls_for_exception;
throw std::runtime_error("cancel failed");
},
[&] {
++stop_calls_after_exception;
throw std::runtime_error("quick-stop failed");
return false;
},
[] { return true; },
"throwing motor");
CHECK_TRUE(throwing);
const auto exception_ticket =
exception_coordinator.beginStopAll(true);
std::vector<cmvr::service::DeferredStopOperation> operations;
CHECK_TRUE(exception_coordinator.collectStopOperations(
exception_ticket, operations));
CHECK_TRUE(operations.size() == 1);
const auto first_result = operations[0].operation();
const auto cached_result = operations[0].operation();
CHECK_TRUE(!first_result.success);
CHECK_TRUE(first_result.detail.find("cancel failed") !=
std::string::npos);
CHECK_TRUE(first_result.detail.find("quick-stop failed") !=
std::string::npos);
CHECK_TRUE(cached_result.detail == first_result.detail);
CHECK_TRUE(cancel_calls_for_exception.load() == 1);
CHECK_TRUE(stop_calls_after_exception.load() == 1);
CHECK_TRUE(!exception_coordinator.finishStopAll(
exception_ticket, false));
}
{
cmvr::service::DeferredStopOperation detached_operation;
MotorActivityCoordinator::Registration retained_registration;
std::atomic<int> detached_cancel_calls{0};
std::atomic<int> detached_stop_calls{0};
{
MotorActivityCoordinator ephemeral_coordinator;
retained_registration = ephemeral_coordinator.registerControl(
[&] { ++detached_cancel_calls; },
[&] {
++detached_stop_calls;
return true;
},
[] { return true; },
"detached motor");
const auto ticket =
ephemeral_coordinator.beginStopAll(true);
std::vector<cmvr::service::DeferredStopOperation> operations;
CHECK_TRUE(ephemeral_coordinator.collectStopOperations(
ticket, operations));
CHECK_TRUE(operations.size() == 1);
detached_operation = std::move(operations[0]);
}
CHECK_TRUE(detached_operation.operation().success);
CHECK_TRUE(detached_cancel_calls.load() == 1);
CHECK_TRUE(detached_stop_calls.load() == 1);
retained_registration.reset();
}
std::atomic<bool> stop_succeeds{false};
auto failing = coordinator.registerControl(
[] {},
[&] { return stop_succeeds.load(std::memory_order_acquire); },
[] { return true; },
"failing motor");
CHECK_TRUE(failing);
const auto failed_ticket = coordinator.beginStopAll();
CHECK_TRUE(failed_ticket.valid());
std::string error;
CHECK_TRUE(!coordinator.stopAndWait(failed_ticket, 100ms, &error));
CHECK_TRUE(!error.empty());
CHECK_TRUE(!coordinator.finishStopAll(failed_ticket, false));
CHECK_TRUE(!coordinator.lockAdmission().accepting());
stop_succeeds.store(true, std::memory_order_release);
const auto recovery_ticket = coordinator.beginStopAll();
CHECK_TRUE(recovery_ticket.valid());
CHECK_TRUE(coordinator.stopAndWait(recovery_ticket, 1s, &error));
CHECK_TRUE(coordinator.finishStopAll(recovery_ticket, true));
CHECK_TRUE(coordinator.lockAdmission().accepting());
{
MotorActivityCoordinator detailed_coordinator;
const auto first = detailed_coordinator.beginStopAll(true);
const auto second = detailed_coordinator.beginStopAll(true);
const auto first_result =
detailed_coordinator.finishStopAllDetailed(first, true);
CHECK_TRUE(first_result.ticket_consumed);
CHECK_TRUE(first_result.participant_stopped);
CHECK_TRUE(!first_result.admission_resumed);
const auto second_result =
detailed_coordinator.finishStopAllDetailed(second, true);
CHECK_TRUE(second_result.ticket_consumed);
CHECK_TRUE(second_result.participant_stopped);
CHECK_TRUE(second_result.admission_resumed);
CHECK_TRUE(detailed_coordinator.lockAdmission().accepting());
}
std::cout << "motor_activity_coordinator_test: PASS\n";
return 0;
}

View File

@ -1,104 +0,0 @@
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
#include <gtest/gtest.h>
namespace cmvr::service {
namespace {
TEST(StopAllAdmissionGateTest, SuccessfulRoundReopensAdmission)
{
StopAllAdmissionGate gate;
{
const auto before = gate.lockAdmission();
EXPECT_TRUE(before.accepting());
}
const auto ticket = gate.beginStopAll();
ASSERT_TRUE(ticket.valid());
{
const auto blocked = gate.lockAdmission();
EXPECT_FALSE(blocked.accepting());
EXPECT_EQ(blocked.generation(), ticket.generation);
}
EXPECT_TRUE(gate.finishStopAll(ticket, true));
EXPECT_TRUE(gate.lockAdmission().accepting());
}
TEST(StopAllAdmissionGateTest, FailedRoundStaysClosedAndCanBeRecovered)
{
StopAllAdmissionGate gate;
const auto failed_ticket = gate.beginStopAll();
ASSERT_TRUE(failed_ticket.valid());
EXPECT_FALSE(gate.finishStopAll(failed_ticket, false));
EXPECT_FALSE(gate.lockAdmission().accepting());
const auto recovery_ticket = gate.beginStopAll();
ASSERT_TRUE(recovery_ticket.valid());
EXPECT_TRUE(gate.finishStopAll(recovery_ticket, true));
EXPECT_TRUE(gate.lockAdmission().accepting());
}
TEST(StopAllAdmissionGateTest, EveryConcurrentParticipantMustSucceed)
{
StopAllAdmissionGate gate;
const auto first = gate.beginStopAll();
const auto second = gate.beginStopAll();
ASSERT_TRUE(first.valid());
ASSERT_TRUE(second.valid());
EXPECT_TRUE(gate.finishStopAll(first, true));
EXPECT_FALSE(gate.lockAdmission().accepting());
EXPECT_FALSE(gate.finishStopAll(second, false));
EXPECT_FALSE(gate.lockAdmission().accepting());
}
TEST(StopAllAdmissionGateTest,
DetailedFinishDoesNotReportRecoveryAfterAnotherParticipantFailed)
{
StopAllAdmissionGate gate;
const auto system_ticket = gate.beginStopAll();
const auto failed_participant = gate.beginStopAll();
const auto failed_result =
gate.finishStopAllDetailed(failed_participant, false);
EXPECT_TRUE(failed_result.ticket_consumed);
EXPECT_FALSE(failed_result.admission_reopened);
const auto system_result =
gate.finishStopAllDetailed(system_ticket, true);
EXPECT_TRUE(system_result.ticket_consumed);
EXPECT_FALSE(system_result.admission_reopened);
EXPECT_FALSE(gate.lockAdmission().accepting());
}
TEST(StopAllAdmissionGateTest,
DetailedFinishSeparatesConsumptionFromOutstandingParticipants)
{
StopAllAdmissionGate gate;
const auto first = gate.beginStopAll();
const auto second = gate.beginStopAll();
const auto first_result = gate.finishStopAllDetailed(first, true);
EXPECT_TRUE(first_result.ticket_consumed);
EXPECT_FALSE(first_result.admission_reopened);
const auto second_result = gate.finishStopAllDetailed(second, true);
EXPECT_TRUE(second_result.ticket_consumed);
EXPECT_TRUE(second_result.admission_reopened);
EXPECT_TRUE(gate.lockAdmission().accepting());
}
TEST(StopAllAdmissionGateTest, TestClearInvalidatesOutstandingTickets)
{
StopAllAdmissionGate gate;
const auto stale = gate.beginStopAll();
ASSERT_TRUE(stale.valid());
gate.clearForTesting();
EXPECT_TRUE(gate.lockAdmission().accepting());
EXPECT_FALSE(gate.finishStopAll(stale, true));
}
} // namespace
} // namespace cmvr::service

View File

@ -1,399 +0,0 @@
#include "service/grpc/stop_all/include/stop_operation_dispatcher.h"
#include <gtest/gtest.h>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <future>
#include <memory>
#include <mutex>
#include <stdexcept>
#include <string>
#include <thread>
#include <utility>
#include <vector>
namespace cmvr::service {
namespace {
using namespace std::chrono_literals;
TEST(StopOperationDispatcherTest, RejectsEmptyKeysAndOperations)
{
StopOperationDispatcher dispatcher;
StopOperationDispatcher::Operation empty_operation;
const auto empty_key = dispatcher.submit("", [] {
return StopOperationDispatcher::OperationResult{true, {}};
});
const auto empty_callback = dispatcher.submit(
"arm:one", std::move(empty_operation));
EXPECT_FALSE(empty_key.valid());
EXPECT_FALSE(empty_callback.valid());
const auto invalid_result = empty_key.waitUntil(
StopOperationDispatcher::Clock::now());
EXPECT_FALSE(invalid_result.completed);
EXPECT_FALSE(invalid_result.result);
EXPECT_FALSE(invalid_result.detail.empty());
}
TEST(StopOperationDispatcherTest, ReturnsOperationOutcome)
{
StopOperationDispatcher dispatcher;
const auto handle = dispatcher.submit("arm:one", [] {
return StopOperationDispatcher::OperationResult{
false, "driver did not confirm idle"};
});
ASSERT_TRUE(handle.valid());
const auto result = handle.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(result.completed);
EXPECT_FALSE(result.result);
EXPECT_EQ(result.detail, "driver did not confirm idle");
}
TEST(StopOperationDispatcherTest, TimeoutDoesNotCancelTheJob)
{
StopOperationDispatcher dispatcher;
std::promise<void> release;
auto released = release.get_future().share();
const auto handle = dispatcher.submit("agv:one", [released] {
released.wait();
return StopOperationDispatcher::OperationResult{true, "stopped"};
});
const auto timed_out = handle.waitUntil(
StopOperationDispatcher::Clock::now() + 20ms);
EXPECT_FALSE(timed_out.completed);
EXPECT_FALSE(timed_out.result);
release.set_value();
const auto completed = handle.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(completed.completed);
EXPECT_TRUE(completed.result);
EXPECT_EQ(completed.detail, "stopped");
}
TEST(StopOperationDispatcherTest,
RunningJobKeepsItsOriginalTimeoutDetailProvider)
{
StopOperationDispatcher dispatcher;
std::promise<void> release;
auto released = release.get_future().share();
std::atomic<int> first_operation_calls{0};
std::atomic<int> duplicate_operation_calls{0};
std::atomic<int> first_provider_calls{0};
std::atomic<int> duplicate_provider_calls{0};
const auto first = dispatcher.submit(
"arm:one",
[&] {
++first_operation_calls;
released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
},
[&] {
++first_provider_calls;
return std::string("first job is waiting for its handler");
});
const auto duplicate = dispatcher.submit(
"arm:one",
[&] {
++duplicate_operation_calls;
return StopOperationDispatcher::OperationResult{true, {}};
},
[&] {
++duplicate_provider_calls;
return std::string("duplicate submission detail");
});
const auto first_timeout = first.waitUntil(
StopOperationDispatcher::Clock::now() + 20ms);
const auto duplicate_timeout = duplicate.waitUntil(
StopOperationDispatcher::Clock::now() + 20ms);
release.set_value();
const auto completed = first.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_FALSE(first_timeout.completed);
EXPECT_EQ(
first_timeout.detail, "first job is waiting for its handler");
EXPECT_FALSE(duplicate_timeout.completed);
EXPECT_EQ(
duplicate_timeout.detail, "first job is waiting for its handler");
EXPECT_TRUE(completed.completed);
EXPECT_TRUE(completed.result);
EXPECT_EQ(first_operation_calls.load(), 1);
EXPECT_EQ(duplicate_operation_calls.load(), 0);
EXPECT_EQ(first_provider_calls.load(), 2);
EXPECT_EQ(duplicate_provider_calls.load(), 0);
}
TEST(StopOperationDispatcherTest,
ThrowingTimeoutDetailProviderFallsBackToGenericDetail)
{
StopOperationDispatcher dispatcher;
std::promise<void> release;
auto released = release.get_future().share();
const auto handle = dispatcher.submit(
"arm:one",
[released] {
released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
},
[]() -> std::string {
throw std::runtime_error("diagnostic provider failed");
});
const auto timed_out = handle.waitUntil(
StopOperationDispatcher::Clock::now() + 20ms);
release.set_value();
EXPECT_FALSE(timed_out.completed);
EXPECT_FALSE(timed_out.result);
EXPECT_EQ(
timed_out.detail,
"stop operation did not complete before the deadline");
}
TEST(StopOperationDispatcherTest, RunningSubmissionsForAKeyShareOneJob)
{
StopOperationDispatcher dispatcher;
std::promise<void> started;
std::promise<void> release;
auto released = release.get_future().share();
std::atomic<int> first_calls{0};
std::atomic<int> duplicate_calls{0};
const auto first = dispatcher.submit("arm:one", [&] {
++first_calls;
started.set_value();
released.wait();
return StopOperationDispatcher::OperationResult{true, "first"};
});
ASSERT_EQ(started.get_future().wait_for(1s), std::future_status::ready);
const auto duplicate = dispatcher.submit("arm:one", [&] {
++duplicate_calls;
return StopOperationDispatcher::OperationResult{false, "duplicate"};
});
release.set_value();
const auto first_result = first.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
const auto duplicate_result = duplicate.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(first_result.completed);
EXPECT_TRUE(first_result.result);
EXPECT_EQ(first_result.detail, "first");
EXPECT_TRUE(duplicate_result.completed);
EXPECT_TRUE(duplicate_result.result);
EXPECT_EQ(duplicate_result.detail, "first");
EXPECT_EQ(first_calls.load(), 1);
EXPECT_EQ(duplicate_calls.load(), 0);
}
TEST(StopOperationDispatcherTest, ConcurrentSubmissionsForAKeyShareOneJob)
{
StopOperationDispatcher dispatcher;
constexpr int submitter_count = 12;
std::promise<void> release;
auto released = release.get_future().share();
std::atomic<int> operation_calls{0};
std::mutex handles_mutex;
std::vector<StopOperationDispatcher::Handle> handles;
std::vector<std::thread> submitters;
handles.reserve(submitter_count);
submitters.reserve(submitter_count);
for (int index = 0; index < submitter_count; ++index) {
submitters.emplace_back([&] {
auto handle = dispatcher.submit("dexhand:one", [&] {
++operation_calls;
released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
});
std::lock_guard lock(handles_mutex);
handles.emplace_back(std::move(handle));
});
}
for (auto& submitter : submitters) {
submitter.join();
}
release.set_value();
ASSERT_EQ(handles.size(), static_cast<std::size_t>(submitter_count));
const auto deadline = StopOperationDispatcher::Clock::now() + 1s;
for (const auto& handle : handles) {
const auto result = handle.waitUntil(deadline);
EXPECT_TRUE(result.completed);
EXPECT_TRUE(result.result);
}
EXPECT_EQ(operation_calls.load(), 1);
}
TEST(StopOperationDispatcherTest, CompletedJobIsReapedBeforeNextSubmission)
{
StopOperationDispatcher dispatcher;
std::atomic<int> calls{0};
const auto first = dispatcher.submit("arm:one", [&] {
++calls;
return StopOperationDispatcher::OperationResult{true, "round one"};
});
const auto first_result = first.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
ASSERT_TRUE(first_result.completed);
ASSERT_TRUE(first_result.result);
const auto second = dispatcher.submit("arm:one", [&] {
++calls;
return StopOperationDispatcher::OperationResult{true, "round two"};
});
const auto second_result = second.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(second_result.completed);
EXPECT_TRUE(second_result.result);
EXPECT_EQ(second_result.detail, "round two");
EXPECT_EQ(calls.load(), 2);
EXPECT_EQ(first.waitUntil(
StopOperationDispatcher::Clock::now()).detail, "round one");
}
TEST(StopOperationDispatcherTest, SubmissionReapsAllCompletedJobs)
{
StopOperationDispatcher dispatcher;
constexpr int completed_job_count = 24;
std::promise<void> release;
auto released = release.get_future().share();
std::vector<StopOperationDispatcher::Handle> handles;
handles.reserve(completed_job_count);
for (int index = 0; index < completed_job_count; ++index) {
handles.emplace_back(dispatcher.submit(
"arm:" + std::to_string(index), [released] {
released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
}));
}
ASSERT_EQ(dispatcher.jobCountForTesting(),
static_cast<std::size_t>(completed_job_count));
release.set_value();
const auto deadline = StopOperationDispatcher::Clock::now() + 1s;
for (const auto& handle : handles) {
ASSERT_TRUE(handle.waitUntil(deadline).completed);
}
ASSERT_EQ(dispatcher.jobCountForTesting(),
static_cast<std::size_t>(completed_job_count));
std::promise<void> trigger_started;
std::promise<void> release_trigger;
auto trigger_released = release_trigger.get_future().share();
const auto trigger = dispatcher.submit(
"agv:cleanup-trigger", [&] {
trigger_started.set_value();
trigger_released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
});
ASSERT_EQ(trigger_started.get_future().wait_for(1s),
std::future_status::ready);
EXPECT_EQ(dispatcher.jobCountForTesting(), 1U);
release_trigger.set_value();
EXPECT_TRUE(trigger.waitUntil(
StopOperationDispatcher::Clock::now() + 1s).result);
}
TEST(StopOperationDispatcherTest, DifferentKeysRunIndependently)
{
StopOperationDispatcher dispatcher;
std::promise<void> release_first;
auto first_released = release_first.get_future().share();
std::promise<void> second_started;
const auto first = dispatcher.submit("camera:one", [first_released] {
first_released.wait();
return StopOperationDispatcher::OperationResult{true, {}};
});
const auto second = dispatcher.submit("speaker:one", [&] {
second_started.set_value();
return StopOperationDispatcher::OperationResult{true, {}};
});
EXPECT_EQ(
second_started.get_future().wait_for(1s),
std::future_status::ready);
const auto second_result = second.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(second_result.completed);
EXPECT_TRUE(second_result.result);
release_first.set_value();
EXPECT_TRUE(first.waitUntil(
StopOperationDispatcher::Clock::now() + 1s).result);
}
TEST(StopOperationDispatcherTest, ConvertsOperationExceptionsToFailures)
{
StopOperationDispatcher dispatcher;
const auto standard = dispatcher.submit("arm:one", []()
-> StopOperationDispatcher::OperationResult {
throw std::runtime_error("transport failed");
});
const auto unknown = dispatcher.submit("agv:one", []()
-> StopOperationDispatcher::OperationResult {
throw 42;
});
const auto deadline = StopOperationDispatcher::Clock::now() + 1s;
const auto standard_result = standard.waitUntil(deadline);
const auto unknown_result = unknown.waitUntil(deadline);
EXPECT_TRUE(standard_result.completed);
EXPECT_FALSE(standard_result.result);
EXPECT_NE(standard_result.detail.find("transport failed"),
std::string::npos);
EXPECT_TRUE(unknown_result.completed);
EXPECT_FALSE(unknown_result.result);
EXPECT_NE(unknown_result.detail.find("unknown exception"),
std::string::npos);
}
TEST(StopOperationDispatcherTest,
DestructorWaitsForOutstandingWorkers)
{
auto dispatcher = std::make_unique<StopOperationDispatcher>();
std::promise<void> started;
std::promise<void> release;
auto released = release.get_future().share();
const auto handle = dispatcher->submit("arm:one", [&] {
started.set_value();
released.wait();
return StopOperationDispatcher::OperationResult{
true, "completed after dispatcher destruction"};
});
ASSERT_EQ(started.get_future().wait_for(1s), std::future_status::ready);
auto destroy = std::async(std::launch::async, [&] {
dispatcher.reset();
});
EXPECT_EQ(destroy.wait_for(20ms), std::future_status::timeout);
release.set_value();
EXPECT_EQ(destroy.wait_for(1s), std::future_status::ready);
destroy.get();
const auto result = handle.waitUntil(
StopOperationDispatcher::Clock::now() + 1s);
EXPECT_TRUE(result.completed);
EXPECT_TRUE(result.result);
EXPECT_EQ(result.detail, "completed after dispatcher destruction");
}
} // namespace
} // namespace cmvr::service

View File

@ -22,34 +22,6 @@ target_link_libraries(task
add_library(cmvr_es::task ALIAS task)
install(TARGETS task LIBRARY DESTINATION lib)
if(BUILD_TESTING)
add_executable(touch_screen_admission_test
touch_screen_task/src/touch_screen_admission_test.cpp
)
target_link_libraries(touch_screen_admission_test PRIVATE
cmvr_es::task
cmvr_es::device_manager
cmvr_es::stop_all_admission_gate
cmvr_es::camera_operational_activity_registry
gtest
gtest_main
pthread
)
add_test(
NAME touch_screen_admission_test
COMMAND touch_screen_admission_test
)
set(_touch_screen_admission_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _touch_screen_admission_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(touch_screen_admission_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_touch_screen_admission_test_environment}")
endif()
#add_executable(touch_screen_task_test
# touch_screen_task/src/touch_screen_task_test.cpp
#)

View File

@ -1,559 +0,0 @@
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <memory>
#include <mutex>
#include <optional>
#include <string>
#include <thread>
#include <vector>
#include <gtest/gtest.h>
#include "manager/device_manager/include/device_manager.h"
#include "service/grpc/server/include/camera_operational_activity_registry.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
#include "task/touch_screen_task/include/touch_screen_task.h"
namespace cmvr::task {
class TouchScreenTaskAdmissionTestPeer final {
public:
static void prepare(
TouchScreenTask& task,
const std::shared_ptr<device::RobotArm>& arm,
const std::shared_ptr<device::AbstractCamera>& camera)
{
std::lock_guard lock(task.mutex_);
task.arm_ = arm;
{
std::lock_guard arm_lock(task.activity_arm_mutex_);
task.activity_arm_ = arm;
}
task.camera_ = camera;
task.initialized_ = true;
task.phase_ = TouchScreenTask::Phase::IDLE;
task.last_status_ = TouchScreenTask::Status::IDLE;
}
static void prepareInit(
TouchScreenTask& task,
const std::string& arm_id,
const std::string& dexhand_id,
const std::string& camera_id)
{
std::lock_guard lock(task.mutex_);
task.config_valid_ = true;
auto* devices = task.config_.mutable_devices();
devices->set_arm_id(arm_id);
devices->set_dexhand_id(dexhand_id);
devices->set_camera_id(camera_id);
task.initialized_ = false;
task.phase_ = TouchScreenTask::Phase::IDLE;
task.last_status_ = TouchScreenTask::Status::NOT_INITIALIZED;
}
static bool sendJointVelocity(TouchScreenTask& task)
{
std::lock_guard lock(task.mutex_);
return task.sendJointVelocity({});
}
};
} // namespace cmvr::task
namespace {
class AdmissionRobotArm final : public cmvr::device::RobotArm {
public:
AdmissionRobotArm() { id_ = "touch-admission-arm"; }
std::string typeName() const override { return "AdmissionRobotArm"; }
cmvr::device::RobotModel getRobotModel() const override { return {}; }
std::size_t getDof() const override { return 0U; }
cmvr::device::ArmState getRobotState() const override { return {}; }
cmvr::device::JointGroupState getJointState() const override { return {}; }
cmvr::device::CartesianPose getTcpPose(
cmvr::device::FrameType = cmvr::device::FrameType::Base) const override
{
return {};
}
cmvr::device::RobotMode getRobotMode() const override
{
return cmvr::device::RobotMode::Idle;
}
cmvr::device::SafetyMode getSafetyMode() const override
{
return cmvr::device::SafetyMode::Normal;
}
cmvr::device::ControlMode getControlMode() const override
{
return cmvr::device::ControlMode::None;
}
cmvr::device::Result torqueOn() override { return success(); }
cmvr::device::Result torqueOff() override { return success(); }
cmvr::device::Result calibrateZeroQ(const std::string&) override
{
return success();
}
cmvr::device::Result emergencyStop() override { return success(); }
cmvr::device::Result protectiveStop() override { return success(); }
cmvr::device::Result setSpeedScaling(double) override { return success(); }
double getSpeedScaling() const override { return 1.0; }
bool isProtectiveStopped() const override { return false; }
bool isEmergencyStopped() const override { return false; }
bool isFault() const override { return false; }
cmvr::device::Result moveJ(
const cmvr::device::JointPositionCommand&,
const cmvr::device::MotionOptions&) override
{
return success();
}
cmvr::device::Result speedJ(
const cmvr::device::JointVelocityCommand&, double, double) override
{
++speed_j_calls_;
return success();
}
cmvr::device::Result stopJ(double) override { return success(); }
cmvr::device::Result moveL(
const cmvr::device::CartesianPose&,
const cmvr::device::MotionOptions&,
cmvr::device::FrameType = cmvr::device::FrameType::Base) override
{
return success();
}
cmvr::device::Result speedL(
const cmvr::device::CartesianVelocity&,
double,
double,
cmvr::device::FrameType = cmvr::device::FrameType::Base) override
{
return success();
}
cmvr::device::Result stopL(std::optional<double> = std::nullopt) override
{
return success();
}
cmvr::device::Result stopMotion() override
{
++stop_motion_calls_;
return success();
}
cmvr::device::Result startServoMode(
const cmvr::device::ServoOptions&) override
{
return success();
}
cmvr::device::Result servoJ(
const cmvr::device::JointPositionCommand&) override
{
return success();
}
cmvr::device::Result servoL(
const cmvr::device::CartesianPose&,
cmvr::device::FrameType = cmvr::device::FrameType::Base) override
{
return success();
}
cmvr::device::Result servoSpeedJ(
const cmvr::device::JointVelocityCommand&) override
{
return success();
}
cmvr::device::Result servoSpeedL(
const cmvr::device::CartesianVelocity&,
cmvr::device::FrameType = cmvr::device::FrameType::Base) override
{
return success();
}
cmvr::device::Result stopServoMode() override { return success(); }
cmvr::device::Result connect(const std::string&, int) override
{
return success();
}
cmvr::device::Result disconnect() override { return success(); }
bool isConnected() const override { return true; }
cmvr::device::Result powerOn() override { return success(); }
cmvr::device::Result powerOff() override { return success(); }
cmvr::device::Result brakeRelease() override { return success(); }
cmvr::device::Result shutdown() override { return success(); }
cmvr::device::Result clearFault() override { return success(); }
cmvr::device::Result unlockProtectiveStop() override { return success(); }
cmvr::device::Result loadProgram(const std::string&) override
{
return success();
}
cmvr::device::Result playProgram() override { return success(); }
cmvr::device::Result pauseProgram() override { return success(); }
cmvr::device::Result stopProgram() override { return success(); }
std::vector<double> ik(
const std::string&,
const std::string&,
const cmvr::device::CartesianPose&) override
{
return {};
}
std::shared_ptr<cmvr::IKSolver> kinematicsSolver() const override
{
return nullptr;
}
cmvr::device::CartesianPose fk(
const std::string&, const std::string&) override
{
return {};
}
cmvr::device::CartesianPose fk(bool = true) override { return {}; }
cmvr::device::CartesianVelocity getSpeedLCommandTwistBase() const override
{
return {};
}
bool busy() const override { return false; }
int speedJCalls() const noexcept { return speed_j_calls_.load(); }
int stopMotionCalls() const noexcept
{
return stop_motion_calls_.load();
}
private:
static cmvr::device::Result success()
{
return cmvr::device::Result::success();
}
std::atomic<int> speed_j_calls_{0};
std::atomic<int> stop_motion_calls_{0};
};
class AdmissionCamera final : public cmvr::device::AbstractCamera {
public:
explicit AdmissionCamera(std::string id)
{
id_ = std::move(id);
state_.is_initialized = true;
}
std::string typeName() const override { return "AdmissionCamera"; }
void getState(cmvr::device::CameraState& state) override
{
std::lock_guard lock(mutex_);
state = state_;
}
bool start() override
{
++lifecycle_start_calls_;
return true;
}
bool stop() override
{
++lifecycle_stop_calls_;
std::lock_guard lock(mutex_);
operational_active_ = false;
state_.is_opened = false;
return true;
}
bool startOperationalActivity() override
{
++operational_start_calls_;
std::unique_lock lock(mutex_);
start_entered_ = true;
condition_.notify_all();
condition_.wait(lock, [this] { return !block_start_; });
operational_active_ = true;
state_.is_opened = true;
return true;
}
bool stopOperationalActivity() override
{
++operational_stop_calls_;
std::lock_guard lock(mutex_);
operational_active_ = false;
state_.is_opened = false;
return true;
}
void blockStart()
{
std::lock_guard lock(mutex_);
block_start_ = true;
start_entered_ = false;
}
void waitForStartEntered()
{
std::unique_lock lock(mutex_);
condition_.wait(lock, [this] { return start_entered_; });
}
void releaseStart()
{
{
std::lock_guard lock(mutex_);
block_start_ = false;
}
condition_.notify_all();
}
bool operationalActive() const
{
std::lock_guard lock(mutex_);
return operational_active_;
}
int lifecycleStartCalls() const { return lifecycle_start_calls_; }
int lifecycleStopCalls() const { return lifecycle_stop_calls_; }
int operationalStartCalls() const { return operational_start_calls_; }
int operationalStopCalls() const { return operational_stop_calls_; }
private:
mutable std::mutex mutex_;
std::condition_variable condition_;
bool block_start_{false};
bool start_entered_{false};
bool operational_active_{false};
std::atomic<int> lifecycle_start_calls_{0};
std::atomic<int> lifecycle_stop_calls_{0};
std::atomic<int> operational_start_calls_{0};
std::atomic<int> operational_stop_calls_{0};
};
class TouchScreenAdmissionTest : public ::testing::Test {
protected:
void SetUp() override
{
cmvr::service::globalCameraOperationalActivityRegistry()
.clearForTesting();
cmvr::device::DeviceManager::destroyInstance();
cmvr::service::globalStopAllAdmissionGate().clearForTesting();
cmvr::control::ControlAuthorityManager::instance().clear();
}
void TearDown() override
{
cmvr::service::globalCameraOperationalActivityRegistry()
.clearForTesting();
cmvr::device::DeviceManager::destroyInstance();
cmvr::service::globalStopAllAdmissionGate().clearForTesting();
cmvr::control::ControlAuthorityManager::instance().clear();
}
};
TEST_F(TouchScreenAdmissionTest,
DirectTouchAndStartFromPixelHonorFailClosedAdmissionAndRecovery)
{
auto arm = std::make_shared<AdmissionRobotArm>();
auto camera = std::make_shared<AdmissionCamera>(
"touch-admission-camera");
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepare(
task, arm, camera);
auto& gate = cmvr::service::globalStopAllAdmissionGate();
auto ticket = gate.beginStopAll();
EXPECT_FALSE(task.touch(10, 20));
EXPECT_FALSE(task.startFromPixel(10, 20));
EXPECT_FALSE(task.isBusy());
EXPECT_TRUE(gate.finishStopAll(ticket, true));
ASSERT_TRUE(task.touch(10, 20));
EXPECT_TRUE(task.isBusy());
EXPECT_TRUE(task.stopActivity());
ticket = gate.beginStopAll();
EXPECT_FALSE(gate.finishStopAll(ticket, false));
EXPECT_FALSE(task.touch(10, 20));
EXPECT_FALSE(task.startFromPixel(10, 20));
ticket = gate.beginStopAll();
EXPECT_TRUE(gate.finishStopAll(ticket, true));
EXPECT_TRUE(task.startFromPixel(30, 40));
EXPECT_TRUE(task.stopActivity());
}
TEST_F(TouchScreenAdmissionTest,
SafetyHooksFenceEveryArmActuation)
{
auto arm = std::make_shared<AdmissionRobotArm>();
auto camera = std::make_shared<AdmissionCamera>(
"touch-safety-hooks-camera");
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepare(
task, arm, camera);
bool admitted = true;
int revalidations = 0;
int dispatches = 0;
cmvr::task::TouchScreenTask::SafetyHooks hooks;
hooks.revalidate = [&] {
++revalidations;
return admitted;
};
hooks.dispatch_actuation = [&](const auto& operation) {
++dispatches;
return operation();
};
hooks.dispatch_stop = [](const auto& operation) {
return operation();
};
ASSERT_TRUE(task.touchIfCurrent(
10, 20, [] { return true; }, std::move(hooks)));
EXPECT_TRUE(
cmvr::task::TouchScreenTaskAdmissionTestPeer::sendJointVelocity(task));
EXPECT_EQ(arm->speedJCalls(), 1);
EXPECT_EQ(dispatches, 1);
EXPECT_GE(revalidations, 2);
admitted = false;
EXPECT_FALSE(
cmvr::task::TouchScreenTaskAdmissionTestPeer::sendJointVelocity(task));
EXPECT_EQ(arm->speedJCalls(), 1);
EXPECT_EQ(dispatches, 1);
EXPECT_TRUE(task.stopActivity());
}
TEST_F(TouchScreenAdmissionTest,
RevokedSafetySessionStopsActivityThroughStopLane)
{
auto arm = std::make_shared<AdmissionRobotArm>();
auto camera = std::make_shared<AdmissionCamera>(
"touch-revoked-safety-camera");
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepare(
task, arm, camera);
bool admitted = true;
int stop_dispatches = 0;
cmvr::task::TouchScreenTask::SafetyHooks hooks;
hooks.revalidate = [&] { return admitted; };
hooks.dispatch_actuation = [](const auto& operation) {
return operation();
};
hooks.dispatch_stop = [&](const auto& operation) {
++stop_dispatches;
return operation();
};
ASSERT_TRUE(task.touchIfCurrent(
10, 20, [] { return true; }, std::move(hooks)));
admitted = false;
EXPECT_FALSE(task.step(0.01));
EXPECT_EQ(task.phase(), cmvr::task::TouchScreenTask::Phase::FAILED);
EXPECT_EQ(
task.lastStatus(),
cmvr::task::TouchScreenTask::Status::SAFETY_ADMISSION_REVOKED);
EXPECT_EQ(stop_dispatches, 1);
EXPECT_EQ(arm->stopMotionCalls(), 1);
}
TEST_F(TouchScreenAdmissionTest,
StopAllStopsCameraActivityAndNextTouchRestartsIt)
{
auto arm = std::make_shared<AdmissionRobotArm>();
auto camera = std::make_shared<AdmissionCamera>(
"touch-restart-camera");
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepare(
task, arm, camera);
auto& gate = cmvr::service::globalStopAllAdmissionGate();
auto& registry =
cmvr::service::globalCameraOperationalActivityRegistry();
ASSERT_TRUE(task.touch(10, 20));
EXPECT_TRUE(camera->operationalActive());
EXPECT_EQ(camera->operationalStartCalls(), 1);
const auto ticket = gate.beginStopAll();
ASSERT_TRUE(ticket.valid());
EXPECT_TRUE(task.stopActivity());
EXPECT_TRUE(registry.stopAllActivities());
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
ASSERT_TRUE(gate.finishStopAll(ticket, true));
ASSERT_TRUE(task.touch(30, 40));
EXPECT_TRUE(camera->operationalActive());
EXPECT_EQ(camera->operationalStartCalls(), 2);
EXPECT_EQ(camera->lifecycleStartCalls(), 0);
EXPECT_TRUE(task.stopActivity());
}
TEST_F(TouchScreenAdmissionTest,
TouchRollsBackCameraStartThatCrossesStopAllGeneration)
{
auto arm = std::make_shared<AdmissionRobotArm>();
auto camera = std::make_shared<AdmissionCamera>(
"touch-racing-camera");
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepare(
task, arm, camera);
camera->blockStart();
bool touch_result = true;
std::thread touch_thread([&] {
touch_result = task.touch(10, 20);
});
camera->waitForStartEntered();
auto& gate = cmvr::service::globalStopAllAdmissionGate();
const auto ticket = gate.beginStopAll();
EXPECT_TRUE(ticket.valid());
camera->releaseStart();
touch_thread.join();
EXPECT_FALSE(touch_result);
EXPECT_FALSE(task.isBusy());
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStartCalls(), 1);
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
EXPECT_TRUE(gate.finishStopAll(ticket, true));
}
TEST_F(TouchScreenAdmissionTest,
InitRollsBackCameraStartThatCrossesStopAllGeneration)
{
cmvr::config::DeviceManagerConfig manager_config;
auto& manager =
cmvr::device::DeviceManager::getInstance(manager_config);
auto camera = std::make_shared<AdmissionCamera>(
"touch-init-racing-camera");
manager.registerDevice(camera);
cmvr::task::TouchScreenTask task(cmvr::config::TouchScreenTaskConfig{});
cmvr::task::TouchScreenTaskAdmissionTestPeer::prepareInit(
task,
"missing-arm",
"missing-dexhand",
camera->id());
camera->blockStart();
bool init_result = true;
std::thread init_thread([&] {
init_result = task.init();
});
camera->waitForStartEntered();
auto& gate = cmvr::service::globalStopAllAdmissionGate();
const auto ticket = gate.beginStopAll();
EXPECT_TRUE(ticket.valid());
camera->releaseStart();
init_thread.join();
EXPECT_FALSE(init_result);
EXPECT_EQ(task.state(), cmvr::task::TaskState::UNINITIALIZED);
EXPECT_FALSE(camera->operationalActive());
EXPECT_EQ(camera->operationalStartCalls(), 1);
EXPECT_EQ(camera->operationalStopCalls(), 1);
EXPECT_EQ(camera->lifecycleStopCalls(), 0);
EXPECT_TRUE(gate.finishStopAll(ticket, true));
}
} // namespace

View File

@ -18,26 +18,3 @@ target_link_libraries(ume_teleop_task
add_library(cmvr_es::ume_teleop_task ALIAS ume_teleop_task)
install(TARGETS ume_teleop_task ARCHIVE DESTINATION lib)
if(BUILD_TESTING)
add_executable(ume_teleop_task_test
tests/ume_teleop_task_test.cpp
)
target_compile_features(ume_teleop_task_test PRIVATE cxx_std_17)
target_link_libraries(ume_teleop_task_test
PRIVATE
cmvr_es::ume_teleop_task
cmvr_es::stop_all_admission_gate
Threads::Threads
)
add_test(NAME ume_teleop_task_test COMMAND ume_teleop_task_test)
set(_ume_teleop_task_test_environment
"LD_LIBRARY_PATH=${CMVR_TEST_EXTERNAL_LIBRARY_PATH}")
if(CMVR_TEST_SYSTEM_LIBSTDCXX)
list(APPEND _ume_teleop_task_test_environment
"LD_PRELOAD=${CMVR_TEST_SYSTEM_LIBSTDCXX}")
endif()
set_tests_properties(ume_teleop_task_test PROPERTIES
TIMEOUT 10
ENVIRONMENT "${_ume_teleop_task_test_environment}")
endif()

View File

@ -1,530 +0,0 @@
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <cstdio>
#include <iostream>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include <grpcpp/grpcpp.h>
#include <unistd.h>
#include "cmvr/api/arm_teleop_v1.grpc.pb.h"
#include "service/grpc/client/include/grpc_arm_teleop_client.h"
#include "service/grpc/stop_all/include/stop_all_admission_gate.h"
#include "task/ume_teleop_task/include/ume_teleop_task.h"
namespace {
using namespace std::chrono_literals;
namespace api = cmvr::api::armteleop::v1;
class WatchdogArmTeleopService final : public api::ArmTeleopService::Service {
public:
explicit WatchdogArmTeleopService(
const std::chrono::milliseconds watchdog)
: watchdog_(watchdog)
{
}
grpc::Status Teleoperate(
grpc::ServerContext* context,
grpc::ServerReaderWriter<api::ServerFrame, api::ClientFrame>* stream) override
{
api::ClientFrame frame;
if (!stream->Read(&frame) || !frame.has_open()) {
return grpc::Status(
grpc::StatusCode::INVALID_ARGUMENT,
"OpenSession must be first");
}
{
std::lock_guard lock(mutex_);
open_received_ = true;
++open_count_;
reader_finished_ = false;
last_sequence_ = 0;
last_activity_ = std::chrono::steady_clock::now();
}
condition_.notify_all();
api::ServerFrame opened;
opened.mutable_status()->set_session_id("task-test-session");
opened.mutable_status()->set_phase(api::SESSION_PHASE_OPENED);
opened.mutable_status()->set_negotiated_watchdog_ms(
static_cast<std::uint32_t>(watchdog_.count()));
if (!stream->Write(opened)) {
return grpc::Status::OK;
}
api::ServerFrame ready;
ready.mutable_status()->set_session_id("task-test-session");
ready.mutable_status()->set_phase(api::SESSION_PHASE_READY);
ready.mutable_status()->set_negotiated_watchdog_ms(
static_cast<std::uint32_t>(watchdog_.count()));
if (!stream->Write(ready)) {
return grpc::Status::OK;
}
std::thread reader([&] {
api::ClientFrame incoming;
while (stream->Read(&incoming)) {
const auto arrived = std::chrono::steady_clock::now();
bool terminal = false;
{
std::lock_guard lock(mutex_);
if (incoming.has_heartbeat() ||
incoming.has_setpoint()) {
const std::uint64_t sequence =
incoming.has_heartbeat()
? incoming.heartbeat().sequence()
: incoming.setpoint().sequence();
if (sequence == 0 || sequence <= last_sequence_) {
sequence_valid_ = false;
}
last_sequence_ = sequence;
last_activity_ = arrived;
++activity_version_;
if (incoming.has_heartbeat()) {
++heartbeat_count_;
} else {
setpoints_.push_back(incoming.setpoint());
}
} else if (incoming.has_stop()) {
stop_received_ = true;
++stop_count_;
terminal = true;
}
if (terminal) {
reader_finished_ = true;
}
}
condition_.notify_all();
incoming.Clear();
if (terminal) {
break;
}
}
{
std::lock_guard lock(mutex_);
reader_finished_ = true;
}
condition_.notify_all();
});
bool expired = false;
{
std::unique_lock lock(mutex_);
std::uint64_t observed_activity = activity_version_;
while (!reader_finished_) {
const auto deadline = last_activity_ + watchdog_;
if (!condition_.wait_until(
lock,
deadline,
[&] {
return reader_finished_ ||
activity_version_ != observed_activity;
})) {
watchdog_expired_ = true;
expired = true;
break;
}
observed_activity = activity_version_;
}
}
if (expired) {
context->TryCancel();
}
if (reader.joinable()) {
reader.join();
}
{
std::lock_guard lock(mutex_);
handler_finished_ = true;
++handler_finish_count_;
}
condition_.notify_all();
return expired
? grpc::Status(
grpc::StatusCode::DEADLINE_EXCEEDED,
"test watchdog expired")
: grpc::Status::OK;
}
bool waitForOpen(const std::chrono::milliseconds timeout)
{
return waitForOpenCount(1, timeout);
}
bool waitForOpenCount(
const std::size_t count,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [&] { return open_count_ >= count; });
}
bool waitForHandlerFinish(const std::chrono::milliseconds timeout)
{
return waitForHandlerFinishCount(1, timeout);
}
bool waitForHandlerFinishCount(
const std::size_t count,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [&] { return handler_finish_count_ >= count; });
}
bool waitForHeartbeatCount(
const std::size_t count,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [&] { return heartbeat_count_ >= count; });
}
bool waitForSetpointCount(
const std::size_t count,
const std::chrono::milliseconds timeout)
{
std::unique_lock lock(mutex_);
return condition_.wait_for(
lock, timeout, [&] { return setpoints_.size() >= count; });
}
std::size_t setpointCount() const
{
std::lock_guard lock(mutex_);
return setpoints_.size();
}
std::size_t heartbeatCount() const
{
std::lock_guard lock(mutex_);
return heartbeat_count_;
}
std::size_t stopCount() const
{
std::lock_guard lock(mutex_);
return stop_count_;
}
api::JointSetpoint lastSetpoint() const
{
std::lock_guard lock(mutex_);
return setpoints_.empty()
? api::JointSetpoint{}
: setpoints_.back();
}
bool watchdogExpired() const
{
std::lock_guard lock(mutex_);
return watchdog_expired_;
}
bool sequenceValid() const
{
std::lock_guard lock(mutex_);
return sequence_valid_;
}
bool stopReceived() const
{
std::lock_guard lock(mutex_);
return stop_received_;
}
private:
const std::chrono::milliseconds watchdog_;
mutable std::mutex mutex_;
std::condition_variable condition_;
bool open_received_{false};
bool reader_finished_{false};
bool handler_finished_{false};
bool watchdog_expired_{false};
bool sequence_valid_{true};
bool stop_received_{false};
std::size_t open_count_{0};
std::size_t handler_finish_count_{0};
std::size_t stop_count_{0};
std::uint64_t activity_version_{0};
std::uint64_t last_sequence_{0};
std::size_t heartbeat_count_{0};
std::vector<api::JointSetpoint> setpoints_;
std::chrono::steady_clock::time_point last_activity_{};
};
cmvr::config::UmeTeleopConfig validConfig(const std::string& endpoint)
{
cmvr::config::UmeTeleopConfig config;
config.set_id("ume_teleop_test");
config.set_server_address(endpoint);
config.set_allow_insecure(true);
auto* open = config.mutable_open_session();
open->set_protocol_major(1);
open->set_protocol_minor(0);
open->set_client_instance_id("ume-task-test");
open->set_requested_command_rate_hz(20);
open->set_requested_state_rate_hz(250);
open->set_watchdog_timeout_ms(120);
open->set_requested_lease_ms(500);
open->mutable_expected_robot()->set_robot_id("test-arm");
open->mutable_expected_robot()->add_joint_names("joint1");
config.mutable_reconnect()->set_initial_delay_ms(10);
config.mutable_reconnect()->set_maximum_delay_ms(50);
config.mutable_reconnect()->set_multiplier(2.0);
return config;
}
int fail(const std::string& detail)
{
std::cerr << "ume_teleop_task_test: " << detail << '\n';
return 1;
}
} // namespace
int main()
{
auto& admission = cmvr::service::globalStopAllAdmissionGate();
admission.clearForTesting();
{
cmvr::config::UmeTeleopConfig invalid;
invalid.set_id("invalid");
cmvr::task::UmeTeleopTask task(invalid);
if (task.init() || task.state() != cmvr::task::TaskState::FAILED) {
return fail("invalid transport configuration was not rejected");
}
task.stop();
if (task.state() != cmvr::task::TaskState::FAILED) {
return fail("stop did not preserve an initialization failure");
}
}
{
// Exercise the start/stop race before a synchronous stream necessarily
// publishes its ClientContext. The Task's cancellation predicate closes
// this gap, while tryCancel() interrupts it once the context is visible.
const std::string unavailable_endpoint =
"unix:/tmp/cmvr_ume_teleop_unavailable_" +
std::to_string(static_cast<long long>(::getpid())) + ".sock";
auto channel = grpc::CreateChannel(
unavailable_endpoint,
grpc::InsecureChannelCredentials());
auto client =
std::make_shared<cmvr::teleop::GrpcArmTeleopClient>(channel);
cmvr::task::UmeTeleopTask task(
validConfig(unavailable_endpoint), client);
if (!task.init() || !task.start()) {
return fail("immediate-stop task did not initialize and start");
}
api::JointSetpoint disconnected_setpoint;
disconnected_setpoint.add_position_rad(1.0);
disconnected_setpoint.set_valid_for_us(100000);
if (task.submitSetpoint(disconnected_setpoint)) {
task.stop();
return fail(
"task accepted a motion command without a ready session");
}
const auto stop_begin = std::chrono::steady_clock::now();
task.stop();
if (std::chrono::steady_clock::now() - stop_begin > 2s ||
task.state() != cmvr::task::TaskState::STOPPED) {
return fail("immediate Task stop did not cancel and join promptly");
}
}
WatchdogArmTeleopService service(120ms);
grpc::ServerBuilder builder;
int selected_port = 0;
builder.AddListeningPort(
"127.0.0.1:0",
grpc::InsecureServerCredentials(),
&selected_port);
builder.RegisterService(&service);
std::unique_ptr<grpc::Server> server = builder.BuildAndStart();
if (!server || selected_port == 0) {
return fail("failed to start in-process gRPC server");
}
const std::string endpoint =
"127.0.0.1:" + std::to_string(selected_port);
auto channel = grpc::CreateChannel(
endpoint,
grpc::InsecureChannelCredentials());
auto client =
std::make_shared<cmvr::teleop::GrpcArmTeleopClient>(channel);
cmvr::task::UmeTeleopTask task(validConfig(endpoint), client);
if (task.runMode() != cmvr::task::TaskRunMode::BLOCKING_SERVICE) {
server->Shutdown();
return fail("task is not a BLOCKING_SERVICE");
}
if (!task.init()) {
server->Shutdown();
return fail("valid task did not initialize");
}
auto admission_ticket = admission.beginStopAll();
if (task.start() || task.isBusy()) {
server->Shutdown();
return fail("public start bypassed closed StopAll admission");
}
if (!admission.finishStopAll(admission_ticket, true) || !task.start()) {
server->Shutdown();
return fail("explicit start was not restored after successful StopAll");
}
if (!service.waitForOpen(2s)) {
task.stop();
server->Shutdown();
return fail("task worker did not open the teleoperation stream");
}
// No application commands are submitted here. Heartbeats alone must keep
// the session alive for longer than the negotiated watchdog.
if (!service.waitForHeartbeatCount(4, 2s) ||
service.watchdogExpired() || !task.isBusy()) {
task.stop();
server->Shutdown();
return fail("silent command stream did not survive via heartbeats");
}
api::JointSetpoint first;
first.set_sequence(999); // Task must replace caller-owned sequence values.
first.add_position_rad(1.0);
first.add_velocity_rad_s(0.0);
first.set_valid_for_us(100000);
if (!task.submitSetpoint(first) ||
!service.waitForSetpointCount(1, 2s)) {
task.stop();
server->Shutdown();
return fail("first mailbox setpoint was not sent");
}
// The sender rate is 20 Hz. These arrive inside one command period, so the
// capacity-one mailbox must publish only the newest value.
for (int value = 2; value <= 4; ++value) {
api::JointSetpoint setpoint;
setpoint.set_sequence(1000 + value);
setpoint.add_position_rad(static_cast<double>(value));
setpoint.add_velocity_rad_s(0.0);
setpoint.set_valid_for_us(100000);
if (!task.submitSetpoint(setpoint)) {
task.stop();
server->Shutdown();
return fail("latest-only mailbox rejected a valid setpoint");
}
}
if (!service.waitForSetpointCount(2, 2s)) {
task.stop();
server->Shutdown();
return fail("latest mailbox setpoint was not sent");
}
std::this_thread::sleep_for(70ms);
const api::JointSetpoint latest = service.lastSetpoint();
if (service.setpointCount() != 2 ||
latest.position_rad_size() != 1 ||
latest.position_rad(0) != 4.0 ||
latest.sequence() == 0 ||
latest.sequence() >= 1000) {
task.stop();
server->Shutdown();
return fail("mailbox did not collapse queued commands to the latest value");
}
const auto stop_begin = std::chrono::steady_clock::now();
const bool activity_stopped = task.stopActivity();
const auto stop_elapsed = std::chrono::steady_clock::now() - stop_begin;
if (!activity_stopped || stop_elapsed > 2s) {
server->Shutdown();
return fail("stopActivity did not stop and join promptly");
}
if (task.state() != cmvr::task::TaskState::STOPPED ||
task.isBusy() || !task.isFinished()) {
server->Shutdown();
return fail("task did not reach STOPPED after stopping its activity");
}
if (!service.waitForHandlerFinish(2s)) {
server->Shutdown();
return fail("server handler did not observe activity cancellation");
}
if (!service.stopReceived()) {
server->Shutdown();
return fail("stopActivity did not send StopSession before TryCancel");
}
api::JointSetpoint stopped_setpoint;
stopped_setpoint.add_position_rad(5.0);
stopped_setpoint.set_valid_for_us(100000);
if (task.submitSetpoint(stopped_setpoint)) {
server->Shutdown();
return fail("stopped activity still accepted a setpoint");
}
const auto heartbeats_after_stop = service.heartbeatCount();
const auto setpoints_after_stop = service.setpointCount();
std::this_thread::sleep_for(200ms);
if (service.heartbeatCount() != heartbeats_after_stop ||
service.setpointCount() != setpoints_after_stop) {
server->Shutdown();
return fail("stopped activity continued sending heartbeat or setpoint frames");
}
if (!task.start() ||
!service.waitForOpenCount(2, 2s) ||
!service.waitForHeartbeatCount(heartbeats_after_stop + 1, 2s) ||
!task.isBusy()) {
task.stop();
server->Shutdown();
return fail("explicit start did not create a new teleoperation activity");
}
api::JointSetpoint restarted_setpoint;
restarted_setpoint.add_position_rad(6.0);
restarted_setpoint.set_valid_for_us(100000);
if (!task.submitSetpoint(restarted_setpoint) ||
!service.waitForSetpointCount(setpoints_after_stop + 1, 2s)) {
task.stop();
server->Shutdown();
return fail("restarted activity did not send a setpoint");
}
if (!task.stopActivity() ||
!service.waitForHandlerFinishCount(2, 2s) ||
service.stopCount() != 2 ||
task.state() != cmvr::task::TaskState::STOPPED) {
server->Shutdown();
return fail("restarted activity did not stop cleanly");
}
admission_ticket = admission.beginStopAll();
if (admission.finishStopAll(admission_ticket, false) || task.start()) {
server->Shutdown();
return fail("failed StopAll did not keep public start fail-closed");
}
admission_ticket = admission.beginStopAll();
if (!admission.finishStopAll(admission_ticket, true) ||
!task.start() || !service.waitForOpenCount(3, 2s) ||
!task.stopActivity() ||
!service.waitForHandlerFinishCount(3, 2s)) {
server->Shutdown();
return fail("successful StopAll did not restore a new explicit start");
}
if (service.watchdogExpired() || !service.sequenceValid()) {
server->Shutdown();
return fail("heartbeat/setpoint sequence or watchdog contract failed");
}
server->Shutdown();
admission.clearForTesting();
std::cout << "ume_teleop_task_test: PASS\n";
return 0;
}

View File

@ -1,986 +0,0 @@
[
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/common.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/common.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/common.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/common.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_command.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_command.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_command.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_command.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/test_service.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/test_service.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/test_service.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/test_service.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/camera_config/camera_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/camera_config/camera_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/camera_config/camera_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/camera_config/camera_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/dexhand_config/dexhand_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/dexhand_config/dexhand_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/dexhand_config/dexhand_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/dexhand_config/dexhand_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/microphone_config/microphone_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/microphone_config/microphone_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/microphone_config/microphone_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/microphone_config/microphone_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_dls_ik_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_dls_ik_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_dls_ik_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_dls_ik_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/speaker_config/speaker_conifg.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/speaker_config/speaker_conifg.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/speaker_config/speaker_conifg.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/speaker_config/speaker_conifg.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/can_card_parameter.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/can_card_parameter.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/can_card_parameter.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/can_card_parameter.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/canopen.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/canopen.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/canopen.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/canopen.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/error_code.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/error_code.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/error_code.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/error_code.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/geometry.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/geometry.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/geometry.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/geometry.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/motor.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/motor.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/motor.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/motor.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/robot_detail.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/robot_detail.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/robot_detail.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/robot_detail.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/biohead_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/biohead_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/camera_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/camera_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/common.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/common.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/common.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/common.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/dexhand_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/dexhand_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/hlc_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/hlc_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/humanoid_robot_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/humanoid_robot_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/microphone_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/microphone_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/speaker_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/speaker_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_command.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_command.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_command.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_command.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/system_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/system_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/test_service.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/test_service.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/api/test_service.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/api/test_service.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/camera_config/camera_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/camera_config/camera_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/camera_config/camera_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/camera_config/camera_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/dexhand_config/dexhand_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/dexhand_config/dexhand_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/dexhand_config/dexhand_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/dexhand_config/dexhand_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/microphone_config/microphone_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/microphone_config/microphone_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/microphone_config/microphone_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/microphone_config/microphone_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_dls_ik_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_dls_ik_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_dls_ik_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_dls_ik_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/pinocchio_qp_ik_solver_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/speaker_config/speaker_conifg.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/speaker_config/speaker_conifg.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/speaker_config/speaker_conifg.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/speaker_config/speaker_conifg.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/config/touch_screen_app_config/touch_screen_app_config.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/can_card_parameter.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/can_card_parameter.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/can_card_parameter.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/can_card_parameter.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/canopen.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/canopen.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/canopen.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/canopen.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/error_code.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/error_code.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/error_code.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/error_code.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/geometry.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/geometry.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/geometry.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/geometry.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/motor.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/motor.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/motor.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/motor.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/robot_detail.grpc.pb.cc.o -c /home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/robot_detail.grpc.pb.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf/cmvr/msgs/robot_detail.grpc.pb.cc",
"output": "CMakeFiles/proto-objects.dir/_protobuf/cmvr/msgs/robot_detail.grpc.pb.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o CMakeFiles/cmvr_es.dir/cmvr-es/main.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/main.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/main.cpp",
"output": "CMakeFiles/cmvr_es.dir/cmvr-es/main.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/base/src/thread_pool.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/thread_pool.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/thread_pool.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/base/src/thread_pool.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/base/src/timer.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/timer.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/timer.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/base/src/timer.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/base/src/abstract_interpolation.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/abstract_interpolation.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/base/src/abstract_interpolation.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/base/src/abstract_interpolation.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/inertial.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/inertial.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/inertial.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/inertial.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/joint.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/joint.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/joint.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/joint.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/link.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/link.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/link.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/link.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/robot.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/robot.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/dynamics/src/robot.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/dynamics/src/robot.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/math/src/qp_solver.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/qp_solver.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/qp_solver.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/math/src/qp_solver.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/math/src/se2.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/se2.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/se2.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/math/src/se2.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/math/src/se3.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/se3.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/se3.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/math/src/se3.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/math/src/so3.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/so3.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/math/src/so3.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/math/src/so3.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -g -std=gnu++17 -fPIC -o cmvr-es/utils/CMakeFiles/utils.dir/controller/src/cartesian_controller.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/utils/controller/src/cartesian_controller.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/utils/controller/src/cartesian_controller.cpp",
"output": "cmvr-es/utils/CMakeFiles/utils.dir/controller/src/cartesian_controller.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dhardware_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -g -std=gnu++17 -fPIC -o cmvr-es/hardware/CMakeFiles/hardware.dir/src/serial_interface.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/serial_interface.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/serial_interface.cpp",
"output": "cmvr-es/hardware/CMakeFiles/hardware.dir/src/serial_interface.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dhardware_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -g -std=gnu++17 -fPIC -o cmvr-es/hardware/CMakeFiles/hardware.dir/src/esp32_serial_port.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/esp32_serial_port.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/esp32_serial_port.cpp",
"output": "cmvr-es/hardware/CMakeFiles/hardware.dir/src/esp32_serial_port.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dhardware_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -g -std=gnu++17 -fPIC -o cmvr-es/hardware/CMakeFiles/hardware.dir/src/posix_serial_transport.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/posix_serial_transport.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/hardware/src/posix_serial_transport.cpp",
"output": "cmvr-es/hardware/CMakeFiles/hardware.dir/src/posix_serial_transport.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Duvc_camera_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera -g -std=gnu++17 -fPIC -o cmvr-es/devices/camera/uvc_camera/CMakeFiles/uvc_camera.dir/src/uvc_camera.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera/src/uvc_camera.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera/src/uvc_camera.cpp",
"output": "cmvr-es/devices/camera/uvc_camera/CMakeFiles/uvc_camera.dir/src/uvc_camera.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Drealsense_camera_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -g -std=gnu++17 -fPIC -o cmvr-es/devices/camera/realsense_camera/CMakeFiles/realsense_camera.dir/src/realsense_camera.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera/src/realsense_camera.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera/src/realsense_camera.cpp",
"output": "cmvr-es/devices/camera/realsense_camera/CMakeFiles/realsense_camera.dir/src/realsense_camera.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/camera/realsense_camera/CMakeFiles/realsense_camera_test.dir/src/realsense_camera_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera/src/realsense_camera_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera/src/realsense_camera_test.cpp",
"output": "cmvr-es/devices/camera/realsense_camera/CMakeFiles/realsense_camera_test.dir/src/realsense_camera_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_camera_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/mujoco_camera -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/devices/camera/mujoco_camera/CMakeFiles/mujoco_camera.dir/src/mujoco_camera.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/mujoco_camera/src/mujoco_camera.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/mujoco_camera/src/mujoco_camera.cpp",
"output": "cmvr-es/devices/camera/mujoco_camera/CMakeFiles/mujoco_camera.dir/src/mujoco_camera.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dffmpeg_speaker_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker -g -std=gnu++17 -fPIC -o cmvr-es/devices/speaker/ffmpeg_speaker/CMakeFiles/ffmpeg_speaker.dir/src/ffmpeg_speaker.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker/src/ffmpeg_speaker.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker/src/ffmpeg_speaker.cpp",
"output": "cmvr-es/devices/speaker/ffmpeg_speaker/CMakeFiles/ffmpeg_speaker.dir/src/ffmpeg_speaker.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dffmpeg_microphone_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone -g -std=gnu++17 -fPIC -o cmvr-es/devices/microphone/ffmpeg_microphone/CMakeFiles/ffmpeg_microphone.dir/src/ffmpeg_microphone.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone/src/ffmpeg_microphone.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone/src/ffmpeg_microphone.cpp",
"output": "cmvr-es/devices/microphone/ffmpeg_microphone/CMakeFiles/ffmpeg_microphone.dir/src/ffmpeg_microphone.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Drh56dftp_dexhand_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -g -std=gnu++17 -fPIC -o cmvr-es/devices/dexhand/rh56dftp_dexhand/CMakeFiles/rh56dftp_dexhand.dir/src/rh56dftp_dexhand.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand/src/rh56dftp_dexhand.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand/src/rh56dftp_dexhand.cpp",
"output": "cmvr-es/devices/dexhand/rh56dftp_dexhand/CMakeFiles/rh56dftp_dexhand.dir/src/rh56dftp_dexhand.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/dexhand/rh56dftp_dexhand/CMakeFiles/rh56dftp_dexhand_test.dir/src/rh56dftp_dexhand_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand/src/rh56dftp_dexhand_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand/src/rh56dftp_dexhand_test.cpp",
"output": "cmvr-es/devices/dexhand/rh56dftp_dexhand/CMakeFiles/rh56dftp_dexhand_test.dir/src/rh56dftp_dexhand_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dpx_6ax_gen3_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/devices/dexhand/px_6ax_gen3/CMakeFiles/px_6ax_gen3.dir/src/px_6ax_gen3.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3/src/px_6ax_gen3.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3/src/px_6ax_gen3.cpp",
"output": "cmvr-es/devices/dexhand/px_6ax_gen3/CMakeFiles/px_6ax_gen3.dir/src/px_6ax_gen3.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/dexhand/px_6ax_gen3/CMakeFiles/px_6ax_gen3_test.dir/src/px_6ax_gen3_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3/src/px_6ax_gen3_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3/src/px_6ax_gen3_test.cpp",
"output": "cmvr-es/devices/dexhand/px_6ax_gen3/CMakeFiles/px_6ax_gen3_test.dir/src/px_6ax_gen3_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dhead_esp32_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -g -std=gnu++17 -fPIC -o cmvr-es/devices/biohead/biohead_esp32/CMakeFiles/head_esp32.dir/src/biohead_esp32.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32/src/biohead_esp32.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32/src/biohead_esp32.cpp",
"output": "cmvr-es/devices/biohead/biohead_esp32/CMakeFiles/head_esp32.dir/src/biohead_esp32.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dhumanoid_robot_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/devices/robot/humanoid_robot/CMakeFiles/humanoid_robot.dir/src/humanoid_robot.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot.cpp",
"output": "cmvr-es/devices/robot/humanoid_robot/CMakeFiles/humanoid_robot.dir/src/humanoid_robot.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o cmvr-es/devices/robot/humanoid_robot/CMakeFiles/humanoid_robot_test.dir/src/humanoid_robot_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot/src/humanoid_robot_test.cpp",
"output": "cmvr-es/devices/robot/humanoid_robot/CMakeFiles/humanoid_robot_test.dir/src/humanoid_robot_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcanbus_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/devices/canbus/CMakeFiles/canbus.dir/can_client/socket/socket_can_client_raw.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_client/socket/socket_can_client_raw.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_client/socket/socket_can_client_raw.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/canbus.dir/can_client/socket/socket_can_client_raw.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcanbus_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/devices/canbus/CMakeFiles/canbus.dir/common/byte.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/common/byte.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/common/byte.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/canbus.dir/common/byte.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/canbus/CMakeFiles/socket_can_client_raw_test.dir/can_client/socket/socket_can_client_raw_test.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_client/socket/socket_can_client_raw_test.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_client/socket/socket_can_client_raw_test.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/socket_can_client_raw_test.dir/can_client/socket/socket_can_client_raw_test.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/canbus/CMakeFiles/protocol_data_test.dir/can_comm/protocol_data_test.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/protocol_data_test.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/protocol_data_test.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/protocol_data_test.dir/can_comm/protocol_data_test.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/canbus/CMakeFiles/message_manager_test.dir/can_comm/message_manager_test.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/message_manager_test.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/message_manager_test.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/message_manager_test.dir/can_comm/message_manager_test.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/canbus/CMakeFiles/can_sender_test.dir/can_comm/can_sender_test.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/can_sender_test.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/can_sender_test.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/can_sender_test.dir/can_comm/can_sender_test.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/canbus/CMakeFiles/can_receiver_test.dir/can_comm/can_receiver_test.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/can_receiver_test.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus/can_comm/can_receiver_test.cc",
"output": "cmvr-es/devices/canbus/CMakeFiles/can_receiver_test.dir/can_comm/can_receiver_test.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/devices/motor/CMakeFiles/motor_manager_test.dir/motor_manager_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/motor_manager_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/motor_manager_test.cpp",
"output": "cmvr-es/devices/motor/CMakeFiles/motor_manager_test.dir/motor_manager_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_sdo_response.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_sdo_response.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_sdo_response.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_sdo_response.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_tpdo1.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_tpdo1.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_tpdo1.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_tpdo1.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_tpdo2.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_tpdo2.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_tpdo2.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_tpdo2.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_rpdo1.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_rpdo1.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_rpdo1.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_rpdo1.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_rpdo2.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_rpdo2.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/protocol/ti5_motor_rpdo2.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/protocol/ti5_motor_rpdo2.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/ti5_motor_canopen_protocol.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/ti5_motor_canopen_protocol.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/canopen/ti5_motor_canopen_protocol.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/canopen/ti5_motor_canopen_protocol.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dti5motor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -g -std=gnu++17 -fPIC -o cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/ti5_motor.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/ti5_motor.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor/ti5_motor.cpp",
"output": "cmvr-es/devices/motor/ti5_motor/CMakeFiles/ti5motor.dir/ti5_motor.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32 -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -g -std=gnu++17 -fPIC -o cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/device_factory.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/device_factory.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/device_factory.cpp",
"output": "cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/device_factory.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32 -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -g -std=gnu++17 -fPIC -o cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/device_manager.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/device_manager.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/device_manager.cpp",
"output": "cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/device_manager.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/uvc_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/speaker/ffmpeg_speaker -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/microphone/ffmpeg_microphone -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/rh56dftp_dexhand -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/dexhand/px_6ax_gen3 -I/home/lgv/cmvr/cmvr-es/cmvr-es/hardware -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/biohead/biohead_esp32 -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -g -std=gnu++17 -fPIC -o cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/system_monitor.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/system_monitor.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager/src/system_monitor.cpp",
"output": "cmvr-es/device_manager/CMakeFiles/device_manager.dir/src/system_monitor.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Ddisk_monitor_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor/diskmonitor -g -std=gnu++17 -fPIC -o cmvr-es/monitor/diskmonitor/CMakeFiles/disk_monitor.dir/src/disk_monitor.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/monitor/diskmonitor/src/disk_monitor.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/monitor/diskmonitor/src/disk_monitor.cpp",
"output": "cmvr-es/monitor/diskmonitor/CMakeFiles/disk_monitor.dir/src/disk_monitor.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor/diskmonitor -g -std=gnu++17 -fPIC -o cmvr-es/monitor_manager/CMakeFiles/monitor_manager.dir/src/monitor_factory.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager/src/monitor_factory.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager/src/monitor_factory.cpp",
"output": "cmvr-es/monitor_manager/CMakeFiles/monitor_manager.dir/src/monitor_factory.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor/diskmonitor -g -std=gnu++17 -fPIC -o cmvr-es/monitor_manager/CMakeFiles/monitor_manager.dir/src/monitor_manager.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager/src/monitor_manager.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager/src/monitor_manager.cpp",
"output": "cmvr-es/monitor_manager/CMakeFiles/monitor_manager.dir/src/monitor_manager.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_camera_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_camera_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_camera_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_camera_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_system_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_system_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_system_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_system_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_speaker_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_speaker_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_speaker_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_speaker_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_microphone_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_microphone_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_microphone_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_microphone_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_head_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_head_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_head_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_head_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_dexhand_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_dexhand_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_dexhand_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_dexhand_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_humanoid_robot_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_humanoid_robot_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_humanoid_robot_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_humanoid_robot_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_hlc_service.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_hlc_service.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_hlc_service.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/grpc_hlc_service.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/service/CMakeFiles/service.dir/grpc/src/server_runner.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/server_runner.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/server_runner.cpp",
"output": "cmvr-es/service/CMakeFiles/service.dir/grpc/src/server_runner.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o cmvr-es/service/CMakeFiles/grpc_humanoid_robot_client_test.dir/grpc/src/grpc_humanoid_robot_client_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_humanoid_robot_client_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_humanoid_robot_client_test.cpp",
"output": "cmvr-es/service/CMakeFiles/grpc_humanoid_robot_client_test.dir/grpc/src/grpc_humanoid_robot_client_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/third_party/gtest/1.17.0/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/service/CMakeFiles/grpc_hlc_client_test.dir/grpc/src/grpc_hlc_client_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_hlc_client_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/service/grpc/src/grpc_hlc_client_test.cpp",
"output": "cmvr-es/service/CMakeFiles/grpc_hlc_client_test.dir/grpc/src/grpc_hlc_client_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dperception_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/perception/CMakeFiles/perception.dir/src/tag_relative_target_3d.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/tag_relative_target_3d.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/tag_relative_target_3d.cpp",
"output": "cmvr-es/perception/CMakeFiles/perception.dir/src/tag_relative_target_3d.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dperception_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/perception/CMakeFiles/perception.dir/src/apriltag_perception.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/apriltag_perception.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/apriltag_perception.cpp",
"output": "cmvr-es/perception/CMakeFiles/perception.dir/src/apriltag_perception.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/realsense_camera -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o cmvr-es/perception/CMakeFiles/tag_relative_target_3d_test.dir/src/tag_relative_target_3d_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/tag_relative_target_3d_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/perception/src/tag_relative_target_3d_test.cpp",
"output": "cmvr-es/perception/CMakeFiles/tag_relative_target_3d_test.dir/src/tag_relative_target_3d_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcontroller_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/controller/CMakeFiles/controller.dir/src/ibvs_controller.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/ibvs_controller.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/ibvs_controller.cpp",
"output": "cmvr-es/controller/CMakeFiles/controller.dir/src/ibvs_controller.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcontroller_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/controller/CMakeFiles/controller.dir/src/pid_controller.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/pid_controller.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/pid_controller.cpp",
"output": "cmvr-es/controller/CMakeFiles/controller.dir/src/pid_controller.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DELPP_NO_DEFAULT_LOG_FILE -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/camera/mujoco_camera -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o cmvr-es/controller/CMakeFiles/controller_test.dir/src/controller_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/controller_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/controller/src/controller_test.cpp",
"output": "cmvr-es/controller/CMakeFiles/controller_test.dir/src/controller_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/joint_space_planner.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/joint_space_planner.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/joint_space_planner_creator.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner_creator.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner_creator.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/joint_space_planner_creator.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/toppra_bspline.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/toppra_bspline.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/toppra_bspline.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/joint_space_planner/src/toppra_bspline.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/s_curve_planner/src/s_curve_position_planner.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/s_curve_planner/src/s_curve_position_planner.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/s_curve_planner/src/s_curve_position_planner.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/s_curve_planner/src/s_curve_position_planner.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/s_curve_planner/src/s_curve_velocity_planner.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/s_curve_planner/src/s_curve_velocity_planner.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/s_curve_planner/src/s_curve_velocity_planner.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/s_curve_planner/src/s_curve_velocity_planner.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dplanner_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/planner/CMakeFiles/planner.dir/cartesian_space_planner/src/cartesian_twist_limiter.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/cartesian_space_planner/src/cartesian_twist_limiter.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/cartesian_space_planner/src/cartesian_twist_limiter.cpp",
"output": "cmvr-es/planner/CMakeFiles/planner.dir/cartesian_space_planner/src/cartesian_twist_limiter.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/planner/CMakeFiles/joint_space_planner_test.dir/joint_space_planner/src/joint_space_planner_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/joint_space_planner/src/joint_space_planner_test.cpp",
"output": "cmvr-es/planner/CMakeFiles/joint_space_planner_test.dir/joint_space_planner/src/joint_space_planner_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/planner/CMakeFiles/cartesian_twist_limiter_test.dir/cartesian_space_planner/src/cartesian_twist_limiter_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/planner/cartesian_space_planner/src/cartesian_twist_limiter_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/planner/cartesian_space_planner/src/cartesian_twist_limiter_test.cpp",
"output": "cmvr-es/planner/CMakeFiles/cartesian_twist_limiter_test.dir/cartesian_space_planner/src/cartesian_twist_limiter_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/ik_solver.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_solver.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_solver.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/ik_solver.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/ik_solver_creator.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_solver_creator.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_solver_creator.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/ik_solver_creator.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/urdf_parser.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/urdf_parser.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/urdf_parser.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/urdf_parser.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_ik_base.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_ik_base.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_ik_base.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_ik_base.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_dls_ik_solver.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_dls_ik_solver.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_dls_ik_solver.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_dls_ik_solver.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_qp_ik_solver.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_qp_ik_solver.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/pinocchio_qp_ik_solver.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/pinocchio_qp_ik_solver.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/bias_srs_ik_slover.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/bias_srs_ik_slover.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/bias_srs_ik_slover.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/bias_srs_ik_slover.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/joints_limit_analyzer.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/joints_limit_analyzer.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/joints_limit_analyzer.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/joints_limit_analyzer.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/lawba_ik_solver.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/lawba_ik_solver.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/lawba_ik_solver.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/lawba_ik_solver.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dik_solver_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/opt_psi_selector.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/opt_psi_selector.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/opt_psi_selector.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_solver.dir/src/opt_psi_selector.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/ik_solver/CMakeFiles/srs_ik_test.dir/src/srs_ik_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/srs_ik_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/srs_ik_test.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/srs_ik_test.dir/src/srs_ik_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIE -o cmvr-es/ik_solver/CMakeFiles/ik_test.dir/src/ik_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver/src/ik_test.cpp",
"output": "cmvr-es/ik_solver/CMakeFiles/ik_test.dir/src/ik_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -g -std=gnu++17 -fPIC -o cmvr-es/data_center/CMakeFiles/data_center.dir/src/data_center.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/data_center/src/data_center.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/data_center/src/data_center.cpp",
"output": "cmvr-es/data_center/CMakeFiles/data_center.dir/src/data_center.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/data_center -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/canbus -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/motor/ti5_motor -g -std=gnu++17 -fPIC -o cmvr-es/data_center/CMakeFiles/data_center.dir/src/motors_info.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/data_center/src/motors_info.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/data_center/src/motors_info.cpp",
"output": "cmvr-es/data_center/CMakeFiles/data_center.dir/src/motors_info.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIC -o cmvr-es/applications/CMakeFiles/applications.dir/src/touch_screen_app.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/applications/src/touch_screen_app.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/applications/src/touch_screen_app.cpp",
"output": "cmvr-es/applications/CMakeFiles/applications.dir/src/touch_screen_app.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/applications -I/home/lgv/cmvr/cmvr-es/cmvr-es/controller -I/home/lgv/cmvr/cmvr-es/cmvr-es/perception -I/home/lgv/cmvr/cmvr-es/cmvr-es/ik_solver -I/home/lgv/cmvr/cmvr-es/cmvr-es/planner -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices/robot/humanoid_robot -I/home/lgv/cmvr/cmvr-es/cmvr-es/device_manager -I/home/lgv/cmvr/cmvr-es/cmvr-es/service -I/home/lgv/cmvr/cmvr-es/cmvr-es/monitor_manager -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -g -std=gnu++17 -fPIE -o cmvr-es/applications/CMakeFiles/touch_screen_app_test.dir/src/touch_screen_app_test.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/applications/src/touch_screen_app_test.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/applications/src/touch_screen_app_test.cpp",
"output": "cmvr-es/applications/CMakeFiles/touch_screen_app_test.dir/src/touch_screen_app_test.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_viewer_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -g -std=gnu++17 -fPIC -o cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/glfw_adapter.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/glfw_adapter.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/glfw_adapter.cc",
"output": "cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/glfw_adapter.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_viewer_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -g -std=gnu++17 -fPIC -o cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/glfw_dispatch.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/glfw_dispatch.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/glfw_dispatch.cc",
"output": "cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/glfw_dispatch.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_viewer_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -g -std=gnu++17 -fPIC -o cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/mujoco_viewer.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/mujoco_viewer.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/mujoco_viewer.cpp",
"output": "cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/mujoco_viewer.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_viewer_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -g -std=gnu++17 -fPIC -o cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/platform_ui_adapter.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/platform_ui_adapter.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/platform_ui_adapter.cc",
"output": "cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/platform_ui_adapter.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -Dmujoco_viewer_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer -g -std=gnu++17 -fPIC -o cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/simulate.cc.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/simulate.cc",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/simulate/mujoco/mujoco_viewer/src/simulate.cc",
"output": "cmvr-es/simulate/mujoco/mujoco_viewer/CMakeFiles/mujoco_viewer.dir/src/simulate.cc.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/curve/src/s_curve.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/curve/src/s_curve.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/curve/src/s_curve.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/curve/src/s_curve.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/utils/config_helper/src/config_setting.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/config_helper/src/config_setting.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/config_helper/src/config_setting.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/utils/config_helper/src/config_setting.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/CameraCapture.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/CameraCapture.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/CameraCapture.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/CameraCapture.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/RealSenseCapture.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/RealSenseCapture.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/RealSenseCapture.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/RealSenseCapture.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/VideoFrameEncoder.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/VideoFrameEncoder.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/VideoFrameEncoder.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/VideoFrameEncoder.cpp.o"
},
{
"directory": "/home/lgv/cmvr/cmvr-es/cmake-build-debug",
"command": "/usr/bin/g++-11 -DPROTOBUF_USE_DLLS -Dcommon_EXPORTS -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/coal/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/console_bridge/v1.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/eigenpy/v3.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/Eigen3/v3.4.0 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/example-robot-data/v4.3.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/fcl/v0.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x264/v165/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/x265/v215/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg-jetson/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/ffmpeg/v4.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gflags/v2.2.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/glog/v0.5.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/gtest/v1.17.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jrl-cmakemodules/v1.1.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/jsoncpp/v1.9.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/libccd/v2.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/lodepng/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mujoco/v3.3.7/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp-eigen/v0.10.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/PCAN-Basic/v4.10.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/peak-linux-driver/v8.20.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pinocchio/v3.6.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/pybind11/v3.0.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/realsense/v2.56.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/tinyxml2/v11.0.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/toppra/v0.6.2/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom/v5.0.3/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/urdfdom_headers/v2.0.1/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/opencv/4.13.0/include/opencv4 -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/modbus/3.1.11/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/visp/3.7.0/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/mainif/0.0.5/include -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/matplotplusplus/1.2.0/include -I/home/lgv/cmvr/cmvr-es/cmake-build-debug/_protobuf -I/home/lgv/cmvr/cmvr-es/include -I/home/lgv/cmvr/cmvr-es/cmvr-es/devices -I/home/lgv/cmvr/cmvr-es/cmvr-es/utils -I/home/lgv/cmvr/cmvr-es/cmvr-es -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party -I/home/lgv/cmvr/cmvr-es/dependency/x86/third_party/osqp/v0.6.3/include/osqp -I/home/lgv/cmvr/cmvr-es/cmvr-es/common -I/home/lgv/cmvr/cmvr-es/protos -isystem /home/lgv/cmvr/cmvr-es/dependency/x86/third_party/grpc/v1.76.0/include -g -std=gnu++17 -fPIC -o cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/VideoWriter.cpp.o -c /home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/VideoWriter.cpp",
"file": "/home/lgv/cmvr/cmvr-es/cmvr-es/common/utils/ffmpeg/src/VideoWriter.cpp",
"output": "cmvr-es/common/CMakeFiles/common.dir/utils/ffmpeg/src/VideoWriter.cpp.o"
}
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

View File

@ -1,544 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-6</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,814.51 L1737.59,814.51 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,814.51 L259.71,814.51 '/> <g transform="translate(236.99,819.71)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,667.81 L1737.59,667.81 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,667.81 L259.71,667.81 '/> <g transform="translate(236.99,673.01)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,374.41 L1737.59,374.41 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,374.41 L259.71,374.41 '/> <g transform="translate(236.99,379.61)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,227.71 L1737.59,227.71 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,227.71 L259.71,227.71 '/> <g transform="translate(236.99,232.91)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >6</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(192.41,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >acceleration [m/s</tspan><tspan font-family="Helvetica" font-size="8.8" dy="-5.50px">2</tspan><tspan font-family="Helvetica" font-size="11.0" dy="5.50px">]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,154.36 L532.31,154.36 L534.79,154.36 L537.27,154.36 L539.75,154.36 L542.23,154.36 L544.71,154.36
L547.19,154.36 L549.67,158.03 L552.15,161.69 L554.63,165.36 L557.11,169.03 L559.59,172.70 L562.07,176.36 L564.55,180.03
L567.03,183.70 L569.51,187.37 L571.99,191.03 L574.47,194.70 L576.95,198.37 L579.43,202.04 L581.91,205.70 L584.39,209.37
L586.87,213.04 L589.35,216.71 L591.83,220.37 L594.31,224.04 L596.79,227.71 L599.27,231.38 L601.75,235.04 L604.23,238.71
L606.71,242.38 L609.19,246.05 L611.67,249.71 L614.15,253.38 L616.63,257.05 L619.11,260.72 L621.59,264.38 L624.07,268.05
L626.55,271.72 L629.03,275.39 L631.51,279.05 L633.99,282.72 L636.47,286.39 L638.95,290.06 L641.43,293.72 L643.91,297.39
L646.39,301.06 L648.87,304.73 L651.35,308.39 L653.83,312.06 L656.31,315.73 L658.79,319.40 L661.27,323.06 L663.75,326.73
L666.23,330.40 L668.71,334.07 L671.19,337.73 L673.67,341.40 L676.15,345.07 L678.63,348.74 L681.11,352.40 L683.59,356.07
L686.07,359.74 L688.55,363.41 L691.03,367.07 L693.51,370.74 L695.99,374.41 L698.47,378.08 L700.95,381.74 L703.43,385.41
L705.91,389.08 L708.39,392.75 L710.87,396.41 L713.35,400.08 L715.83,403.75 L718.31,407.42 L720.79,411.08 L723.27,414.75
L725.75,418.42 L728.23,422.09 L730.71,425.75 L733.19,429.42 L735.67,433.09 L738.15,436.76 L740.63,440.42 L743.11,444.09
L745.59,447.76 L748.07,451.43 L750.55,455.09 L753.03,458.76 L755.51,462.43 L757.99,466.10 L760.47,469.76 L762.95,473.43
L765.43,477.10 L767.91,480.77 L770.39,484.43 L772.87,488.10 L775.35,491.77 L777.83,495.44 L780.31,499.10 L782.79,502.77
L785.27,506.44 L787.75,510.11 L790.23,513.77 L792.71,517.44 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,521.11 L1072.95,521.11 L1075.43,521.11 L1077.91,523.55 L1080.39,527.22
L1082.87,530.89 L1085.35,534.56 L1087.83,538.22 L1090.31,541.89 L1092.79,545.56 L1095.27,549.23 L1097.75,552.89 L1100.23,556.56
L1102.71,560.23 L1105.19,563.90 L1107.67,567.56 L1110.15,571.23 L1112.63,574.90 L1115.11,578.57 L1117.59,582.23 L1120.07,585.90
L1122.55,589.57 L1125.03,593.24 L1127.51,596.90 L1129.99,600.57 L1132.47,604.24 L1134.95,607.91 L1137.43,611.57 L1139.91,615.24
L1142.39,618.91 L1144.87,622.58 L1147.35,626.24 L1149.83,629.91 L1152.31,633.58 L1154.79,637.25 L1157.27,640.91 L1159.75,644.58
L1162.23,648.25 L1164.71,651.92 L1167.19,655.58 L1169.67,659.25 L1172.15,662.92 L1174.63,666.59 L1177.11,670.25 L1179.59,673.92
L1182.07,677.59 L1184.55,681.26 L1187.03,684.92 L1189.51,688.59 L1191.99,692.26 L1194.47,695.93 L1196.95,699.59 L1199.43,703.26
L1201.91,706.93 L1204.39,710.60 L1206.87,714.26 L1209.35,717.93 L1211.83,721.60 L1214.31,725.27 L1216.79,728.93 L1219.27,732.60
L1221.75,736.27 L1224.23,739.94 L1226.71,743.60 L1229.19,747.27 L1231.67,750.94 L1234.15,754.61 L1236.63,758.27 L1239.11,761.94
L1241.59,765.61 L1244.07,769.28 L1246.55,772.94 L1249.03,776.61 L1251.51,780.28 L1253.99,783.95 L1256.47,787.61 L1258.95,791.28
L1261.43,794.95 L1263.91,798.62 L1266.39,802.28 L1268.87,805.95 L1271.35,809.62 L1273.83,813.29 L1276.31,816.95 L1278.79,820.62
L1281.27,824.29 L1283.75,827.96 L1286.23,831.62 L1288.71,835.29 L1291.19,838.96 L1293.67,842.63 L1296.15,846.29 L1298.63,849.96
L1301.11,853.63 L1303.59,857.30 L1306.07,860.96 L1308.55,864.63 L1311.03,868.30 L1313.51,871.97 L1315.99,875.63 L1318.47,879.30
L1320.95,882.97 L1323.43,886.64 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,887.86 L1350.71,887.86 L1353.19,887.86 L1355.67,887.86 L1358.15,887.86
L1360.63,887.86 L1363.11,887.86 L1365.59,887.86 L1368.07,887.86 L1370.55,887.86 L1373.03,887.86 L1375.51,885.42 L1377.99,881.75
L1380.47,878.08 L1382.95,874.41 L1385.43,870.75 L1387.91,867.08 L1390.39,863.41 L1392.87,859.74 L1395.35,856.08 L1397.83,852.41
L1400.31,848.74 L1402.79,845.07 L1405.27,841.41 L1407.75,837.74 L1410.23,834.07 L1412.71,830.40 L1415.19,826.74 L1417.67,823.07
L1420.15,819.40 L1422.63,815.73 L1425.11,812.07 L1427.59,808.40 L1430.07,804.73 L1432.55,801.06 L1435.03,797.40 L1437.51,793.73
L1439.99,790.06 L1442.47,786.39 L1444.95,782.73 L1447.43,779.06 L1449.91,775.39 L1452.39,771.72 L1454.87,768.06 L1457.35,764.39
L1459.83,760.72 L1462.31,757.05 L1464.79,753.39 L1467.27,749.72 L1469.75,746.05 L1472.23,742.38 L1474.71,738.72 L1477.19,735.05
L1479.67,731.38 L1482.15,727.71 L1484.63,724.05 L1487.11,720.38 L1489.59,716.71 L1492.07,713.04 L1494.55,709.38 L1497.03,705.71
L1499.51,702.04 L1501.99,698.37 L1504.47,694.71 L1506.95,691.04 L1509.43,687.37 L1511.91,683.70 L1514.39,680.04 L1516.87,676.37
L1519.35,672.70 L1521.83,669.03 L1524.31,665.37 L1526.79,661.70 L1529.27,658.03 L1531.75,654.36 L1534.23,650.70 L1536.71,647.03
L1539.19,643.36 L1541.67,639.69 L1544.15,636.03 L1546.63,632.36 L1549.11,628.69 L1551.59,625.02 L1554.07,621.36 L1556.55,617.69
L1559.03,614.02 L1561.51,610.35 L1563.99,606.69 L1566.47,603.02 L1568.95,599.35 L1571.43,595.68 L1573.91,592.02 L1576.39,588.35
L1578.87,584.68 L1581.35,581.01 L1583.83,577.35 L1586.31,573.68 L1588.79,570.01 L1591.27,566.34 L1593.75,562.68 L1596.23,559.01
L1598.71,555.34 L1601.19,551.67 L1603.67,548.01 L1606.15,544.34 L1608.63,540.67 L1611.11,537.00 L1613.59,533.34 L1616.07,529.67
L1618.55,526.00 L1621.03,522.33 L1621.86,521.11 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,154.36 L532.31,154.36 L534.79,154.36 L537.27,154.36 L539.75,154.36 L542.23,154.36 L544.71,154.36
L547.19,154.36 L549.67,158.03 L552.15,161.69 L554.63,165.36 L557.11,169.03 L559.59,172.70 L562.07,176.36 L564.55,180.03
L567.03,183.70 L569.51,187.37 L571.99,191.03 L574.47,194.70 L576.95,198.37 L579.43,202.04 L581.91,205.70 L584.39,209.37
L586.87,213.04 L589.35,216.71 L591.83,220.37 L594.31,224.04 L596.79,227.71 L599.27,231.38 L601.75,235.04 L604.23,238.71
L606.71,242.38 L609.19,246.05 L611.67,249.71 L614.15,253.38 L616.63,257.05 L619.11,260.72 L621.59,264.38 L624.07,268.05
L626.55,271.72 L629.03,275.39 L631.51,279.05 L633.99,282.72 L636.47,286.39 L638.95,290.06 L641.43,293.72 L643.91,297.39
L646.39,301.06 L648.87,304.73 L651.35,308.39 L653.83,312.06 L656.31,315.73 L658.79,319.40 L661.27,323.06 L663.75,326.73
L666.23,330.40 L668.71,334.07 L671.19,337.73 L673.67,341.40 L676.15,345.07 L678.63,348.74 L681.11,352.40 L683.59,356.07
L686.07,359.74 L688.55,363.41 L691.03,367.07 L693.51,370.74 L695.99,374.41 L698.47,378.08 L700.95,381.74 L703.43,385.41
L705.91,389.08 L708.39,392.75 L710.87,396.41 L713.35,400.08 L715.83,403.75 L718.31,407.42 L720.79,411.08 L723.27,414.75
L725.75,418.42 L728.23,422.09 L730.71,425.75 L733.19,429.42 L735.67,433.09 L738.15,436.76 L740.63,440.42 L743.11,444.09
L745.59,447.76 L748.07,451.43 L750.55,455.09 L753.03,458.76 L755.51,462.43 L757.99,466.10 L760.47,469.76 L762.95,473.43
L765.43,477.10 L767.91,480.77 L770.39,484.43 L772.87,488.10 L775.35,491.77 L777.83,495.44 L780.31,499.10 L782.79,502.77
L785.27,506.44 L787.75,510.11 L790.23,513.77 L792.71,517.44 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,523.80 L1072.95,527.47 L1075.43,531.13 L1077.91,534.80 L1080.39,538.47
L1082.87,542.14 L1085.35,545.80 L1087.83,549.47 L1090.31,553.14 L1092.79,556.81 L1095.27,560.47 L1097.75,564.14 L1100.23,567.81
L1102.71,571.48 L1105.19,575.14 L1107.67,578.81 L1110.15,582.48 L1112.63,586.15 L1115.11,589.81 L1117.59,593.48 L1120.07,597.15
L1122.55,600.82 L1125.03,604.48 L1127.51,608.15 L1129.99,611.82 L1132.47,615.49 L1134.95,619.15 L1137.43,622.82 L1139.91,626.49
L1142.39,630.16 L1144.87,633.82 L1147.35,637.49 L1149.83,641.16 L1152.31,644.83 L1154.79,648.49 L1157.27,652.16 L1159.75,655.83
L1162.23,659.50 L1164.71,663.16 L1167.19,666.83 L1169.67,670.50 L1172.15,674.17 L1174.63,677.83 L1177.11,681.50 L1179.59,685.17
L1182.07,688.84 L1184.55,692.50 L1187.03,696.17 L1189.51,699.84 L1191.99,703.51 L1194.47,707.17 L1196.95,710.84 L1199.43,714.51
L1201.91,718.18 L1204.39,721.84 L1206.87,725.51 L1209.35,729.18 L1211.83,732.85 L1214.31,736.51 L1216.79,740.18 L1219.27,743.85
L1221.75,747.52 L1224.23,751.18 L1226.71,754.85 L1229.19,758.52 L1231.67,762.19 L1234.15,765.85 L1236.63,769.52 L1239.11,773.19
L1241.59,776.86 L1244.07,780.52 L1246.55,784.19 L1249.03,787.86 L1251.51,791.53 L1253.99,795.19 L1256.47,798.86 L1258.95,802.53
L1261.43,806.20 L1263.91,809.86 L1266.39,813.53 L1268.87,817.20 L1271.35,820.87 L1273.83,824.53 L1276.31,828.20 L1278.79,831.87
L1281.27,835.54 L1283.75,839.20 L1286.23,842.87 L1288.71,846.54 L1291.19,850.21 L1293.67,853.87 L1296.15,857.54 L1298.63,861.21
L1301.11,864.88 L1303.59,868.54 L1306.07,872.21 L1308.55,875.88 L1311.03,879.55 L1313.51,883.21 L1315.99,886.88 L1318.47,887.86
L1320.95,887.86 L1323.43,887.86 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,885.17 L1350.71,881.50 L1353.19,877.84 L1355.67,874.17 L1358.15,870.50
L1360.63,866.83 L1363.11,863.17 L1365.59,859.50 L1368.07,855.83 L1370.55,852.16 L1373.03,848.50 L1375.51,844.83 L1377.99,841.16
L1380.47,837.49 L1382.95,833.83 L1385.43,830.16 L1387.91,826.49 L1390.39,822.82 L1392.87,819.16 L1395.35,815.49 L1397.83,811.82
L1400.31,808.15 L1402.79,804.49 L1405.27,800.82 L1407.75,797.15 L1410.23,793.48 L1412.71,789.82 L1415.19,786.15 L1417.67,782.48
L1420.15,778.81 L1422.63,775.15 L1425.11,771.48 L1427.59,767.81 L1430.07,764.14 L1432.55,760.48 L1435.03,756.81 L1437.51,753.14
L1439.99,749.47 L1442.47,745.81 L1444.95,742.14 L1447.43,738.47 L1449.91,734.80 L1452.39,731.14 L1454.87,727.47 L1457.35,723.80
L1459.83,720.13 L1462.31,716.47 L1464.79,712.80 L1467.27,709.13 L1469.75,705.46 L1472.23,701.80 L1474.71,698.13 L1477.19,694.46
L1479.67,690.79 L1482.15,687.13 L1484.63,683.46 L1487.11,679.79 L1489.59,676.12 L1492.07,672.46 L1494.55,668.79 L1497.03,665.12
L1499.51,661.45 L1501.99,657.79 L1504.47,654.12 L1506.95,650.45 L1509.43,646.78 L1511.91,643.12 L1514.39,639.45 L1516.87,635.78
L1519.35,632.11 L1521.83,628.45 L1524.31,624.78 L1526.79,621.11 L1529.27,617.44 L1531.75,613.78 L1534.23,610.11 L1536.71,606.44
L1539.19,602.77 L1541.67,599.11 L1544.15,595.44 L1546.63,591.77 L1549.11,588.10 L1551.59,584.44 L1554.07,580.77 L1556.55,577.10
L1559.03,573.43 L1561.51,569.77 L1563.99,566.10 L1566.47,562.43 L1568.95,558.76 L1571.43,555.10 L1573.91,551.43 L1576.39,547.76
L1578.87,544.09 L1581.35,540.43 L1583.83,536.76 L1586.31,533.09 L1588.79,529.42 L1591.27,525.76 L1593.75,522.09 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,521.11 L252.07,517.44 L254.55,513.77 L257.03,510.11 L259.51,506.44 L261.99,502.77 L264.47,499.10 L266.95,495.44
L269.43,491.77 L271.91,488.10 L274.39,484.43 L276.87,480.77 L279.35,477.10 L281.83,473.43 L284.31,469.76 L286.79,466.10
L289.27,462.43 L291.75,458.76 L294.23,455.09 L296.71,451.43 L299.19,447.76 L301.67,444.09 L304.15,440.42 L306.63,436.76
L309.11,433.09 L311.59,429.42 L314.07,425.75 L316.55,422.09 L319.03,418.42 L321.51,414.75 L323.99,411.08 L326.47,407.42
L328.95,403.75 L331.43,400.08 L333.91,396.41 L336.39,392.75 L338.87,389.08 L341.35,385.41 L343.83,381.74 L346.31,378.08
L348.79,374.41 L351.27,370.74 L353.75,367.07 L356.23,363.41 L358.71,359.74 L361.19,356.07 L363.67,352.40 L366.15,348.74
L368.63,345.07 L371.11,341.40 L373.59,337.73 L376.07,334.07 L378.55,330.40 L381.03,326.73 L383.51,323.06 L385.99,319.40
L388.47,315.73 L390.95,312.06 L393.43,308.39 L395.91,304.73 L398.39,301.06 L400.87,297.39 L403.35,293.72 L405.83,290.06
L408.31,286.39 L410.79,282.72 L413.27,279.05 L415.75,275.39 L418.23,271.72 L420.71,268.05 L423.19,264.38 L425.67,260.72
L428.15,257.05 L430.63,253.38 L433.11,249.71 L435.59,246.05 L438.07,242.38 L440.55,238.71 L443.03,235.04 L445.51,231.38
L447.99,227.71 L450.47,224.04 L452.95,220.37 L455.43,216.71 L457.91,213.04 L460.39,209.37 L462.87,205.70 L465.35,202.04
L467.83,198.37 L470.31,194.70 L472.79,191.03 L475.27,187.37 L477.75,183.70 L480.23,180.03 L482.71,176.36 L485.19,172.70
L487.67,169.03 L490.15,165.36 L492.63,161.69 L495.11,158.03 L497.59,154.36 L500.07,154.36 L502.55,154.36 L505.03,154.36
L507.51,154.36 L509.99,154.36 L512.47,154.36 L514.95,154.36 L517.43,154.36 L519.91,154.36 L522.39,154.36 L524.87,154.36
L527.35,154.36 L529.83,158.03 L532.31,161.69 L534.79,165.36 L537.27,169.03 L539.75,172.70 L542.23,176.36 L544.71,180.03
L547.19,183.70 L549.67,187.37 L552.15,191.03 L554.63,194.70 L557.11,198.37 L559.59,202.04 L562.07,205.70 L564.55,209.37
L567.03,213.04 L569.51,216.71 L571.99,220.37 L574.47,224.04 L576.95,227.71 L579.43,231.38 L581.91,235.04 L584.39,238.71
L586.87,242.38 L589.35,246.05 L591.83,249.71 L594.31,253.38 L596.79,257.05 L599.27,260.72 L601.75,264.38 L604.23,268.05
L606.71,271.72 L609.19,275.39 L611.67,279.05 L614.15,282.72 L616.63,286.39 L619.11,290.06 L621.59,293.72 L624.07,297.39
L626.55,301.06 L629.03,304.73 L631.51,308.39 L633.99,312.06 L636.47,315.73 L638.95,319.40 L641.43,323.06 L643.91,326.73
L646.39,330.40 L648.87,334.07 L651.35,337.73 L653.83,341.40 L656.31,345.07 L658.79,348.74 L661.27,352.40 L663.75,356.07
L666.23,359.74 L668.71,363.41 L671.19,367.07 L673.67,370.74 L676.15,374.41 L678.63,378.08 L681.11,381.74 L683.59,385.41
L686.07,389.08 L688.55,392.75 L691.03,396.41 L693.51,400.08 L695.99,403.75 L698.47,407.42 L700.95,411.08 L703.43,414.75
L705.91,418.42 L708.39,422.09 L710.87,425.75 L713.35,429.42 L715.83,433.09 L718.31,436.76 L720.79,440.42 L723.27,444.09
L725.75,447.76 L728.23,451.43 L730.71,455.09 L733.19,458.76 L735.67,462.43 L738.15,466.10 L740.63,469.76 L743.11,473.43
L745.59,477.10 L748.07,480.77 L750.55,484.43 L753.03,488.10 L755.51,491.77 L757.99,495.44 L760.47,499.10 L762.95,502.77
L765.43,506.44 L767.91,510.11 L770.39,513.77 L772.87,517.44 L775.35,521.11 L777.83,521.11 L780.31,521.11 L782.79,521.11
L785.27,521.11 L787.75,521.11 L790.23,521.11 L792.71,521.11 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,523.80 L1053.11,527.47 L1055.59,531.13 L1058.07,534.80 L1060.55,538.47
L1063.03,542.14 L1065.51,545.80 L1067.99,549.47 L1070.47,553.14 L1072.95,556.81 L1075.43,560.47 L1077.91,564.14 L1080.39,567.81
L1082.87,571.48 L1085.35,575.14 L1087.83,578.81 L1090.31,582.48 L1092.79,586.15 L1095.27,589.81 L1097.75,593.48 L1100.23,597.15
L1102.71,600.82 L1105.19,604.48 L1107.67,608.15 L1110.15,611.82 L1112.63,615.49 L1115.11,619.15 L1117.59,622.82 L1120.07,626.49
L1122.55,630.16 L1125.03,633.82 L1127.51,637.49 L1129.99,641.16 L1132.47,644.83 L1134.95,648.49 L1137.43,652.16 L1139.91,655.83
L1142.39,659.50 L1144.87,663.16 L1147.35,666.83 L1149.83,670.50 L1152.31,674.17 L1154.79,677.83 L1157.27,681.50 L1159.75,685.17
L1162.23,688.84 L1164.71,692.50 L1167.19,696.17 L1169.67,699.84 L1172.15,703.51 L1174.63,707.17 L1177.11,710.84 L1179.59,714.51
L1182.07,718.18 L1184.55,721.84 L1187.03,725.51 L1189.51,729.18 L1191.99,732.85 L1194.47,736.51 L1196.95,740.18 L1199.43,743.85
L1201.91,747.52 L1204.39,751.18 L1206.87,754.85 L1209.35,758.52 L1211.83,762.19 L1214.31,765.85 L1216.79,769.52 L1219.27,773.19
L1221.75,776.86 L1224.23,780.52 L1226.71,784.19 L1229.19,787.86 L1231.67,791.53 L1234.15,795.19 L1236.63,798.86 L1239.11,802.53
L1241.59,806.20 L1244.07,809.86 L1246.55,813.53 L1249.03,817.20 L1251.51,820.87 L1253.99,824.53 L1256.47,828.20 L1258.95,831.87
L1261.43,835.54 L1263.91,839.20 L1266.39,842.87 L1268.87,846.54 L1271.35,850.21 L1273.83,853.87 L1276.31,857.54 L1278.79,861.21
L1281.27,864.88 L1283.75,868.54 L1286.23,872.21 L1288.71,875.88 L1291.19,879.55 L1293.67,883.21 L1296.15,886.88 L1298.63,887.86
L1301.11,887.86 L1303.59,887.86 L1306.07,887.86 L1308.55,887.86 L1311.03,887.86 L1313.51,887.86 L1315.99,887.86 L1318.47,887.86
L1320.95,887.86 L1323.43,887.86 L1325.91,887.86 L1328.39,887.86 L1330.87,887.86 L1333.35,887.86 L1335.83,887.86 L1338.31,887.86
L1340.79,887.86 L1343.27,887.86 L1345.75,887.86 L1348.23,885.17 L1350.71,881.50 L1353.19,877.84 L1355.67,874.17 L1358.15,870.50
L1360.63,866.83 L1363.11,863.17 L1365.59,859.50 L1368.07,855.83 L1370.55,852.16 L1373.03,848.50 L1375.51,844.83 L1377.99,841.16
L1380.47,837.49 L1382.95,833.83 L1385.43,830.16 L1387.91,826.49 L1390.39,822.82 L1392.87,819.16 L1395.35,815.49 L1397.83,811.82
L1400.31,808.15 L1402.79,804.49 L1405.27,800.82 L1407.75,797.15 L1410.23,793.48 L1412.71,789.82 L1415.19,786.15 L1417.67,782.48
L1420.15,778.81 L1422.63,775.15 L1425.11,771.48 L1427.59,767.81 L1430.07,764.14 L1432.55,760.48 L1435.03,756.81 L1437.51,753.14
L1439.99,749.47 L1442.47,745.81 L1444.95,742.14 L1447.43,738.47 L1449.91,734.80 L1452.39,731.14 L1454.87,727.47 L1457.35,723.80
L1459.83,720.13 L1462.31,716.47 L1464.79,712.80 L1467.27,709.13 L1469.75,705.46 L1472.23,701.80 L1474.71,698.13 L1477.19,694.46
L1479.67,690.79 L1482.15,687.13 L1484.63,683.46 L1487.11,679.79 L1489.59,676.12 L1492.07,672.46 L1494.55,668.79 L1497.03,665.12
L1499.51,661.45 L1501.99,657.79 L1504.47,654.12 L1506.95,650.45 L1509.43,646.78 L1511.91,643.12 L1514.39,639.45 L1516.87,635.78
L1519.35,632.11 L1521.83,628.45 L1524.31,624.78 L1526.79,621.11 L1529.27,617.44 L1531.75,613.78 L1534.23,610.11 L1536.71,606.44
L1539.19,602.77 L1541.67,599.11 L1544.15,595.44 L1546.63,591.77 L1549.11,588.10 L1551.59,584.44 L1554.07,580.77 L1556.55,577.10
L1559.03,573.43 L1561.51,569.77 L1563.99,566.10 L1566.47,562.43 L1568.95,558.76 L1571.43,555.10 L1573.91,551.43 L1576.39,547.76
L1578.87,544.09 L1581.35,540.43 L1583.83,536.76 L1586.31,533.09 L1588.79,529.42 L1591.27,525.76 L1593.75,522.09 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Acceleration</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

View File

@ -1,518 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-10</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,741.16 L1737.59,741.16 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,741.16 L259.71,741.16 '/> <g transform="translate(236.99,746.36)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >-5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,301.06 L1737.59,301.06 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,301.06 L259.71,301.06 '/> <g transform="translate(236.99,306.26)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >10</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(179.81,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >jerk [m/s</tspan><tspan font-family="Helvetica" font-size="8.8" dy="-5.50px">3</tspan><tspan font-family="Helvetica" font-size="11.0" dy="5.50px">]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,521.11 L529.83,521.11 L532.31,521.11 L534.79,521.11 L537.27,521.11 L539.75,521.11 L542.23,521.11 L544.71,521.11
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,961.21 L777.83,961.21 L780.31,961.21 L782.79,961.21
L785.27,961.21 L787.75,961.21 L790.23,961.21 L792.71,961.21 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,521.11 L1072.95,521.11 L1075.43,521.11 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,961.21
L1301.11,961.21 L1303.59,961.21 L1306.07,961.21 L1308.55,961.21 L1311.03,961.21 L1313.51,961.21 L1315.99,961.21 L1318.47,961.21
L1320.95,961.21 L1323.43,961.21 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,521.11 L1350.71,521.11 L1353.19,521.11 L1355.67,521.11 L1358.15,521.11
L1360.63,521.11 L1363.11,521.11 L1365.59,521.11 L1368.07,521.11 L1370.55,521.11 L1373.03,521.11 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1596.23,81.01
L1598.71,81.01 L1601.19,81.01 L1603.67,81.01 L1606.15,81.01 L1608.63,81.01 L1611.11,81.01 L1613.59,81.01 L1616.07,81.01
L1618.55,81.01 L1621.03,81.01 L1621.86,521.11 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,521.11 L529.83,521.11 L532.31,521.11 L534.79,521.11 L537.27,521.11 L539.75,521.11 L542.23,521.11 L544.71,521.11
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,961.21 L777.83,961.21 L780.31,961.21 L782.79,961.21
L785.27,961.21 L787.75,961.21 L790.23,961.21 L792.71,961.21 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,521.11 L1053.11,521.11 L1055.59,521.11 L1058.07,521.11 L1060.55,521.11
L1063.03,521.11 L1065.51,521.11 L1067.99,521.11 L1070.47,961.21 L1072.95,961.21 L1075.43,961.21 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,961.21
L1301.11,961.21 L1303.59,961.21 L1306.07,961.21 L1308.55,961.21 L1311.03,961.21 L1313.51,961.21 L1315.99,961.21 L1318.47,521.11
L1320.95,521.11 L1323.43,521.11 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,81.01 L1350.71,81.01 L1353.19,81.01 L1355.67,81.01 L1358.15,81.01
L1360.63,81.01 L1363.11,81.01 L1365.59,81.01 L1368.07,81.01 L1370.55,81.01 L1373.03,81.01 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,521.11 L252.07,81.01 L254.55,81.01 L257.03,81.01 L259.51,81.01 L261.99,81.01 L264.47,81.01 L266.95,81.01
L269.43,81.01 L271.91,81.01 L274.39,81.01 L276.87,81.01 L279.35,81.01 L281.83,81.01 L284.31,81.01 L286.79,81.01
L289.27,81.01 L291.75,81.01 L294.23,81.01 L296.71,81.01 L299.19,81.01 L301.67,81.01 L304.15,81.01 L306.63,81.01
L309.11,81.01 L311.59,81.01 L314.07,81.01 L316.55,81.01 L319.03,81.01 L321.51,81.01 L323.99,81.01 L326.47,81.01
L328.95,81.01 L331.43,81.01 L333.91,81.01 L336.39,81.01 L338.87,81.01 L341.35,81.01 L343.83,81.01 L346.31,81.01
L348.79,81.01 L351.27,81.01 L353.75,81.01 L356.23,81.01 L358.71,81.01 L361.19,81.01 L363.67,81.01 L366.15,81.01
L368.63,81.01 L371.11,81.01 L373.59,81.01 L376.07,81.01 L378.55,81.01 L381.03,81.01 L383.51,81.01 L385.99,81.01
L388.47,81.01 L390.95,81.01 L393.43,81.01 L395.91,81.01 L398.39,81.01 L400.87,81.01 L403.35,81.01 L405.83,81.01
L408.31,81.01 L410.79,81.01 L413.27,81.01 L415.75,81.01 L418.23,81.01 L420.71,81.01 L423.19,81.01 L425.67,81.01
L428.15,81.01 L430.63,81.01 L433.11,81.01 L435.59,81.01 L438.07,81.01 L440.55,81.01 L443.03,81.01 L445.51,81.01
L447.99,81.01 L450.47,81.01 L452.95,81.01 L455.43,81.01 L457.91,81.01 L460.39,81.01 L462.87,81.01 L465.35,81.01
L467.83,81.01 L470.31,81.01 L472.79,81.01 L475.27,81.01 L477.75,81.01 L480.23,81.01 L482.71,81.01 L485.19,81.01
L487.67,81.01 L490.15,81.01 L492.63,81.01 L495.11,81.01 L497.59,521.11 L500.07,521.11 L502.55,521.11 L505.03,521.11
L507.51,521.11 L509.99,521.11 L512.47,521.11 L514.95,521.11 L517.43,521.11 L519.91,521.11 L522.39,521.11 L524.87,521.11
L527.35,961.21 L529.83,961.21 L532.31,961.21 L534.79,961.21 L537.27,961.21 L539.75,961.21 L542.23,961.21 L544.71,961.21
L547.19,961.21 L549.67,961.21 L552.15,961.21 L554.63,961.21 L557.11,961.21 L559.59,961.21 L562.07,961.21 L564.55,961.21
L567.03,961.21 L569.51,961.21 L571.99,961.21 L574.47,961.21 L576.95,961.21 L579.43,961.21 L581.91,961.21 L584.39,961.21
L586.87,961.21 L589.35,961.21 L591.83,961.21 L594.31,961.21 L596.79,961.21 L599.27,961.21 L601.75,961.21 L604.23,961.21
L606.71,961.21 L609.19,961.21 L611.67,961.21 L614.15,961.21 L616.63,961.21 L619.11,961.21 L621.59,961.21 L624.07,961.21
L626.55,961.21 L629.03,961.21 L631.51,961.21 L633.99,961.21 L636.47,961.21 L638.95,961.21 L641.43,961.21 L643.91,961.21
L646.39,961.21 L648.87,961.21 L651.35,961.21 L653.83,961.21 L656.31,961.21 L658.79,961.21 L661.27,961.21 L663.75,961.21
L666.23,961.21 L668.71,961.21 L671.19,961.21 L673.67,961.21 L676.15,961.21 L678.63,961.21 L681.11,961.21 L683.59,961.21
L686.07,961.21 L688.55,961.21 L691.03,961.21 L693.51,961.21 L695.99,961.21 L698.47,961.21 L700.95,961.21 L703.43,961.21
L705.91,961.21 L708.39,961.21 L710.87,961.21 L713.35,961.21 L715.83,961.21 L718.31,961.21 L720.79,961.21 L723.27,961.21
L725.75,961.21 L728.23,961.21 L730.71,961.21 L733.19,961.21 L735.67,961.21 L738.15,961.21 L740.63,961.21 L743.11,961.21
L745.59,961.21 L748.07,961.21 L750.55,961.21 L753.03,961.21 L755.51,961.21 L757.99,961.21 L760.47,961.21 L762.95,961.21
L765.43,961.21 L767.91,961.21 L770.39,961.21 L772.87,961.21 L775.35,521.11 L777.83,521.11 L780.31,521.11 L782.79,521.11
L785.27,521.11 L787.75,521.11 L790.23,521.11 L792.71,521.11 L795.19,521.11 L797.67,521.11 L800.15,521.11 L802.63,521.11
L805.11,521.11 L807.59,521.11 L810.07,521.11 L812.55,521.11 L815.03,521.11 L817.51,521.11 L819.99,521.11 L822.47,521.11
L824.95,521.11 L827.43,521.11 L829.91,521.11 L832.39,521.11 L834.87,521.11 L837.35,521.11 L839.83,521.11 L842.31,521.11
L844.79,521.11 L847.27,521.11 L849.75,521.11 L852.23,521.11 L854.71,521.11 L857.19,521.11 L859.67,521.11 L862.15,521.11
L864.63,521.11 L867.11,521.11 L869.59,521.11 L872.07,521.11 L874.55,521.11 L877.03,521.11 L879.51,521.11 L881.99,521.11
L884.47,521.11 L886.95,521.11 L889.43,521.11 L891.91,521.11 L894.39,521.11 L896.87,521.11 L899.35,521.11 L901.83,521.11
L904.31,521.11 L906.79,521.11 L909.27,521.11 L911.75,521.11 L914.23,521.11 L916.71,521.11 L919.19,521.11 L921.67,521.11
L924.15,521.11 L926.63,521.11 L929.11,521.11 L931.59,521.11 L934.07,521.11 L936.55,521.11 L939.03,521.11 L941.51,521.11
L943.99,521.11 L946.47,521.11 L948.95,521.11 L951.43,521.11 L953.91,521.11 L956.39,521.11 L958.87,521.11 L961.35,521.11
L963.83,521.11 L966.31,521.11 L968.79,521.11 L971.27,521.11 L973.75,521.11 L976.23,521.11 L978.71,521.11 L981.19,521.11
L983.67,521.11 L986.15,521.11 L988.63,521.11 L991.11,521.11 L993.59,521.11 L996.07,521.11 L998.55,521.11 L1001.03,521.11
L1003.51,521.11 L1005.99,521.11 L1008.47,521.11 L1010.95,521.11 L1013.43,521.11 L1015.91,521.11 L1018.39,521.11 L1020.87,521.11
L1023.35,521.11 L1025.83,521.11 L1028.31,521.11 L1030.79,521.11 L1033.27,521.11 L1035.75,521.11 L1038.23,521.11 L1040.71,521.11
L1043.19,521.11 L1045.67,521.11 L1048.15,521.11 L1050.63,961.21 L1053.11,961.21 L1055.59,961.21 L1058.07,961.21 L1060.55,961.21
L1063.03,961.21 L1065.51,961.21 L1067.99,961.21 L1070.47,961.21 L1072.95,961.21 L1075.43,961.21 L1077.91,961.21 L1080.39,961.21
L1082.87,961.21 L1085.35,961.21 L1087.83,961.21 L1090.31,961.21 L1092.79,961.21 L1095.27,961.21 L1097.75,961.21 L1100.23,961.21
L1102.71,961.21 L1105.19,961.21 L1107.67,961.21 L1110.15,961.21 L1112.63,961.21 L1115.11,961.21 L1117.59,961.21 L1120.07,961.21
L1122.55,961.21 L1125.03,961.21 L1127.51,961.21 L1129.99,961.21 L1132.47,961.21 L1134.95,961.21 L1137.43,961.21 L1139.91,961.21
L1142.39,961.21 L1144.87,961.21 L1147.35,961.21 L1149.83,961.21 L1152.31,961.21 L1154.79,961.21 L1157.27,961.21 L1159.75,961.21
L1162.23,961.21 L1164.71,961.21 L1167.19,961.21 L1169.67,961.21 L1172.15,961.21 L1174.63,961.21 L1177.11,961.21 L1179.59,961.21
L1182.07,961.21 L1184.55,961.21 L1187.03,961.21 L1189.51,961.21 L1191.99,961.21 L1194.47,961.21 L1196.95,961.21 L1199.43,961.21
L1201.91,961.21 L1204.39,961.21 L1206.87,961.21 L1209.35,961.21 L1211.83,961.21 L1214.31,961.21 L1216.79,961.21 L1219.27,961.21
L1221.75,961.21 L1224.23,961.21 L1226.71,961.21 L1229.19,961.21 L1231.67,961.21 L1234.15,961.21 L1236.63,961.21 L1239.11,961.21
L1241.59,961.21 L1244.07,961.21 L1246.55,961.21 L1249.03,961.21 L1251.51,961.21 L1253.99,961.21 L1256.47,961.21 L1258.95,961.21
L1261.43,961.21 L1263.91,961.21 L1266.39,961.21 L1268.87,961.21 L1271.35,961.21 L1273.83,961.21 L1276.31,961.21 L1278.79,961.21
L1281.27,961.21 L1283.75,961.21 L1286.23,961.21 L1288.71,961.21 L1291.19,961.21 L1293.67,961.21 L1296.15,961.21 L1298.63,521.11
L1301.11,521.11 L1303.59,521.11 L1306.07,521.11 L1308.55,521.11 L1311.03,521.11 L1313.51,521.11 L1315.99,521.11 L1318.47,521.11
L1320.95,521.11 L1323.43,521.11 L1325.91,521.11 L1328.39,521.11 L1330.87,521.11 L1333.35,521.11 L1335.83,521.11 L1338.31,521.11
L1340.79,521.11 L1343.27,521.11 L1345.75,521.11 L1348.23,81.01 L1350.71,81.01 L1353.19,81.01 L1355.67,81.01 L1358.15,81.01
L1360.63,81.01 L1363.11,81.01 L1365.59,81.01 L1368.07,81.01 L1370.55,81.01 L1373.03,81.01 L1375.51,81.01 L1377.99,81.01
L1380.47,81.01 L1382.95,81.01 L1385.43,81.01 L1387.91,81.01 L1390.39,81.01 L1392.87,81.01 L1395.35,81.01 L1397.83,81.01
L1400.31,81.01 L1402.79,81.01 L1405.27,81.01 L1407.75,81.01 L1410.23,81.01 L1412.71,81.01 L1415.19,81.01 L1417.67,81.01
L1420.15,81.01 L1422.63,81.01 L1425.11,81.01 L1427.59,81.01 L1430.07,81.01 L1432.55,81.01 L1435.03,81.01 L1437.51,81.01
L1439.99,81.01 L1442.47,81.01 L1444.95,81.01 L1447.43,81.01 L1449.91,81.01 L1452.39,81.01 L1454.87,81.01 L1457.35,81.01
L1459.83,81.01 L1462.31,81.01 L1464.79,81.01 L1467.27,81.01 L1469.75,81.01 L1472.23,81.01 L1474.71,81.01 L1477.19,81.01
L1479.67,81.01 L1482.15,81.01 L1484.63,81.01 L1487.11,81.01 L1489.59,81.01 L1492.07,81.01 L1494.55,81.01 L1497.03,81.01
L1499.51,81.01 L1501.99,81.01 L1504.47,81.01 L1506.95,81.01 L1509.43,81.01 L1511.91,81.01 L1514.39,81.01 L1516.87,81.01
L1519.35,81.01 L1521.83,81.01 L1524.31,81.01 L1526.79,81.01 L1529.27,81.01 L1531.75,81.01 L1534.23,81.01 L1536.71,81.01
L1539.19,81.01 L1541.67,81.01 L1544.15,81.01 L1546.63,81.01 L1549.11,81.01 L1551.59,81.01 L1554.07,81.01 L1556.55,81.01
L1559.03,81.01 L1561.51,81.01 L1563.99,81.01 L1566.47,81.01 L1568.95,81.01 L1571.43,81.01 L1573.91,81.01 L1576.39,81.01
L1578.87,81.01 L1581.35,81.01 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,521.11
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Jerk</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

View File

@ -1,531 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,785.17 L1737.59,785.17 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,785.17 L259.71,785.17 '/> <g transform="translate(236.99,790.37)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,609.13 L1737.59,609.13 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,609.13 L259.71,609.13 '/> <g transform="translate(236.99,614.33)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,433.09 L1737.59,433.09 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,433.09 L259.71,433.09 '/> <g transform="translate(236.99,438.29)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,257.05 L1737.59,257.05 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,257.05 L259.71,257.05 '/> <g transform="translate(236.99,262.25)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >4</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(205.01,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >position [m]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,961.21 L252.07,961.21 L254.55,961.21 L257.03,961.21 L259.51,961.21 L261.99,961.21 L264.47,961.20 L266.95,961.20
L269.43,961.19 L271.91,961.18 L274.39,961.17 L276.87,961.16 L279.35,961.15 L281.83,961.13 L284.31,961.11 L286.79,961.09
L289.27,961.06 L291.75,961.03 L294.23,961.00 L296.71,960.96 L299.19,960.92 L301.67,960.87 L304.15,960.82 L306.63,960.76
L309.11,960.70 L311.59,960.64 L314.07,960.57 L316.55,960.49 L319.03,960.40 L321.51,960.32 L323.99,960.22 L326.47,960.12
L328.95,960.01 L331.43,959.89 L333.91,959.77 L336.39,959.64 L338.87,959.50 L341.35,959.35 L343.83,959.20 L346.31,959.03
L348.79,958.86 L351.27,958.68 L353.75,958.49 L356.23,958.29 L358.71,958.09 L361.19,957.87 L363.67,957.64 L366.15,957.40
L368.63,957.15 L371.11,956.90 L373.59,956.63 L376.07,956.35 L378.55,956.05 L381.03,955.75 L383.51,955.44 L385.99,955.11
L388.47,954.77 L390.95,954.42 L393.43,954.05 L395.91,953.68 L398.39,953.29 L400.87,952.89 L403.35,952.47 L405.83,952.04
L408.31,951.60 L410.79,951.14 L413.27,950.67 L415.75,950.18 L418.23,949.68 L420.71,949.16 L423.19,948.63 L425.67,948.08
L428.15,947.52 L430.63,946.94 L433.11,946.35 L435.59,945.74 L438.07,945.11 L440.55,944.47 L443.03,943.81 L445.51,943.13
L447.99,942.43 L450.47,941.72 L452.95,940.99 L455.43,940.24 L457.91,939.47 L460.39,938.69 L462.87,937.88 L465.35,937.06
L467.83,936.22 L470.31,935.36 L472.79,934.47 L475.27,933.57 L477.75,932.65 L480.23,931.71 L482.71,930.75 L485.19,929.77
L487.67,928.76 L490.15,927.74 L492.63,926.69 L495.11,925.62 L497.59,924.54 L500.07,923.42 L502.55,922.29 L505.03,921.14
L507.51,919.96 L509.99,918.76 L512.47,917.54 L514.95,916.29 L517.43,915.03 L519.91,913.74 L522.39,912.43 L524.87,911.10
L527.35,909.75 L529.83,908.37 L532.31,906.98 L534.79,905.56 L537.27,904.11 L539.75,902.65 L542.23,901.17 L544.71,899.66
L547.19,898.13 L549.67,896.58 L552.15,895.00 L554.63,893.41 L557.11,891.79 L559.59,890.16 L562.07,888.50 L564.55,886.82
L567.03,885.12 L569.51,883.40 L571.99,881.66 L574.47,879.90 L576.95,878.12 L579.43,876.33 L581.91,874.51 L584.39,872.67
L586.87,870.82 L589.35,868.94 L591.83,867.05 L594.31,865.14 L596.79,863.21 L599.27,861.27 L601.75,859.31 L604.23,857.33
L606.71,855.33 L609.19,853.32 L611.67,851.29 L614.15,849.24 L616.63,847.18 L619.11,845.10 L621.59,843.01 L624.07,840.90
L626.55,838.77 L629.03,836.63 L631.51,834.48 L633.99,832.31 L636.47,830.13 L638.95,827.93 L641.43,825.72 L643.91,823.50
L646.39,821.26 L648.87,819.01 L651.35,816.74 L653.83,814.47 L656.31,812.18 L658.79,809.88 L661.27,807.56 L663.75,805.24
L666.23,802.90 L668.71,800.55 L671.19,798.19 L673.67,795.82 L676.15,793.44 L678.63,791.04 L681.11,788.64 L683.59,786.23
L686.07,783.81 L688.55,781.37 L691.03,778.93 L693.51,776.48 L695.99,774.02 L698.47,771.55 L700.95,769.07 L703.43,766.59
L705.91,764.09 L708.39,761.59 L710.87,759.08 L713.35,756.57 L715.83,754.04 L718.31,751.51 L720.79,748.97 L723.27,746.43
L725.75,743.88 L728.23,741.32 L730.71,738.76 L733.19,736.19 L735.67,733.61 L738.15,731.03 L740.63,728.45 L743.11,725.86
L745.59,723.26 L748.07,720.66 L750.55,718.06 L753.03,715.45 L755.51,712.84 L757.99,710.23 L760.47,707.61 L762.95,704.99
L765.43,702.37 L767.91,699.74 L770.39,697.11 L772.87,694.48 L775.35,691.85 L777.83,689.22 L780.31,686.58 L782.79,683.94
L785.27,681.30 L787.75,678.66 L790.23,676.02 L792.71,673.38 L795.19,670.74 L797.67,668.10 L800.15,665.46 L802.63,662.82
L805.11,660.18 L807.59,657.54 L810.07,654.90 L812.55,652.26 L815.03,649.62 L817.51,646.98 L819.99,644.34 L822.47,641.70
L824.95,639.06 L827.43,636.42 L829.91,633.78 L832.39,631.13 L834.87,628.49 L837.35,625.85 L839.83,623.21 L842.31,620.57
L844.79,617.93 L847.27,615.29 L849.75,612.65 L852.23,610.01 L854.71,607.37 L857.19,604.73 L859.67,602.09 L862.15,599.45
L864.63,596.81 L867.11,594.17 L869.59,591.53 L872.07,588.89 L874.55,586.24 L877.03,583.60 L879.51,580.96 L881.99,578.32
L884.47,575.68 L886.95,573.04 L889.43,570.40 L891.91,567.76 L894.39,565.12 L896.87,562.48 L899.35,559.84 L901.83,557.20
L904.31,554.56 L906.79,551.92 L909.27,549.28 L911.75,546.64 L914.23,544.00 L916.71,541.35 L919.19,538.71 L921.67,536.07
L924.15,533.43 L926.63,530.79 L929.11,528.15 L931.59,525.51 L934.07,522.87 L936.55,520.23 L939.03,517.59 L941.51,514.95
L943.99,512.31 L946.47,509.67 L948.95,507.03 L951.43,504.39 L953.91,501.75 L956.39,499.10 L958.87,496.46 L961.35,493.82
L963.83,491.18 L966.31,488.54 L968.79,485.90 L971.27,483.26 L973.75,480.62 L976.23,477.98 L978.71,475.34 L981.19,472.70
L983.67,470.06 L986.15,467.42 L988.63,464.78 L991.11,462.14 L993.59,459.50 L996.07,456.86 L998.55,454.21 L1001.03,451.57
L1003.51,448.93 L1005.99,446.29 L1008.47,443.65 L1010.95,441.01 L1013.43,438.37 L1015.91,435.73 L1018.39,433.09 L1020.87,430.45
L1023.35,427.81 L1025.83,425.17 L1028.31,422.53 L1030.79,419.89 L1033.27,417.25 L1035.75,414.61 L1038.23,411.97 L1040.71,409.32
L1043.19,406.68 L1045.67,404.04 L1048.15,401.40 L1050.63,398.76 L1053.11,396.12 L1055.59,393.48 L1058.07,390.84 L1060.55,388.20
L1063.03,385.56 L1065.51,382.92 L1067.99,380.28 L1070.47,377.64 L1072.95,375.00 L1075.43,372.36 L1077.91,369.72 L1080.39,367.08
L1082.87,364.44 L1085.35,361.80 L1087.83,359.16 L1090.31,356.52 L1092.79,353.88 L1095.27,351.25 L1097.75,348.61 L1100.23,345.98
L1102.71,343.35 L1105.19,340.73 L1107.67,338.10 L1110.15,335.48 L1112.63,332.86 L1115.11,330.25 L1117.59,327.64 L1120.07,325.03
L1122.55,322.42 L1125.03,319.82 L1127.51,317.23 L1129.99,314.64 L1132.47,312.05 L1134.95,309.47 L1137.43,306.89 L1139.91,304.32
L1142.39,301.76 L1144.87,299.20 L1147.35,296.64 L1149.83,294.10 L1152.31,291.56 L1154.79,289.02 L1157.27,286.49 L1159.75,283.98
L1162.23,281.46 L1164.71,278.96 L1167.19,276.46 L1169.67,273.97 L1172.15,271.49 L1174.63,269.02 L1177.11,266.56 L1179.59,264.10
L1182.07,261.66 L1184.55,259.22 L1187.03,256.80 L1189.51,254.38 L1191.99,251.98 L1194.47,249.58 L1196.95,247.19 L1199.43,244.82
L1201.91,242.46 L1204.39,240.10 L1206.87,237.76 L1209.35,235.43 L1211.83,233.11 L1214.31,230.81 L1216.79,228.52 L1219.27,226.23
L1221.75,223.97 L1224.23,221.71 L1226.71,219.47 L1229.19,217.24 L1231.67,215.02 L1234.15,212.82 L1236.63,210.63 L1239.11,208.46
L1241.59,206.30 L1244.07,204.16 L1246.55,202.03 L1249.03,199.91 L1251.51,197.82 L1253.99,195.73 L1256.47,193.67 L1258.95,191.61
L1261.43,189.58 L1263.91,187.56 L1266.39,185.56 L1268.87,183.57 L1271.35,181.60 L1273.83,179.65 L1276.31,177.72 L1278.79,175.80
L1281.27,173.91 L1283.75,172.03 L1286.23,170.16 L1288.71,168.32 L1291.19,166.50 L1293.67,164.69 L1296.15,162.91 L1298.63,161.14
L1301.11,159.40 L1303.59,157.67 L1306.07,155.96 L1308.55,154.28 L1311.03,152.61 L1313.51,150.97 L1315.99,149.35 L1318.47,147.74
L1320.95,146.16 L1323.43,144.61 L1325.91,143.07 L1328.39,141.55 L1330.87,140.06 L1333.35,138.59 L1335.83,137.14 L1338.31,135.72
L1340.79,134.31 L1343.27,132.93 L1345.75,131.57 L1348.23,130.23 L1350.71,128.91 L1353.19,127.62 L1355.67,126.35 L1358.15,125.09
L1360.63,123.87 L1363.11,122.66 L1365.59,121.47 L1368.07,120.31 L1370.55,119.17 L1373.03,118.05 L1375.51,116.96 L1377.99,115.88
L1380.47,114.83 L1382.95,113.80 L1385.43,112.79 L1387.91,111.80 L1390.39,110.83 L1392.87,109.88 L1395.35,108.95 L1397.83,108.04
L1400.31,107.16 L1402.79,106.29 L1405.27,105.44 L1407.75,104.61 L1410.23,103.80 L1412.71,103.01 L1415.19,102.23 L1417.67,101.48
L1420.15,100.74 L1422.63,100.02 L1425.11,99.32 L1427.59,98.64 L1430.07,97.97 L1432.55,97.32 L1435.03,96.69 L1437.51,96.07
L1439.99,95.47 L1442.47,94.89 L1444.95,94.32 L1447.43,93.77 L1449.91,93.23 L1452.39,92.71 L1454.87,92.21 L1457.35,91.71
L1459.83,91.24 L1462.31,90.78 L1464.79,90.33 L1467.27,89.89 L1469.75,89.47 L1472.23,89.06 L1474.71,88.67 L1477.19,88.29
L1479.67,87.92 L1482.15,87.57 L1484.63,87.22 L1487.11,86.89 L1489.59,86.57 L1492.07,86.27 L1494.55,85.97 L1497.03,85.69
L1499.51,85.41 L1501.99,85.15 L1504.47,84.90 L1506.95,84.66 L1509.43,84.43 L1511.91,84.21 L1514.39,83.99 L1516.87,83.79
L1519.35,83.60 L1521.83,83.42 L1524.31,83.24 L1526.79,83.08 L1529.27,82.92 L1531.75,82.77 L1534.23,82.63 L1536.71,82.49
L1539.19,82.37 L1541.67,82.25 L1544.15,82.14 L1546.63,82.03 L1549.11,81.94 L1551.59,81.84 L1554.07,81.76 L1556.55,81.68
L1559.03,81.61 L1561.51,81.54 L1563.99,81.48 L1566.47,81.42 L1568.95,81.37 L1571.43,81.32 L1573.91,81.28 L1576.39,81.24
L1578.87,81.20 L1581.35,81.17 L1583.83,81.14 L1586.31,81.12 L1588.79,81.10 L1591.27,81.08 L1593.75,81.06 L1596.23,81.05
L1598.71,81.04 L1601.19,81.03 L1603.67,81.02 L1606.15,81.02 L1608.63,81.02 L1611.11,81.01 L1613.59,81.01 L1616.07,81.01
L1618.55,81.01 L1621.03,81.01 L1621.86,81.01 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,961.21 L252.07,961.21 L254.55,961.21 L257.03,961.21 L259.51,961.21 L261.99,961.21 L264.47,961.20 L266.95,961.20
L269.43,961.19 L271.91,961.18 L274.39,961.17 L276.87,961.16 L279.35,961.15 L281.83,961.13 L284.31,961.11 L286.79,961.09
L289.27,961.06 L291.75,961.03 L294.23,961.00 L296.71,960.96 L299.19,960.92 L301.67,960.87 L304.15,960.82 L306.63,960.76
L309.11,960.70 L311.59,960.64 L314.07,960.57 L316.55,960.49 L319.03,960.40 L321.51,960.32 L323.99,960.22 L326.47,960.12
L328.95,960.01 L331.43,959.89 L333.91,959.77 L336.39,959.64 L338.87,959.50 L341.35,959.35 L343.83,959.20 L346.31,959.03
L348.79,958.86 L351.27,958.68 L353.75,958.49 L356.23,958.29 L358.71,958.09 L361.19,957.87 L363.67,957.64 L366.15,957.40
L368.63,957.15 L371.11,956.90 L373.59,956.63 L376.07,956.35 L378.55,956.05 L381.03,955.75 L383.51,955.44 L385.99,955.11
L388.47,954.77 L390.95,954.42 L393.43,954.05 L395.91,953.68 L398.39,953.29 L400.87,952.89 L403.35,952.47 L405.83,952.04
L408.31,951.60 L410.79,951.14 L413.27,950.67 L415.75,950.18 L418.23,949.68 L420.71,949.16 L423.19,948.63 L425.67,948.08
L428.15,947.52 L430.63,946.94 L433.11,946.35 L435.59,945.74 L438.07,945.11 L440.55,944.47 L443.03,943.81 L445.51,943.13
L447.99,942.43 L450.47,941.72 L452.95,940.99 L455.43,940.24 L457.91,939.47 L460.39,938.69 L462.87,937.88 L465.35,937.06
L467.83,936.22 L470.31,935.36 L472.79,934.47 L475.27,933.57 L477.75,932.65 L480.23,931.71 L482.71,930.75 L485.19,929.77
L487.67,928.76 L490.15,927.74 L492.63,926.69 L495.11,925.62 L497.59,924.54 L500.07,923.42 L502.55,922.29 L505.03,921.14
L507.51,919.96 L509.99,918.76 L512.47,917.54 L514.95,916.29 L517.43,915.03 L519.91,913.74 L522.39,912.43 L524.87,911.10
L527.35,909.75 L529.83,908.37 L532.31,906.98 L534.79,905.56 L537.27,904.11 L539.75,902.65 L542.23,901.17 L544.71,899.66
L547.19,898.13 L549.67,896.58 L552.15,895.00 L554.63,893.41 L557.11,891.79 L559.59,890.16 L562.07,888.50 L564.55,886.82
L567.03,885.12 L569.51,883.40 L571.99,881.66 L574.47,879.90 L576.95,878.12 L579.43,876.33 L581.91,874.51 L584.39,872.67
L586.87,870.82 L589.35,868.94 L591.83,867.05 L594.31,865.14 L596.79,863.21 L599.27,861.27 L601.75,859.31 L604.23,857.33
L606.71,855.33 L609.19,853.32 L611.67,851.29 L614.15,849.24 L616.63,847.18 L619.11,845.10 L621.59,843.01 L624.07,840.90
L626.55,838.77 L629.03,836.63 L631.51,834.48 L633.99,832.31 L636.47,830.13 L638.95,827.93 L641.43,825.72 L643.91,823.50
L646.39,821.26 L648.87,819.01 L651.35,816.74 L653.83,814.47 L656.31,812.18 L658.79,809.88 L661.27,807.56 L663.75,805.24
L666.23,802.90 L668.71,800.55 L671.19,798.19 L673.67,795.82 L676.15,793.44 L678.63,791.04 L681.11,788.64 L683.59,786.23
L686.07,783.81 L688.55,781.37 L691.03,778.93 L693.51,776.48 L695.99,774.02 L698.47,771.55 L700.95,769.07 L703.43,766.59
L705.91,764.09 L708.39,761.59 L710.87,759.08 L713.35,756.57 L715.83,754.04 L718.31,751.51 L720.79,748.97 L723.27,746.43
L725.75,743.88 L728.23,741.32 L730.71,738.76 L733.19,736.19 L735.67,733.61 L738.15,731.03 L740.63,728.45 L743.11,725.86
L745.59,723.26 L748.07,720.66 L750.55,718.06 L753.03,715.45 L755.51,712.84 L757.99,710.23 L760.47,707.61 L762.95,704.99
L765.43,702.37 L767.91,699.74 L770.39,697.11 L772.87,694.48 L775.35,691.85 L777.83,689.22 L780.31,686.58 L782.79,683.94
L785.27,681.30 L787.75,678.66 L790.23,676.02 L792.71,673.38 L795.19,670.74 L797.67,668.10 L800.15,665.46 L802.63,662.82
L805.11,660.18 L807.59,657.54 L810.07,654.90 L812.55,652.26 L815.03,649.62 L817.51,646.98 L819.99,644.34 L822.47,641.70
L824.95,639.06 L827.43,636.42 L829.91,633.78 L832.39,631.13 L834.87,628.49 L837.35,625.85 L839.83,623.21 L842.31,620.57
L844.79,617.93 L847.27,615.29 L849.75,612.65 L852.23,610.01 L854.71,607.37 L857.19,604.73 L859.67,602.09 L862.15,599.45
L864.63,596.81 L867.11,594.17 L869.59,591.53 L872.07,588.89 L874.55,586.24 L877.03,583.60 L879.51,580.96 L881.99,578.32
L884.47,575.68 L886.95,573.04 L889.43,570.40 L891.91,567.76 L894.39,565.12 L896.87,562.48 L899.35,559.84 L901.83,557.20
L904.31,554.56 L906.79,551.92 L909.27,549.28 L911.75,546.64 L914.23,544.00 L916.71,541.35 L919.19,538.71 L921.67,536.07
L924.15,533.43 L926.63,530.79 L929.11,528.15 L931.59,525.51 L934.07,522.87 L936.55,520.23 L939.03,517.59 L941.51,514.95
L943.99,512.31 L946.47,509.67 L948.95,507.03 L951.43,504.39 L953.91,501.75 L956.39,499.10 L958.87,496.46 L961.35,493.82
L963.83,491.18 L966.31,488.54 L968.79,485.90 L971.27,483.26 L973.75,480.62 L976.23,477.98 L978.71,475.34 L981.19,472.70
L983.67,470.06 L986.15,467.42 L988.63,464.78 L991.11,462.14 L993.59,459.50 L996.07,456.86 L998.55,454.21 L1001.03,451.57
L1003.51,448.93 L1005.99,446.29 L1008.47,443.65 L1010.95,441.01 L1013.43,438.37 L1015.91,435.73 L1018.39,433.09 L1020.87,430.45
L1023.35,427.81 L1025.83,425.17 L1028.31,422.53 L1030.79,419.89 L1033.27,417.25 L1035.75,414.61 L1038.23,411.97 L1040.71,409.32
L1043.19,406.68 L1045.67,404.04 L1048.15,401.40 L1050.63,398.76 L1053.11,396.12 L1055.59,393.48 L1058.07,390.84 L1060.55,388.20
L1063.03,385.56 L1065.51,382.92 L1067.99,380.28 L1070.47,377.64 L1072.95,375.00 L1075.43,372.36 L1077.91,369.72 L1080.39,367.08
L1082.87,364.44 L1085.35,361.80 L1087.83,359.17 L1090.31,356.54 L1092.79,353.91 L1095.27,351.28 L1097.75,348.65 L1100.23,346.03
L1102.71,343.40 L1105.19,340.79 L1107.67,338.17 L1110.15,335.56 L1112.63,332.95 L1115.11,330.35 L1117.59,327.75 L1120.07,325.15
L1122.55,322.56 L1125.03,319.98 L1127.51,317.39 L1129.99,314.82 L1132.47,312.25 L1134.95,309.68 L1137.43,307.12 L1139.91,304.57
L1142.39,302.02 L1144.87,299.48 L1147.35,296.95 L1149.83,294.42 L1152.31,291.91 L1154.79,289.39 L1157.27,286.89 L1159.75,284.39
L1162.23,281.91 L1164.71,279.43 L1167.19,276.95 L1169.67,274.49 L1172.15,272.04 L1174.63,269.59 L1177.11,267.16 L1179.59,264.73
L1182.07,262.32 L1184.55,259.91 L1187.03,257.52 L1189.51,255.13 L1191.99,252.76 L1194.47,250.40 L1196.95,248.04 L1199.43,245.70
L1201.91,243.38 L1204.39,241.06 L1206.87,238.75 L1209.35,236.46 L1211.83,234.18 L1214.31,231.91 L1216.79,229.66 L1219.27,227.42
L1221.75,225.19 L1224.23,222.97 L1226.71,220.77 L1229.19,218.59 L1231.67,216.42 L1234.15,214.26 L1236.63,212.11 L1239.11,209.99
L1241.59,207.87 L1244.07,205.77 L1246.55,203.69 L1249.03,201.63 L1251.51,199.58 L1253.99,197.54 L1256.47,195.52 L1258.95,193.52
L1261.43,191.54 L1263.91,189.57 L1266.39,187.62 L1268.87,185.69 L1271.35,183.77 L1273.83,181.88 L1276.31,180.00 L1278.79,178.14
L1281.27,176.30 L1283.75,174.48 L1286.23,172.67 L1288.71,170.89 L1291.19,169.12 L1293.67,167.38 L1296.15,165.65 L1298.63,163.95
L1301.11,162.26 L1303.59,160.60 L1306.07,158.96 L1308.55,157.34 L1311.03,155.74 L1313.51,154.16 L1315.99,152.60 L1318.47,151.07
L1320.95,149.55 L1323.43,148.06 L1325.91,146.59 L1328.39,145.14 L1330.87,143.72 L1333.35,142.32 L1335.83,140.93 L1338.31,139.58
L1340.79,138.24 L1343.27,136.92 L1345.75,135.63 L1348.23,134.36 L1350.71,133.11 L1353.19,131.88 L1355.67,130.68 L1358.15,129.49
L1360.63,128.33 L1363.11,127.18 L1365.59,126.06 L1368.07,124.96 L1370.55,123.87 L1373.03,122.81 L1375.51,121.77 L1377.99,120.75
L1380.47,119.74 L1382.95,118.76 L1385.43,117.79 L1387.91,116.84 L1390.39,115.91 L1392.87,115.00 L1395.35,114.11 L1397.83,113.23
L1400.31,112.37 L1402.79,111.53 L1405.27,110.71 L1407.75,109.90 L1410.23,109.11 L1412.71,108.33 L1415.19,107.57 L1417.67,106.83
L1420.15,106.10 L1422.63,105.39 L1425.11,104.70 L1427.59,104.01 L1430.07,103.35 L1432.55,102.70 L1435.03,102.06 L1437.51,101.43
L1439.99,100.83 L1442.47,100.23 L1444.95,99.65 L1447.43,99.08 L1449.91,98.52 L1452.39,97.98 L1454.87,97.45 L1457.35,96.93
L1459.83,96.42 L1462.31,95.93 L1464.79,95.45 L1467.27,94.98 L1469.75,94.52 L1472.23,94.07 L1474.71,93.63 L1477.19,93.20
L1479.67,92.79 L1482.15,92.38 L1484.63,91.98 L1487.11,91.60 L1489.59,91.22 L1492.07,90.85 L1494.55,90.49 L1497.03,90.14
L1499.51,89.80 L1501.99,89.47 L1504.47,89.14 L1506.95,88.83 L1509.43,88.52 L1511.91,88.22 L1514.39,87.92 L1516.87,87.64
L1519.35,87.36 L1521.83,87.08 L1524.31,86.81 L1526.79,86.55 L1529.27,86.30 L1531.75,86.05 L1534.23,85.81 L1536.71,85.57
L1539.19,85.33 L1541.67,85.11 L1544.15,84.88 L1546.63,84.66 L1549.11,84.45 L1551.59,84.24 L1554.07,84.03 L1556.55,83.83
L1559.03,83.63 L1561.51,83.43 L1563.99,83.24 L1566.47,83.05 L1568.95,82.86 L1571.43,82.67 L1573.91,82.49 L1576.39,82.30
L1578.87,82.12 L1581.35,81.94 L1583.83,81.76 L1586.31,81.59 L1588.79,81.41 L1591.27,81.23 L1593.75,81.06 L1594.41,81.01
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,961.21 L252.07,961.03 L254.55,960.86 L257.03,960.68 L259.51,960.50 L261.99,960.33 L264.47,960.15 L266.95,959.97
L269.43,959.78 L271.91,959.60 L274.39,959.41 L276.87,959.22 L279.35,959.03 L281.83,958.84 L284.31,958.64 L286.79,958.45
L289.27,958.24 L291.75,958.04 L294.23,957.83 L296.71,957.61 L299.19,957.40 L301.67,957.17 L304.15,956.95 L306.63,956.71
L309.11,956.48 L311.59,956.24 L314.07,955.99 L316.55,955.74 L319.03,955.48 L321.51,955.21 L323.99,954.94 L326.47,954.66
L328.95,954.37 L331.43,954.08 L333.91,953.78 L336.39,953.48 L338.87,953.16 L341.35,952.84 L343.83,952.51 L346.31,952.17
L348.79,951.82 L351.27,951.46 L353.75,951.10 L356.23,950.72 L358.71,950.34 L361.19,949.95 L363.67,949.54 L366.15,949.13
L368.63,948.70 L371.11,948.27 L373.59,947.82 L376.07,947.37 L378.55,946.90 L381.03,946.42 L383.51,945.93 L385.99,945.43
L388.47,944.91 L390.95,944.38 L393.43,943.84 L395.91,943.29 L398.39,942.73 L400.87,942.15 L403.35,941.55 L405.83,940.95
L408.31,940.33 L410.79,939.70 L413.27,939.05 L415.75,938.38 L418.23,937.71 L420.71,937.02 L423.19,936.31 L425.67,935.58
L428.15,934.85 L430.63,934.09 L433.11,933.32 L435.59,932.53 L438.07,931.73 L440.55,930.91 L443.03,930.07 L445.51,929.22
L447.99,928.35 L450.47,927.46 L452.95,926.55 L455.43,925.63 L457.91,924.69 L460.39,923.72 L462.87,922.74 L465.35,921.74
L467.83,920.73 L470.31,919.69 L472.79,918.63 L475.27,917.55 L477.75,916.46 L480.23,915.34 L482.71,914.20 L485.19,913.04
L487.67,911.86 L490.15,910.66 L492.63,909.44 L495.11,908.20 L497.59,906.93 L500.07,905.64 L502.55,904.33 L505.03,903.00
L507.51,901.65 L509.99,900.27 L512.47,898.88 L514.95,897.46 L517.43,896.02 L519.91,894.55 L522.39,893.07 L524.87,891.56
L527.35,890.03 L529.83,888.48 L532.31,886.91 L534.79,885.31 L537.27,883.70 L539.75,882.06 L542.23,880.40 L544.71,878.72
L547.19,877.02 L549.67,875.30 L552.15,873.56 L554.63,871.80 L557.11,870.03 L559.59,868.23 L562.07,866.41 L564.55,864.57
L567.03,862.72 L569.51,860.85 L571.99,858.95 L574.47,857.04 L576.95,855.12 L579.43,853.17 L581.91,851.21 L584.39,849.23
L586.87,847.23 L589.35,845.22 L591.83,843.19 L594.31,841.14 L596.79,839.08 L599.27,837.00 L601.75,834.91 L604.23,832.80
L606.71,830.68 L609.19,828.54 L611.67,826.38 L614.15,824.21 L616.63,822.03 L619.11,819.83 L621.59,817.62 L624.07,815.40
L626.55,813.16 L629.03,810.91 L631.51,808.65 L633.99,806.37 L636.47,804.08 L638.95,801.78 L641.43,799.46 L643.91,797.14
L646.39,794.80 L648.87,792.45 L651.35,790.09 L653.83,787.72 L656.31,785.34 L658.79,782.95 L661.27,780.54 L663.75,778.13
L666.23,775.71 L668.71,773.28 L671.19,770.83 L673.67,768.38 L676.15,765.92 L678.63,763.45 L681.11,760.98 L683.59,758.49
L686.07,756.00 L688.55,753.49 L691.03,750.99 L693.51,748.47 L695.99,745.94 L698.47,743.41 L700.95,740.87 L703.43,738.33
L705.91,735.78 L708.39,733.22 L710.87,730.66 L713.35,728.09 L715.83,725.51 L718.31,722.93 L720.79,720.35 L723.27,717.76
L725.75,715.16 L728.23,712.57 L730.71,709.96 L733.19,707.36 L735.67,704.75 L738.15,702.13 L740.63,699.51 L743.11,696.89
L745.59,694.27 L748.07,691.64 L750.55,689.02 L753.03,686.38 L755.51,683.75 L757.99,681.12 L760.47,678.48 L762.95,675.84
L765.43,673.21 L767.91,670.57 L770.39,667.93 L772.87,665.29 L775.35,662.65 L777.83,660.01 L780.31,657.36 L782.79,654.72
L785.27,652.08 L787.75,649.44 L790.23,646.80 L792.71,644.16 L795.19,641.52 L797.67,638.88 L800.15,636.24 L802.63,633.60
L805.11,630.96 L807.59,628.32 L810.07,625.68 L812.55,623.04 L815.03,620.40 L817.51,617.76 L819.99,615.12 L822.47,612.47
L824.95,609.83 L827.43,607.19 L829.91,604.55 L832.39,601.91 L834.87,599.27 L837.35,596.63 L839.83,593.99 L842.31,591.35
L844.79,588.71 L847.27,586.07 L849.75,583.43 L852.23,580.79 L854.71,578.15 L857.19,575.51 L859.67,572.87 L862.15,570.23
L864.63,567.58 L867.11,564.94 L869.59,562.30 L872.07,559.66 L874.55,557.02 L877.03,554.38 L879.51,551.74 L881.99,549.10
L884.47,546.46 L886.95,543.82 L889.43,541.18 L891.91,538.54 L894.39,535.90 L896.87,533.26 L899.35,530.62 L901.83,527.98
L904.31,525.33 L906.79,522.69 L909.27,520.05 L911.75,517.41 L914.23,514.77 L916.71,512.13 L919.19,509.49 L921.67,506.85
L924.15,504.21 L926.63,501.57 L929.11,498.93 L931.59,496.29 L934.07,493.65 L936.55,491.01 L939.03,488.37 L941.51,485.73
L943.99,483.09 L946.47,480.44 L948.95,477.80 L951.43,475.16 L953.91,472.52 L956.39,469.88 L958.87,467.24 L961.35,464.60
L963.83,461.96 L966.31,459.32 L968.79,456.68 L971.27,454.04 L973.75,451.40 L976.23,448.76 L978.71,446.12 L981.19,443.48
L983.67,440.84 L986.15,438.20 L988.63,435.55 L991.11,432.91 L993.59,430.27 L996.07,427.63 L998.55,424.99 L1001.03,422.35
L1003.51,419.71 L1005.99,417.07 L1008.47,414.43 L1010.95,411.79 L1013.43,409.15 L1015.91,406.51 L1018.39,403.87 L1020.87,401.23
L1023.35,398.59 L1025.83,395.95 L1028.31,393.30 L1030.79,390.66 L1033.27,388.02 L1035.75,385.38 L1038.23,382.74 L1040.71,380.10
L1043.19,377.46 L1045.67,374.82 L1048.15,372.18 L1050.63,369.54 L1053.11,366.90 L1055.59,364.26 L1058.07,361.62 L1060.55,358.98
L1063.03,356.34 L1065.51,353.71 L1067.99,351.07 L1070.47,348.44 L1072.95,345.81 L1075.43,343.18 L1077.91,340.55 L1080.39,337.93
L1082.87,335.31 L1085.35,332.69 L1087.83,330.07 L1090.31,327.46 L1092.79,324.85 L1095.27,322.25 L1097.75,319.65 L1100.23,317.05
L1102.71,314.46 L1105.19,311.88 L1107.67,309.30 L1110.15,306.72 L1112.63,304.15 L1115.11,301.58 L1117.59,299.03 L1120.07,296.47
L1122.55,293.93 L1125.03,291.39 L1127.51,288.85 L1129.99,286.33 L1132.47,283.81 L1134.95,281.30 L1137.43,278.79 L1139.91,276.30
L1142.39,273.81 L1144.87,271.33 L1147.35,268.86 L1149.83,266.39 L1152.31,263.94 L1154.79,261.50 L1157.27,259.06 L1159.75,256.64
L1162.23,254.22 L1164.71,251.82 L1167.19,249.42 L1169.67,247.04 L1172.15,244.66 L1174.63,242.30 L1177.11,239.95 L1179.59,237.61
L1182.07,235.28 L1184.55,232.96 L1187.03,230.66 L1189.51,228.36 L1191.99,226.08 L1194.47,223.82 L1196.95,221.56 L1199.43,219.32
L1201.91,217.09 L1204.39,214.88 L1206.87,212.68 L1209.35,210.49 L1211.83,208.32 L1214.31,206.16 L1216.79,204.02 L1219.27,201.89
L1221.75,199.77 L1224.23,197.68 L1226.71,195.59 L1229.19,193.53 L1231.67,191.48 L1234.15,189.44 L1236.63,187.43 L1239.11,185.42
L1241.59,183.44 L1244.07,181.47 L1246.55,179.52 L1249.03,177.59 L1251.51,175.68 L1253.99,173.78 L1256.47,171.90 L1258.95,170.04
L1261.43,168.20 L1263.91,166.38 L1266.39,164.57 L1268.87,162.79 L1271.35,161.03 L1273.83,159.28 L1276.31,157.56 L1278.79,155.85
L1281.27,154.17 L1283.75,152.50 L1286.23,150.86 L1288.71,149.24 L1291.19,147.64 L1293.67,146.06 L1296.15,144.50 L1298.63,142.97
L1301.11,141.45 L1303.59,139.96 L1306.07,138.49 L1308.55,137.05 L1311.03,135.62 L1313.51,134.22 L1315.99,132.84 L1318.47,131.48
L1320.95,130.14 L1323.43,128.83 L1325.91,127.53 L1328.39,126.26 L1330.87,125.01 L1333.35,123.78 L1335.83,122.58 L1338.31,121.40
L1340.79,120.24 L1343.27,119.10 L1345.75,117.98 L1348.23,116.88 L1350.71,115.81 L1353.19,114.76 L1355.67,113.73 L1358.15,112.72
L1360.63,111.73 L1363.11,110.76 L1365.59,109.82 L1368.07,108.89 L1370.55,107.98 L1373.03,107.10 L1375.51,106.23 L1377.99,105.38
L1380.47,104.56 L1382.95,103.75 L1385.43,102.96 L1387.91,102.18 L1390.39,101.43 L1392.87,100.69 L1395.35,99.98 L1397.83,99.28
L1400.31,98.59 L1402.79,97.93 L1405.27,97.28 L1407.75,96.65 L1410.23,96.03 L1412.71,95.43 L1415.19,94.85 L1417.67,94.28
L1420.15,93.73 L1422.63,93.20 L1425.11,92.68 L1427.59,92.17 L1430.07,91.68 L1432.55,91.21 L1435.03,90.74 L1437.51,90.30
L1439.99,89.86 L1442.47,89.44 L1444.95,89.04 L1447.43,88.64 L1449.91,88.26 L1452.39,87.90 L1454.87,87.54 L1457.35,87.20
L1459.83,86.87 L1462.31,86.55 L1464.79,86.25 L1467.27,85.95 L1469.75,85.67 L1472.23,85.40 L1474.71,85.13 L1477.19,84.88
L1479.67,84.64 L1482.15,84.41 L1484.63,84.19 L1487.11,83.98 L1489.59,83.78 L1492.07,83.59 L1494.55,83.40 L1497.03,83.23
L1499.51,83.07 L1501.99,82.91 L1504.47,82.76 L1506.95,82.62 L1509.43,82.49 L1511.91,82.36 L1514.39,82.24 L1516.87,82.13
L1519.35,82.03 L1521.83,81.93 L1524.31,81.84 L1526.79,81.75 L1529.27,81.67 L1531.75,81.60 L1534.23,81.53 L1536.71,81.47
L1539.19,81.41 L1541.67,81.36 L1544.15,81.32 L1546.63,81.27 L1549.11,81.23 L1551.59,81.20 L1554.07,81.17 L1556.55,81.14
L1559.03,81.12 L1561.51,81.10 L1563.99,81.08 L1566.47,81.06 L1568.95,81.05 L1571.43,81.04 L1573.91,81.03 L1576.39,81.02
L1578.87,81.02 L1581.35,81.02 L1583.83,81.01 L1586.31,81.01 L1588.79,81.01 L1591.27,81.01 L1593.75,81.01 L1594.41,81.01
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Position</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

View File

@ -1,544 +0,0 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<svg
width="1920" height="1080"
viewBox="0 0 1920 1080"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<title>Gnuplot</title>
<desc>Produced by GNUPLOT 5.4 patchlevel 2 </desc>
<g id="gnuplot_canvas">
<rect x="0" y="0" width="1920" height="1080" fill="none"/>
<defs>
<circle id='gpDot' r='0.5' stroke-width='0.5' stroke='currentColor'/>
<path id='gpPt0' stroke-width='0.148' stroke='currentColor' d='M-1,0 h2 M0,-1 v2'/>
<path id='gpPt1' stroke-width='0.148' stroke='currentColor' d='M-1,-1 L1,1 M1,-1 L-1,1'/>
<path id='gpPt2' stroke-width='0.148' stroke='currentColor' d='M-1,0 L1,0 M0,-1 L0,1 M-1,-1 L1,1 M-1,1 L1,-1'/>
<rect id='gpPt3' stroke-width='0.148' stroke='currentColor' x='-1' y='-1' width='2' height='2'/>
<rect id='gpPt4' stroke-width='0.148' stroke='currentColor' fill='currentColor' x='-1' y='-1' width='2' height='2'/>
<circle id='gpPt5' stroke-width='0.148' stroke='currentColor' cx='0' cy='0' r='1'/>
<use xlink:href='#gpPt5' id='gpPt6' fill='currentColor' stroke='none'/>
<path id='gpPt7' stroke-width='0.148' stroke='currentColor' d='M0,-1.33 L-1.33,0.67 L1.33,0.67 z'/>
<use xlink:href='#gpPt7' id='gpPt8' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt7' id='gpPt9' stroke='currentColor' transform='rotate(180)'/>
<use xlink:href='#gpPt9' id='gpPt10' fill='currentColor' stroke='none'/>
<use xlink:href='#gpPt3' id='gpPt11' stroke='currentColor' transform='rotate(45)'/>
<use xlink:href='#gpPt11' id='gpPt12' fill='currentColor' stroke='none'/>
<path id='gpPt13' stroke-width='0.148' stroke='currentColor' d='M0,1.330 L1.265,0.411 L0.782,-1.067 L-0.782,-1.076 L-1.265,0.411 z'/>
<use xlink:href='#gpPt13' id='gpPt14' fill='currentColor' stroke='none'/>
<filter id='textbox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='white' flood-opacity='1' result='bgnd'/>
<feComposite in='SourceGraphic' in2='bgnd' operator='atop'/>
</filter>
<filter id='greybox' filterUnits='objectBoundingBox' x='0' y='0' height='1' width='1'>
<feFlood flood-color='lightgrey' flood-opacity='1' result='grey'/>
<feComposite in='SourceGraphic' in2='grey' operator='atop'/>
</filter>
</defs>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="white" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L1737.59,961.21 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L259.71,961.21 '/> <g transform="translate(236.99,966.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,814.51 L1737.59,814.51 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,814.51 L259.71,814.51 '/> <g transform="translate(236.99,819.71)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,667.81 L1737.59,667.81 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,667.81 L259.71,667.81 '/> <g transform="translate(236.99,673.01)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,521.11 L1737.59,521.11 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,521.11 L259.71,521.11 '/> <g transform="translate(236.99,526.31)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,374.41 L1737.59,374.41 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,374.41 L259.71,374.41 '/> <g transform="translate(236.99,379.61)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,227.71 L1737.59,227.71 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,227.71 L259.71,227.71 '/> <g transform="translate(236.99,232.91)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,81.01 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L259.71,81.01 '/> <g transform="translate(236.99,86.21)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="end">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M249.59,961.21 L249.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,961.21 L249.59,951.09 '/> <g transform="translate(249.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M497.59,961.21 L497.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M497.59,961.21 L497.59,951.09 '/> <g transform="translate(497.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >0.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M745.59,961.21 L745.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M745.59,961.21 L745.59,951.09 '/> <g transform="translate(745.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M993.59,961.21 L993.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M993.59,961.21 L993.59,951.09 '/> <g transform="translate(993.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >1.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1241.59,961.21 L1241.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1241.59,961.21 L1241.59,951.09 '/> <g transform="translate(1241.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1489.59,961.21 L1489.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1489.59,961.21 L1489.59,951.09 '/> <g transform="translate(1489.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >2.5</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="rgb( 0, 0, 0)" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(204, 204, 255)' opacity='0.20' class="gridline" d='M1737.59,961.21 L1737.59,81.01 '/></g>
<g fill="none" color="black" stroke="rgb(204, 204, 255)" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1737.59,961.21 L1737.59,951.09 '/> <g transform="translate(1737.59,993.41)" stroke="none" fill="rgb(38,38,38)" font-family="Helvetica" font-size="16.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >3</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(179.81,521.11) rotate(270)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >velocity [m/s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,1032.29)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="middle">
<text><tspan font-family="Helvetica" >time [s]</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M249.59,961.21 L252.07,961.17 L254.55,961.06 L257.03,960.88 L259.51,960.62 L261.99,960.29 L264.47,959.89 L266.95,959.41
L269.43,958.86 L271.91,958.24 L274.39,957.54 L276.87,956.77 L279.35,955.93 L281.83,955.01 L284.31,954.02 L286.79,952.96
L289.27,951.82 L291.75,950.61 L294.23,949.33 L296.71,947.97 L299.19,946.54 L301.67,945.04 L304.15,943.46 L306.63,941.81
L309.11,940.09 L311.59,938.29 L314.07,936.42 L316.55,934.47 L319.03,932.46 L321.51,930.37 L323.99,928.20 L326.47,925.97
L328.95,923.65 L331.43,921.27 L333.91,918.81 L336.39,916.28 L338.87,913.68 L341.35,911.00 L343.83,908.25 L346.31,905.43
L348.79,902.53 L351.27,899.56 L353.75,896.52 L356.23,893.40 L358.71,890.21 L361.19,886.94 L363.67,883.61 L366.15,880.19
L368.63,876.71 L371.11,873.15 L373.59,869.52 L376.07,865.82 L378.55,862.04 L381.03,858.19 L383.51,854.27 L385.99,850.27
L388.47,846.20 L390.95,842.05 L393.43,837.84 L395.91,833.54 L398.39,829.18 L400.87,824.74 L403.35,820.23 L405.83,815.65
L408.31,810.99 L410.79,806.26 L413.27,801.45 L415.75,796.58 L418.23,791.62 L420.71,786.60 L423.19,781.50 L425.67,776.33
L428.15,771.09 L430.63,765.77 L433.11,760.38 L435.59,754.91 L438.07,749.38 L440.55,743.76 L443.03,738.08 L445.51,732.32
L447.99,726.49 L450.47,720.59 L452.95,714.61 L455.43,708.56 L457.91,702.43 L460.39,696.23 L462.87,689.96 L465.35,683.62
L467.83,677.20 L470.31,670.71 L472.79,664.14 L475.27,657.50 L477.75,650.79 L480.23,644.01 L482.71,637.15 L485.19,630.22
L487.67,623.21 L490.15,616.13 L492.63,608.98 L495.11,601.76 L497.59,594.46 L500.07,587.12 L502.55,579.79 L505.03,572.45
L507.51,565.12 L509.99,557.78 L512.47,550.45 L514.95,543.11 L517.43,535.78 L519.91,528.44 L522.39,521.11 L524.87,513.77
L527.35,506.44 L529.83,499.10 L532.31,491.77 L534.79,484.43 L537.27,477.10 L539.75,469.76 L542.23,462.43 L544.71,455.09
L547.19,447.76 L549.67,440.46 L552.15,433.24 L554.63,426.09 L557.11,419.01 L559.59,412.00 L562.07,405.07 L564.55,398.21
L567.03,391.43 L569.51,384.72 L571.99,378.08 L574.47,371.51 L576.95,365.02 L579.43,358.60 L581.91,352.26 L584.39,345.99
L586.87,339.79 L589.35,333.66 L591.83,327.61 L594.31,321.63 L596.79,315.73 L599.27,309.90 L601.75,304.14 L604.23,298.46
L606.71,292.84 L609.19,287.31 L611.67,281.84 L614.15,276.45 L616.63,271.13 L619.11,265.89 L621.59,260.72 L624.07,255.62
L626.55,250.60 L629.03,245.64 L631.51,240.77 L633.99,235.96 L636.47,231.23 L638.95,226.57 L641.43,221.99 L643.91,217.48
L646.39,213.04 L648.87,208.68 L651.35,204.38 L653.83,200.17 L656.31,196.02 L658.79,191.95 L661.27,187.95 L663.75,184.03
L666.23,180.18 L668.71,176.40 L671.19,172.70 L673.67,169.07 L676.15,165.51 L678.63,162.03 L681.11,158.61 L683.59,155.28
L686.07,152.01 L688.55,148.82 L691.03,145.70 L693.51,142.66 L695.99,139.69 L698.47,136.79 L700.95,133.97 L703.43,131.22
L705.91,128.54 L708.39,125.94 L710.87,123.41 L713.35,120.95 L715.83,118.57 L718.31,116.25 L720.79,114.02 L723.27,111.85
L725.75,109.76 L728.23,107.75 L730.71,105.80 L733.19,103.93 L735.67,102.13 L738.15,100.41 L740.63,98.76 L743.11,97.18
L745.59,95.68 L748.07,94.25 L750.55,92.89 L753.03,91.61 L755.51,90.40 L757.99,89.26 L760.47,88.20 L762.95,87.21
L765.43,86.29 L767.91,85.45 L770.39,84.68 L772.87,83.98 L775.35,83.36 L777.83,82.81 L780.31,82.33 L782.79,81.93
L785.27,81.60 L787.75,81.34 L790.23,81.16 L792.71,81.05 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.01 L1053.11,81.01 L1055.59,81.01 L1058.07,81.01 L1060.55,81.01
L1063.03,81.01 L1065.51,81.01 L1067.99,81.01 L1070.47,81.01 L1072.95,81.01 L1075.43,81.01 L1077.91,81.03 L1080.39,81.11
L1082.87,81.27 L1085.35,81.50 L1087.83,81.81 L1090.31,82.19 L1092.79,82.64 L1095.27,83.17 L1097.75,83.76 L1100.23,84.44
L1102.71,85.18 L1105.19,86.00 L1107.67,86.89 L1110.15,87.86 L1112.63,88.90 L1115.11,90.01 L1117.59,91.20 L1120.07,92.46
L1122.55,93.79 L1125.03,95.20 L1127.51,96.67 L1129.99,98.23 L1132.47,99.85 L1134.95,101.55 L1137.43,103.32 L1139.91,105.17
L1142.39,107.09 L1144.87,109.08 L1147.35,111.15 L1149.83,113.29 L1152.31,115.50 L1154.79,117.79 L1157.27,120.15 L1159.75,122.58
L1162.23,125.09 L1164.71,127.66 L1167.19,130.32 L1169.67,133.04 L1172.15,135.84 L1174.63,138.72 L1177.11,141.66 L1179.59,144.68
L1182.07,147.77 L1184.55,150.94 L1187.03,154.18 L1189.51,157.49 L1191.99,160.88 L1194.47,164.34 L1196.95,167.87 L1199.43,171.48
L1201.91,175.16 L1204.39,178.91 L1206.87,182.74 L1209.35,186.64 L1211.83,190.61 L1214.31,194.66 L1216.79,198.78 L1219.27,202.97
L1221.75,207.24 L1224.23,211.58 L1226.71,215.99 L1229.19,220.48 L1231.67,225.04 L1234.15,229.67 L1236.63,234.38 L1239.11,239.16
L1241.59,244.01 L1244.07,248.94 L1246.55,253.94 L1249.03,259.01 L1251.51,264.16 L1253.99,269.38 L1256.47,274.67 L1258.95,280.04
L1261.43,285.48 L1263.91,290.99 L1266.39,296.58 L1268.87,302.24 L1271.35,307.97 L1273.83,313.78 L1276.31,319.66 L1278.79,325.61
L1281.27,331.64 L1283.75,337.74 L1286.23,343.91 L1288.71,350.16 L1291.19,356.48 L1293.67,362.87 L1296.15,369.34 L1298.63,375.88
L1301.11,382.49 L1303.59,389.18 L1306.07,395.94 L1308.55,402.78 L1311.03,409.68 L1313.51,416.66 L1315.99,423.72 L1318.47,430.84
L1320.95,438.05 L1323.43,445.32 L1325.91,452.65 L1328.39,459.99 L1330.87,467.32 L1333.35,474.66 L1335.83,481.99 L1338.31,489.33
L1340.79,496.66 L1343.27,504.00 L1345.75,511.33 L1348.23,518.67 L1350.71,526.00 L1353.19,533.34 L1355.67,540.67 L1358.15,548.01
L1360.63,555.34 L1363.11,562.68 L1365.59,570.01 L1368.07,577.35 L1370.55,584.68 L1373.03,592.02 L1375.51,599.33 L1377.99,606.58
L1380.47,613.76 L1382.95,620.86 L1385.43,627.89 L1387.91,634.85 L1390.39,641.73 L1392.87,648.54 L1395.35,655.28 L1397.83,661.94
L1400.31,668.53 L1402.79,675.04 L1405.27,681.49 L1407.75,687.85 L1410.23,694.15 L1412.71,700.37 L1415.19,706.52 L1417.67,712.60
L1420.15,718.60 L1422.63,724.53 L1425.11,730.39 L1427.59,736.17 L1430.07,741.88 L1432.55,747.51 L1435.03,753.08 L1437.51,758.56
L1439.99,763.98 L1442.47,769.32 L1444.95,774.59 L1447.43,779.79 L1449.91,784.91 L1452.39,789.96 L1454.87,794.93 L1457.35,799.84
L1459.83,804.66 L1462.31,809.42 L1464.79,814.10 L1467.27,818.71 L1469.75,823.25 L1472.23,827.71 L1474.71,832.10 L1477.19,836.41
L1479.67,840.66 L1482.15,844.82 L1484.63,848.92 L1487.11,852.94 L1489.59,856.89 L1492.07,860.77 L1494.55,864.57 L1497.03,868.30
L1499.51,871.95 L1501.99,875.53 L1504.47,879.04 L1506.95,882.48 L1509.43,885.84 L1511.91,889.13 L1514.39,892.34 L1516.87,895.48
L1519.35,898.55 L1521.83,901.55 L1524.31,904.47 L1526.79,907.32 L1529.27,910.09 L1531.75,912.79 L1534.23,915.42 L1536.71,917.98
L1539.19,920.46 L1541.67,922.87 L1544.15,925.20 L1546.63,927.46 L1549.11,929.65 L1551.59,931.77 L1554.07,933.81 L1556.55,935.78
L1559.03,937.67 L1561.51,939.49 L1563.99,941.24 L1566.47,942.92 L1568.95,944.52 L1571.43,946.05 L1573.91,947.50 L1576.39,948.88
L1578.87,950.19 L1581.35,951.43 L1583.83,952.59 L1586.31,953.68 L1588.79,954.69 L1591.27,955.63 L1593.75,956.50 L1596.23,957.29
L1598.71,958.02 L1601.19,958.66 L1603.67,959.24 L1606.15,959.74 L1608.63,960.17 L1611.11,960.52 L1613.59,960.80 L1616.07,961.01
L1618.55,961.14 L1621.03,961.21 L1621.86,961.21 '/></g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M249.59,961.21 L252.07,961.17 L254.55,961.06 L257.03,960.88 L259.51,960.62 L261.99,960.29 L264.47,959.89 L266.95,959.41
L269.43,958.86 L271.91,958.24 L274.39,957.54 L276.87,956.77 L279.35,955.93 L281.83,955.01 L284.31,954.02 L286.79,952.96
L289.27,951.82 L291.75,950.61 L294.23,949.33 L296.71,947.97 L299.19,946.54 L301.67,945.04 L304.15,943.46 L306.63,941.81
L309.11,940.09 L311.59,938.29 L314.07,936.42 L316.55,934.47 L319.03,932.46 L321.51,930.37 L323.99,928.20 L326.47,925.97
L328.95,923.65 L331.43,921.27 L333.91,918.81 L336.39,916.28 L338.87,913.68 L341.35,911.00 L343.83,908.25 L346.31,905.43
L348.79,902.53 L351.27,899.56 L353.75,896.52 L356.23,893.40 L358.71,890.21 L361.19,886.94 L363.67,883.61 L366.15,880.19
L368.63,876.71 L371.11,873.15 L373.59,869.52 L376.07,865.82 L378.55,862.04 L381.03,858.19 L383.51,854.27 L385.99,850.27
L388.47,846.20 L390.95,842.05 L393.43,837.84 L395.91,833.54 L398.39,829.18 L400.87,824.74 L403.35,820.23 L405.83,815.65
L408.31,810.99 L410.79,806.26 L413.27,801.45 L415.75,796.58 L418.23,791.62 L420.71,786.60 L423.19,781.50 L425.67,776.33
L428.15,771.09 L430.63,765.77 L433.11,760.38 L435.59,754.91 L438.07,749.38 L440.55,743.76 L443.03,738.08 L445.51,732.32
L447.99,726.49 L450.47,720.59 L452.95,714.61 L455.43,708.56 L457.91,702.43 L460.39,696.23 L462.87,689.96 L465.35,683.62
L467.83,677.20 L470.31,670.71 L472.79,664.14 L475.27,657.50 L477.75,650.79 L480.23,644.01 L482.71,637.15 L485.19,630.22
L487.67,623.21 L490.15,616.13 L492.63,608.98 L495.11,601.76 L497.59,594.46 L500.07,587.12 L502.55,579.79 L505.03,572.45
L507.51,565.12 L509.99,557.78 L512.47,550.45 L514.95,543.11 L517.43,535.78 L519.91,528.44 L522.39,521.11 L524.87,513.77
L527.35,506.44 L529.83,499.10 L532.31,491.77 L534.79,484.43 L537.27,477.10 L539.75,469.76 L542.23,462.43 L544.71,455.09
L547.19,447.76 L549.67,440.46 L552.15,433.24 L554.63,426.09 L557.11,419.01 L559.59,412.00 L562.07,405.07 L564.55,398.21
L567.03,391.43 L569.51,384.72 L571.99,378.08 L574.47,371.51 L576.95,365.02 L579.43,358.60 L581.91,352.26 L584.39,345.99
L586.87,339.79 L589.35,333.66 L591.83,327.61 L594.31,321.63 L596.79,315.73 L599.27,309.90 L601.75,304.14 L604.23,298.46
L606.71,292.84 L609.19,287.31 L611.67,281.84 L614.15,276.45 L616.63,271.13 L619.11,265.89 L621.59,260.72 L624.07,255.62
L626.55,250.60 L629.03,245.64 L631.51,240.77 L633.99,235.96 L636.47,231.23 L638.95,226.57 L641.43,221.99 L643.91,217.48
L646.39,213.04 L648.87,208.68 L651.35,204.38 L653.83,200.17 L656.31,196.02 L658.79,191.95 L661.27,187.95 L663.75,184.03
L666.23,180.18 L668.71,176.40 L671.19,172.70 L673.67,169.07 L676.15,165.51 L678.63,162.03 L681.11,158.61 L683.59,155.28
L686.07,152.01 L688.55,148.82 L691.03,145.70 L693.51,142.66 L695.99,139.69 L698.47,136.79 L700.95,133.97 L703.43,131.22
L705.91,128.54 L708.39,125.94 L710.87,123.41 L713.35,120.95 L715.83,118.57 L718.31,116.25 L720.79,114.02 L723.27,111.85
L725.75,109.76 L728.23,107.75 L730.71,105.80 L733.19,103.93 L735.67,102.13 L738.15,100.41 L740.63,98.76 L743.11,97.18
L745.59,95.68 L748.07,94.25 L750.55,92.89 L753.03,91.61 L755.51,90.40 L757.99,89.26 L760.47,88.20 L762.95,87.21
L765.43,86.29 L767.91,85.45 L770.39,84.68 L772.87,83.98 L775.35,83.36 L777.83,82.81 L780.31,82.33 L782.79,81.93
L785.27,81.60 L787.75,81.34 L790.23,81.16 L792.71,81.05 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.01 L1053.11,81.01 L1055.59,81.01 L1058.07,81.01 L1060.55,81.01
L1063.03,81.01 L1065.51,81.01 L1067.99,81.01 L1070.47,81.03 L1072.95,81.12 L1075.43,81.28 L1077.91,81.52 L1080.39,81.83
L1082.87,82.22 L1085.35,82.67 L1087.83,83.20 L1090.31,83.81 L1092.79,84.48 L1095.27,85.24 L1097.75,86.06 L1100.23,86.96
L1102.71,87.93 L1105.19,88.97 L1107.67,90.09 L1110.15,91.28 L1112.63,92.54 L1115.11,93.88 L1117.59,95.29 L1120.07,96.78
L1122.55,98.33 L1125.03,99.96 L1127.51,101.67 L1129.99,103.45 L1132.47,105.30 L1134.95,107.22 L1137.43,109.22 L1139.91,111.29
L1142.39,113.43 L1144.87,115.65 L1147.35,117.94 L1149.83,120.31 L1152.31,122.74 L1154.79,125.25 L1157.27,127.84 L1159.75,130.50
L1162.23,133.23 L1164.71,136.03 L1167.19,138.91 L1169.67,141.86 L1172.15,144.89 L1174.63,147.98 L1177.11,151.15 L1179.59,154.40
L1182.07,157.72 L1184.55,161.11 L1187.03,164.57 L1189.51,168.11 L1191.99,171.72 L1194.47,175.41 L1196.95,179.16 L1199.43,183.00
L1201.91,186.90 L1204.39,190.88 L1206.87,194.93 L1209.35,199.05 L1211.83,203.25 L1214.31,207.52 L1216.79,211.87 L1219.27,216.29
L1221.75,220.78 L1224.23,225.34 L1226.71,229.98 L1229.19,234.69 L1231.67,239.48 L1234.15,244.34 L1236.63,249.27 L1239.11,254.27
L1241.59,259.35 L1244.07,264.50 L1246.55,269.73 L1249.03,275.03 L1251.51,280.40 L1253.99,285.84 L1256.47,291.36 L1258.95,296.95
L1261.43,302.62 L1263.91,308.36 L1266.39,314.17 L1268.87,320.05 L1271.35,326.01 L1273.83,332.04 L1276.31,338.15 L1278.79,344.33
L1281.27,350.58 L1283.75,356.90 L1286.23,363.30 L1288.71,369.77 L1291.19,376.32 L1293.67,382.94 L1296.15,389.63 L1298.63,396.40
L1301.11,403.23 L1303.59,410.15 L1306.07,417.13 L1308.55,424.19 L1311.03,431.32 L1313.51,438.53 L1315.99,445.81 L1318.47,453.14
L1320.95,460.47 L1323.43,467.81 L1325.91,475.14 L1328.39,482.48 L1330.87,489.81 L1333.35,497.15 L1335.83,504.48 L1338.31,511.82
L1340.79,519.15 L1343.27,526.49 L1345.75,533.82 L1348.23,541.14 L1350.71,548.38 L1353.19,555.55 L1355.67,562.65 L1358.15,569.68
L1360.63,576.63 L1363.11,583.51 L1365.59,590.31 L1368.07,597.04 L1370.55,603.70 L1373.03,610.28 L1375.51,616.79 L1377.99,623.23
L1380.47,629.60 L1382.95,635.89 L1385.43,642.11 L1387.91,648.25 L1390.39,654.32 L1392.87,660.32 L1395.35,666.24 L1397.83,672.09
L1400.31,677.87 L1402.79,683.58 L1405.27,689.21 L1407.75,694.76 L1410.23,700.25 L1412.71,705.66 L1415.19,711.00 L1417.67,716.26
L1420.15,721.45 L1422.63,726.57 L1425.11,731.61 L1427.59,736.58 L1430.07,741.48 L1432.55,746.30 L1435.03,751.05 L1437.51,755.73
L1439.99,760.34 L1442.47,764.87 L1444.95,769.32 L1447.43,773.71 L1449.91,778.02 L1452.39,782.26 L1454.87,786.42 L1457.35,790.51
L1459.83,794.53 L1462.31,798.47 L1464.79,802.34 L1467.27,806.14 L1469.75,809.86 L1472.23,813.51 L1474.71,817.09 L1477.19,820.59
L1479.67,824.02 L1482.15,827.38 L1484.63,830.66 L1487.11,833.87 L1489.59,837.01 L1492.07,840.07 L1494.55,843.06 L1497.03,845.98
L1499.51,848.83 L1501.99,851.60 L1504.47,854.29 L1506.95,856.92 L1509.43,859.47 L1511.91,861.94 L1514.39,864.35 L1516.87,866.68
L1519.35,868.93 L1521.83,871.12 L1524.31,873.23 L1526.79,875.26 L1529.27,877.23 L1531.75,879.12 L1534.23,880.93 L1536.71,882.68
L1539.19,884.35 L1541.67,885.94 L1544.15,887.47 L1546.63,888.92 L1549.11,890.29 L1551.59,891.60 L1554.07,892.83 L1556.55,893.98
L1559.03,895.07 L1561.51,896.08 L1563.99,897.01 L1566.47,897.87 L1568.95,898.66 L1571.43,899.38 L1573.91,900.02 L1576.39,900.59
L1578.87,901.09 L1581.35,901.51 L1583.83,901.86 L1586.31,902.14 L1588.79,902.34 L1591.27,902.47 L1593.75,902.53 L1594.41,902.53
'/></g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M249.59,902.53 L252.07,902.49 L254.55,902.38 L257.03,902.20 L259.51,901.94 L261.99,901.61 L264.47,901.21 L266.95,900.73
L269.43,900.18 L271.91,899.56 L274.39,898.86 L276.87,898.09 L279.35,897.25 L281.83,896.33 L284.31,895.34 L286.79,894.28
L289.27,893.14 L291.75,891.93 L294.23,890.65 L296.71,889.29 L299.19,887.86 L301.67,886.36 L304.15,884.78 L306.63,883.13
L309.11,881.41 L311.59,879.61 L314.07,877.74 L316.55,875.79 L319.03,873.78 L321.51,871.69 L323.99,869.52 L326.47,867.29
L328.95,864.97 L331.43,862.59 L333.91,860.13 L336.39,857.60 L338.87,855.00 L341.35,852.32 L343.83,849.57 L346.31,846.75
L348.79,843.85 L351.27,840.88 L353.75,837.84 L356.23,834.72 L358.71,831.53 L361.19,828.26 L363.67,824.93 L366.15,821.51
L368.63,818.03 L371.11,814.47 L373.59,810.84 L376.07,807.14 L378.55,803.36 L381.03,799.51 L383.51,795.59 L385.99,791.59
L388.47,787.52 L390.95,783.37 L393.43,779.16 L395.91,774.86 L398.39,770.50 L400.87,766.06 L403.35,761.55 L405.83,756.97
L408.31,752.31 L410.79,747.58 L413.27,742.77 L415.75,737.90 L418.23,732.94 L420.71,727.92 L423.19,722.82 L425.67,717.65
L428.15,712.41 L430.63,707.09 L433.11,701.70 L435.59,696.23 L438.07,690.70 L440.55,685.08 L443.03,679.40 L445.51,673.64
L447.99,667.81 L450.47,661.91 L452.95,655.93 L455.43,649.88 L457.91,643.75 L460.39,637.55 L462.87,631.28 L465.35,624.94
L467.83,618.52 L470.31,612.03 L472.79,605.46 L475.27,598.82 L477.75,592.11 L480.23,585.33 L482.71,578.47 L485.19,571.54
L487.67,564.53 L490.15,557.45 L492.63,550.30 L495.11,543.08 L497.59,535.78 L500.07,528.44 L502.55,521.11 L505.03,513.77
L507.51,506.44 L509.99,499.10 L512.47,491.77 L514.95,484.43 L517.43,477.10 L519.91,469.76 L522.39,462.43 L524.87,455.09
L527.35,447.76 L529.83,440.46 L532.31,433.24 L534.79,426.09 L537.27,419.01 L539.75,412.00 L542.23,405.07 L544.71,398.21
L547.19,391.43 L549.67,384.72 L552.15,378.08 L554.63,371.51 L557.11,365.02 L559.59,358.60 L562.07,352.26 L564.55,345.99
L567.03,339.79 L569.51,333.66 L571.99,327.61 L574.47,321.63 L576.95,315.73 L579.43,309.90 L581.91,304.14 L584.39,298.46
L586.87,292.84 L589.35,287.31 L591.83,281.84 L594.31,276.45 L596.79,271.13 L599.27,265.89 L601.75,260.72 L604.23,255.62
L606.71,250.60 L609.19,245.64 L611.67,240.77 L614.15,235.96 L616.63,231.23 L619.11,226.57 L621.59,221.99 L624.07,217.48
L626.55,213.04 L629.03,208.68 L631.51,204.38 L633.99,200.17 L636.47,196.02 L638.95,191.95 L641.43,187.95 L643.91,184.03
L646.39,180.18 L648.87,176.40 L651.35,172.70 L653.83,169.07 L656.31,165.51 L658.79,162.03 L661.27,158.61 L663.75,155.28
L666.23,152.01 L668.71,148.82 L671.19,145.70 L673.67,142.66 L676.15,139.69 L678.63,136.79 L681.11,133.97 L683.59,131.22
L686.07,128.54 L688.55,125.94 L691.03,123.41 L693.51,120.95 L695.99,118.57 L698.47,116.25 L700.95,114.02 L703.43,111.85
L705.91,109.76 L708.39,107.75 L710.87,105.80 L713.35,103.93 L715.83,102.13 L718.31,100.41 L720.79,98.76 L723.27,97.18
L725.75,95.68 L728.23,94.25 L730.71,92.89 L733.19,91.61 L735.67,90.40 L738.15,89.26 L740.63,88.20 L743.11,87.21
L745.59,86.29 L748.07,85.45 L750.55,84.68 L753.03,83.98 L755.51,83.36 L757.99,82.81 L760.47,82.33 L762.95,81.93
L765.43,81.60 L767.91,81.34 L770.39,81.16 L772.87,81.05 L775.35,81.01 L777.83,81.01 L780.31,81.01 L782.79,81.01
L785.27,81.01 L787.75,81.01 L790.23,81.01 L792.71,81.01 L795.19,81.01 L797.67,81.01 L800.15,81.01 L802.63,81.01
L805.11,81.01 L807.59,81.01 L810.07,81.01 L812.55,81.01 L815.03,81.01 L817.51,81.01 L819.99,81.01 L822.47,81.01
L824.95,81.01 L827.43,81.01 L829.91,81.01 L832.39,81.01 L834.87,81.01 L837.35,81.01 L839.83,81.01 L842.31,81.01
L844.79,81.01 L847.27,81.01 L849.75,81.01 L852.23,81.01 L854.71,81.01 L857.19,81.01 L859.67,81.01 L862.15,81.01
L864.63,81.01 L867.11,81.01 L869.59,81.01 L872.07,81.01 L874.55,81.01 L877.03,81.01 L879.51,81.01 L881.99,81.01
L884.47,81.01 L886.95,81.01 L889.43,81.01 L891.91,81.01 L894.39,81.01 L896.87,81.01 L899.35,81.01 L901.83,81.01
L904.31,81.01 L906.79,81.01 L909.27,81.01 L911.75,81.01 L914.23,81.01 L916.71,81.01 L919.19,81.01 L921.67,81.01
L924.15,81.01 L926.63,81.01 L929.11,81.01 L931.59,81.01 L934.07,81.01 L936.55,81.01 L939.03,81.01 L941.51,81.01
L943.99,81.01 L946.47,81.01 L948.95,81.01 L951.43,81.01 L953.91,81.01 L956.39,81.01 L958.87,81.01 L961.35,81.01
L963.83,81.01 L966.31,81.01 L968.79,81.01 L971.27,81.01 L973.75,81.01 L976.23,81.01 L978.71,81.01 L981.19,81.01
L983.67,81.01 L986.15,81.01 L988.63,81.01 L991.11,81.01 L993.59,81.01 L996.07,81.01 L998.55,81.01 L1001.03,81.01
L1003.51,81.01 L1005.99,81.01 L1008.47,81.01 L1010.95,81.01 L1013.43,81.01 L1015.91,81.01 L1018.39,81.01 L1020.87,81.01
L1023.35,81.01 L1025.83,81.01 L1028.31,81.01 L1030.79,81.01 L1033.27,81.01 L1035.75,81.01 L1038.23,81.01 L1040.71,81.01
L1043.19,81.01 L1045.67,81.01 L1048.15,81.01 L1050.63,81.03 L1053.11,81.12 L1055.59,81.28 L1058.07,81.52 L1060.55,81.83
L1063.03,82.22 L1065.51,82.67 L1067.99,83.20 L1070.47,83.81 L1072.95,84.48 L1075.43,85.24 L1077.91,86.06 L1080.39,86.96
L1082.87,87.93 L1085.35,88.97 L1087.83,90.09 L1090.31,91.28 L1092.79,92.54 L1095.27,93.88 L1097.75,95.29 L1100.23,96.78
L1102.71,98.33 L1105.19,99.96 L1107.67,101.67 L1110.15,103.45 L1112.63,105.30 L1115.11,107.22 L1117.59,109.22 L1120.07,111.29
L1122.55,113.43 L1125.03,115.65 L1127.51,117.94 L1129.99,120.31 L1132.47,122.74 L1134.95,125.25 L1137.43,127.84 L1139.91,130.50
L1142.39,133.23 L1144.87,136.03 L1147.35,138.91 L1149.83,141.86 L1152.31,144.89 L1154.79,147.98 L1157.27,151.15 L1159.75,154.40
L1162.23,157.72 L1164.71,161.11 L1167.19,164.57 L1169.67,168.11 L1172.15,171.72 L1174.63,175.41 L1177.11,179.16 L1179.59,183.00
L1182.07,186.90 L1184.55,190.88 L1187.03,194.93 L1189.51,199.05 L1191.99,203.25 L1194.47,207.52 L1196.95,211.87 L1199.43,216.29
L1201.91,220.78 L1204.39,225.34 L1206.87,229.98 L1209.35,234.69 L1211.83,239.48 L1214.31,244.34 L1216.79,249.27 L1219.27,254.27
L1221.75,259.35 L1224.23,264.50 L1226.71,269.73 L1229.19,275.03 L1231.67,280.40 L1234.15,285.84 L1236.63,291.36 L1239.11,296.95
L1241.59,302.62 L1244.07,308.36 L1246.55,314.17 L1249.03,320.05 L1251.51,326.01 L1253.99,332.04 L1256.47,338.15 L1258.95,344.33
L1261.43,350.58 L1263.91,356.90 L1266.39,363.30 L1268.87,369.77 L1271.35,376.32 L1273.83,382.94 L1276.31,389.63 L1278.79,396.40
L1281.27,403.23 L1283.75,410.15 L1286.23,417.13 L1288.71,424.19 L1291.19,431.32 L1293.67,438.53 L1296.15,445.81 L1298.63,453.14
L1301.11,460.47 L1303.59,467.81 L1306.07,475.14 L1308.55,482.48 L1311.03,489.81 L1313.51,497.15 L1315.99,504.48 L1318.47,511.82
L1320.95,519.15 L1323.43,526.49 L1325.91,533.82 L1328.39,541.16 L1330.87,548.49 L1333.35,555.83 L1335.83,563.16 L1338.31,570.50
L1340.79,577.83 L1343.27,585.17 L1345.75,592.50 L1348.23,599.82 L1350.71,607.06 L1353.19,614.23 L1355.67,621.33 L1358.15,628.36
L1360.63,635.31 L1363.11,642.19 L1365.59,648.99 L1368.07,655.72 L1370.55,662.38 L1373.03,668.96 L1375.51,675.47 L1377.99,681.91
L1380.47,688.28 L1382.95,694.57 L1385.43,700.79 L1387.91,706.93 L1390.39,713.00 L1392.87,719.00 L1395.35,724.92 L1397.83,730.77
L1400.31,736.55 L1402.79,742.26 L1405.27,747.89 L1407.75,753.44 L1410.23,758.93 L1412.71,764.34 L1415.19,769.68 L1417.67,774.94
L1420.15,780.13 L1422.63,785.25 L1425.11,790.29 L1427.59,795.26 L1430.07,800.16 L1432.55,804.98 L1435.03,809.73 L1437.51,814.41
L1439.99,819.02 L1442.47,823.55 L1444.95,828.00 L1447.43,832.39 L1449.91,836.70 L1452.39,840.94 L1454.87,845.10 L1457.35,849.19
L1459.83,853.21 L1462.31,857.15 L1464.79,861.02 L1467.27,864.82 L1469.75,868.54 L1472.23,872.19 L1474.71,875.77 L1477.19,879.27
L1479.67,882.70 L1482.15,886.06 L1484.63,889.34 L1487.11,892.55 L1489.59,895.69 L1492.07,898.75 L1494.55,901.74 L1497.03,904.66
L1499.51,907.51 L1501.99,910.28 L1504.47,912.97 L1506.95,915.60 L1509.43,918.15 L1511.91,920.62 L1514.39,923.03 L1516.87,925.36
L1519.35,927.61 L1521.83,929.80 L1524.31,931.91 L1526.79,933.94 L1529.27,935.91 L1531.75,937.80 L1534.23,939.61 L1536.71,941.36
L1539.19,943.03 L1541.67,944.62 L1544.15,946.15 L1546.63,947.60 L1549.11,948.97 L1551.59,950.28 L1554.07,951.51 L1556.55,952.66
L1559.03,953.75 L1561.51,954.76 L1563.99,955.69 L1566.47,956.55 L1568.95,957.34 L1571.43,958.06 L1573.91,958.70 L1576.39,959.27
L1578.87,959.77 L1581.35,960.19 L1583.83,960.54 L1586.31,960.82 L1588.79,961.02 L1591.27,961.15 L1593.75,961.21 L1594.41,961.21
'/></g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g stroke='none' shape-rendering='crispEdges'>
<polygon fill = 'white' points = '1534.62,145.12 1724.99,145.12 1724.99,94.51 1534.62,94.51 '/>
</g>
<g fill="none" color="white" stroke="white" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="0.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M1534.62,145.12 L1534.62,94.51 L1724.99,94.51 L1724.99,145.12 L1534.62,145.12 Z '/></g>
<g id="gnuplot_plot_1a" ><title>gnuplot_plot_1a</title>
<g fill="none" color="white" stroke="rgb( 0, 0, 0)" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_2a" ><title>gnuplot_plot_2a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_3a" ><title>gnuplot_plot_3a</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
<g id="gnuplot_plot_4a" ><title>ZeroToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,106.53)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb(216, 51, 45)' d='M1542.31,102.95 L1586.57,102.95 '/></g>
</g>
<g id="gnuplot_plot_5a" ><title>ZeroToPositiveVf</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,123.40)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >ZeroToPositiveVf</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 114, 178)' d='M1542.31,119.82 L1586.57,119.82 '/></g>
</g>
<g id="gnuplot_plot_6a" ><title>PositiveV0ToRest</title>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(1594.26,140.27)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="11.00" text-anchor="start">
<text><tspan font-family="Helvetica" >PositiveV0ToRest</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="3.00" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 158, 96)' d='M1542.31,136.69 L1586.57,136.69 '/></g>
</g>
<g fill="none" color="white" stroke="rgb( 0, 158, 96)" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="2.00" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="black" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<path stroke='rgb( 0, 0, 0)' d='M249.59,81.01 L249.59,961.21 L1737.59,961.21 L1737.59,81.01 L249.59,81.01 Z '/></g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
<g transform="translate(993.59,47.54)" stroke="none" fill="rgb(0,0,0)" font-family="Helvetica" font-size="17.00" text-anchor="middle">
<text><tspan font-family="Helvetica" font-weight="bold" >SCurve Velocity</tspan></text>
</g>
</g>
<g fill="none" color="black" stroke="currentColor" stroke-width="1.50" stroke-linecap="butt" stroke-linejoin="miter">
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 48 KiB

View File

@ -17,7 +17,7 @@ The source paths are
`ume/robot/ume/v6_imu/models/robot.xml`, respectively.
Only the model topology/dynamics parser is used. Pinocchio 3.6
`mjcf::buildModel` and the adapter tests load these files without resolving
`mjcf::buildModel` and the model adapter load these files without resolving
their visual STL assets, so no geometry files are duplicated here.
The adapter enforces the model's structural contract. Integrations that require

View File

@ -1,256 +0,0 @@
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:26:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:26:53 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:26:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:26:54 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:26:55 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:26:55 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-09-08 14:26:55 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-09-08 14:26:55 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:29:37 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:29:37 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:29:38 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:29:38 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:29:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:29:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:29:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:30:52 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:30:52 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:30:53 - __main__ - INFO: 旋转矩阵是:
[[ 0.72638143 0.22269568 -0.65021278]
[ 0.420903 0.60375531 0.67699349]
[ 0.54333294 -0.76543201 0.34482337]]
2025-09-08 14:30:53 - __main__ - INFO: 平移向量是:
[[ 0.15849038]
[-0.26275262]
[-0.05082269]]
2025-09-08 14:30:53 - __main__ - INFO: 四元数是:
[-0.44096563 -0.36488029 0.0605942 0.81776526]
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:32:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:32:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:32:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:32:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:32:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:32:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:32:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:32:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:32:27 - __main__ - INFO: 旋转矩阵是:
[[ 0.05477568 0.03458859 0.99789942]
[-0.99767126 0.04257346 0.0532875 ]
[-0.04064089 -0.99849443 0.03684003]]
2025-09-08 14:32:27 - __main__ - INFO: 平移向量是:
[[-0.14908435]
[-0.19737896]
[-0.05964516]]
2025-09-08 14:32:27 - __main__ - INFO: 四元数是:
[-0.49380213 0.48758531 -0.48463669 0.53249159]
2025-09-08 14:37:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-08 14:37:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-08 14:37:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-08 14:37:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-08 14:37:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-08 14:37:25 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-08 14:37:25 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-08 14:37:26 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-08 14:37:26 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-08 14:37:26 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-09-08 14:37:26 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-09-08 14:37:26 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]

File diff suppressed because it is too large Load Diff

View File

@ -1,704 +0,0 @@
2025-08-21 09:52:37 - __main__ - INFO: 读 eye_hand_data/data2025082010/1.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/1.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_1.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/2.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_2.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/3.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_3.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/4.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_4.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/5.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_5.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/6.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_6.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/7.jpg
2025-08-21 09:54:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_7.jpg
2025-08-21 09:54:46 - __main__ - INFO: 读 eye_hand_data/data2025082009/8.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_8.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/9.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_9.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/10.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_10.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/11.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_11.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/12.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_12.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/13.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_13.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/14.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_14.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/15.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_15.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/16.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_16.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/17.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_17.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/18.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_18.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/19.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_19.jpg
2025-08-21 09:54:47 - __main__ - INFO: 读 eye_hand_data/data2025082009/20.jpg
2025-08-21 09:54:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_20.jpg
2025-08-21 09:54:47 - __main__ - INFO: 旋转矩阵是:
[[-0.8747942 0.22946188 0.42671109]
[-0.45426317 -0.08221912 -0.88706538]
[-0.16846387 -0.96983878 0.17616089]]
2025-08-21 09:54:47 - __main__ - INFO: 平移向量是:
[[-0.12651951]
[-0.21061809]
[ 0.0697177 ]]
2025-08-21 09:54:47 - __main__ - INFO: 四元数是:
[ 0.08840819 -0.63569139 0.73026951 -0.234066 ]
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/1.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_1.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/2.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_2.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/3.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_3.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/4.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_4.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/5.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_5.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/6.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_6.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/7.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_7.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/8.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_8.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/9.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_9.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/10.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_10.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/11.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_11.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/12.jpg
2025-08-21 09:55:21 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_12.jpg
2025-08-21 09:55:21 - __main__ - INFO: 读 eye_hand_data/data2025082009/13.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_13.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/14.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_14.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/15.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_15.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/16.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_16.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/17.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_17.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/18.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_18.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/19.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_19.jpg
2025-08-21 09:55:22 - __main__ - INFO: 读 eye_hand_data/data2025082009/20.jpg
2025-08-21 09:55:22 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082009/corner/corner_20.jpg
2025-08-21 09:55:22 - __main__ - INFO: 旋转矩阵是:
[[-0.87479368 0.22946254 0.4267118 ]
[-0.45426401 -0.08221905 -0.88706496]
[-0.16846434 -0.96983863 0.17616128]]
2025-08-21 09:55:22 - __main__ - INFO: 平移向量是:
[[-0.12651976]
[-0.21061824]
[ 0.0697178 ]]
2025-08-21 09:55:22 - __main__ - INFO: 四元数是:
[ 0.08840828 -0.63569123 0.73026947 -0.23406652]
2025-08-21 11:27:09 - libs.auxiliary - INFO: create folder eye_hand_data/data20250821
2025-08-21 11:27:09 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 11:27:20 - __main__ - INFO: robot.torqueOff
2025-08-21 11:28:46 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:28:51 - __main__ - INFO: 当前关节角: [0.8253898778736996, 0.2562934472690343, -0.0472638845356522, 0.982365663091435, -0.811866925952772, 1.0474525818308873, 0.016616543126199347]
2025-08-21 11:28:51 - __main__ - INFO: 获取位姿成功:
[[-0.25318109 -0.89031678 0.37846449 0.20513955]
[ 0.6294954 -0.44867523 -0.63437061 -0.47519781]
[ 0.73459844 0.07763101 0.6740464 -0.14564497]
[ 0. 0. 0. 1. ]]
2025-08-21 11:28:51 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:28:51 - __main__ - INFO: ===采集第1次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/1.jpg
2025-08-21 11:28:53 - __main__ - INFO: robot.torqueOff
2025-08-21 11:29:00 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:29:04 - __main__ - INFO: 当前关节角: [0.8917611258247912, 0.3193556252779419, 0.0663351766206834, 0.6812782681741733, -1.1216997200029486, 1.03807878215244, 0.016623187844958753]
2025-08-21 11:29:04 - __main__ - INFO: 获取位姿成功:
[[-0.25224294 -0.90609294 0.33966025 0.22289984]
[ 0.8456558 -0.37703157 -0.37777436 -0.51750052]
[ 0.47036131 0.19194474 0.8613463 -0.11653364]
[ 0. 0. 0. 1. ]]
2025-08-21 11:29:04 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:29:04 - __main__ - INFO: ===采集第2次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/2.jpg
2025-08-21 11:29:05 - __main__ - INFO: robot.torqueOff
2025-08-21 11:29:14 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:29:18 - __main__ - INFO: 当前关节角: [1.1896438678089452, 0.30651423165262204, 0.10917083072596027, 0.6814301474601026, -1.6521096487448172, 1.0335860030255448, 0.016608949161902885]
2025-08-21 11:29:18 - __main__ - INFO: 获取位姿成功:
[[-0.42170444 -0.84445498 0.33024408 0.2558707 ]
[ 0.9003429 -0.43313682 0.04213264 -0.51967065]
[ 0.10746175 0.31510043 0.94295477 -0.04397596]
[ 0. 0. 0. 1. ]]
2025-08-21 11:29:18 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:29:18 - __main__ - INFO: ===采集第3次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/3.jpg
2025-08-21 11:29:19 - __main__ - INFO: robot.torqueOff
2025-08-21 11:29:28 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:29:34 - __main__ - INFO: 当前关节角: [1.4559585002127002, 0.30681324399679527, 0.17970546960258804, 0.6812127702321163, -2.1080019043365628, 1.0236910675472528, 0.016632680300329335]
2025-08-21 11:29:34 - __main__ - INFO: 获取位姿成功:
[[-0.44997072 -0.85803562 0.24759084 0.26886029]
[ 0.85847564 -0.33920789 0.38465255 -0.52136803]
[-0.24606082 0.38563309 0.8892363 0.03026231]
[ 0. 0. 0. 1. ]]
2025-08-21 11:29:34 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:29:34 - __main__ - INFO: ===采集第4次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/4.jpg
2025-08-21 11:29:36 - __main__ - INFO: robot.torqueOff
2025-08-21 11:29:46 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:29:51 - __main__ - INFO: 当前关节角: [1.6850703015280803, 0.3357206183368209, 0.14558294028196603, 0.7301084078459711, -2.380654649191254, 1.0414419590902364, 0.016624137090495813]
2025-08-21 11:29:51 - __main__ - INFO: 获取位姿成功:
[[-0.48372144 -0.85725737 0.17641818 0.27941969]
[ 0.74091476 -0.29378779 0.60393216 -0.50585554]
[-0.46589579 0.42284577 0.77726609 0.08600871]
[ 0. 0. 0. 1. ]]
2025-08-21 11:29:51 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:29:51 - __main__ - INFO: ===采集第5次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/5.jpg
2025-08-21 11:29:53 - __main__ - INFO: robot.torqueOff
2025-08-21 11:30:03 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:30:07 - __main__ - INFO: 当前关节角: [1.9511694551949232, 0.7207327096764498, -0.06620038375442117, 0.8133790740933053, -1.3808665335126573, 0.21355366696300027, 1.1411364716197472]
2025-08-21 11:30:07 - __main__ - INFO: 获取位姿成功:
[[-0.21216612 -0.68156647 0.70032327 0.38204138]
[ 0.97416126 -0.20429083 0.09630729 -0.3389997 ]
[ 0.07742981 0.70266095 0.70729924 0.18673545]
[ 0. 0. 0. 1. ]]
2025-08-21 11:30:07 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:30:07 - __main__ - INFO: ===采集第6次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/6.jpg
2025-08-21 11:30:08 - __main__ - INFO: robot.torqueOff
2025-08-21 11:30:17 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:30:21 - __main__ - INFO: 当前关节角: [1.8940381633015537, 0.4051379952163314, -0.12349589512570175, 0.6297399309851491, -1.2283436591092607, 0.9395015316200465, 1.0908577832583988]
2025-08-21 11:30:21 - __main__ - INFO: 获取位姿成功:
[[-0.4310179 -0.70629928 0.5615736 0.28826997]
[ 0.89989504 -0.38227375 0.20989447 -0.50135244]
[ 0.06642653 0.59582557 0.80036205 0.12584165]
[ 0. 0. 0. 1. ]]
2025-08-21 11:30:21 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:30:21 - __main__ - INFO: ===采集第7次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/7.jpg
2025-08-21 11:30:22 - __main__ - INFO: robot.torqueOff
2025-08-21 11:30:35 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:30:42 - __main__ - INFO: 当前关节角: [1.8361265915767224, 1.1135570917860655, -0.08976350572081057, 0.5308864500014717, -1.5194516356954322, 0.07328175546087345, 0.9682465849732351]
2025-08-21 11:30:42 - __main__ - INFO: 获取位姿成功:
[[-0.13468827 -0.72882711 0.67131968 0.45481058]
[ 0.98906271 -0.05778144 0.13570654 -0.23383011]
[-0.06011679 0.68225534 0.7286382 0.15317249]
[ 0. 0. 0. 1. ]]
2025-08-21 11:30:42 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:30:42 - __main__ - INFO: ===采集第8次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/8.jpg
2025-08-21 11:30:43 - __main__ - INFO: robot.torqueOff
2025-08-21 11:31:04 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:31:08 - __main__ - INFO: 当前关节角: [1.773997521930743, 0.605477215057948, 0.028329283807957347, 1.2173817716473154, -1.7268484961050745, 0.15453242720534835, 0.8873870023900281]
2025-08-21 11:31:08 - __main__ - INFO: 获取位姿成功:
[[-0.35110132 -0.76965787 0.53324913 0.36358769]
[ 0.90927708 -0.14433419 0.39036245 -0.28723159]
[-0.22347945 0.62192798 0.75050818 0.11913745]
[ 0. 0. 0. 1. ]]
2025-08-21 11:31:08 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:31:08 - __main__ - INFO: ===采集第9次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/9.jpg
2025-08-21 11:31:09 - __main__ - INFO: robot.torqueOff
2025-08-21 11:31:26 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:31:30 - __main__ - INFO: 当前关节角: [1.4005130683931457, 1.4388303137420266, 0.15982067409229817, 0.8202088957324373, -1.891621384164204, -1.0446542059876405, 0.5873542192644378]
2025-08-21 11:31:30 - __main__ - INFO: 获取位姿成功:
[[ 0.36091887 -0.80430791 0.47204487 0.44921615]
[ 0.93025175 0.34636313 -0.12109612 -0.02012862]
[-0.06610037 0.48282644 0.87321782 -0.00595984]
[ 0. 0. 0. 1. ]]
2025-08-21 11:31:30 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:31:30 - __main__ - INFO: ===采集第10次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/10.jpg
2025-08-21 11:31:32 - __main__ - INFO: robot.torqueOff
2025-08-21 11:31:51 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:31:56 - __main__ - INFO: robot.torqueOff
2025-08-21 11:32:05 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:32:09 - __main__ - INFO: 当前关节角: [1.4349839708258678, 0.8371567255510698, -0.01699624134102253, 1.6177536050220789, -2.016514568720455, -0.8374870629979659, 0.5931132919377683]
2025-08-21 11:32:09 - __main__ - INFO: 获取位姿成功:
[[-0.0401021 -0.92276134 0.3832797 0.33858263]
[ 0.95373667 0.07903515 0.29006864 -0.11724388]
[-0.2979567 0.37718027 0.87690185 -0.01763812]
[ 0. 0. 0. 1. ]]
2025-08-21 11:32:09 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:32:09 - __main__ - INFO: ===采集第11次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/11.jpg
2025-08-21 11:32:12 - __main__ - INFO: robot.torqueOff
2025-08-21 11:32:48 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:32:52 - __main__ - INFO: 当前关节角: [0.7093417632317545, 0.9039997485340793, 0.3698402999208317, 1.4349972602633867, -1.868800572207794, -0.677916040481914, -0.3356152520822075]
2025-08-21 11:32:52 - __main__ - INFO: 获取位姿成功:
[[ 6.72744280e-03 -9.95813278e-01 9.11628002e-02 3.05739589e-01]
[ 9.97824272e-01 7.05770400e-04 -6.59259053e-02 -1.35775630e-01]
[ 6.55855519e-02 9.14079675e-02 9.93651407e-01 -1.75063848e-01]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
2025-08-21 11:32:52 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:32:52 - __main__ - INFO: ===采集第12次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/12.jpg
2025-08-21 11:32:53 - __main__ - INFO: robot.torqueOff
2025-08-21 11:34:07 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:34:12 - __main__ - INFO: 当前关节角: [0.5287221701769795, 0.9609924505790383, 0.5908911081355157, 1.1136415746388637, -2.4692230547809086, -0.6455401229494787, -0.3356162013277445]
2025-08-21 11:34:12 - __main__ - INFO: 获取位姿成功:
[[ 0.12520332 -0.99186645 -0.02291465 0.31366201]
[ 0.90598349 0.10488766 0.41011278 -0.19783819]
[-0.40437364 -0.07210778 0.91174691 -0.25384818]
[ 0. 0. 0. 1. ]]
2025-08-21 11:34:12 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:34:12 - __main__ - INFO: ===采集第13次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/13.jpg
2025-08-21 11:34:13 - __main__ - INFO: robot.torqueOff
2025-08-21 11:34:31 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 11:34:37 - __main__ - INFO: 当前关节角: [0.39919666739988574, 1.3179505393164566, 0.9448201543641821, 1.2761780402126846, -2.03749479358051, -0.385342428786525, -0.3356180998188186]
2025-08-21 11:34:37 - __main__ - INFO: 获取位姿成功:
[[ 0.03301101 -0.99908595 0.02715761 0.313764 ]
[ 0.83829597 0.01288215 -0.54506323 -0.0913168 ]
[ 0.54421516 0.0407592 0.83795498 -0.18631875]
[ 0. 0. 0. 1. ]]
2025-08-21 11:34:37 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 11:34:37 - __main__ - INFO: ===采集第14次数据! pose 已保存到 eye_hand_data/data20250821/RobotToolPose.csv, 图片保存到 eye_hand_data/data20250821/14.jpg
2025-08-21 11:34:39 - __main__ - INFO: robot.torqueOff
2025-08-21 11:35:06 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 11:35:07 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/1.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_1.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/2.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_2.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/3.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_3.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/4.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_4.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/5.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_5.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/6.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_6.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/7.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_7.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/8.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_8.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/9.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_9.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/10.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_10.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/11.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_11.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/12.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_12.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/13.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_13.jpg
2025-08-21 11:35:46 - __main__ - INFO: 读 eye_hand_data/data20250821/14.jpg
2025-08-21 11:35:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_14.jpg
2025-08-21 11:35:46 - __main__ - INFO: 旋转矩阵是:
[[-0.99732744 0.02734315 0.0677519 ]
[-0.06713675 0.0228221 -0.99748274]
[-0.02882056 -0.99936555 -0.02092538]]
2025-08-21 11:35:46 - __main__ - INFO: 平移向量是:
[[-0.00078482]
[-0.17419722]
[ 0.06796275]]
2025-08-21 11:35:46 - __main__ - INFO: 四元数是:
[-0.01392688 0.71433097 -0.69885263 0.03379822]
2025-08-21 11:38:53 - __main__ - INFO: 读 eye_hand_data/data20250821/1.jpg
2025-08-21 11:38:53 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_1.jpg
2025-08-21 11:38:53 - __main__ - INFO: 读 eye_hand_data/data20250821/2.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_2.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/3.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_3.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/4.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_4.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/5.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_5.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/6.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_6.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/7.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_7.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/8.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_8.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/9.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_9.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/10.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_10.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/11.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_11.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/12.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_12.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/13.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_13.jpg
2025-08-21 11:38:54 - __main__ - INFO: 读 eye_hand_data/data20250821/14.jpg
2025-08-21 11:38:54 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data20250821/corner/corner_14.jpg
2025-08-21 11:38:54 - __main__ - INFO: 旋转矩阵是:
[[-0.99732744 0.02734315 0.0677519 ]
[-0.06713675 0.0228221 -0.99748274]
[-0.02882056 -0.99936555 -0.02092538]]
2025-08-21 11:38:54 - __main__ - INFO: 平移向量是:
[[-0.00078482]
[-0.17419722]
[ 0.06796275]]
2025-08-21 11:38:54 - __main__ - INFO: 四元数是:
[-0.01392688 0.71433097 -0.69885263 0.03379822]
2025-08-21 16:14:42 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082101
2025-08-21 16:14:42 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 16:15:03 - __main__ - INFO: robot.torqueOff
2025-08-21 16:15:13 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:15:27 - __main__ - INFO: robot.torqueOff
2025-08-21 16:16:00 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:16:07 - __main__ - INFO: 当前关节角: [0.1881774860208302, 1.5359324367098321, 2.101302129336008, 1.237947176207676, -3.239618392465156, 0.660369236729398, -0.22447188913024077]
2025-08-21 16:16:07 - __main__ - INFO: 获取位姿成功:
[[-0.13936557 -0.98748272 -0.0738588 0.25639562]
[ 0.98789482 -0.13351676 -0.07897536 -0.27191259]
[ 0.06812542 -0.08397117 0.9941367 -0.23921664]
[ 0. 0. 0. 1. ]]
2025-08-21 16:16:07 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:16:07 - __main__ - INFO: ===采集第1次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/1.jpg
2025-08-21 16:16:11 - __main__ - INFO: robot.torqueOff
2025-08-21 16:16:20 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:16:25 - __main__ - INFO: 当前关节角: [0.1847488111409769, 1.3553365747934838, 2.1088087630430623, 1.2244802297734347, -3.265897305913068, 0.6804733079587482, -0.22435892891133088]
2025-08-21 16:16:25 - __main__ - INFO: 获取位姿成功:
[[-0.12214152 -0.99148995 -0.04504583 0.24935823]
[ 0.98590508 -0.12643169 0.10957282 -0.3301866 ]
[-0.11433557 -0.03102752 0.99295754 -0.22048319]
[ 0. 0. 0. 1. ]]
2025-08-21 16:16:25 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:16:25 - __main__ - INFO: ===采集第2次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/2.jpg
2025-08-21 16:16:28 - __main__ - INFO: robot.torqueOff
2025-08-21 16:16:36 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:16:40 - __main__ - INFO: 当前关节角: [0.18216591403464222, 1.3093807506078976, 2.108801169078766, 1.237752580872579, -3.386807456195824, 0.674951546669682, -0.22420894811647574]
2025-08-21 16:16:40 - __main__ - INFO: 获取位姿成功:
[[-0.12765968 -0.99174931 0.01167535 0.24725332]
[ 0.95778442 -0.12021331 0.26114702 -0.34440277]
[-0.25758884 0.04452042 0.96522843 -0.21331776]
[ 0. 0. 0. 1. ]]
2025-08-21 16:16:40 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:16:40 - __main__ - INFO: ===采集第3次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/3.jpg
2025-08-21 16:16:43 - __main__ - INFO: robot.torqueOff
2025-08-21 16:16:52 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:16:57 - __main__ - INFO: 当前关节角: [0.15805412814783334, 1.218028207858052, 2.1077446587960202, 1.3528049369461503, -3.398763203735069, 0.6851996014877597, -0.2241823692414381]
2025-08-21 16:16:57 - __main__ - INFO: 获取位姿成功:
[[-0.12061637 -0.99148511 -0.04908122 0.24079104]
[ 0.90170295 -0.13010493 0.41231601 -0.36562399]
[-0.41519089 0.00547538 0.90971784 -0.17673377]
[ 0. 0. 0. 1. ]]
2025-08-21 16:16:57 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:16:57 - __main__ - INFO: ===采集第4次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/4.jpg
2025-08-21 16:16:59 - __main__ - INFO: robot.torqueOff
2025-08-21 16:17:08 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:17:14 - __main__ - INFO: 当前关节角: [0.15782630921893942, 1.148865228782473, 2.0802051472748952, 1.4294517678358942, -3.4739330085691504, 0.6850638593759604, -0.22417762301375282]
2025-08-21 16:17:14 - __main__ - INFO: 获取位姿成功:
[[-0.13323657 -0.98863605 -0.06961879 0.24168424]
[ 0.81161017 -0.14915447 0.56483792 -0.37307124]
[-0.56880309 0.01875375 0.8222599 -0.14946229]
[ 0. 0. 0. 1. ]]
2025-08-21 16:17:14 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:17:14 - __main__ - INFO: ===采集第5次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/5.jpg
2025-08-21 16:17:21 - __main__ - INFO: robot.torqueOff
2025-08-21 16:17:38 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:17:43 - __main__ - INFO: 当前关节角: [0.3590416826912605, 1.1394164387065981, 2.0769226562077487, 1.5773176436344847, -2.5660726784358565, 0.5330820549286868, 0.8458689010901876]
2025-08-21 16:17:43 - __main__ - INFO: 获取位姿成功:
[[-0.1100018 -0.97171944 0.20895198 0.26213488]
[ 0.9937792 -0.11120581 0.00601407 -0.35469134]
[ 0.01739269 0.20831369 0.97790741 -0.04493756]
[ 0. 0. 0. 1. ]]
2025-08-21 16:17:43 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:17:43 - __main__ - INFO: ===采集第6次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/6.jpg
2025-08-21 16:17:46 - __main__ - INFO: robot.torqueOff
2025-08-21 16:17:53 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:17:59 - __main__ - INFO: 当前关节角: [0.3520818144135517, 1.1556029736045101, 2.017053740185504, 1.6291274650471073, -2.566324228503177, 0.5650403044248166, 0.8458594086348171]
2025-08-21 16:17:59 - __main__ - INFO: 获取位姿成功:
[[-0.20049553 -0.96061353 0.19241411 0.26384736]
[ 0.97904311 -0.18929837 0.07510466 -0.33478381]
[-0.03572288 0.20343986 0.97843554 -0.04338287]
[ 0. 0. 0. 1. ]]
2025-08-21 16:17:59 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:17:59 - __main__ - INFO: ===采集第7次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/7.jpg
2025-08-21 16:18:01 - __main__ - INFO: robot.torqueOff
2025-08-21 16:18:09 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:18:13 - __main__ - INFO: 当前关节角: [0.3172653866053403, 1.313845052368681, 1.8904177408232146, 1.7188083864061938, -2.6905567381656357, 0.28883548277045484, 0.8458527639160577]
2025-08-21 16:18:13 - __main__ - INFO: 获取位姿成功:
[[-0.09067794 -0.96156996 0.25915385 0.27763283]
[ 0.99082305 -0.1133011 -0.0737058 -0.27031831]
[ 0.1002357 0.25009212 0.96301959 -0.05935151]
[ 0. 0. 0. 1. ]]
2025-08-21 16:18:13 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:18:13 - __main__ - INFO: ===采集第8次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/8.jpg
2025-08-21 16:18:16 - __main__ - INFO: robot.torqueOff
2025-08-21 16:18:25 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:18:30 - __main__ - INFO: 当前关节角: [0.3113658255925252, 1.3320734144168047, 1.7972094230484208, 1.807990953858325, -2.9523187889736606, 0.29634021798643495, 0.8458480176883724]
2025-08-21 16:18:30 - __main__ - INFO: 获取位姿成功:
[[-0.06182316 -0.96333913 0.26106631 0.27572117]
[ 0.985666 -0.01779069 0.16776779 -0.23950089]
[-0.15697273 0.26769612 0.9506305 -0.05533822]
[ 0. 0. 0. 1. ]]
2025-08-21 16:18:30 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:18:30 - __main__ - INFO: ===采集第9次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/9.jpg
2025-08-21 16:18:33 - __main__ - INFO: robot.torqueOff
2025-08-21 16:18:44 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:18:49 - __main__ - INFO: 当前关节角: [0.3174068241903619, 1.4675260063272884, 1.5487007384287987, 1.7904982571014212, -3.2589716104746933, 0.07981446324690623, 0.8458337790053165]
2025-08-21 16:18:49 - __main__ - INFO: 获取位姿成功:
[[ 0.00204587 -0.95045805 0.31084613 0.291817 ]
[ 0.96975598 0.0777536 0.2313606 -0.15674434]
[-0.24406795 0.30097156 0.92187144 -0.07498582]
[ 0. 0. 0. 1. ]]
2025-08-21 16:18:49 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:18:49 - __main__ - INFO: ===采集第10次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/10.jpg
2025-08-21 16:18:52 - __main__ - INFO: robot.torqueOff
2025-08-21 16:19:08 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:19:14 - __main__ - INFO: robot.torqueOff
2025-08-21 16:19:25 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:19:30 - __main__ - INFO: 当前关节角: [0.27753946087946524, 1.6105355419582903, 1.2276915274253017, 1.6875801067280616, -3.5108406242955006, -0.6567573574608925, 0.8458072001302789]
2025-08-21 16:19:30 - __main__ - INFO: 获取位姿成功:
[[ 0.38872691 -0.8780319 0.27919772 0.29523427]
[ 0.91848265 0.39319638 -0.0422638 -0.05153552]
[-0.07267057 0.27286734 0.95930308 -0.10555432]
[ 0. 0. 0. 1. ]]
2025-08-21 16:19:30 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:19:30 - __main__ - INFO: ===采集第11次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/11.jpg
2025-08-21 16:19:33 - __main__ - INFO: robot.torqueOff
2025-08-21 16:20:00 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:20:06 - __main__ - INFO: 当前关节角: [0.19953615811726558, 1.5134979676870048, 1.3755934745543004, 1.2340486247869789, -3.235004109909517, -0.39607934505618747, -0.18381760126912305]
2025-08-21 16:20:06 - __main__ - INFO: 获取位姿成功:
[[ 0.2004248 -0.97752505 -0.065381 0.29826073]
[ 0.95269085 0.17889858 0.24571414 -0.11593768]
[-0.22849516 -0.11153509 0.96713489 -0.24686201]
[ 0. 0. 0. 1. ]]
2025-08-21 16:20:06 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:20:06 - __main__ - INFO: ===采集第12次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/12.jpg
2025-08-21 16:20:08 - __main__ - INFO: robot.torqueOff
2025-08-21 16:20:19 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:20:24 - __main__ - INFO: 当前关节角: [0.14909894575122867, 1.5289374463472523, 1.327669864370393, 1.130913097185633, -3.1925177781618777, -0.44474526525007424, -0.2899508462764979]
2025-08-21 16:20:24 - __main__ - INFO: 获取位姿成功:
[[ 0.1795737 -0.98355917 -0.01909571 0.27480921]
[ 0.95378635 0.16931837 0.24823956 -0.10309542]
[-0.24092504 -0.06279052 0.96851044 -0.28676362]
[ 0. 0. 0. 1. ]]
2025-08-21 16:20:24 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:20:24 - __main__ - INFO: ===采集第13次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/13.jpg
2025-08-21 16:20:26 - __main__ - INFO: robot.torqueOff
2025-08-21 16:20:38 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:20:43 - __main__ - INFO: 当前关节角: [0.16214537641255308, 1.3656235486785808, 1.5120835918367883, 1.2035123451053618, -2.9271913103622, -0.014777854520918107, -0.2900476693212778]
2025-08-21 16:20:43 - __main__ - INFO: 获取位姿成功:
[[ 0.03397924 -0.99615678 -0.08072841 0.28406157]
[ 0.99940914 0.03344943 0.00790666 -0.19681757]
[-0.00517596 -0.08094937 0.99670478 -0.25137906]
[ 0. 0. 0. 1. ]]
2025-08-21 16:20:43 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:20:43 - __main__ - INFO: ===采集第14次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/14.jpg
2025-08-21 16:20:45 - __main__ - INFO: robot.torqueOff
2025-08-21 16:21:17 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:21:26 - __main__ - INFO: 当前关节角: [0.23122007565318572, 1.628535135831983, 1.828089329614453, 1.4320631423083405, -3.0376977295588006, 0.19928270955887112, 0.14386290736881704]
2025-08-21 16:21:26 - __main__ - INFO: 获取位姿成功:
[[ 0.02777164 -0.99933259 0.02373016 0.29887982]
[ 0.98010716 0.02255505 -0.19718324 -0.18783112]
[ 0.1965164 0.0287342 0.98007941 -0.17737878]
[ 0. 0. 0. 1. ]]
2025-08-21 16:21:26 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:21:26 - __main__ - INFO: ===采集第15次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/15.jpg
2025-08-21 16:21:29 - __main__ - INFO: robot.torqueOff
2025-08-21 16:21:42 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:21:47 - __main__ - INFO: 当前关节角: [0.22977437470024648, 1.339187060471517, 2.1365172402697836, 1.3177511977536744, -3.033028390762013, 0.8488428873577902, 0.1439046741724476]
2025-08-21 16:21:47 - __main__ - INFO: 获取位姿成功:
[[-0.24782493 -0.96680534 0.06221126 0.25321104]
[ 0.96857382 -0.24585225 0.03770167 -0.33940743]
[-0.02115539 0.06959961 0.99735066 -0.17940936]
[ 0. 0. 0. 1. ]]
2025-08-21 16:21:47 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:21:47 - __main__ - INFO: ===采集第16次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/16.jpg
2025-08-21 16:21:50 - __main__ - INFO: robot.torqueOff
2025-08-21 16:22:00 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:22:05 - __main__ - INFO: 当前关节角: [0.2123139522916026, 1.6156225487913838, 1.9870955510359554, 1.1415721753212567, -3.261262139955614, 0.40399890057186194, -0.2904045856432116]
2025-08-21 16:22:05 - __main__ - INFO: 获取位姿成功:
[[-0.02238853 -0.99787522 -0.06118662 0.27706052]
[ 0.9941035 -0.01572528 -0.10728906 -0.21679508]
[ 0.10609892 -0.06322787 0.99234331 -0.26052986]
[ 0. 0. 0. 1. ]]
2025-08-21 16:22:05 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:22:05 - __main__ - INFO: ===采集第17次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/17.jpg
2025-08-21 16:22:08 - __main__ - INFO: robot.torqueOff
2025-08-21 16:22:20 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:22:25 - __main__ - INFO: 当前关节角: [0.7920960399069291, 1.588399136034099, 1.9284805883681642, 1.3829188023637766, -3.1986537013134204, 0.2975713894479991, 1.133828230229938]
2025-08-21 16:22:25 - __main__ - INFO: 获取位姿成功:
[[ 0.02514396 -0.85857888 0.51206454 0.37379129]
[ 0.99831944 -0.00518728 -0.05771811 -0.22146041]
[ 0.05221177 0.51265524 0.85700556 -0.00260762]
[ 0. 0. 0. 1. ]]
2025-08-21 16:22:25 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:22:25 - __main__ - INFO: ===采集第18次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/18.jpg
2025-08-21 16:22:28 - __main__ - INFO: robot.torqueOff
2025-08-21 16:22:38 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 16:22:42 - __main__ - INFO: 当前关节角: [0.5278507627739604, 1.75270689378007, 1.4620754384535017, 1.2688669510862645, -3.519189238793925, -0.41788541353348263, 0.5962609901386524]
2025-08-21 16:22:42 - __main__ - INFO: 获取位姿成功:
[[ 0.30642283 -0.90783743 0.28624507 0.37152839]
[ 0.94130348 0.33372329 0.05075938 -0.05876817]
[-0.14160791 0.25388965 0.95681098 -0.11450045]
[ 0. 0. 0. 1. ]]
2025-08-21 16:22:42 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 16:22:42 - __main__ - INFO: ===采集第19次数据! pose 已保存到 eye_hand_data/data2025082101/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082101/19.jpg
2025-08-21 16:22:45 - __main__ - INFO: robot.torqueOff
2025-08-21 16:22:51 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 16:22:52 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-08-21 16:23:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-08-21 16:23:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-08-21 16:23:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/19.jpg
2025-08-21 16:23:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_19.jpg
2025-08-21 16:23:13 - __main__ - INFO: 旋转矩阵是:
[[-0.99574619 0.06505242 0.06525112]
[-0.06118047 0.06271804 -0.9961543 ]
[-0.06889468 -0.99590895 -0.05847131]]
2025-08-21 16:23:13 - __main__ - INFO: 平移向量是:
[[-0.00932961]
[-0.17733044]
[ 0.07299168]]
2025-08-21 16:23:13 - __main__ - INFO: 四元数是:
[ 0.0013306 0.72748463 -0.68457228 0.04609919]
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-08-21 16:25:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-08-21 16:25:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-08-21 16:25:47 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-08-21 16:25:47 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-08-21 16:25:47 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-08-21 16:25:47 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-08-21 16:25:47 - __main__ - INFO: 读 eye_hand_data/data2025082101/19.jpg
2025-08-21 16:25:47 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_19.jpg
2025-08-21 16:25:47 - __main__ - INFO: 旋转矩阵是:
[[-0.99574619 0.06505242 0.06525112]
[-0.06118047 0.06271804 -0.9961543 ]
[-0.06889468 -0.99590895 -0.05847131]]
2025-08-21 16:25:47 - __main__ - INFO: 平移向量是:
[[-0.00932961]
[-0.17733044]
[ 0.07299168]]
2025-08-21 16:25:47 - __main__ - INFO: 四元数是:
[ 0.0013306 0.72748463 -0.68457228 0.04609919]
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-08-21 16:26:08 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-08-21 16:26:08 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-08-21 16:26:09 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-08-21 16:26:09 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-08-21 16:26:09 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-08-21 16:26:09 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-08-21 16:26:09 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-08-21 16:26:09 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-08-21 16:26:09 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-08-21 16:26:09 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-08-21 16:26:09 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-08-21 16:26:09 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]
2025-08-21 17:18:15 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082102
2025-08-21 17:18:15 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 17:18:34 - __main__ - INFO: 当前关节角: [0.0020332839403781207, 1.3408007778845155, 1.0441700907637408e-05, 0.3222679105856357, 2.752812057468044e-05, 0.001749459524797795, -0.09380919019975154]
2025-08-21 17:18:34 - __main__ - INFO: 获取位姿成功:
[[ 9.99992854e-01 -3.77482620e-03 -2.04576300e-04 3.09996779e-02]
[-1.98775400e-04 1.53703370e-03 -9.99998799e-01 -2.05056032e-01]
[ 3.77513610e-03 9.99991694e-01 1.53627240e-03 -4.49243316e-01]
[ 0.00000000e+00 0.00000000e+00 0.00000000e+00 1.00000000e+00]]
2025-08-21 17:18:34 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 17:18:34 - __main__ - INFO: ===采集第1次数据! pose 已保存到 eye_hand_data/data2025082102/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082102/1.jpg
2025-08-21 17:18:36 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 17:18:36 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 17:19:10 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082103
2025-08-21 17:19:10 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 17:19:15 - __main__ - INFO: robot.torqueOff
2025-08-21 17:19:46 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-08-21 17:19:50 - __main__ - INFO: 当前关节角: [0.8979217293602972, 1.0614919233239744, 0.02469082566441424, 0.3463407774054252, -1.1223005924279064, 0.6689039033530859, -0.09368958526208224]
2025-08-21 17:19:50 - __main__ - INFO: 获取位姿成功:
[[-0.17316325 -0.89563008 0.40970873 0.35893735]
[ 0.79070696 -0.37443718 -0.48433387 -0.30959237]
[ 0.58719417 0.24009071 0.7730197 -0.22790869]
[ 0. 0. 0. 1. ]]
2025-08-21 17:19:50 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-08-21 17:19:50 - __main__ - INFO: ===采集第1次数据! pose 已保存到 eye_hand_data/data2025082103/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025082103/1.jpg
2025-08-21 17:19:53 - __main__ - INFO: robot.torqueOff
2025-08-21 17:21:50 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 17:21:51 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 17:21:57 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082104
2025-08-21 17:21:57 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 17:22:07 - __main__ - INFO: robot.torqueOff
2025-08-21 17:22:16 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 18:00:33 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082105
2025-08-21 18:00:33 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 18:00:45 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 18:00:45 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-08-21 18:01:14 - libs.auxiliary - INFO: create folder eye_hand_data/data2025082106
2025-08-21 18:01:14 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-08-21 18:01:32 - __main__ - INFO: 检测到 'q',退出程序
2025-08-21 18:01:32 - __main__ - INFO: 相机已关闭,窗口已销毁

View File

@ -1,46 +0,0 @@
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-08-23 16:08:45 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-08-23 16:08:45 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-08-23 16:08:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-08-23 16:08:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-08-23 16:08:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-08-23 16:08:46 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-08-23 16:08:46 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-08-23 16:08:46 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-08-23 16:08:46 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-08-23 16:08:46 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]

View File

@ -1,167 +0,0 @@
2025-09-05 16:02:35 - libs.auxiliary - INFO: create folder eye_hand_data/data20250905
2025-09-05 16:04:01 - libs.auxiliary - INFO: create folder eye_hand_data/data2025090501
2025-09-05 16:04:01 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-09-05 16:05:28 - libs.auxiliary - INFO: create folder eye_hand_data/data2025090502
2025-09-05 16:05:28 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-09-05 16:05:42 - libs.auxiliary - INFO: create folder eye_hand_data/data2025090503
2025-09-05 16:05:42 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-09-05 16:05:48 - __main__ - INFO: 相机已关闭,窗口已销毁
2025-09-05 16:09:41 - libs.auxiliary - INFO: create folder eye_hand_data/data2025090504
2025-09-05 16:09:41 - __main__ - INFO: 开始机器人数据采集程序,版本 V1.0.0
2025-09-05 16:12:46 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-09-05 16:12:53 - __main__ - INFO: 当前关节角: [-0.020066101407867926, 1.46894512840519, 1.4589372327079881, 0.15968113499835065, 0.0808671765475035, -0.13818357132059936, -0.2431388026164853]
2025-09-05 16:12:53 - __main__ - INFO: 获取位姿成功:
[[-0.10992689 0.05250327 -0.99255201 -0.00608509]
[ 0.0426073 -0.99743702 -0.0574805 -0.22011888]
[-0.99302603 -0.04860861 0.10740812 -0.73570586]
[ 0. 0. 0. 1. ]]
2025-09-05 16:12:53 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-09-05 16:12:53 - __main__ - INFO: ===采集第1次数据! pose 已保存到 eye_hand_data/data2025090504/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025090504/1.jpg
2025-09-05 16:12:56 - __main__ - INFO: robot.torqueOff
2025-09-05 16:25:21 - __main__ - INFO: robot.torqueOn ,请勿触摸机器人
2025-09-05 16:25:26 - __main__ - INFO: 当前关节角: [-0.019045662455530632, 0.14962957400644405, 1.3928232302974393, -0.07693350304193537, -1.3815034772680232, 0.03932344561816248, -0.20795691527650662]
2025-09-05 16:25:26 - __main__ - INFO: 获取位姿成功:
[[-0.03644065 0.99920824 0.01596754 -0.01550389]
[-0.99665653 -0.03750756 0.07258755 -0.94854757]
[ 0.07312898 -0.01326902 0.99723422 -0.00291912]
[ 0. 0. 0. 1. ]]
2025-09-05 16:25:26 - __main__ - INFO: 请按 p 失能机器人,并手动移动机器人到其他位姿
2025-09-05 16:25:26 - __main__ - INFO: ===采集第2次数据! pose 已保存到 eye_hand_data/data2025090504/RobotToolPose.csv, 图片保存到 eye_hand_data/data2025090504/2.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-05 17:21:03 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-05 17:21:03 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-05 17:21:04 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-05 17:21:04 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-05 17:21:04 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-05 17:21:04 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-05 17:21:04 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-05 17:21:04 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-05 17:21:04 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-05 17:21:04 - __main__ - INFO: 旋转矩阵是:
[[ 0.05477568 0.03458859 0.99789942]
[-0.99767126 0.04257346 0.0532875 ]
[-0.04064089 -0.99849443 0.03684003]]
2025-09-05 17:21:04 - __main__ - INFO: 平移向量是:
[[-0.14908435]
[-0.19737896]
[-0.05964516]]
2025-09-05 17:21:04 - __main__ - INFO: 四元数是:
[-0.49380213 0.48758531 -0.48463669 0.53249159]
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-05 17:26:27 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-05 17:26:27 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-05 17:26:28 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-05 17:26:28 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-05 17:26:28 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-05 17:26:28 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-05 17:26:28 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-05 17:26:28 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-05 17:26:28 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-05 17:26:28 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-05 17:26:28 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-05 17:26:28 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-09-05 17:26:28 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-09-05 17:26:28 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/1.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_1.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/2.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_2.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/3.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_3.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/4.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_4.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/5.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_5.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/6.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_6.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/7.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_7.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/8.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_8.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/9.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_9.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/10.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_10.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/11.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_11.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/12.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_12.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/13.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_13.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/14.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_14.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/15.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_15.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/16.jpg
2025-09-05 17:45:12 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_16.jpg
2025-09-05 17:45:12 - __main__ - INFO: 读 eye_hand_data/data2025082101/17.jpg
2025-09-05 17:45:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_17.jpg
2025-09-05 17:45:13 - __main__ - INFO: 读 eye_hand_data/data2025082101/18.jpg
2025-09-05 17:45:13 - __main__ - INFO: 保存带角点的图片到: eye_hand_data/data2025082101/corner/corner_18.jpg
2025-09-05 17:45:13 - __main__ - INFO: 旋转矩阵是:
[[-0.99486349 0.07846371 0.06395369]
[-0.05884529 0.06577685 -0.9960977 ]
[-0.08236419 -0.99474462 -0.06082177]]
2025-09-05 17:45:13 - __main__ - INFO: 平移向量是:
[[-0.00797824]
[-0.17640328]
[ 0.07459845]]
2025-09-05 17:45:13 - __main__ - INFO: 四元数是:
[ 0.00673467 0.72826199 -0.68342243 0.05022845]

Some files were not shown because too many files have changed in this diff Show More