diff --git a/docs/robot/static_transforms/index.md b/docs/robot/static_transforms/index.md index e69de29b..4040b733 100644 --- a/docs/robot/static_transforms/index.md +++ b/docs/robot/static_transforms/index.md @@ -0,0 +1,7 @@ + +## Frame Conventions + +Each robot has its own **map** frame that represents the starting position of the robot. +The **map** frame is expected to be in ENU (East-North-Up) convention. + +The robot is in the **base_link** frame. diff --git a/robot/docker/.dev/.bash_history_init b/robot/docker/.dev/.bash_history_init index 16be4383..0dbb800f 100644 --- a/robot/docker/.dev/.bash_history_init +++ b/robot/docker/.dev/.bash_history_init @@ -5,4 +5,5 @@ ros2 launch robot_bringup robot.launch.xml cws bws sws -bws --packages-select robot_bringup \ No newline at end of file +bws --packages-select robot_bringup +ros2 run tf2_tools view_frames \ No newline at end of file diff --git a/robot/ros_ws/.vscode/c_cpp_properties.json b/robot/ros_ws/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..061e8184 --- /dev/null +++ b/robot/ros_ws/.vscode/c_cpp_properties.json @@ -0,0 +1,38 @@ +{ + "configurations": [ + { + "browse": { + "databaseFilename": "${default}", + "limitSymbolsToIncludedHeaders": false + }, + "includePath": [ + "${workspaceFolder}/install/vdb_mapping_interfaces/include/**", + "${workspaceFolder}/install/trajectory_library/include/**", + "${workspaceFolder}/install/mavros_interface/include/**", + "${workspaceFolder}/install/robot_interface/include/**", + "${workspaceFolder}/install/px4_msgs/include/**", + "${workspaceFolder}/install/mav_system_msgs/include/**", + "${workspaceFolder}/install/mav_state_machine_msgs/include/**", + "${workspaceFolder}/install/mav_planning_msgs/include/**", + "${workspaceFolder}/install/mav_msgs/include/**", + "${workspaceFolder}/install/disparity_map_representation/include/**", + "${workspaceFolder}/install/map_representation_interface/include/**", + "${workspaceFolder}/install/disparity_graph/include/**", + "${workspaceFolder}/install/behavior_tree/include/**", + "${workspaceFolder}/install/behavior_tree_msgs/include/**", + "${workspaceFolder}/install/airstack_common/include/**", + "${workspaceFolder}/install/airstack_msgs/include/**", + "${workspaceFolder}/src/**", + "${workspaceFolder}/install/**", + "/opt/ros/humble/include/**", + "/usr/include/**" + ], + "name": "ROS", + "intelliSenseMode": "gcc-x64", + "compilerPath": "/usr/bin/gcc", + "cStandard": "gnu11", + "cppStandard": "c++17" + } + ], + "version": 4 +} \ No newline at end of file diff --git a/robot/ros_ws/.vscode/extensions.json b/robot/ros_ws/.vscode/extensions.json new file mode 100644 index 00000000..da9aa2fe --- /dev/null +++ b/robot/ros_ws/.vscode/extensions.json @@ -0,0 +1,13 @@ +{ + "recommendations": [ + "ms-python.black-formatter", + "ms-iot.vscode-ros", + "ms-vscode-remote.remote-ssh", + "ms-python.python", + "ms-vscode-remote.remote-containers", + "redhat.vscode-xml", + "dotjoshjohnson.xml", + "ms-vscode.cmake-tools", + "cschlosser.doxdocgen" + ] +} \ No newline at end of file diff --git a/robot/ros_ws/.vscode/launch.json b/robot/ros_ws/.vscode/launch.json new file mode 100644 index 00000000..c89a1c54 --- /dev/null +++ b/robot/ros_ws/.vscode/launch.json @@ -0,0 +1,12 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "ROS2: Launch robot.launch.xml", + "type": "ros", + "request": "launch", + // "preLaunchTask": "build ros_ws debug", + "target": "${workspaceFolder}/install/robot_bringup/share/robot_bringup/launch/robot.launch.xml", + } + ] +} \ No newline at end of file diff --git a/robot/ros_ws/.vscode/settings.json b/robot/ros_ws/.vscode/settings.json new file mode 100644 index 00000000..f2c30788 --- /dev/null +++ b/robot/ros_ws/.vscode/settings.json @@ -0,0 +1,847 @@ +{ + // PYTHON + "python.languageServer": "Pylance", + // This enables python language server. Seems to work slightly better than jedi: + "python.jediEnabled": false, + // We use "black" as a formatter: + "[python]": { + "editor.defaultFormatter": "ms-python.black-formatter" + }, + // ROS + "ros.distro": "humble", + "search.exclude": { + "**/build": true, + "**/install": true, + "**/log": true + }, + "C_Cpp.errorSquiggles": "enabled", + // ISAAC SIM + "python.analysis.extraPaths": [ + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.exporter.urdf", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.exporter.urdf/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.app.selector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.app.setup", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.articulation_inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.asset_browser", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.assets_check", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.benchmark.services", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.benchmark_environments", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.benchmarks", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.block_world", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.camera_inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.cloner", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.common_includes", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.conveyor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.conveyor.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.core_archive", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.core_archive/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.core_nodes", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.cortex", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.cortex.sample_behaviors", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.cortex_sync", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.debug_draw", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.doctest", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.dofbot", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.dynamic_control", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.examples", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.examples_nodes", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.extension_templates", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.franka", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.gain_tuner", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.gym", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.import_wizard", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.internal_tools", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.jupyter_notebook", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.kit", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.lula", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.lula/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.lula_test_widget", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.manipulators", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.manipulators.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.menu", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.merge_mesh", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ml_archive", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ml_archive/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.motion_generation", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.nucleus", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.occupancy_map", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.occupancy_map.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ocs2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.physics_inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.physics_utilities", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.proximity_sensor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.quadruped", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.range_sensor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.range_sensor.examples", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.range_sensor.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.repl", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.robot_assembler", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.robot_benchmark", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.robot_description_editor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ros2_bridge", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ros2_bridge.robot_description", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ros_bridge", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.scene_blox", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.sensor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.surface_gripper", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.surface_gripper.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.synthetic_recorder", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.tf_viewer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.throttling", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.ui_template", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.universal_robots", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.utils", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.version", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.vscode", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.wheeled_robots", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.wheeled_robots.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.isaac.window.about", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.kit.loop-isaac", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.kit.property.isaac", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.pip.cloud", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.pip.cloud/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.pip.compute", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.pip.compute/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.replicator.isaac", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/exts/omni.usd.schema.isaac", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.blockworld", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.convexdecomposition", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.kit.property.physx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.kvdb", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.localcache", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physics.tensors", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physics.tensors.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.bundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.camera", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.cct", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.commands", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.cooking", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.demos", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.fabric", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.forcefields", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.foundation", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.graph", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.internal", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.pvd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.stageupdate", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.supportui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.telemetry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.tensors", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.tests.mini", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.tests.visual", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.vehicle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.vehicle.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.physx.zerogravity", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.usd.schema.forcefield", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.usd.schema.physx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.usdphysics", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.usdphysics.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extsPhysics/omni.usdphysics.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.asset-106.0.3+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.behavior.schema-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.curve.bundle-1.2.3+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.curve.core-1.1.13+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.curve.ui-1.3.16+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.curve_editor-105.17.8+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.graph.bundle-106.0.3+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.graph.core-106.0.6+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.graph.schema-106.0.2+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.graph.ui-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.navigation.bundle-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.navigation.core-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.navigation.schema-106.0.2+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.navigation.ui-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.people-0.3.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.retarget.bundle-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.retarget.core-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.retarget.ui-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.shared.core-106.0.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.skelJoint-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.timeline-105.0.23+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.anim.window.timeline-105.13.5+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.asset_validator.core-0.11.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.asset_validator.ui-0.11.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.blast-0.15.2+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.cuopt.examples-1.0.0+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.cuopt.service-1.0.0+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.cuopt.visualization-1.0.0+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.curve.creator-105.0.4+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.curve.manipulator-105.2.6+105.2.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.entity.spawn.bundle-0.2.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.entity.spawn.core-0.2.3+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.entity.spawn.ui-0.4.3+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.extended.materials-105.0.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.flowusd-106.0.14+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.flowusd.bundle-1.0.2+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.flowusd.ui-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.gdn_asset_publisher-0.9.26", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.genproc.bundle-105.1.0+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.genproc.core-105.1.9+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.genproc.ui-105.1.2+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.action-1.101.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.action_nodes-1.21.3+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.bundle.action-2.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.io-1.8.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.nodes-1.141.2+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.scriptnode-1.18.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.telemetry-2.12.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.tutorials-1.26.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.ui-1.67.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.ui_nodes-1.24.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.visualization.nodes-2.1.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.window.action-1.25.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.window.core-1.107.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.window.generic-1.23.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.graph.window.particle.system-105.1.22+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.importer.mjcf-1.1.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.importer.onshape-0.7.1+105.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.importer.urdf-1.14.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.isaac.onshape-0.6.5+105.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.agent.watcher-0.2.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.asset_converter-2.1.10+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset-1.3.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset_provider.actorcore-1.0.6", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset_provider.local-1.0.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset_provider.sketchfab-1.0.10", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset_provider.turbosquid-1.0.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.asset_store-1.3.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.core-2.3.11", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.deepsearch-1.1.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.folder.core-1.9.12", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.material-1.5.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.sample-1.4.7", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.showcase-1.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.browser.texture-1.2.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.cad-201.0.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.cad_core-201.0.2+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.common-201.0.2+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.dgn_core-201.0.2+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.geojson-0.0.10+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.jt_core-201.0.2+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.lib3mf-1.1.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.ogc-1.1.22+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.stl-0.1.1+105.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.converter.vtk-2.3.1+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.core.collection-0.1.7", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.data2ui.core-1.0.25+106.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.data2ui.usd-1.0.25+106.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.environment.core-1.3.10", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.gfn-106.0.4+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.delegate.default-1.2.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.delegate.modern-1.10.6", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.delegate.neo-1.1.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.editor.core-1.5.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.editor.example-1.0.24", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.usd.commands-1.3.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.graph.widget.variables-2.1.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.core-3.2.0+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.core-4.3.3+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.core-4.3.5+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.messaging-1.1.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.native-4.1.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.webrtc-4.1.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.livestream.webrtc-4.1.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.manipulator.tool.mesh_snap-1.4.5+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.menu.stage-1.2.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.mesh.raycast-105.4.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.ngsearch-0.3.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.playlist.core-1.3.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.pointclouds-1.3.4+cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.preferences.animation-1.1.7+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.prim.icon-1.0.13", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.profiler.tracy-1.1.4+106.0.0.lx64", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.profiler.window-2.2.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.property.collection-0.1.17", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.property.environment-1.1.7", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.property.sbsar-107.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.property.visualization-104.0.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.scripting-106.0.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.search.files-1.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.search.service-0.1.12", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.sequencer.core-103.4.2+105.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.sequencer.usd-103.4.4+105.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.simscale-2.1.0+105.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.stage_column.payload-2.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.stage_column.variant-1.0.13", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.stagerecorder.bundle-105.0.2+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.stagerecorder.core-105.0.5+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.stagerecorder.ui-105.0.6+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.streamsdk.plugins-3.2.1+105.2.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.streamsdk.plugins-4.3.3+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.streamsdk.plugins-4.4.1+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.text3d-1.3.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.thumbnails.mdl-1.0.24", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.thumbnails.usd-1.0.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.timeline.minibar-1.2.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tool.asset_exporter-1.3.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tool.asset_importer-2.5.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tool.measure-105.2.5+105.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tool.remove_unused.controller-0.1.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tool.remove_unused.core-0.1.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.tools.mergemesh-0.1.6", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.variant.editor-106.0.0+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.variant.presenter-105.1.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.viewport.menubar.lighting-106.0.2+ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.viewport.menubar.waypoint-104.2.16", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.waypoint.bundle-1.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.waypoint.core-1.4.52", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.waypoint.playlist-1.0.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.calendar-1.0.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.collection-0.1.18", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.extended_searchfield-1.0.27", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.material_preview-1.0.16", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.sliderbar-1.0.10", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.timeline-105.0.1+105.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widget.zoombar-1.0.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.widgets.custom-1.0.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.collection-0.1.22", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.environment-1.7.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.material-1.5.7", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.material_graph-1.8.15", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.movie_capture-2.4.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.quicksearch-2.4.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.section-107.0.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.window.usddebug-1.0.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.advertise-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.core-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.example.usd_scene_ui-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.profile.ar-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.profile.common-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.profile.tabletar-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.profile.vr-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.scene_view.core-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.scene_view.utils-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.system.cloudxr-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.system.cloudxr41-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.system.openxr-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.system.playback-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.system.steamvr-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.telemetry-106.0.50+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.config.common-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.config.generic-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.config.htcvive-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.config.magicleap-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.config.metaquest-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.stage.common-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.window.profile-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.kit.xr.ui.window.viewport-106.0.50+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.no_code_ui.bundle-1.0.25+106.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.ocean-0.4.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.brush.attributes-1.3.1+105.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.brush.scatter-105.1.7+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.brush.scripting-105.0.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.system.bundle-105.10.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.system.core-105.10.1+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.paint.system.ui-105.1.6+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.particle.system.bundle-105.1.0+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.particle.system.core-105.1.8+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.particle.system.ui-105.1.13+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.product_configurator.panel-1.0.15", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.product_configurator.utils-1.2.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.ramp-105.1.15+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.agent.camera_calibration-0.2.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.agent.core-0.2.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.agent.ui-0.2.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.core-1.11.8+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.object-0.2.16", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.replicator.replicator_yaml-2.0.5+lx64", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.optimizer.bundle-106.0.4+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.optimizer.core-106.0.4+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.optimizer.ui-106.0.4+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.visualization.bundle-105.1.0+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.visualization.core-105.4.13+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.scene.visualization.ui-105.1.2+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.schema.audio.boom-0.5.0+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.common-1.0.1+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.ids-1.0.1+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.lidar-1.0.1+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.materials-1.0.0+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.radar-1.0.1+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.ultrasonic-1.0.2+lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.nv.wpm-1.0.0+lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.sensors.tiled-0.0.3+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.browser.asset-1.3.3+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.carb.event_stream-1.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.client-0.5.3", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.core-1.9.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.facilities.base-1.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.facilities.workqueue-1.1.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.pip_archive-0.13.3+lx64", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.starfleet.auth-0.1.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.streamclient.webrtc-1.3.8", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.streamclient.websocket-2.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.streaming.manager-0.3.10", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.thumbnails.images-1.3.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.transport.client.base-1.2.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.transport.client.http_async-1.3.6", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.transport.server.base-1.1.1", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.transport.server.http-1.3.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.transport.server.zeroconf-1.0.9", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.services.usd-1.1.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.simready.explorer-1.0.26", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.slangnode-106.0.0+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.tools.array-105.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.tools.distribute-105.0.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.tools.randomizer-105.0.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.fileformat.e57-1.2.1+106.0.0.lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.fileformat.sbsar-107.0.2+lx64.r.cp310.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.metrics.assembler-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.metrics.assembler.physics-106.0.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.metrics.assembler.ui-106.0.2+106.0.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.schema.destruction-0.7.0+106.0.0.lx64.r", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.schema.flow-106.0.8+106.0.0.ub3f", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.schema.metrics.assembler-106.0.1+106.0.0.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.schema.scene.visualization-2.0.2+105.2.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.usd.schema.sequence-2.3.0+105.2.lx64.r.cp310", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.vdb_timesample_editor-0.1.10", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.warehouse_creator-0.3.5", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.warp-1.1.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/omni.warp.core-1.1.0", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/semantics.schema.editor-0.3.4", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/extscache/semantics.schema.property-1.0.2", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/carb.audio", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/carb.imaging.python", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/carb.windowing.plugins", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.freeze_monitor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.profiler", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.pump", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.activity.usd_resolver", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.app.setup", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.app.workflow.startup", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.appwindow", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.audioplayer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.audiorecorder", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.blobkey", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.command.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.cpumemorytracking", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.cuda.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.datastore", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.debugdraw", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.example.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.fabric.agent", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.fabric.commands", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.fabric.fabric_inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.gpu_foundation", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.gpucompute.plugins", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.action_core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.exec", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.image.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.image.nodes", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.graph.tools", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hsscclient", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.engine.stats", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.index", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.index_remote", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.iray", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.pxr", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.pxr.settings", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.rtx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.scene_api", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.scene_delegate", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.hydra.usdrt_delegate", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.compute", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.kit.rtx_scientific", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.renderer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.settings.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.index.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.inspect", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.iray.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.iray.settings.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.actions.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.actions.window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.app_snippets", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.audio.test.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.audiodeviceenum", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.autocapture", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.capture.viewport", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.clipboard", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.channel_manager", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.presence_layer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.selection_outline", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.settings", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.stage_columns", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.telemetry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.collaboration.viewport.camera", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.commands", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.compatibility_checker", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.context_menu", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.core.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.debug.python", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.debug.vscode", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.documentation.builder", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.documentation.ui.style", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.example.toolbar_button", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.exec.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.exec.debug", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.exec.example-carb", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.exec.example-omni", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.extpath.git", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.filebrowser_column.acl", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.filebrowser_column.tags", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.helper.file_utils", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.hotkeys.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.hotkeys.window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.hydra_texture", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.loop-default", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.mainwindow", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.camera", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.prim", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.prim.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.prim.fabric", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.prim.legacy", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.prim.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.selection", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.selector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.tool.snap", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.transform", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.manipulator.viewport", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.material.library", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.aov", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.common", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.create", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.edit", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.file", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.menu.utils", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.multinode", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.notification_manager", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.numpy.common", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.pip_archive", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.pip_archive/pip_prebundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.pipapi", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.primitive.mesh", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.profile_python", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.adapter.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.audio", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.bundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.camera", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.file", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.geometry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.layer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.light", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.material", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.render", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.skel", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.tagging", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.transform", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.property.usd_clipboard_test", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.quicklayout", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.raycast.query", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.renderer.capture", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.renderer.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.renderer.cuda_interop", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.renderer.imgui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.renderer.init", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.scene_view.opengl", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.scene_view.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.search_core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.search_example", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.selection", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.stage.copypaste", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.stage.mdl_converter", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.stage_column.active", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.stage_template.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.stage_templates", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.tagging", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.telemetry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_app_compat", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_app_full_nonrtx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_async_rendering", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_helpers_gfx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.browser", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.helpers", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.layer_window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.layout", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.menu", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.stage_window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.test_suite.viewport", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.tool.collect", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.ui.actions", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.ui_test", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.uiapp", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.usd.collect", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.usd.layers", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.usd_undo", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.usda_edit", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.usdz_export", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.actions", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.bundle", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.docs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.iray", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.legacy_gizmos", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.manipulator.transform", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.menubar.camera", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.menubar.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.menubar.display", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.menubar.render", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.menubar.settings", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.pxr", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.ready", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.registry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.rtx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.scene_camera_model", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.utility", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport.window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.viewport_widgets_manager", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.about", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.extensions", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.learn", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.open", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.whats_new", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.welcome.window", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.browser_bar", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.cache_indicator", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.context_menu", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.filebrowser", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.filter", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.graph", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.highlight_label", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.imageview", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.layers", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.live", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.live_session_management", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.live_session_management.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.nucleus_connector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.nucleus_info", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.opengl", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.options_button", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.options_menu", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.path_field", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.prompt", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.search_delegate", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.searchable_combobox", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.searchfield", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.settings", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.spinner", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.stage", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.stage_fabric", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.stage_icons", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.text_editor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.toolbar", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.versioning", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.widget.viewport", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.about", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.audio.oscilloscope", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.audioplayer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.audiorecorder", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.commands", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.console", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.content_browser", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.content_browser_registry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.cursor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.drop_support", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.extensions", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.file", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.file_exporter", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.file_importer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.filepicker", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.images", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.imageviewer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.imguidebug", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.inspector", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.material_swap", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.popup_dialog", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.preferences", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.privacy", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.property", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.provide_feedback", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.reshade_editor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.script_editor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.splash", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.splash_close_example", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.stage", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.stage_fabric", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.stageviewer", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.stats", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.status_bar", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.title", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.toolbar", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.usd_paths", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.viewport", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.kit.window.welcome", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mdl", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mdl.distill_and_bake", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mdl.neuraylib", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mdl.usd_converter", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mpi.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.mtlx", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.population", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.resourcemonitor", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.index_composite", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.registered_compositing.test", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.settings.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.shadercache.vulkan", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.vmaterials.tests", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.rtx.window.settings", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.spatialindex", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.stats", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.syntheticdata", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.taskagent", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.timeline", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.timeline.live_session", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ucx.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ui", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ui.scene", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ui_query", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.uiaudio", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.client", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.default", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.processor.geometry", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.processor.test", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.processor.texture", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.python", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.router", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.ujitso.service", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.config", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.libs", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.anim", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.audio", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.geospatial", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.omnigraph", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.omniscripting", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd.schema.semantics", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.usd_resolver", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.videoencoding", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.volume", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/omni.volume_nodes", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/test.omni.graph.core", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/exts/usdrt.scenegraph", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/extscore/omni.assets.plugins", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/extscore/omni.client", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/extscore/omni.kit.async_engine", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/extscore/omni.kit.registry.nucleus", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/kernel/py", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/plugins/bindings-python", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/kit/python/lib/python3.10/site-packages", + "~/.local/share/ov/pkg/isaac-sim-4.0.0/python_packages" + ], + "files.associations": { + "*.launch": "xml", + "*.config": "python", + "functional": "cpp", + "__atomic": "cpp", + "filesystem": "cpp", + "unordered_map": "cpp", + "__node_handle": "cpp", + "iterator": "cpp", + "array": "cpp", + "deque": "cpp", + "list": "cpp", + "string": "cpp", + "vector": "cpp", + "string_view": "cpp", + "initializer_list": "cpp", + "__bit_reference": "cpp", + "__hash_table": "cpp", + "__split_buffer": "cpp", + "__tree": "cpp", + "bitset": "cpp", + "map": "cpp", + "set": "cpp", + "cctype": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "atomic": "cpp", + "*.tcc": "cpp", + "chrono": "cpp", + "complex": "cpp", + "condition_variable": "cpp", + "cstdint": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "ostream": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cinttypes": "cpp", + "typeinfo": "cpp", + "variant": "cpp", + "bit": "cpp", + "__nullptr": "cpp", + "__locale": "cpp", + "codecvt": "cpp", + "any": "cpp", + "future": "cpp", + "csignal": "cpp", + "strstream": "cpp", + "compare": "cpp", + "concepts": "cpp", + "forward_list": "cpp", + "unordered_set": "cpp", + "regex": "cpp", + "numbers": "cpp", + "ranges": "cpp", + "semaphore": "cpp", + "shared_mutex": "cpp", + "stop_token": "cpp", + "cfenv": "cpp", + "typeindex": "cpp", + "valarray": "cpp", + "*.ipp": "cpp" + }, + "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 100 }", + "editor.formatOnSave": true, + "python.autoComplete.extraPaths": [ + "/root/ros_ws/install/vdb_mapping_interfaces/local/lib/python3.10/dist-packages", + "/root/ros_ws/build/rqt_py_template/src", + "/root/ros_ws/install/rqt_py_template/lib/python3.10/site-packages", + "/root/ros_ws/build/rqt_fixed_trajectory_generator/src", + "/root/ros_ws/install/rqt_fixed_trajectory_generator/lib/python3.10/site-packages", + "/root/ros_ws/build/rqt_behavior_tree_command/src", + "/root/ros_ws/install/rqt_behavior_tree_command/lib/python3.10/site-packages", + "/root/ros_ws/build/rqt_behavior_tree/src", + "/root/ros_ws/install/rqt_behavior_tree/lib/python3.10/site-packages", + "/root/ros_ws/install/px4_msgs/local/lib/python3.10/dist-packages", + "/root/ros_ws/install/mav_planning_msgs/local/lib/python3.10/dist-packages", + "/root/ros_ws/install/mav_msgs/local/lib/python3.10/dist-packages", + "/root/ros_ws/install/behavior_tree_msgs/local/lib/python3.10/dist-packages", + "/root/ros_ws/install/airstack_msgs/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages" + ] +} \ No newline at end of file diff --git a/robot/ros_ws/.vscode/tasks.json b/robot/ros_ws/.vscode/tasks.json new file mode 100644 index 00000000..f70b159b --- /dev/null +++ b/robot/ros_ws/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build ros_ws debug", + "type": "shell", + "options": { + "cwd": "${workspaceFolder}" + }, + "command": [ + "source /root/.bashrc &&", + "bws --cmake-args '-DCMAKE_BUILD_TYPE=Debug'" + ], + "problemMatcher": [], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "test ros_ws", + "type": "shell", + "options": { + "cwd": "${workspaceFolder}" + }, + "command": [ + "source /opt/ros/humble/setup.bash;", + "source ${workspaceFolder}/install/setup.bash;", + "colcon test && colcon test-result" + ], + } + ] +} \ No newline at end of file diff --git a/robot/ros_ws/src/autonomy/3_local/c_controls/trajectory_controller/src/trajectory_controller.cpp b/robot/ros_ws/src/autonomy/3_local/c_controls/trajectory_controller/src/trajectory_controller.cpp index 6ddd83c1..5f951556 100644 --- a/robot/ros_ws/src/autonomy/3_local/c_controls/trajectory_controller/src/trajectory_controller.cpp +++ b/robot/ros_ws/src/autonomy/3_local/c_controls/trajectory_controller/src/trajectory_controller.cpp @@ -183,275 +183,274 @@ void TrajectoryControlNode::timer_callback() { double execute_elapsed = (curr_execute_time - prev_execute_time).seconds(); prev_execute_time = curr_execute_time; - if (got_odom) { - if (time_multiplier > 1.f) time_multiplier = 1.f; - if (std::isnan(time_multiplier) || !std::isfinite(time_multiplier)) { - RCLCPP_INFO_STREAM(this->get_logger(), - "time_multiplier was an invalid value: " << time_multiplier); - time_multiplier = 1.f; - } + if (!got_odom) { + RCLCPP_INFO_STREAM(this->get_logger(), "Waiting to receive odometry."); + return; + } + + if (time_multiplier > 1.f) time_multiplier = 1.f; + if (std::isnan(time_multiplier) || !std::isfinite(time_multiplier)) { + RCLCPP_INFO_STREAM(this->get_logger(), + "time_multiplier was an invalid value: " << time_multiplier); + time_multiplier = 1.f; + } - // figure out what duration into the trajectory we are - rclcpp::Time now = this->get_clock()->now(); - tf2::Vector3 robot_point = tflib::to_tf(odom.pose.pose.position); - double tracking_error = - tflib::to_tf(virtual_tracking_point_odom.pose.position).distance(robot_point); - std_msgs::msg::Float32 tracking_error_msg; - tracking_error_msg.data = tracking_error; - tracking_error_pub->publish(tracking_error_msg); - - // visualization - markers.overwrite(); - markers - .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), robot_point.x(), - robot_point.y(), robot_point.z(), sphere_radius) - .set_color(0.f, 0.f, 1.f, 0.7f); - trajectory_vis_pub->publish( - trajectory->get_markers(now - rclcpp::Duration::from_seconds(0.3), "traj_controller", 1, - 1, 0, 1, false, false, traj_vis_thickness)); - - // find closest point on entire trajectory - Waypoint closest_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - nav_msgs::msg::Odometry closest_odom; - bool closest_valid = false; // trajectory->get_closest_waypoint(robot_point, 0, - // trajectory->get_duration(), &closest_wp); - if (closest_valid) - closest_valid = trajectory->get_odom(closest_wp.get_time(), &closest_point_odom, now); - // else - // ROS_INFO("CLOSEST NOT VALID"); - if (closest_valid) closest_point_pub->publish(closest_point_odom); - - double current_virtual_ahead_time = 0.; - - if (trajectory_mode != airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { - if (time_multiplier >= 1.f && - tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() > - min_virtual_tracking_velocity) { - if (new_rewind) RCLCPP_INFO(this->get_logger(), "YO"); - // find closest point within time interval - Waypoint closest_ahead_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - bool closest_ahead_valid = trajectory->get_closest_waypoint( - robot_point, virtual_time, prev_vtp_time + look_ahead_time, &closest_ahead_wp); - if (closest_ahead_valid) { - virtual_time = closest_ahead_wp.get_time(); - - // visualization + // figure out what duration into the trajectory we are + rclcpp::Time now = this->get_clock()->now(); + tf2::Vector3 robot_point = tflib::to_tf(odom.pose.pose.position); + double tracking_error = + tflib::to_tf(virtual_tracking_point_odom.pose.position).distance(robot_point); + std_msgs::msg::Float32 tracking_error_msg; + tracking_error_msg.data = tracking_error; + tracking_error_pub->publish(tracking_error_msg); + + // visualization + markers.overwrite(); + markers + .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), robot_point.x(), + robot_point.y(), robot_point.z(), sphere_radius) + .set_color(0.f, 0.f, 1.f, 0.7f); + trajectory_vis_pub->publish(trajectory->get_markers(now - rclcpp::Duration::from_seconds(0.3), + "traj_controller", 1, 1, 0, 1, false, false, + traj_vis_thickness)); + + // find closest point on entire trajectory + Waypoint closest_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + nav_msgs::msg::Odometry closest_odom; + bool closest_valid = false; // trajectory->get_closest_waypoint(robot_point, 0, + // trajectory->get_duration(), &closest_wp); + if (closest_valid) + closest_valid = trajectory->get_odom(closest_wp.get_time(), &closest_point_odom, now); + // else + // ROS_INFO("CLOSEST NOT VALID"); + if (closest_valid) closest_point_pub->publish(closest_point_odom); + + double current_virtual_ahead_time = 0.; + + if (trajectory_mode != airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { + if (time_multiplier >= 1.f && + tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() > + min_virtual_tracking_velocity) { + if (new_rewind) RCLCPP_INFO(this->get_logger(), "YO"); + // find closest point within time interval + Waypoint closest_ahead_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + bool closest_ahead_valid = trajectory->get_closest_waypoint( + robot_point, virtual_time, prev_vtp_time + look_ahead_time, &closest_ahead_wp); + if (closest_ahead_valid) { + virtual_time = closest_ahead_wp.get_time(); + + // visualization + markers + .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), + closest_ahead_wp.get_x(), closest_ahead_wp.get_y(), + closest_ahead_wp.get_z(), 0.025f) + .set_color(0.f, 1.f, 0.f); + + Waypoint vtp_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + Waypoint end_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + bool vtp_valid = trajectory->get_waypoint_sphere_intersection( + virtual_time, search_ahead_factor * sphere_radius, + prev_vtp_time + look_ahead_time, robot_point, sphere_radius, + min_virtual_tracking_velocity, &vtp_wp, &end_wp); + if (vtp_valid) current_virtual_ahead_time = vtp_wp.get_time() - virtual_time; + + // visualization + if (vtp_valid) markers .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), - closest_ahead_wp.get_x(), closest_ahead_wp.get_y(), - closest_ahead_wp.get_z(), 0.025f) + vtp_wp.get_x(), vtp_wp.get_y(), vtp_wp.get_z(), 0.025f) .set_color(0.f, 1.f, 0.f); - - Waypoint vtp_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - Waypoint end_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - bool vtp_valid = trajectory->get_waypoint_sphere_intersection( - virtual_time, search_ahead_factor * sphere_radius, - prev_vtp_time + look_ahead_time, robot_point, sphere_radius, - min_virtual_tracking_velocity, &vtp_wp, &end_wp); - if (vtp_valid) current_virtual_ahead_time = vtp_wp.get_time() - virtual_time; - - // visualization - if (vtp_valid) - markers - .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), - vtp_wp.get_x(), vtp_wp.get_y(), vtp_wp.get_z(), 0.025f) - .set_color(0.f, 1.f, 0.f); - else - markers - .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), - closest_ahead_wp.get_x(), closest_ahead_wp.get_y(), - closest_ahead_wp.get_z() + sphere_radius, 0.025f) - .set_color(1.f, 0.f, 0.f); + else markers .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), - end_wp.get_x(), end_wp.get_y(), end_wp.get_z(), 0.025f) - .set_color(0.f, 0.f, 1.f); - } else - RCLCPP_INFO(this->get_logger(), "AHEAD NOT VALID"); - } else { - if (new_rewind) { - float before = virtual_time; - virtual_time = trajectory->get_skip_ahead_time( - virtual_time, rewind_skip_max_velocity, rewind_skip_max_distance); - RCLCPP_INFO_STREAM(this->get_logger(), - "SKIPPED from " << before << " to " << virtual_time << " (" - << (virtual_time - before) << ")"); - new_rewind = false; - } - virtual_time = std::min(trajectory->get_duration(), - virtual_time + time_multiplier * execute_elapsed); - if (time_multiplier < 1.f) { - time_multiplier += transition_dt; - } - } - } else if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { - // don't update virtual_time - } - //*/ - - // get virtual waypoint - Waypoint virtual_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); - bool virtual_valid = - trajectory->get_waypoint(virtual_time + current_virtual_ahead_time, &virtual_wp); - if (virtual_valid) { - virtual_valid = - trajectory->get_odom(virtual_wp.get_time(), &virtual_tracking_point_odom, now); - - // prevent oscillating between slow and normal mode - if (tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() <= - min_virtual_tracking_velocity) - virtual_time += current_virtual_ahead_time; - - float look_ahead_multiplier = 1.f; - if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) - look_ahead_multiplier = -1.f; - trajectory->get_odom(virtual_wp.get_time() + look_ahead_multiplier * look_ahead_time, - &look_ahead_point, now); - trajectory->get_odom(virtual_wp.get_time(), &drone_point, now); - actual_time = virtual_wp.get_time(); - prev_vtp_time = virtual_wp.get_time(); + closest_ahead_wp.get_x(), closest_ahead_wp.get_y(), + closest_ahead_wp.get_z() + sphere_radius, 0.025f) + .set_color(1.f, 0.f, 0.f); + markers + .add_sphere(target_frame, now - rclcpp::Duration::from_seconds(0.3), + end_wp.get_x(), end_wp.get_y(), end_wp.get_z(), 0.025f) + .set_color(0.f, 0.f, 1.f); + } else + RCLCPP_INFO(this->get_logger(), "AHEAD NOT VALID"); } else { - RCLCPP_INFO_STREAM_ONCE( - this->get_logger(), - "Virtual waypoint does not correspond to a waypoint along the " - "reference trajectory. If no trajectory is available yet, this is okay."); + if (new_rewind) { + float before = virtual_time; + virtual_time = trajectory->get_skip_ahead_time( + virtual_time, rewind_skip_max_velocity, rewind_skip_max_distance); + RCLCPP_INFO_STREAM(this->get_logger(), + "SKIPPED from " << before << " to " << virtual_time << " (" + << (virtual_time - before) << ")"); + new_rewind = false; + } + virtual_time = std::min(trajectory->get_duration(), + virtual_time + time_multiplier * execute_elapsed); + if (time_multiplier < 1.f) { + time_multiplier += transition_dt; + } } + } else if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { + // don't update virtual_time + } + //*/ - if (trajectory->get_num_waypoints() <= 3) { - virtual_tracking_point_odom.twist.linear.x = 0; - virtual_tracking_point_odom.twist.linear.y = 0; - virtual_tracking_point_odom.twist.linear.z = 0; - } - // if(tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() <= ff_min_velocity){ + // get virtual waypoint + Waypoint virtual_wp(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + bool virtual_valid = + trajectory->get_waypoint(virtual_time + current_virtual_ahead_time, &virtual_wp); + if (virtual_valid) { + virtual_valid = + trajectory->get_odom(virtual_wp.get_time(), &virtual_tracking_point_odom, now); + + // prevent oscillating between slow and normal mode if (tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() <= - min_virtual_tracking_velocity) { - virtual_tracking_point_odom.twist.linear.x = 0; - virtual_tracking_point_odom.twist.linear.y = 0; - virtual_tracking_point_odom.twist.linear.z = 0; - virtual_tracking_point_odom.acceleration.x = 0; - virtual_tracking_point_odom.acceleration.y = 0; - virtual_tracking_point_odom.acceleration.z = 0; - virtual_tracking_point_odom.jerk.x = 0; - virtual_tracking_point_odom.jerk.y = 0; - virtual_tracking_point_odom.jerk.z = 0; - } + min_virtual_tracking_velocity) + virtual_time += current_virtual_ahead_time; + + float look_ahead_multiplier = 1.f; + if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) + look_ahead_multiplier = -1.f; + trajectory->get_odom(virtual_wp.get_time() + look_ahead_multiplier * look_ahead_time, + &look_ahead_point, now); + trajectory->get_odom(virtual_wp.get_time(), &drone_point, now); + actual_time = virtual_wp.get_time(); + prev_vtp_time = virtual_wp.get_time(); + } else { + RCLCPP_INFO_STREAM_ONCE( + this->get_logger(), + "Virtual waypoint does not correspond to a waypoint along the " + "reference trajectory. If no trajectory is available yet, this is okay."); + } - if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::ROBOT_POSE) { - virtual_tracking_point_odom.pose = odom.pose.pose; - virtual_tracking_point_odom.twist.linear.x = 0; - virtual_tracking_point_odom.twist.linear.y = 0; - virtual_tracking_point_odom.twist.linear.z = 0; - virtual_tracking_point_odom.twist.angular.x = 0; - virtual_tracking_point_odom.twist.angular.y = 0; - virtual_tracking_point_odom.twist.angular.z = 0; - virtual_tracking_point_odom.acceleration.x = 0; - virtual_tracking_point_odom.acceleration.y = 0; - virtual_tracking_point_odom.acceleration.z = 0; - virtual_tracking_point_odom.jerk.x = 0; - virtual_tracking_point_odom.jerk.y = 0; - virtual_tracking_point_odom.jerk.z = 0; - look_ahead_point = virtual_tracking_point_odom; - drone_point = look_ahead_point; - } + if (trajectory->get_num_waypoints() <= 3) { + virtual_tracking_point_odom.twist.linear.x = 0; + virtual_tracking_point_odom.twist.linear.y = 0; + virtual_tracking_point_odom.twist.linear.z = 0; + } + if (tflib::to_tf(virtual_tracking_point_odom.twist.linear).length() <= + min_virtual_tracking_velocity) { + virtual_tracking_point_odom.twist.linear.x = 0; + virtual_tracking_point_odom.twist.linear.y = 0; + virtual_tracking_point_odom.twist.linear.z = 0; + virtual_tracking_point_odom.acceleration.x = 0; + virtual_tracking_point_odom.acceleration.y = 0; + virtual_tracking_point_odom.acceleration.z = 0; + virtual_tracking_point_odom.jerk.x = 0; + virtual_tracking_point_odom.jerk.y = 0; + virtual_tracking_point_odom.jerk.z = 0; + } - virtual_tracking_point_odom.header.stamp = now; - look_ahead_point.header.stamp = now; - drone_point.header.stamp = now; + if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::ROBOT_POSE) { + virtual_tracking_point_odom.pose = odom.pose.pose; + virtual_tracking_point_odom.twist.linear.x = 0; + virtual_tracking_point_odom.twist.linear.y = 0; + virtual_tracking_point_odom.twist.linear.z = 0; + virtual_tracking_point_odom.twist.angular.x = 0; + virtual_tracking_point_odom.twist.angular.y = 0; + virtual_tracking_point_odom.twist.angular.z = 0; + virtual_tracking_point_odom.acceleration.x = 0; + virtual_tracking_point_odom.acceleration.y = 0; + virtual_tracking_point_odom.acceleration.z = 0; + virtual_tracking_point_odom.jerk.x = 0; + virtual_tracking_point_odom.jerk.y = 0; + virtual_tracking_point_odom.jerk.z = 0; + look_ahead_point = virtual_tracking_point_odom; + drone_point = look_ahead_point; + } - if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) { - look_ahead_point.twist.linear.x *= -1.f; - look_ahead_point.twist.linear.y *= -1.f; - look_ahead_point.twist.linear.z *= -1.f; - } + virtual_tracking_point_odom.header.stamp = now; + look_ahead_point.header.stamp = now; + drone_point.header.stamp = now; - if (time_multiplier >= -1.f && time_multiplier <= 1.f) { - virtual_tracking_point_odom.twist.linear.x *= time_multiplier; - virtual_tracking_point_odom.twist.linear.y *= time_multiplier; - virtual_tracking_point_odom.twist.linear.z *= time_multiplier; - } + if (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) { + look_ahead_point.twist.linear.x *= -1.f; + look_ahead_point.twist.linear.y *= -1.f; + look_ahead_point.twist.linear.z *= -1.f; + } - // When the tracking point reaches the end of the trajectory, the velocity gets set to zero - if (virtual_wp.get_time() >= trajectory->get_duration() || - trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { - virtual_tracking_point_odom.twist.linear.x = 0; - virtual_tracking_point_odom.twist.linear.y = 0; - virtual_tracking_point_odom.twist.linear.z = 0; - virtual_tracking_point_odom.twist.angular.x = 0; - virtual_tracking_point_odom.twist.angular.y = 0; - virtual_tracking_point_odom.twist.angular.z = 0; - virtual_tracking_point_odom.acceleration.x = 0; - virtual_tracking_point_odom.acceleration.y = 0; - virtual_tracking_point_odom.acceleration.z = 0; - virtual_tracking_point_odom.jerk.x = 0; - virtual_tracking_point_odom.jerk.y = 0; - virtual_tracking_point_odom.jerk.z = 0; - - look_ahead_point.twist.linear.x = 0; - look_ahead_point.twist.linear.y = 0; - look_ahead_point.twist.linear.z = 0; - look_ahead_point.twist.angular.x = 0; - look_ahead_point.twist.angular.y = 0; - look_ahead_point.twist.angular.z = 0; - look_ahead_point.acceleration.x = 0; - look_ahead_point.acceleration.y = 0; - look_ahead_point.acceleration.z = 0; - look_ahead_point.jerk.x = 0; - look_ahead_point.jerk.y = 0; - look_ahead_point.jerk.z = 0; - drone_point = look_ahead_point; - } + if (time_multiplier >= -1.f && time_multiplier <= 1.f) { + virtual_tracking_point_odom.twist.linear.x *= time_multiplier; + virtual_tracking_point_odom.twist.linear.y *= time_multiplier; + virtual_tracking_point_odom.twist.linear.z *= time_multiplier; + } - std_msgs::msg::Float32 velocity_msg; - velocity_msg.data = sqrt(virtual_tracking_point_odom.twist.linear.x * - virtual_tracking_point_odom.twist.linear.x + - virtual_tracking_point_odom.twist.linear.y * - virtual_tracking_point_odom.twist.linear.y + - virtual_tracking_point_odom.twist.linear.z * - virtual_tracking_point_odom.twist.linear.z); - if (time_multiplier >= 1.f) current_velocity = velocity_msg.data; - velocity_pub->publish(velocity_msg); - tracking_point_pub->publish(virtual_tracking_point_odom); - look_ahead_pub->publish(look_ahead_point); - drone_point_pub->publish(drone_point); - - // create a tf for the tracking point odom - tf2::Stamped vtp_tf = tflib::to_tf(virtual_tracking_point_odom); - geometry_msgs::msg::TransformStamped transform = tf2::toMsg(vtp_tf); - transform.child_frame_id = tf_prefix + "tracking_point"; - geometry_msgs::msg::TransformStamped transform_stabilized = - tf2::toMsg(tflib::get_stabilized(vtp_tf)); - transform_stabilized.child_frame_id = tf_prefix + "tracking_point_stabilized"; - tf_broadcaster->sendTransform(transform); - tf_broadcaster->sendTransform(transform_stabilized); - - // create a tf for the look ahead odom - tf2::Stamped la_tf = tflib::to_tf(look_ahead_point); - geometry_msgs::msg::TransformStamped look_ahead_transform = tf2::toMsg(la_tf); - look_ahead_transform.child_frame_id = tf_prefix + "look_ahead_point"; - geometry_msgs::msg::TransformStamped look_ahead_transform_stabilized = - tf2::toMsg(tflib::get_stabilized(la_tf)); - look_ahead_transform_stabilized.child_frame_id = tf_prefix + "look_ahead_point_stabilized"; - - tf_broadcaster->sendTransform(look_ahead_transform); - tf_broadcaster->sendTransform(look_ahead_transform_stabilized); - - // publish completion percentage - std_msgs::msg::Float32 trajectory_completion_percentage; - trajectory_completion_percentage.data = virtual_time / trajectory->get_duration() * 100.f; - trajectory_completion_percentage_pub->publish(trajectory_completion_percentage); - - // publish current trajectory time - std_msgs::msg::Float32 trajectory_time; - trajectory_time.data = - (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) - ? trajectory->get_duration() - virtual_time - : virtual_time; - trajectory_time_pub->publish(trajectory_time); - - // publish visualization - debug_markers_pub->publish(markers.get_marker_array()); + // When the tracking point reaches the end of the trajectory, the velocity gets set to zero + if (virtual_wp.get_time() >= trajectory->get_duration() || + trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::PAUSE) { + virtual_tracking_point_odom.twist.linear.x = 0; + virtual_tracking_point_odom.twist.linear.y = 0; + virtual_tracking_point_odom.twist.linear.z = 0; + virtual_tracking_point_odom.twist.angular.x = 0; + virtual_tracking_point_odom.twist.angular.y = 0; + virtual_tracking_point_odom.twist.angular.z = 0; + virtual_tracking_point_odom.acceleration.x = 0; + virtual_tracking_point_odom.acceleration.y = 0; + virtual_tracking_point_odom.acceleration.z = 0; + virtual_tracking_point_odom.jerk.x = 0; + virtual_tracking_point_odom.jerk.y = 0; + virtual_tracking_point_odom.jerk.z = 0; + + look_ahead_point.twist.linear.x = 0; + look_ahead_point.twist.linear.y = 0; + look_ahead_point.twist.linear.z = 0; + look_ahead_point.twist.angular.x = 0; + look_ahead_point.twist.angular.y = 0; + look_ahead_point.twist.angular.z = 0; + look_ahead_point.acceleration.x = 0; + look_ahead_point.acceleration.y = 0; + look_ahead_point.acceleration.z = 0; + look_ahead_point.jerk.x = 0; + look_ahead_point.jerk.y = 0; + look_ahead_point.jerk.z = 0; + drone_point = look_ahead_point; } + std_msgs::msg::Float32 velocity_msg; + velocity_msg.data = sqrt( + virtual_tracking_point_odom.twist.linear.x * virtual_tracking_point_odom.twist.linear.x + + virtual_tracking_point_odom.twist.linear.y * virtual_tracking_point_odom.twist.linear.y + + virtual_tracking_point_odom.twist.linear.z * virtual_tracking_point_odom.twist.linear.z); + if (time_multiplier >= 1.f) current_velocity = velocity_msg.data; + velocity_pub->publish(velocity_msg); + tracking_point_pub->publish(virtual_tracking_point_odom); + look_ahead_pub->publish(look_ahead_point); + drone_point_pub->publish(drone_point); + + // create a tf for the tracking point odom + tf2::Stamped vtp_tf = tflib::to_tf(virtual_tracking_point_odom); + geometry_msgs::msg::TransformStamped transform = tf2::toMsg(vtp_tf); + transform.child_frame_id = tf_prefix + "tracking_point"; + geometry_msgs::msg::TransformStamped transform_stabilized = + tf2::toMsg(tflib::get_stabilized(vtp_tf)); + transform_stabilized.child_frame_id = tf_prefix + "tracking_point_stabilized"; + tf_broadcaster->sendTransform(transform); + tf_broadcaster->sendTransform(transform_stabilized); + + // create a tf for the look ahead odom + tf2::Stamped la_tf = tflib::to_tf(look_ahead_point); + geometry_msgs::msg::TransformStamped look_ahead_transform = tf2::toMsg(la_tf); + look_ahead_transform.child_frame_id = tf_prefix + "look_ahead_point"; + geometry_msgs::msg::TransformStamped look_ahead_transform_stabilized = + tf2::toMsg(tflib::get_stabilized(la_tf)); + look_ahead_transform_stabilized.child_frame_id = tf_prefix + "look_ahead_point_stabilized"; + + tf_broadcaster->sendTransform(look_ahead_transform); + tf_broadcaster->sendTransform(look_ahead_transform_stabilized); + + // publish completion percentage + std_msgs::msg::Float32 trajectory_completion_percentage; + trajectory_completion_percentage.data = virtual_time / trajectory->get_duration() * 100.f; + trajectory_completion_percentage_pub->publish(trajectory_completion_percentage); + + // publish current trajectory time + std_msgs::msg::Float32 trajectory_time; + trajectory_time.data = (trajectory_mode == airstack_msgs::srv::TrajectoryMode::Request::REWIND) + ? trajectory->get_duration() - virtual_time + : virtual_time; + trajectory_time_pub->publish(trajectory_time); + + // publish visualization + debug_markers_pub->publish(markers.get_marker_array()); + new_rewind = false; }