feat : add touch ui
This commit is contained in:
parent
cf033e421b
commit
1a674188ee
11
.idea/grpc_client.sync-conflict-20260318-013404-55JW2V4.iml
generated
Normal file
11
.idea/grpc_client.sync-conflict-20260318-013404-55JW2V4.iml
generated
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/generated" isTestSource="false" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="cmvr-base" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
7
.idea/misc.sync-conflict-20260318-013404-55JW2V4.xml
generated
Normal file
7
.idea/misc.sync-conflict-20260318-013404-55JW2V4.xml
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Black">
|
||||
<option name="sdkName" value="Python 3.8 (grpc_client)" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="cmvr-base" project-jdk-type="Python SDK" />
|
||||
</project>
|
||||
103
.idea/workspace.sync-conflict-20260318-013404-55JW2V4.xml
generated
Normal file
103
.idea/workspace.sync-conflict-20260318-013404-55JW2V4.xml
generated
Normal file
@ -0,0 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="1eaf2261-98f5-4c90-86fc-e43e40e92567" name="Changes" comment="" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="EmbeddingIndexingInfo">
|
||||
<option name="cachedIndexableFilesCount" value="164" />
|
||||
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="McpProjectServerCommands">
|
||||
<commands />
|
||||
<urls />
|
||||
</component>
|
||||
<component name="ProjectColorInfo"><![CDATA[{
|
||||
"customColor": "",
|
||||
"associatedIndex": 3
|
||||
}]]></component>
|
||||
<component name="ProjectId" id="3B34aWKp18Cb5vqYU1D23d1hPn9" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"Python.generate_apriltags_border.executor": "Run",
|
||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||
"git-widget-placeholder": "master",
|
||||
"junie.onboarding.icon.badge.shown": "true",
|
||||
"settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
|
||||
"to.speed.mode.migration.done": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RunManager">
|
||||
<configuration name="generate_apriltags_border" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="SDK_NAME" value="cmvr-base" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
|
||||
<option name="IS_MODULE_SDK" value="false" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/generate_apriltags_border.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.generate_apriltags_border" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-python-sdk-4762d8aabb82-6d6dccd035ac-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.30387.173" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="1eaf2261-98f5-4c90-86fc-e43e40e92567" name="Changes" comment="" />
|
||||
<created>1773704484327</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1773704484327</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="Vcs.Log.Tabs.Properties">
|
||||
<option name="TAB_STATES">
|
||||
<map>
|
||||
<entry key="MAIN">
|
||||
<value>
|
||||
<State />
|
||||
</value>
|
||||
</entry>
|
||||
</map>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
||||
247
.idea/workspace.sync-conflict-20260326-143838-55JW2V4.xml
generated
Normal file
247
.idea/workspace.sync-conflict-20260326-143838-55JW2V4.xml
generated
Normal file
@ -0,0 +1,247 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="14e52ab9-de95-493e-8d51-2bc74f57bef2" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/base_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/clients/base_client.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/gui_camera_client..py" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/joint_states.csv" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/press_client.py" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/camera_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/camera_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/camera_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/camera_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/common_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/common_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/dexhand_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/dexhand_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/dexhand_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/dexhand_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/hlc_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/hlc_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/hlc_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/hlc_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/microphone_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/microphone_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/microphone_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/microphone_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/speaker_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/speaker_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/speaker_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/speaker_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/test_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/test_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/can_card_parameter_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/can_card_parameter_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/canopen_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/canopen_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/error_code_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/error_code_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/geometry_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/geometry_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/motor_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/motor_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/robot_detail_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/robot_detail_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/biohead_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/biohead_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/camera_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/camera_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/common.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/dexhand_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/dexhand_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/hlc_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/hlc_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/humanoid_robot_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/humanoid_robot_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/microphone_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/microphone_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/speaker_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/speaker_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/system_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/system_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/test_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/can_card_parameter.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/canopen.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/error_code.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/geometry.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/motor.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/robot_detail.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/apriltags_border_20x15cm_A4.pdf" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/generate_apriltag_single.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/generate_apriltag_single.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/generate_apriltags_border.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/generate_apriltags_border.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/ui/app.py" beforeDir="false" afterPath="$PROJECT_DIR$/ui/app.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="EmbeddingIndexingInfo">
|
||||
<option name="cachedIndexableFilesCount" value="390" />
|
||||
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Python Script" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="McpProjectServerCommands">
|
||||
<commands />
|
||||
<urls />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"customColor": "",
|
||||
"associatedIndex": 3
|
||||
}</component>
|
||||
<component name="ProjectId" id="3B49fOihNkRbSSSqQJdMjIqYFFv" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"Python.app.executor": "Run",
|
||||
"Python.generate_apriltag_batch.executor": "Run",
|
||||
"Python.generate_apriltags_border.executor": "Run",
|
||||
"Python.gui_camera_client..executor": "Run",
|
||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||
"git-widget-placeholder": "master",
|
||||
"junie.onboarding.icon.badge.shown": "true",
|
||||
"last_opened_file_path": "D:/cmvr/0-worksapce/grpc_client",
|
||||
"settings.editor.selected.configurable": "http.proxy",
|
||||
"to.speed.mode.migration.done": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\cmvr\0-worksapce\grpc_client" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.app">
|
||||
<configuration name="app" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ui" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/ui/app.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="generate_apriltag_batch" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/generate_apriltag_batch.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="generate_apriltags_border" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/generate_apriltags_border.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="gui_camera_client." type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/clients" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/clients/gui_camera_client..py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.app" />
|
||||
<item itemvalue="Python.generate_apriltags_border" />
|
||||
<item itemvalue="Python.generate_apriltag_batch" />
|
||||
<item itemvalue="Python.gui_camera_client." />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-python-sdk-4762d8aabb82-6d6dccd035ac-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.30387.173" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration>C:\Users\lgv\AppData\Roaming\Subversion</configuration>
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="14e52ab9-de95-493e-8d51-2bc74f57bef2" name="Changes" comment="" />
|
||||
<created>1773737578904</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1773737578904</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
</project>
|
||||
272
.idea/workspace.sync-conflict-20260402-100016-55JW2V4.xml
generated
Normal file
272
.idea/workspace.sync-conflict-20260402-100016-55JW2V4.xml
generated
Normal file
@ -0,0 +1,272 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="14e52ab9-de95-493e-8d51-2bc74f57bef2" name="Changes" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/base_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/clients/base_client.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/gui_camera_client..py" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/hand_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/clients/hand_client.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/joint_states.csv" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/clients/press_client.py" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/biohead_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/camera_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/camera_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/camera_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/camera_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/common_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/common_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/dexhand_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/dexhand_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/dexhand_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/dexhand_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/hlc_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/hlc_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/hlc_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/hlc_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/humanoid_robot_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/microphone_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/microphone_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/microphone_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/microphone_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/speaker_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/speaker_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/speaker_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/speaker_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_command_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_command_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2_grpc.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/system_service_pb2_grpc.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/api/test_service_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/api/test_service_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/can_card_parameter_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/can_card_parameter_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/canopen_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/canopen_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/error_code_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/error_code_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/geometry_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/geometry_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/motor_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/motor_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/generated/cmvr/msgs/robot_detail_pb2.py" beforeDir="false" afterPath="$PROJECT_DIR$/generated/cmvr/msgs/robot_detail_pb2.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/biohead_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/biohead_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/camera_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/camera_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/common.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/dexhand_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/dexhand_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/hlc_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/hlc_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/humanoid_robot_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/humanoid_robot_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/microphone_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/microphone_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/speaker_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/speaker_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/system_command.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/system_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/api/test_service.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/can_card_parameter.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/canopen.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/error_code.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/geometry.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/motor.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/protos/cmvr/msgs/robot_detail.proto" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/apriltags_border_20x15cm_A4.pdf" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/generate_apriltag_single.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/generate_apriltag_single.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/scripts/generate_apriltags_border.py" beforeDir="false" afterPath="$PROJECT_DIR$/scripts/generate_apriltags_border.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/ui/app.py" beforeDir="false" afterPath="$PROJECT_DIR$/ui/app.py" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="EmbeddingIndexingInfo">
|
||||
<option name="cachedIndexableFilesCount" value="391" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Python Script" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="McpProjectServerCommands">
|
||||
<commands />
|
||||
<urls />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"customColor": "",
|
||||
"associatedIndex": 3
|
||||
}</component>
|
||||
<component name="ProjectId" id="3B49fOihNkRbSSSqQJdMjIqYFFv" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"Python.app.executor": "Run",
|
||||
"Python.generate_apriltag_batch.executor": "Run",
|
||||
"Python.generate_apriltags_border.executor": "Run",
|
||||
"Python.gui_camera_client..executor": "Run",
|
||||
"Python.hand_client.executor": "Run",
|
||||
"RunOnceActivity.MCP Project settings loaded": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||
"git-widget-placeholder": "master",
|
||||
"junie.onboarding.icon.badge.shown": "true",
|
||||
"last_opened_file_path": "D:/cmvr/0-worksapce/grpc_client",
|
||||
"settings.editor.selected.configurable": "http.proxy",
|
||||
"to.speed.mode.migration.done": "true"
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="D:\cmvr\0-worksapce\grpc_client" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="Python.app">
|
||||
<configuration name="app" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/ui" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/ui/app.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="generate_apriltag_batch" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/generate_apriltag_batch.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="generate_apriltags_border" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/scripts" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/scripts/generate_apriltags_border.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="gui_camera_client." type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/clients" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/clients/gui_camera_client..py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="hand_client" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
||||
<module name="grpc_client" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="PARENT_ENVS" value="true" />
|
||||
<envs>
|
||||
<env name="PYTHONUNBUFFERED" value="1" />
|
||||
</envs>
|
||||
<option name="SDK_HOME" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/clients" />
|
||||
<option name="IS_MODULE_SDK" value="true" />
|
||||
<option name="ADD_CONTENT_ROOTS" value="true" />
|
||||
<option name="ADD_SOURCE_ROOTS" value="true" />
|
||||
<option name="RUN_TOOL" value="" />
|
||||
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/clients/hand_client.py" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="SHOW_COMMAND_LINE" value="false" />
|
||||
<option name="EMULATE_TERMINAL" value="false" />
|
||||
<option name="MODULE_MODE" value="false" />
|
||||
<option name="REDIRECT_INPUT" value="false" />
|
||||
<option name="INPUT_FILE" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<recent_temporary>
|
||||
<list>
|
||||
<item itemvalue="Python.app" />
|
||||
<item itemvalue="Python.hand_client" />
|
||||
<item itemvalue="Python.generate_apriltags_border" />
|
||||
<item itemvalue="Python.generate_apriltag_batch" />
|
||||
<item itemvalue="Python.gui_camera_client." />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-python-sdk-4762d8aabb82-6d6dccd035ac-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.30387.173" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SvnConfiguration">
|
||||
<configuration>C:\Users\lgv\AppData\Roaming\Subversion</configuration>
|
||||
</component>
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="14e52ab9-de95-493e-8d51-2bc74f57bef2" name="Changes" comment="" />
|
||||
<created>1773737578904</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1773737578904</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
</project>
|
||||
10
README.md
10
README.md
@ -7,7 +7,13 @@
|
||||
## Setup
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
python -m pip install -r requirements.txt
|
||||
```
|
||||
|
||||
Use the same Python interpreter you run the clients with. For example:
|
||||
|
||||
```bash
|
||||
C:\Users\lgv\miniconda3\envs\grpc_client\python.exe -m pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Generate gRPC code
|
||||
@ -29,9 +35,9 @@ python -m clients.get_pose_client
|
||||
python -m clients.torque_on_client
|
||||
python -m clients.torque_off_client
|
||||
python -m clients.torque_key_client
|
||||
python -m clients.press_client
|
||||
python -m clients.save_joint_to_csv
|
||||
python -m clients.http_server
|
||||
python -m clients.hlc_client
|
||||
```
|
||||
|
||||
## UI (PyQt)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
clients/__pycache__/camera_client.cpython-39.pyc
Normal file
BIN
clients/__pycache__/camera_client.cpython-39.pyc
Normal file
Binary file not shown.
BIN
clients/__pycache__/get_rgb_image_stream_client.cpython-39.pyc
Normal file
BIN
clients/__pycache__/get_rgb_image_stream_client.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
BIN
clients/__pycache__/hlc_client.cpython-39.pyc
Normal file
BIN
clients/__pycache__/hlc_client.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -17,9 +17,14 @@ class RobotClientBase:
|
||||
self.retries = retries
|
||||
self.channel = None
|
||||
self.stub = None
|
||||
self.stub_hand = None
|
||||
print(f"Attempting to connect to gRPC server: {self.address}")
|
||||
self._connect_with_retry()
|
||||
|
||||
def _init_stubs(self, channel):
|
||||
self.stub = humanoid_robot_service_pb2_grpc.HumanoidRobotServiceStub(channel)
|
||||
self.stub_hand = dexhand_service_pb2_grpc.DexHandServiceStub(channel)
|
||||
|
||||
def _connect_with_retry(self):
|
||||
attempt = 0
|
||||
while attempt <= self.retries:
|
||||
@ -27,8 +32,7 @@ class RobotClientBase:
|
||||
try:
|
||||
self.channel = grpc.insecure_channel(self.address)
|
||||
grpc.channel_ready_future(self.channel).result(timeout=self.timeout)
|
||||
self.stub = humanoid_robot_service_pb2_grpc.HumanoidRobotServiceStub(self.channel)
|
||||
self.stub_hand = dexhand_service_pb2_grpc.DexHandServiceStub(self.channel)
|
||||
self._init_stubs(self.channel)
|
||||
print(f"Successfully connected to gRPC server: {self.address}")
|
||||
return
|
||||
except grpc.FutureTimeoutError:
|
||||
|
||||
67
clients/camera_client.py
Normal file
67
clients/camera_client.py
Normal file
@ -0,0 +1,67 @@
|
||||
import time
|
||||
from typing import Callable, Optional
|
||||
|
||||
from google.protobuf.timestamp_pb2 import Timestamp
|
||||
|
||||
from clients._path_setup import ensure_paths
|
||||
|
||||
ensure_paths()
|
||||
|
||||
from clients.base_client import RobotClientBase
|
||||
from cmvr.api import camera_command_pb2 as pb
|
||||
from cmvr.api import camera_service_pb2_grpc as rpc
|
||||
from cmvr.api import common_pb2
|
||||
|
||||
|
||||
class CameraClient(RobotClientBase):
|
||||
"""Client for CameraService RGB image RPCs."""
|
||||
|
||||
def _init_stubs(self, channel):
|
||||
self.stub = rpc.CameraServiceStub(channel)
|
||||
|
||||
@staticmethod
|
||||
def _make_header(device_id: str):
|
||||
header = common_pb2.CommandHeader.Request()
|
||||
header.device_id = device_id
|
||||
timestamp = Timestamp()
|
||||
timestamp.GetCurrentTime()
|
||||
header.timestamp.CopyFrom(timestamp)
|
||||
return header
|
||||
|
||||
def start_camera(self, device_id: str):
|
||||
request = pb.StartCameraCommand.Request(header=self._make_header(device_id))
|
||||
return self.stub.StartCamera(request, timeout=self.timeout)
|
||||
|
||||
def stop_camera(self, device_id: str):
|
||||
request = pb.StopCameraCommand.Request(header=self._make_header(device_id))
|
||||
return self.stub.StopCamera(request, timeout=self.timeout)
|
||||
|
||||
def get_rgb_image(self, device_id: str):
|
||||
request = pb.GetRGBImageCommand.Request(header=self._make_header(device_id))
|
||||
return self.stub.GetRGBImage(request, timeout=self.timeout)
|
||||
|
||||
def get_rgb_image_stream(
|
||||
self,
|
||||
device_id: str,
|
||||
stop_requested: Optional[Callable[[], bool]] = None,
|
||||
request_interval: float = 0.001,
|
||||
):
|
||||
should_stop = stop_requested or (lambda: False)
|
||||
|
||||
def request_gen():
|
||||
while not should_stop():
|
||||
yield pb.GetRGBImageStreamCommand.Request(
|
||||
header=self._make_header(device_id),
|
||||
eof=False,
|
||||
)
|
||||
time.sleep(request_interval)
|
||||
|
||||
yield pb.GetRGBImageStreamCommand.Request(
|
||||
header=self._make_header(device_id),
|
||||
eof=True,
|
||||
)
|
||||
|
||||
return self.stub.GetRGBImageStream(request_gen())
|
||||
|
||||
|
||||
GetRGBImageStreamClient = CameraClient
|
||||
@ -1,727 +0,0 @@
|
||||
# camera_player_qt.py
|
||||
import sys
|
||||
import cv2
|
||||
import av
|
||||
import numpy as np
|
||||
import grpc
|
||||
import threading
|
||||
import time
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
|
||||
QHBoxLayout, QLabel, QPushButton, QLineEdit,
|
||||
QFileDialog, QMessageBox, QStatusBar, QGroupBox,
|
||||
QGridLayout, QComboBox, QSpinBox, QCheckBox, QFrame)
|
||||
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer
|
||||
from PyQt5.QtGui import QImage, QPixmap
|
||||
|
||||
# 导入生成的protobuf模块
|
||||
from cmvr.api import camera_service_pb2_grpc
|
||||
from cmvr.api import camera_command_pb2
|
||||
from cmvr.api.common_pb2 import CommandHeader
|
||||
from google.protobuf.timestamp_pb2 import Timestamp
|
||||
|
||||
|
||||
class StreamThread(QThread):
|
||||
"""流接收线程"""
|
||||
frame_received = pyqtSignal(object, int, int) # frame, width, height
|
||||
status_update = pyqtSignal(dict)
|
||||
error_occurred = pyqtSignal(str)
|
||||
keyframe_received = pyqtSignal()
|
||||
|
||||
# 支持的编码格式
|
||||
CODECS = {
|
||||
'H.265 (HEVC)': 'hevc',
|
||||
'H.264 (AVC)': 'h264'
|
||||
}
|
||||
|
||||
def __init__(self, device_id, server_addr, codec='hevc', wait_for_keyframe=True):
|
||||
super().__init__()
|
||||
self.device_id = device_id
|
||||
self.server_addr = server_addr
|
||||
self.codec_name = codec
|
||||
self.wait_for_keyframe = wait_for_keyframe
|
||||
self.running = False
|
||||
self.streaming = False
|
||||
|
||||
# gRPC
|
||||
self.channel = None
|
||||
self.stub = None
|
||||
|
||||
# 解码器
|
||||
self.codec = None
|
||||
self._init_decoder()
|
||||
|
||||
# 统计
|
||||
self.frame_count = 0
|
||||
self.fps_counter = 0
|
||||
self.fps_time = time.time()
|
||||
self.fps = 0
|
||||
self.keyframe_count = 0
|
||||
|
||||
def _init_decoder(self):
|
||||
"""初始化解码器"""
|
||||
try:
|
||||
# 根据选择的编码创建解码器
|
||||
self.codec = av.CodecContext.create(self.codec_name, "r")
|
||||
self.codec.thread_count = 1
|
||||
|
||||
# 设置低延迟模式
|
||||
if hasattr(self.codec, 'flags'):
|
||||
try:
|
||||
self.codec.flags |= av.codec.context.AV_CODEC_FLAG_LOW_DELAY
|
||||
except:
|
||||
pass
|
||||
|
||||
print(f"✓ {self.codec_name.upper()}解码器初始化成功")
|
||||
except Exception as e:
|
||||
print(f"✗ 解码器初始化失败: {e}")
|
||||
self.codec = None
|
||||
|
||||
def _create_header(self):
|
||||
"""创建请求头"""
|
||||
timestamp = Timestamp()
|
||||
timestamp.GetCurrentTime()
|
||||
return CommandHeader.Request(
|
||||
device_id=self.device_id,
|
||||
timestamp=timestamp
|
||||
)
|
||||
|
||||
def connect(self):
|
||||
"""连接服务器"""
|
||||
try:
|
||||
self.channel = grpc.insecure_channel(self.server_addr)
|
||||
grpc.channel_ready_future(self.channel).result(timeout=3)
|
||||
self.stub = camera_service_pb2_grpc.CameraServiceStub(self.channel)
|
||||
return True
|
||||
except Exception as e:
|
||||
self.error_occurred.emit(f"连接失败: {e}")
|
||||
return False
|
||||
|
||||
def start_camera(self):
|
||||
"""启动摄像头"""
|
||||
try:
|
||||
request = camera_command_pb2.StartCameraCommand.Request(
|
||||
header=self._create_header()
|
||||
)
|
||||
response = self.stub.StartCamera(request, timeout=3)
|
||||
return response.header.success
|
||||
except Exception as e:
|
||||
self.error_occurred.emit(f"启动摄像头失败: {e}")
|
||||
return False
|
||||
|
||||
def stop_camera(self):
|
||||
"""停止摄像头"""
|
||||
try:
|
||||
request = camera_command_pb2.StopCameraCommand.Request(
|
||||
header=self._create_header()
|
||||
)
|
||||
self.stub.StopCamera(request, timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
def run(self):
|
||||
"""线程主函数"""
|
||||
if not self.connect():
|
||||
return
|
||||
|
||||
if not self.start_camera():
|
||||
return
|
||||
|
||||
self.running = True
|
||||
self.streaming = True
|
||||
self.frame_count = 0
|
||||
self.fps_counter = 0
|
||||
self.fps_time = time.time()
|
||||
keyframe_received = False
|
||||
|
||||
def request_gen():
|
||||
while self.streaming:
|
||||
yield camera_command_pb2.GetRGBImageStreamCommand.Request(
|
||||
header=self._create_header(),
|
||||
eof=False
|
||||
)
|
||||
time.sleep(0.001)
|
||||
yield camera_command_pb2.GetRGBImageStreamCommand.Request(
|
||||
header=self._create_header(),
|
||||
eof=True
|
||||
)
|
||||
|
||||
try:
|
||||
responses = self.stub.GetRGBImageStream(request_gen())
|
||||
|
||||
for response in responses:
|
||||
if not self.streaming:
|
||||
break
|
||||
|
||||
if response.header.success:
|
||||
frame_data = response.color_frame.data
|
||||
is_keyframe = response.color_frame.is_key_frame
|
||||
|
||||
# 等待首个关键帧
|
||||
if self.wait_for_keyframe and not keyframe_received and not is_keyframe:
|
||||
continue
|
||||
|
||||
if is_keyframe and not keyframe_received:
|
||||
keyframe_received = True
|
||||
self.keyframe_count += 1
|
||||
self.keyframe_received.emit()
|
||||
|
||||
# 解码
|
||||
if self.codec and frame_data:
|
||||
packet = av.Packet(frame_data)
|
||||
frames = self.codec.decode(packet)
|
||||
|
||||
if frames:
|
||||
# 转换为RGB (已经是RGB格式)
|
||||
img = frames[0].to_ndarray(format='rgb24')
|
||||
|
||||
# 更新统计
|
||||
self.fps_counter += 1
|
||||
self.frame_count += 1
|
||||
|
||||
# 计算FPS
|
||||
now = time.time()
|
||||
if now - self.fps_time >= 1.0:
|
||||
self.fps = self.fps_counter
|
||||
self.fps_counter = 0
|
||||
self.fps_time = now
|
||||
|
||||
# 发送状态更新
|
||||
self.status_update.emit({
|
||||
'fps': self.fps,
|
||||
'frames': self.frame_count,
|
||||
'keyframes': self.keyframe_count
|
||||
})
|
||||
|
||||
# 发送帧到主线程
|
||||
h, w = img.shape[:2]
|
||||
self.frame_received.emit(img, w, h)
|
||||
|
||||
else:
|
||||
print(f"流错误: {response.header.error_message}")
|
||||
|
||||
except Exception as e:
|
||||
self.error_occurred.emit(f"流错误: {e}")
|
||||
finally:
|
||||
self.stop_camera()
|
||||
if self.channel:
|
||||
self.channel.close()
|
||||
self.running = False
|
||||
self.streaming = False
|
||||
|
||||
def stop(self):
|
||||
"""停止线程"""
|
||||
self.streaming = False
|
||||
self.wait(2000) # 等待最多2秒
|
||||
|
||||
|
||||
class CameraPlayerQt(QMainWindow):
|
||||
"""基于Qt的摄像头拉流播放器"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setWindowTitle("摄像头拉流播放器 (Qt版)")
|
||||
self.setMinimumSize(1000, 800)
|
||||
|
||||
# 状态变量
|
||||
self.connected = False
|
||||
self.streaming = False
|
||||
self.recording = False
|
||||
self.stream_thread = None
|
||||
self.video_writer = None
|
||||
|
||||
# 录制目录
|
||||
self.record_path = Path("./recordings")
|
||||
self.record_path.mkdir(exist_ok=True)
|
||||
|
||||
# 创建UI
|
||||
self._create_ui()
|
||||
|
||||
# 状态栏
|
||||
self.status_bar = QStatusBar()
|
||||
self.setStatusBar(self.status_bar)
|
||||
self.status_bar.showMessage("就绪")
|
||||
|
||||
# 定时器用于更新显示
|
||||
self.display_timer = QTimer()
|
||||
self.display_timer.timeout.connect(self._update_display)
|
||||
self.display_timer.start(30) # 约33fps
|
||||
|
||||
# 当前帧缓存
|
||||
self.current_frame = None
|
||||
self.frame_width = 0
|
||||
self.frame_height = 0
|
||||
|
||||
def _create_ui(self):
|
||||
"""创建UI"""
|
||||
central_widget = QWidget()
|
||||
self.setCentralWidget(central_widget)
|
||||
main_layout = QVBoxLayout(central_widget)
|
||||
|
||||
# ========== 连接设置区域 ==========
|
||||
conn_group = QGroupBox("连接设置")
|
||||
conn_layout = QGridLayout()
|
||||
|
||||
# 第一行:设备ID和编码格式
|
||||
conn_layout.addWidget(QLabel("设备ID:"), 0, 0)
|
||||
self.device_id = QLineEdit("right_hand_cam")
|
||||
conn_layout.addWidget(self.device_id, 0, 1)
|
||||
|
||||
conn_layout.addWidget(QLabel("编码格式:"), 0, 2)
|
||||
self.codec_combo = QComboBox()
|
||||
self.codec_combo.addItems(['H.265 (HEVC)', 'H.264 (AVC)'])
|
||||
self.codec_combo.setCurrentIndex(0)
|
||||
self.codec_combo.setMinimumWidth(120)
|
||||
conn_layout.addWidget(self.codec_combo, 0, 3)
|
||||
|
||||
# 等待关键帧选项
|
||||
self.wait_keyframe = QCheckBox("等待关键帧")
|
||||
self.wait_keyframe.setChecked(True)
|
||||
conn_layout.addWidget(self.wait_keyframe, 0, 4)
|
||||
|
||||
# 第二行:服务器地址
|
||||
conn_layout.addWidget(QLabel("服务器IP:"), 1, 0)
|
||||
self.server_ip = QLineEdit("192.168.0.222")
|
||||
conn_layout.addWidget(self.server_ip, 1, 1)
|
||||
|
||||
conn_layout.addWidget(QLabel("端口:"), 1, 2)
|
||||
self.server_port = QLineEdit("50052")
|
||||
self.server_port.setMaximumWidth(80)
|
||||
conn_layout.addWidget(self.server_port, 1, 3)
|
||||
|
||||
# 超时设置
|
||||
conn_layout.addWidget(QLabel("超时(秒):"), 1, 4)
|
||||
self.timeout_spin = QSpinBox()
|
||||
self.timeout_spin.setRange(1, 10)
|
||||
self.timeout_spin.setValue(3)
|
||||
self.timeout_spin.setMaximumWidth(60)
|
||||
conn_layout.addWidget(self.timeout_spin, 1, 5)
|
||||
|
||||
# 第三行:录制目录
|
||||
conn_layout.addWidget(QLabel("录制目录:"), 2, 0)
|
||||
self.record_dir = QLineEdit(str(self.record_path))
|
||||
conn_layout.addWidget(self.record_dir, 2, 1, 1, 4)
|
||||
|
||||
self.browse_btn = QPushButton("浏览")
|
||||
self.browse_btn.clicked.connect(self._browse_dir)
|
||||
conn_layout.addWidget(self.browse_btn, 2, 5)
|
||||
|
||||
# 第四行:控制按钮
|
||||
btn_layout = QHBoxLayout()
|
||||
|
||||
self.connect_btn = QPushButton("连接")
|
||||
self.connect_btn.clicked.connect(self._connect)
|
||||
self.connect_btn.setMinimumWidth(80)
|
||||
btn_layout.addWidget(self.connect_btn)
|
||||
|
||||
self.preview_btn = QPushButton("预览")
|
||||
self.preview_btn.clicked.connect(self._toggle_preview)
|
||||
self.preview_btn.setEnabled(False)
|
||||
self.preview_btn.setMinimumWidth(80)
|
||||
btn_layout.addWidget(self.preview_btn)
|
||||
|
||||
self.record_btn = QPushButton("录制")
|
||||
self.record_btn.clicked.connect(self._toggle_recording)
|
||||
self.record_btn.setEnabled(False)
|
||||
self.record_btn.setMinimumWidth(80)
|
||||
btn_layout.addWidget(self.record_btn)
|
||||
|
||||
self.disconnect_btn = QPushButton("断开")
|
||||
self.disconnect_btn.clicked.connect(self._disconnect)
|
||||
self.disconnect_btn.setEnabled(False)
|
||||
self.disconnect_btn.setMinimumWidth(80)
|
||||
btn_layout.addWidget(self.disconnect_btn)
|
||||
|
||||
btn_layout.addStretch()
|
||||
|
||||
conn_layout.addLayout(btn_layout, 3, 0, 1, 6)
|
||||
|
||||
conn_group.setLayout(conn_layout)
|
||||
main_layout.addWidget(conn_group)
|
||||
|
||||
# ========== 状态显示区域 ==========
|
||||
status_group = QGroupBox("状态信息")
|
||||
status_layout = QHBoxLayout()
|
||||
|
||||
self.conn_status = QLabel("● 未连接")
|
||||
self.conn_status.setStyleSheet("color: red;")
|
||||
status_layout.addWidget(self.conn_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.codec_status = QLabel("编码: H.265")
|
||||
status_layout.addWidget(self.codec_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.fps_status = QLabel("FPS: 0")
|
||||
status_layout.addWidget(self.fps_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.frame_status = QLabel("帧数: 0")
|
||||
status_layout.addWidget(self.frame_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.resolution_status = QLabel("分辨率: -")
|
||||
status_layout.addWidget(self.resolution_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.keyframe_status = QLabel("关键帧: 等待")
|
||||
self.keyframe_status.setStyleSheet("color: orange;")
|
||||
status_layout.addWidget(self.keyframe_status)
|
||||
|
||||
status_layout.addWidget(QLabel("|"))
|
||||
|
||||
self.record_status = QLabel("录制: 未开始")
|
||||
self.record_status.setStyleSheet("color: gray;")
|
||||
status_layout.addWidget(self.record_status)
|
||||
|
||||
status_layout.addStretch()
|
||||
status_group.setLayout(status_layout)
|
||||
main_layout.addWidget(status_group)
|
||||
|
||||
# ========== 视频预览区域 ==========
|
||||
video_group = QGroupBox("视频预览")
|
||||
video_layout = QVBoxLayout()
|
||||
|
||||
self.video_label = QLabel()
|
||||
self.video_label.setAlignment(Qt.AlignCenter)
|
||||
self.video_label.setMinimumSize(640, 480)
|
||||
self.video_label.setStyleSheet("background-color: black; border: 1px solid gray;")
|
||||
video_layout.addWidget(self.video_label)
|
||||
|
||||
video_group.setLayout(video_layout)
|
||||
main_layout.addWidget(video_group, 1) # 1表示拉伸因子
|
||||
|
||||
# ========== 操作说明 ==========
|
||||
info_frame = QFrame()
|
||||
info_frame.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken)
|
||||
info_layout = QHBoxLayout(info_frame)
|
||||
|
||||
info_label = QLabel("操作说明: ①选择编码格式 ②连接 ③预览 ④录制 (按'停止预览'结束)")
|
||||
info_label.setStyleSheet("color: gray; padding: 5px;")
|
||||
info_layout.addWidget(info_label)
|
||||
|
||||
main_layout.addWidget(info_frame)
|
||||
|
||||
def _browse_dir(self):
|
||||
"""浏览目录"""
|
||||
directory = QFileDialog.getExistingDirectory(self, "选择录制目录",
|
||||
self.record_dir.text())
|
||||
if directory:
|
||||
self.record_dir.setText(directory)
|
||||
self.record_path = Path(directory)
|
||||
self.record_path.mkdir(exist_ok=True)
|
||||
|
||||
def _get_server_addr(self):
|
||||
"""获取服务器地址"""
|
||||
return f"{self.server_ip.text()}:{self.server_port.text()}"
|
||||
|
||||
def _get_codec(self):
|
||||
"""获取编码格式"""
|
||||
codec_map = {
|
||||
'H.265 (HEVC)': 'hevc',
|
||||
'H.264 (AVC)': 'h264'
|
||||
}
|
||||
return codec_map[self.codec_combo.currentText()]
|
||||
|
||||
def _connect(self):
|
||||
"""连接服务器"""
|
||||
codec = self._get_codec()
|
||||
self.status_bar.showMessage(f"正在连接服务器 (编码: {codec.upper()})...")
|
||||
|
||||
# 更新编码状态显示
|
||||
self.codec_status.setText(f"编码: {self.codec_combo.currentText()}")
|
||||
|
||||
# 创建流线程
|
||||
self.stream_thread = StreamThread(
|
||||
self.device_id.text(),
|
||||
self._get_server_addr(),
|
||||
codec=codec,
|
||||
wait_for_keyframe=self.wait_keyframe.isChecked()
|
||||
)
|
||||
|
||||
# 连接信号
|
||||
self.stream_thread.frame_received.connect(self._on_frame_received)
|
||||
self.stream_thread.status_update.connect(self._on_status_update)
|
||||
self.stream_thread.error_occurred.connect(self._on_error)
|
||||
self.stream_thread.keyframe_received.connect(self._on_keyframe_received)
|
||||
|
||||
# 连接测试
|
||||
if self.stream_thread.connect():
|
||||
self.connected = True
|
||||
self.conn_status.setText("● 已连接")
|
||||
self.conn_status.setStyleSheet("color: green;")
|
||||
self.connect_btn.setEnabled(False)
|
||||
self.preview_btn.setEnabled(True)
|
||||
self.disconnect_btn.setEnabled(True)
|
||||
self.codec_combo.setEnabled(False)
|
||||
self.wait_keyframe.setEnabled(False)
|
||||
self.status_bar.showMessage("服务器连接成功", 3000)
|
||||
else:
|
||||
self.stream_thread = None
|
||||
|
||||
def _disconnect(self):
|
||||
"""断开连接"""
|
||||
# 停止预览
|
||||
if self.streaming:
|
||||
self._stop_preview()
|
||||
|
||||
# 停止录制
|
||||
if self.recording:
|
||||
self._stop_recording()
|
||||
|
||||
# 清理线程
|
||||
if self.stream_thread:
|
||||
self.stream_thread.stop()
|
||||
self.stream_thread = None
|
||||
|
||||
self.connected = False
|
||||
self.conn_status.setText("● 未连接")
|
||||
self.conn_status.setStyleSheet("color: red;")
|
||||
self.connect_btn.setEnabled(True)
|
||||
self.preview_btn.setEnabled(False)
|
||||
self.preview_btn.setText("预览")
|
||||
self.record_btn.setEnabled(False)
|
||||
self.record_btn.setText("录制")
|
||||
self.disconnect_btn.setEnabled(False)
|
||||
self.codec_combo.setEnabled(True)
|
||||
self.wait_keyframe.setEnabled(True)
|
||||
|
||||
# 清空画面
|
||||
self.video_label.clear()
|
||||
self.current_frame = None
|
||||
|
||||
# 重置状态
|
||||
self.keyframe_status.setText("关键帧: 等待")
|
||||
self.keyframe_status.setStyleSheet("color: orange;")
|
||||
self.fps_status.setText("FPS: 0")
|
||||
self.frame_status.setText("帧数: 0")
|
||||
self.resolution_status.setText("分辨率: -")
|
||||
|
||||
self.status_bar.showMessage("已断开连接", 3000)
|
||||
|
||||
def _toggle_preview(self):
|
||||
"""切换预览"""
|
||||
if not self.streaming:
|
||||
self._start_preview()
|
||||
else:
|
||||
self._stop_preview()
|
||||
|
||||
def _start_preview(self):
|
||||
"""开始预览"""
|
||||
if not self.stream_thread:
|
||||
return
|
||||
|
||||
self.streaming = True
|
||||
self.stream_thread.streaming = True
|
||||
self.stream_thread.start()
|
||||
|
||||
self.preview_btn.setText("停止")
|
||||
self.record_btn.setEnabled(True)
|
||||
|
||||
if self.wait_keyframe.isChecked():
|
||||
self.keyframe_status.setText("关键帧: 等待中...")
|
||||
self.keyframe_status.setStyleSheet("color: orange;")
|
||||
else:
|
||||
self.keyframe_status.setText("关键帧: 不等待")
|
||||
self.keyframe_status.setStyleSheet("color: gray;")
|
||||
|
||||
self.status_bar.showMessage("预览已启动...")
|
||||
|
||||
def _stop_preview(self):
|
||||
"""停止预览"""
|
||||
if self.stream_thread:
|
||||
self.stream_thread.streaming = False
|
||||
self.stream_thread.wait(2000)
|
||||
|
||||
self.streaming = False
|
||||
self.preview_btn.setText("预览")
|
||||
self.record_btn.setEnabled(False)
|
||||
|
||||
# 停止录制
|
||||
if self.recording:
|
||||
self._stop_recording()
|
||||
|
||||
self.keyframe_status.setText("关键帧: 等待")
|
||||
self.keyframe_status.setStyleSheet("color: orange;")
|
||||
|
||||
# 清空画面
|
||||
self.video_label.clear()
|
||||
self.current_frame = None
|
||||
|
||||
self.status_bar.showMessage("预览已停止", 3000)
|
||||
|
||||
def _toggle_recording(self):
|
||||
"""切换录制"""
|
||||
if not self.recording:
|
||||
self._start_recording()
|
||||
else:
|
||||
self._stop_recording()
|
||||
|
||||
def _start_recording(self):
|
||||
"""开始录制"""
|
||||
if not self.streaming:
|
||||
QMessageBox.warning(self, "警告", "请先启动预览")
|
||||
return
|
||||
|
||||
# 更新录制目录
|
||||
self.record_path = Path(self.record_dir.text())
|
||||
self.record_path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
# 生成文件名
|
||||
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||
codec_name = self.codec_combo.currentText().replace(' ', '_')
|
||||
filename = self.record_path / f"rec_{self.device_id.text()}_{codec_name}_{timestamp}.mp4"
|
||||
|
||||
# 获取画面尺寸
|
||||
if self.current_frame is not None:
|
||||
height, width = self.current_frame.shape[:2]
|
||||
else:
|
||||
width, height = 640, 480
|
||||
|
||||
# 创建VideoWriter
|
||||
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
|
||||
self.video_writer = cv2.VideoWriter(str(filename), fourcc, 30.0, (width, height))
|
||||
|
||||
if self.video_writer.isOpened():
|
||||
self.recording = True
|
||||
self.record_btn.setText("停止")
|
||||
self.record_status.setText("● 录制中")
|
||||
self.record_status.setStyleSheet("color: red;")
|
||||
self.status_bar.showMessage(f"开始录制: {filename.name}", 3000)
|
||||
else:
|
||||
QMessageBox.critical(self, "错误", "无法创建视频文件")
|
||||
|
||||
def _stop_recording(self):
|
||||
"""停止录制"""
|
||||
if self.video_writer:
|
||||
self.video_writer.release()
|
||||
self.video_writer = None
|
||||
|
||||
self.recording = False
|
||||
self.record_btn.setText("录制")
|
||||
self.record_status.setText("录制: 未开始")
|
||||
self.record_status.setStyleSheet("color: gray;")
|
||||
self.status_bar.showMessage("录制已停止", 3000)
|
||||
|
||||
def _on_frame_received(self, frame, width, height):
|
||||
"""收到新帧"""
|
||||
self.current_frame = frame
|
||||
self.frame_width = width
|
||||
self.frame_height = height
|
||||
|
||||
# 录制
|
||||
if self.recording and self.video_writer:
|
||||
# 转换为BGR用于录制
|
||||
frame_bgr = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
|
||||
self.video_writer.write(frame_bgr)
|
||||
|
||||
def _update_display(self):
|
||||
"""更新显示"""
|
||||
if self.current_frame is not None:
|
||||
# 直接使用QImage,避免转换
|
||||
bytes_per_line = 3 * self.frame_width
|
||||
qimage = QImage(self.current_frame.data, self.frame_width,
|
||||
self.frame_height, bytes_per_line, QImage.Format_RGB888)
|
||||
|
||||
# 缩放以适应标签大小
|
||||
label_size = self.video_label.size()
|
||||
pixmap = QPixmap.fromImage(qimage).scaled(
|
||||
label_size, Qt.KeepAspectRatio, Qt.SmoothTransformation)
|
||||
|
||||
self.video_label.setPixmap(pixmap)
|
||||
|
||||
# 更新分辨率显示
|
||||
self.resolution_status.setText(f"分辨率: {self.frame_width}x{self.frame_height}")
|
||||
|
||||
def _on_status_update(self, stats):
|
||||
"""状态更新"""
|
||||
self.fps_status.setText(f"FPS: {stats['fps']}")
|
||||
self.frame_status.setText(f"帧数: {stats['frames']}")
|
||||
|
||||
def _on_keyframe_received(self):
|
||||
"""收到关键帧"""
|
||||
if self.wait_keyframe.isChecked():
|
||||
self.keyframe_status.setText("关键帧: 已接收")
|
||||
self.keyframe_status.setStyleSheet("color: green;")
|
||||
|
||||
def _on_error(self, msg):
|
||||
"""错误处理"""
|
||||
QMessageBox.critical(self, "错误", msg)
|
||||
self.status_bar.showMessage(f"错误: {msg}")
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""窗口关闭事件"""
|
||||
# 停止预览
|
||||
if self.streaming:
|
||||
self._stop_preview()
|
||||
|
||||
# 停止录制
|
||||
if self.recording:
|
||||
self._stop_recording()
|
||||
|
||||
# 断开连接
|
||||
if self.connected:
|
||||
self._disconnect()
|
||||
|
||||
event.accept()
|
||||
|
||||
|
||||
def main():
|
||||
app = QApplication(sys.argv)
|
||||
|
||||
# 设置应用样式
|
||||
app.setStyle('Fusion')
|
||||
|
||||
# 设置全局样式表
|
||||
app.setStyleSheet("""
|
||||
QGroupBox {
|
||||
font-weight: bold;
|
||||
border: 1px solid gray;
|
||||
border-radius: 5px;
|
||||
margin-top: 10px;
|
||||
padding-top: 10px;
|
||||
}
|
||||
QGroupBox::title {
|
||||
subcontrol-origin: margin;
|
||||
left: 10px;
|
||||
padding: 0 5px 0 5px;
|
||||
}
|
||||
QPushButton {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
QLineEdit {
|
||||
padding: 3px;
|
||||
}
|
||||
QComboBox {
|
||||
padding: 3px;
|
||||
}
|
||||
""")
|
||||
|
||||
window = CameraPlayerQt()
|
||||
window.show()
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("摄像头拉流播放器 (Qt版) 启动")
|
||||
print("=" * 60)
|
||||
print("支持编码:")
|
||||
print(" • H.265 (HEVC) - 高压缩率")
|
||||
print(" • H.264 (AVC) - 兼容性好")
|
||||
print("\n操作步骤:")
|
||||
print("1. 选择编码格式")
|
||||
print("2. 输入设备ID、服务器IP和端口")
|
||||
print("3. 点击【连接】按钮")
|
||||
print("4. 点击【预览】按钮开始观看")
|
||||
print("5. 点击【录制】按钮开始/停止录制")
|
||||
print("=" * 60 + "\n")
|
||||
|
||||
sys.exit(app.exec_())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -104,7 +104,7 @@ if __name__ == "__main__":
|
||||
# ]
|
||||
|
||||
# client.set_angles(hand_open, device_id="hand2")
|
||||
client.set_angles(hand_open, device_id="hand2")
|
||||
client.set_angles(hand_touch, device_id="hand2")
|
||||
# client.set_angles(handshake, device_id="hand1")
|
||||
|
||||
# Close client
|
||||
|
||||
66
clients/hlc_client.py
Normal file
66
clients/hlc_client.py
Normal file
@ -0,0 +1,66 @@
|
||||
from google.protobuf.timestamp_pb2 import Timestamp
|
||||
|
||||
from clients._path_setup import ensure_paths
|
||||
|
||||
ensure_paths()
|
||||
|
||||
from clients.base_client import RobotClientBase
|
||||
from cmvr.api import common_pb2
|
||||
from cmvr.api import hlc_command_pb2 as pb
|
||||
from cmvr.api import hlc_service_pb2_grpc as rpc
|
||||
|
||||
|
||||
class HlcClient(RobotClientBase):
|
||||
"""Client for calling cmvr.api.HlcService."""
|
||||
|
||||
def _init_stubs(self, channel):
|
||||
self.stub = rpc.HlcServiceStub(channel)
|
||||
|
||||
@staticmethod
|
||||
def _make_header(device_id: str):
|
||||
header = common_pb2.CommandHeader.Request()
|
||||
header.device_id = device_id
|
||||
timestamp = Timestamp()
|
||||
timestamp.GetCurrentTime()
|
||||
header.timestamp.CopyFrom(timestamp)
|
||||
return header
|
||||
|
||||
def touch(
|
||||
self,
|
||||
u: int,
|
||||
v: int,
|
||||
max_force: float,
|
||||
device_id="hc01",
|
||||
timeout=None,
|
||||
):
|
||||
request = pb.Touch.Request()
|
||||
request.header.CopyFrom(self._make_header(device_id))
|
||||
request.u = u
|
||||
request.v = v
|
||||
request.max_force = max_force
|
||||
|
||||
rpc_timeout = self.timeout if timeout is None else timeout
|
||||
response = self.stub.touch(request, timeout=rpc_timeout)
|
||||
return response
|
||||
|
||||
|
||||
def main():
|
||||
client = HlcClient()
|
||||
try:
|
||||
response = client.touch(
|
||||
u=12,
|
||||
v=34,
|
||||
max_force=10.0,
|
||||
device_id="hc01",
|
||||
)
|
||||
print("touch RPC call completed")
|
||||
print(f"success: {response.header.success}")
|
||||
print(f"error_message: {response.header.error_message}")
|
||||
print(f"timestamp: {response.header.timestamp.seconds}")
|
||||
return response
|
||||
finally:
|
||||
client.close()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@ -1,51 +0,0 @@
|
||||
R_SHOULDER_P,R_SHOULDER_R,R_SHOULDER_Y,R_ELBOW_R,R_WRIST_P,R_WRIST_Y,R_WRIST_R
|
||||
42.3871312049,94.4262521308,-69.8990748368,-35.2088867644,-16.7676098745,-5.0042133827,1.9505775177
|
||||
38.4358423623,74.7161029078,-69.9082421615,-35.1792075506,-16.7656045222,16.3947289414,-3.6198327581
|
||||
74.883406584,73.4828685496,-69.8867562442,-5.0052447067,-15.4131949426,15.065925223,14.4940560476
|
||||
61.7429060315,50.3894035464,-69.9068670628,-20.3281415008,-15.3997877302,35.9769366887,1.1899187489
|
||||
59.4242031304,67.0953058663,-69.8938609209,-21.9081872124,-15.423221704,19.7719713691,4.0812929663
|
||||
90.7017399835,66.3198647864,-69.8943765829,7.3872594442,-15.469745877,18.6678816978,20.4932679373
|
||||
43.3590395128,62.9293297379,-73.6622043394,-35.8108362239,-15.1957001636,20.2325721406,0
|
||||
40.5923409116,88.5308028978,-73.6077160531,-31.2608064855,-11.9376329573,-4.7227192179,-12.7598273933
|
||||
23.8609419698,84.6395600321,-73.65269324,-33.7536312605,-15.2801541426,-3.2523949241,-33.0631025258
|
||||
17.1967552631,63.8605007466,-76.6419286488,-33.6005942334,-26.570975045,1.7080444831,-40.4801557753
|
||||
112.3846401909,69.7356099778,-80.6124115775,39.6581332267,-8.4428768859,-0.4859828018,9.1025231955
|
||||
-5.7770761525,76.506481426,-80.5607307844,-61.0971825964,0.409550232,5.9197426435,-25.0002685454
|
||||
-8.8597036819,77.9207131517,-80.5670906159,-33.145436561,0.2532473454,5.9258159961,-61.5692425238
|
||||
-36.6110290806,76.1685509185,-80.3678158947,-72.2165745265,11.1447166646,-0.0391903132,-52.2577616205
|
||||
-35.3651323551,36.5073237197,-79.0065827651,-73.8037822106,52.7478124227,12.1613156805,-32.3100640957
|
||||
-5.3251270437,44.1961881472,-81.8030751716,-71.2213468364,52.7241492657,10.7124200082,-8.0924558984
|
||||
2.8886240199,76.6163747311,-84.1251585237,-69.7672372481,74.4535163503,7.928589969,-1.7550270223
|
||||
10.4090961515,84.9616196088,-84.1484779059,-60.456730373,-18.5233817419,-21.8610327859,0
|
||||
54.5989244672,82.6571833568,-84.1363312007,-15.5816445344,-18.5294550945,-10.4057729963,-7.731091417
|
||||
81.1793533158,80.2358637145,-84.1327788623,11.5328382751,-18.4099360985,-10.3396536667,-3.3667000042
|
||||
38.2612048264,74.9317069261,-84.1652082735,-34.3789573981,-32.3599687196,0,0
|
||||
45.9865093697,73.6787628197,-42.7689502796,-25.1068959911,21.0002209945,17.5849341693,12.4229855056
|
||||
22.7002440684,64.4069878916,-62.7950857265,-31.455039178,7.9418825899,33.6965073683,-22.0264457013
|
||||
-7.8064353671,69.4039247102,-64.5624886372,-46.9387079294,5.7706590252,20.9282574954,-42.2467565451
|
||||
-2.1254442368,74.2813998286,-71.1825002979,-13.416838097,-4.5865844458,22.1780503339,-61.8393921242
|
||||
5.4559906041,77.0098821448,-71.1713849167,-48.8421310206,0.1305770815,11.0492046002,-28.0768227221
|
||||
8.1414437899,69.7912441798,-109.3110080989,-62.2787361616,26.0631052554,-26.4386790901,-18.1101072843
|
||||
8.1236820983,39.0906758264,-91.0631617607,-54.527763109,26.2233042549,12.5954458019,-19.292806765
|
||||
11.0263435842,28.5577634954,-91.6200194418,-56.0312616592,24.2097586755,5.6390506197,0
|
||||
36.628332406,62.8089513052,-98.8949218623,-43.4181687572,24.2570276936,2.887306217,-1.8566697351
|
||||
24.7188316764,87.9824822878,-99.1789943371,-41.2523309958,-8.5307113159,-24.3634832519,-10.7646737591
|
||||
72.4000929083,79.991210736,-99.1548155182,0.9364995161,-8.3708560911,-10.9260186742,-2.1646918458
|
||||
23.3924916765,86.2120999966,-73.4446522646,-46.4581109308,6.0181194969,8.9699407617,-2.1167925741
|
||||
30.0970719078,53.0039818529,-97.8485290411,-46.4597152127,5.9310872079,8.2670934344,-8.9634663386
|
||||
29.1964395496,32.4169207245,-113.7501132082,-48.2284359262,0.5494665255,3.410932346,-18.0847825497
|
||||
47.142795496,53.1601701478,-116.6299136781,-33.5294328753,-21.6354593019,-0.8102196181,-14.3094490461
|
||||
52.5930565222,86.0146587404,-67.4882403222,-27.2043225917,-5.4967279034,-0.6699022541,-2.348095636
|
||||
5.689127131,79.3010830718,-87.5470343635,-64.8126993063,-6.6456228742,-13.3742673328,-10.9887575528
|
||||
-36.490879831,85.2079914607,-76.8147327198,-59.0912000599,3.7261737249,-13.9641273829,-40.7579257144
|
||||
-43.7821688445,66.2628554858,-75.3971778389,-55.7114939138,2.5531572309,-13.9655024816,-48.4137304772
|
||||
-18.0355654751,62.0254315203,-77.0001418623,-56.2921293434,-15.9961794991,-23.3165747686,-20.1152876799
|
||||
-25.9848392206,67.5677668642,-69.5084322121,-71.3935206538,20.9554156949,11.0399799797,-15.5277865016
|
||||
-34.3248128865,59.3506353495,-64.9300983585,-78.7725868015,26.2126472399,7.4840320158,-12.2919500578
|
||||
-26.2237053253,93.5622317757,-72.0755123174,-77.1128999564,26.2140796344,12.1362201291,-17.8720433204
|
||||
43.6226573943,57.1218295265,-87.7357093655,-23.230974874,23.3228773044,17.0774654501,-0.0433729051
|
||||
20.543000674,69.8960954563,-85.5268997694,-25.9198658066,77.8772256551,22.5696096911,-8.9078321367
|
||||
-0.940166446,22.5041779109,-94.648101389,-58.6892701666,70.7468231905,20.9154232408,-8.9639247048
|
||||
0.1180293058,33.0162345782,-92.8632805614,-67.671758704,61.8440903782,13.0295759233,0
|
||||
41.6477291703,62.5570217627,-96.0662292278,-22.0864916783,52.5155926283,11.0115039773,-3.3080864217
|
||||
-9.3205909323,58.9835412902,-86.0922372259,-65.5880830905,52.532036517,11.5678459964,-14.0276111066
|
||||
|
@ -1,54 +0,0 @@
|
||||
from clients._path_setup import ensure_paths
|
||||
|
||||
ensure_paths()
|
||||
|
||||
from google.protobuf import timestamp_pb2
|
||||
|
||||
from clients.base_client import RobotClientBase
|
||||
from cmvr.api import hlc_command_pb2 as pb
|
||||
|
||||
|
||||
class TouchClient(RobotClientBase):
|
||||
"""Client to send Touch commands"""
|
||||
|
||||
def send(self, u: int, v: int, max_force: int, device_id="hc01"):
|
||||
"""
|
||||
u, v: target coordinates
|
||||
max_force: maximum touch force
|
||||
device_id: device ID
|
||||
"""
|
||||
# Construct request
|
||||
req = pb.Touch.Request()
|
||||
req.header.device_id = device_id
|
||||
ts = timestamp_pb2.Timestamp()
|
||||
ts.GetCurrentTime()
|
||||
req.header.timestamp.CopyFrom(ts)
|
||||
|
||||
req.u = u
|
||||
req.v = v
|
||||
req.max_force = max_force
|
||||
|
||||
# Call RPC
|
||||
try:
|
||||
resp = self.stub.touch(req, timeout=self.timeout)
|
||||
success = getattr(resp.header, "success", None)
|
||||
error_msg = getattr(resp.header, "error_message", "")
|
||||
timestamp_sec = getattr(resp.header.timestamp, "seconds", 0)
|
||||
|
||||
print("Touch RPC call succeeded")
|
||||
print(f"Success: {success}")
|
||||
print(f"Error message: {error_msg}")
|
||||
print(f"Timestamp: {timestamp_sec}")
|
||||
except Exception as e:
|
||||
print("Touch RPC call failed:", e)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Initialize client
|
||||
client = TouchClient()
|
||||
|
||||
# Send Touch command
|
||||
client.send(u=12, v=13, max_force=1300, device_id="hc01")
|
||||
|
||||
# Close client
|
||||
client.close()
|
||||
Binary file not shown.
Binary file not shown.
BIN
generated/cmvr/api/__pycache__/camera_command_pb2.cpython-39.pyc
Normal file
BIN
generated/cmvr/api/__pycache__/camera_command_pb2.cpython-39.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
|
||||
from cmvr.api import biohead_command_pb2 as cmvr_dot_api_dot_biohead__command__pb2
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63mvr/api/biohead_service.proto\x12\x08\x63mvr.api\x1a\x1e\x63mvr/api/biohead_command.proto2\x85\x03\n\x0e\x42ioHeadService\x12`\n\rSetExpression\x12%.cmvr.api.SetFacialExpression.Request\x1a&.cmvr.api.SetFacialExpression.Feedback\"\x00\x12k\n\x10StreamExpression\x12(.cmvr.api.StreamFacialExpression.Request\x1a).cmvr.api.StreamFacialExpression.Feedback(\x01\x30\x01\x12N\n\x0fGetSystemStatus\x12\x1b.cmvr.api.GetStatus.Request\x1a\x1c.cmvr.api.GetStatus.Feedback\"\x00\x12T\n\rEmergencyStop\x12\x1f.cmvr.api.EmergencyStop.Request\x1a .cmvr.api.EmergencyStop.Feedback\"\x00\x62\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1e\x63mvr/api/biohead_service.proto\x12\x08\x63mvr.api\x1a\x1e\x63mvr/api/biohead_command.proto2\x94\x08\n\x0e\x42ioHeadService\x12`\n\rSetExpression\x12%.cmvr.api.SetFacialExpression.Request\x1a&.cmvr.api.SetFacialExpression.Feedback\"\x00\x12k\n\x10StreamExpression\x12(.cmvr.api.StreamFacialExpression.Request\x1a).cmvr.api.StreamFacialExpression.Feedback(\x01\x30\x01\x12N\n\x0fGetSystemStatus\x12\x1b.cmvr.api.GetStatus.Request\x1a\x1c.cmvr.api.GetStatus.Feedback\"\x00\x12T\n\rEmergencyStop\x12\x1f.cmvr.api.EmergencyStop.Request\x1a .cmvr.api.EmergencyStop.Feedback\"\x00\x12K\n\nSpeakStart\x12\x1c.cmvr.api.SpeakStart.Request\x1a\x1d.cmvr.api.SpeakStart.Feedback\"\x00\x12H\n\tSpeakStop\x12\x1b.cmvr.api.SpeakStop.Request\x1a\x1c.cmvr.api.SpeakStop.Feedback\"\x00\x12<\n\x05Happy\x12\x17.cmvr.api.Happy.Request\x1a\x18.cmvr.api.Happy.Feedback\"\x00\x12\x45\n\x08Surprise\x12\x1a.cmvr.api.Surprise.Request\x1a\x1b.cmvr.api.Surprise.Feedback\"\x00\x12Z\n\x0f\x45xpressionTired\x12!.cmvr.api.ExpressionTired.Request\x1a\".cmvr.api.ExpressionTired.Feedback\"\x00\x12Z\n\x0f\x45xpressionAngry\x12!.cmvr.api.ExpressionAngry.Request\x1a\".cmvr.api.ExpressionAngry.Feedback\"\x00\x12`\n\x11\x45xpressionSadness\x12#.cmvr.api.ExpressionSadness.Request\x1a$.cmvr.api.ExpressionSadness.Feedback\"\x00\x12W\n\x0e\x45xpressionYawn\x12 .cmvr.api.ExpressionYawn.Request\x1a!.cmvr.api.ExpressionYawn.Feedback\"\x00\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
@ -33,5 +33,5 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.api.biohead_service_pb
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_BIOHEADSERVICE']._serialized_start=77
|
||||
_globals['_BIOHEADSERVICE']._serialized_end=466
|
||||
_globals['_BIOHEADSERVICE']._serialized_end=1121
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@ -55,6 +55,46 @@ class BioHeadServiceStub(object):
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.EmergencyStop.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.EmergencyStop.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.SpeakStart = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/SpeakStart',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.SpeakStop = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/SpeakStop',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.Happy = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/Happy',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.Happy.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.Happy.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.Surprise = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/Surprise',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.Surprise.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.Surprise.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.ExpressionTired = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/ExpressionTired',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.ExpressionAngry = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/ExpressionAngry',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.ExpressionSadness = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/ExpressionSadness',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.ExpressionYawn = channel.unary_unary(
|
||||
'/cmvr.api.BioHeadService/ExpressionYawn',
|
||||
request_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class BioHeadServiceServicer(object):
|
||||
@ -91,6 +131,56 @@ class BioHeadServiceServicer(object):
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SpeakStart(self, request, context):
|
||||
"""开始说话
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SpeakStop(self, request, context):
|
||||
"""停止说话
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def Happy(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def Surprise(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ExpressionTired(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ExpressionAngry(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ExpressionSadness(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ExpressionYawn(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_BioHeadServiceServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
@ -114,6 +204,46 @@ def add_BioHeadServiceServicer_to_server(servicer, server):
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.EmergencyStop.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.EmergencyStop.Feedback.SerializeToString,
|
||||
),
|
||||
'SpeakStart': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.SpeakStart,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Feedback.SerializeToString,
|
||||
),
|
||||
'SpeakStop': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.SpeakStop,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Feedback.SerializeToString,
|
||||
),
|
||||
'Happy': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.Happy,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.Happy.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.Happy.Feedback.SerializeToString,
|
||||
),
|
||||
'Surprise': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.Surprise,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.Surprise.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.Surprise.Feedback.SerializeToString,
|
||||
),
|
||||
'ExpressionTired': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ExpressionTired,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Feedback.SerializeToString,
|
||||
),
|
||||
'ExpressionAngry': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ExpressionAngry,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Feedback.SerializeToString,
|
||||
),
|
||||
'ExpressionSadness': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ExpressionSadness,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Feedback.SerializeToString,
|
||||
),
|
||||
'ExpressionYawn': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ExpressionYawn,
|
||||
request_deserializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Feedback.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'cmvr.api.BioHeadService', rpc_method_handlers)
|
||||
@ -233,3 +363,219 @@ class BioHeadService(object):
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SpeakStart(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/SpeakStart',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.SpeakStart.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SpeakStop(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/SpeakStop',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.SpeakStop.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def Happy(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/Happy',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.Happy.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.Happy.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def Surprise(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/Surprise',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.Surprise.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.Surprise.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ExpressionTired(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/ExpressionTired',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionTired.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ExpressionAngry(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/ExpressionAngry',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionAngry.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ExpressionSadness(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/ExpressionSadness',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionSadness.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ExpressionYawn(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.BioHeadService/ExpressionYawn',
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_biohead__command__pb2.ExpressionYawn.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -26,7 +26,7 @@ from cmvr.api import common_pb2 as cmvr_dot_api_dot_common__pb2
|
||||
from cmvr.api import humanoid_robot_command_pb2 as cmvr_dot_api_dot_humanoid__robot__command__pb2
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%cmvr/api/humanoid_robot_service.proto\x12\x08\x63mvr.api\x1a\x15\x63mvr/api/common.proto\x1a%cmvr/api/humanoid_robot_command.proto2\xc5\x05\n\x14HumanoidRobotService\x12N\n\ttorqueOff\x12\x1f.cmvr.api.CommandHeader.Request\x1a .cmvr.api.CommandHeader.Feedback\x12M\n\x08torqueOn\x12\x1f.cmvr.api.CommandHeader.Request\x1a .cmvr.api.CommandHeader.Feedback\x12:\n\x05moveJ\x12\x17.cmvr.api.MoveJ.Request\x1a\x18.cmvr.api.MoveJ.Response\x12:\n\x05moveL\x12\x17.cmvr.api.MoveL.Request\x1a\x18.cmvr.api.MoveL.Response\x12=\n\x06speedJ\x12\x18.cmvr.api.SpeedJ.Request\x1a\x19.cmvr.api.SpeedJ.Response\x12=\n\x06speedL\x12\x18.cmvr.api.SpeedL.Request\x1a\x19.cmvr.api.SpeedL.Response\x12@\n\rgetJointState\x12\x16.cmvr.api.JointRequest\x1a\x17.cmvr.api.JointResponse\x12@\n\x07getPose\x12\x19.cmvr.api.GetPose.Request\x1a\x1a.cmvr.api.GetPose.Response\x12U\n\x0e\x63\x61librateZeroQ\x12 .cmvr.api.CalibrateZeroQ.Request\x1a!.cmvr.api.CalibrateZeroQ.Response\x12=\n\x06servoJ\x12\x18.cmvr.api.ServoJ.Request\x1a\x19.cmvr.api.ServoJ.Responseb\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%cmvr/api/humanoid_robot_service.proto\x12\x08\x63mvr.api\x1a\x15\x63mvr/api/common.proto\x1a%cmvr/api/humanoid_robot_command.proto2\x8e\x07\n\x14HumanoidRobotService\x12N\n\ttorqueOff\x12\x1f.cmvr.api.CommandHeader.Request\x1a .cmvr.api.CommandHeader.Feedback\x12M\n\x08torqueOn\x12\x1f.cmvr.api.CommandHeader.Request\x1a .cmvr.api.CommandHeader.Feedback\x12:\n\x05moveJ\x12\x17.cmvr.api.MoveJ.Request\x1a\x18.cmvr.api.MoveJ.Response\x12:\n\x05moveL\x12\x17.cmvr.api.MoveL.Request\x1a\x18.cmvr.api.MoveL.Response\x12=\n\x06speedJ\x12\x18.cmvr.api.SpeedJ.Request\x1a\x19.cmvr.api.SpeedJ.Response\x12=\n\x06speedL\x12\x18.cmvr.api.SpeedL.Request\x1a\x19.cmvr.api.SpeedL.Response\x12@\n\rgetJointState\x12\x16.cmvr.api.JointRequest\x1a\x17.cmvr.api.JointResponse\x12@\n\x07getPose\x12\x19.cmvr.api.GetPose.Request\x1a\x1a.cmvr.api.GetPose.Response\x12U\n\x0e\x63\x61librateZeroQ\x12 .cmvr.api.CalibrateZeroQ.Request\x1a!.cmvr.api.CalibrateZeroQ.Response\x12=\n\x06servoJ\x12\x18.cmvr.api.ServoJ.Request\x1a\x19.cmvr.api.ServoJ.Response\x12R\n\rgetPoseMatrix\x12\x1f.cmvr.api.GetPoseMatrix.Request\x1a .cmvr.api.GetPoseMatrix.Response\x12s\n\x18\x63omputeForwardKinematics\x12*.cmvr.api.ComputeForwardKinematics.Request\x1a+.cmvr.api.ComputeForwardKinematics.Responseb\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
@ -34,5 +34,5 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.api.humanoid_robot_ser
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_HUMANOIDROBOTSERVICE']._serialized_start=114
|
||||
_globals['_HUMANOIDROBOTSERVICE']._serialized_end=823
|
||||
_globals['_HUMANOIDROBOTSERVICE']._serialized_end=1024
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@ -85,6 +85,16 @@ class HumanoidRobotServiceStub(object):
|
||||
request_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ServoJ.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ServoJ.Response.FromString,
|
||||
_registered_method=True)
|
||||
self.getPoseMatrix = channel.unary_unary(
|
||||
'/cmvr.api.HumanoidRobotService/getPoseMatrix',
|
||||
request_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Response.FromString,
|
||||
_registered_method=True)
|
||||
self.computeForwardKinematics = channel.unary_unary(
|
||||
'/cmvr.api.HumanoidRobotService/computeForwardKinematics',
|
||||
request_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Response.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class HumanoidRobotServiceServicer(object):
|
||||
@ -150,6 +160,18 @@ class HumanoidRobotServiceServicer(object):
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def getPoseMatrix(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def computeForwardKinematics(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_HumanoidRobotServiceServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
@ -203,6 +225,16 @@ def add_HumanoidRobotServiceServicer_to_server(servicer, server):
|
||||
request_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ServoJ.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ServoJ.Response.SerializeToString,
|
||||
),
|
||||
'getPoseMatrix': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.getPoseMatrix,
|
||||
request_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Response.SerializeToString,
|
||||
),
|
||||
'computeForwardKinematics': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.computeForwardKinematics,
|
||||
request_deserializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Response.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'cmvr.api.HumanoidRobotService', rpc_method_handlers)
|
||||
@ -483,3 +515,57 @@ class HumanoidRobotService(object):
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def getPoseMatrix(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.HumanoidRobotService/getPoseMatrix',
|
||||
cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_humanoid__robot__command__pb2.GetPoseMatrix.Response.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def computeForwardKinematics(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.HumanoidRobotService/computeForwardKinematics',
|
||||
cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_humanoid__robot__command__pb2.ComputeForwardKinematics.Response.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@ -25,15 +25,15 @@ _sym_db = _symbol_database.Default()
|
||||
from cmvr.api import common_pb2 as cmvr_dot_api_dot_common__pb2
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63mvr/api/system_command.proto\x12\x08\x63mvr.api\x1a\x15\x63mvr/api/common.proto\"J\n\nDeviceList\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12)\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0e\x32\x14.cmvr.api.DeviceType\"\xd5\x01\n\x14GetSystemInfoCommand\x1a\t\n\x07Request\x1a\xb1\x01\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback\x12\x13\n\x0bsystem_name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\n\n\x02os\x18\x05 \x01(\t\x12\x16\n\x0ekernel_version\x18\x06 \x01(\t\x12\x14\n\x0c\x61rchitecture\x18\x07 \x01(\t\"\xf8\x01\n\x16GetSystemStatusCommand\x1a\t\n\x07Request\x1a\xd2\x01\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback\x12\x11\n\tcpu_usage\x18\x02 \x01(\x02\x12\x14\n\x0cmem_total_mb\x18\x03 \x01(\x02\x12\x13\n\x0bmem_used_mb\x18\x04 \x01(\x02\x12\x15\n\rdisk_total_gb\x18\x05 \x01(\x02\x12\x14\n\x0c\x64isk_used_gb\x18\x06 \x01(\x02\x12)\n\x0b\x64\x65vice_list\x18\x07 \x03(\x0b\x32\x14.cmvr.api.DeviceList\"\xb6\x01\n\x13UpdateParamsCommand\x1a\x61\n\x07Request\x12/\n\x06header\x18\x01 \x01(\x0b\x32\x1f.cmvr.api.CommandHeader.Request\x12%\n\x06params\x18\x02 \x03(\x0b\x32\x15.cmvr.api.ConfigParam\x1a<\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback*}\n\nDeviceType\x12\x07\n\x03\x41GV\x10\x00\x12\x0b\n\x07\x42\x61ttery\x10\x01\x12\n\n\x06\x43\x61mera\x10\x02\x12\x0b\n\x07\x44\x65xHand\x10\x03\x12\x0b\n\x07Gripper\x10\x04\x12\x0e\n\nMicrophone\x10\x05\x12\t\n\x05Robot\x10\x06\x12\x0b\n\x07Speaker\x10\x07\x12\x0b\n\x07Unknown\x10\x14\x62\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63mvr/api/system_command.proto\x12\x08\x63mvr.api\x1a\x15\x63mvr/api/common.proto\"J\n\nDeviceList\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12)\n\x0b\x64\x65vice_type\x18\x02 \x01(\x0e\x32\x14.cmvr.api.DeviceType\"\xd5\x01\n\x14GetSystemInfoCommand\x1a\t\n\x07Request\x1a\xb1\x01\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback\x12\x13\n\x0bsystem_name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12\n\n\x02os\x18\x05 \x01(\t\x12\x16\n\x0ekernel_version\x18\x06 \x01(\t\x12\x14\n\x0c\x61rchitecture\x18\x07 \x01(\t\"\xf8\x01\n\x16GetSystemStatusCommand\x1a\t\n\x07Request\x1a\xd2\x01\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback\x12\x11\n\tcpu_usage\x18\x02 \x01(\x02\x12\x14\n\x0cmem_total_mb\x18\x03 \x01(\x02\x12\x13\n\x0bmem_used_mb\x18\x04 \x01(\x02\x12\x15\n\rdisk_total_gb\x18\x05 \x01(\x02\x12\x14\n\x0c\x64isk_used_gb\x18\x06 \x01(\x02\x12)\n\x0b\x64\x65vice_list\x18\x07 \x03(\x0b\x32\x14.cmvr.api.DeviceList\"\xb6\x01\n\x13UpdateParamsCommand\x1a\x61\n\x07Request\x12/\n\x06header\x18\x01 \x01(\x0b\x32\x1f.cmvr.api.CommandHeader.Request\x12%\n\x06params\x18\x02 \x03(\x0b\x32\x15.cmvr.api.ConfigParam\x1a<\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback\"\x8a\x01\n\x0eStopAllCommand\x1a:\n\x07Request\x12/\n\x06header\x18\x01 \x01(\x0b\x32\x1f.cmvr.api.CommandHeader.Request\x1a<\n\x08\x46\x65\x65\x64\x62\x61\x63k\x12\x30\n\x06header\x18\x01 \x01(\x0b\x32 .cmvr.api.CommandHeader.Feedback*}\n\nDeviceType\x12\x07\n\x03\x41GV\x10\x00\x12\x0b\n\x07\x42\x61ttery\x10\x01\x12\n\n\x06\x43\x61mera\x10\x02\x12\x0b\n\x07\x44\x65xHand\x10\x03\x12\x0b\n\x07Gripper\x10\x04\x12\x0e\n\nMicrophone\x10\x05\x12\t\n\x05Robot\x10\x06\x12\x0b\n\x07Speaker\x10\x07\x12\x0b\n\x07Unknown\x10\x14\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.api.system_command_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_DEVICETYPE']._serialized_start=794
|
||||
_globals['_DEVICETYPE']._serialized_end=919
|
||||
_globals['_DEVICETYPE']._serialized_start=935
|
||||
_globals['_DEVICETYPE']._serialized_end=1060
|
||||
_globals['_DEVICELIST']._serialized_start=66
|
||||
_globals['_DEVICELIST']._serialized_end=140
|
||||
_globals['_GETSYSTEMINFOCOMMAND']._serialized_start=143
|
||||
@ -54,4 +54,10 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
||||
_globals['_UPDATEPARAMSCOMMAND_REQUEST']._serialized_end=730
|
||||
_globals['_UPDATEPARAMSCOMMAND_FEEDBACK']._serialized_start=179
|
||||
_globals['_UPDATEPARAMSCOMMAND_FEEDBACK']._serialized_end=239
|
||||
_globals['_STOPALLCOMMAND']._serialized_start=795
|
||||
_globals['_STOPALLCOMMAND']._serialized_end=933
|
||||
_globals['_STOPALLCOMMAND_REQUEST']._serialized_start=633
|
||||
_globals['_STOPALLCOMMAND_REQUEST']._serialized_end=691
|
||||
_globals['_STOPALLCOMMAND_FEEDBACK']._serialized_start=179
|
||||
_globals['_STOPALLCOMMAND_FEEDBACK']._serialized_end=239
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@ -25,7 +25,7 @@ _sym_db = _symbol_database.Default()
|
||||
from cmvr.api import system_command_pb2 as cmvr_dot_api_dot_system__command__pb2
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63mvr/api/system_service.proto\x12\x08\x63mvr.api\x1a\x1d\x63mvr/api/system_command.proto2\xbe\x02\n\rSystemService\x12\x62\n\rGetSystemInfo\x12&.cmvr.api.GetSystemInfoCommand.Request\x1a\'.cmvr.api.GetSystemInfoCommand.Feedback\"\x00\x12h\n\x0fGetSystemStatus\x12(.cmvr.api.GetSystemStatusCommand.Request\x1a).cmvr.api.GetSystemStatusCommand.Feedback\"\x00\x12_\n\x0cUpdateParams\x12%.cmvr.api.UpdateParamsCommand.Request\x1a&.cmvr.api.UpdateParamsCommand.Feedback\"\x00\x62\x06proto3')
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1d\x63mvr/api/system_service.proto\x12\x08\x63mvr.api\x1a\x1d\x63mvr/api/system_command.proto2\x90\x03\n\rSystemService\x12\x62\n\rGetSystemInfo\x12&.cmvr.api.GetSystemInfoCommand.Request\x1a\'.cmvr.api.GetSystemInfoCommand.Feedback\"\x00\x12h\n\x0fGetSystemStatus\x12(.cmvr.api.GetSystemStatusCommand.Request\x1a).cmvr.api.GetSystemStatusCommand.Feedback\"\x00\x12_\n\x0cUpdateParams\x12%.cmvr.api.UpdateParamsCommand.Request\x1a&.cmvr.api.UpdateParamsCommand.Feedback\"\x00\x12P\n\x07StopAll\x12 .cmvr.api.StopAllCommand.Request\x1a!.cmvr.api.StopAllCommand.Feedback\"\x00\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
@ -33,5 +33,5 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.api.system_service_pb2
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_SYSTEMSERVICE']._serialized_start=75
|
||||
_globals['_SYSTEMSERVICE']._serialized_end=393
|
||||
_globals['_SYSTEMSERVICE']._serialized_end=475
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
|
||||
@ -49,6 +49,11 @@ class SystemServiceStub(object):
|
||||
request_serializer=cmvr_dot_api_dot_system__command__pb2.UpdateParamsCommand.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_system__command__pb2.UpdateParamsCommand.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
self.StopAll = channel.unary_unary(
|
||||
'/cmvr.api.SystemService/StopAll',
|
||||
request_serializer=cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Request.SerializeToString,
|
||||
response_deserializer=cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Feedback.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class SystemServiceServicer(object):
|
||||
@ -72,6 +77,12 @@ class SystemServiceServicer(object):
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def StopAll(self, request, context):
|
||||
"""Missing associated documentation comment in .proto file."""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_SystemServiceServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
@ -90,6 +101,11 @@ def add_SystemServiceServicer_to_server(servicer, server):
|
||||
request_deserializer=cmvr_dot_api_dot_system__command__pb2.UpdateParamsCommand.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_system__command__pb2.UpdateParamsCommand.Feedback.SerializeToString,
|
||||
),
|
||||
'StopAll': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.StopAll,
|
||||
request_deserializer=cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Request.FromString,
|
||||
response_serializer=cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Feedback.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'cmvr.api.SystemService', rpc_method_handlers)
|
||||
@ -181,3 +197,30 @@ class SystemService(object):
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def StopAll(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/cmvr.api.SystemService/StopAll',
|
||||
cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Request.SerializeToString,
|
||||
cmvr_dot_api_dot_system__command__pb2.StopAllCommand.Feedback.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
0
generated/cmvr/config/__init__.py
Normal file
0
generated/cmvr/config/__init__.py
Normal file
0
generated/cmvr/config/camera_config/__init__.py
Normal file
0
generated/cmvr/config/camera_config/__init__.py
Normal file
46
generated/cmvr/config/camera_config/camera_config_pb2.py
Normal file
46
generated/cmvr/config/camera_config/camera_config_pb2.py
Normal file
@ -0,0 +1,46 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/camera_config/camera_config.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/camera_config/camera_config.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n-cmvr/config/camera_config/camera_config.proto\x12\x0b\x63mvr.config\"\xdc\x02\n\x15RealSenseCameraConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x14\n\x0cserialNumber\x18\x02 \x01(\t\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\x12\x0b\n\x03\x66ps\x18\x05 \x01(\x05\x12\r\n\x05\x63odec\x18\x06 \x01(\t\x12,\n\x0b\x63\x61mera_mode\x18\x07 \x01(\x0e\x32\x17.cmvr.config.CameraMode\x12,\n\x0bstream_mode\x18\x08 \x01(\x0e\x32\x17.cmvr.config.StreamMode\x12*\n\nalign_mode\x18\t \x01(\x0e\x32\x16.cmvr.config.AlignMode\x12\x13\n\x0b\x62uffer_size\x18\n \x01(\x05\x12\x0c\n\x04sync\x18\x0b \x01(\x08\x12\x0e\n\x06\x65nable\x18\x0c \x01(\x08\x12\x14\n\x0c\x65ncode_width\x18\r \x01(\x05\x12\x15\n\rencode_height\x18\x0e \x01(\x05\"\x93\x02\n\x0fUVCCameraConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0b\n\x03usb\x18\x02 \x01(\t\x12\r\n\x05width\x18\x03 \x01(\x05\x12\x0e\n\x06height\x18\x04 \x01(\x05\x12\x0b\n\x03\x66ps\x18\x05 \x01(\x05\x12\r\n\x05\x63odec\x18\x06 \x01(\t\x12,\n\x0b\x63\x61mera_mode\x18\x07 \x01(\x0e\x32\x17.cmvr.config.CameraMode\x12,\n\x0bstream_mode\x18\x08 \x01(\x0e\x32\x17.cmvr.config.StreamMode\x12\x13\n\x0b\x62uffer_size\x18\t \x01(\x05\x12\x0e\n\x06\x65nable\x18\n \x01(\x08\x12\x14\n\x0c\x65ncode_width\x18\x0b \x01(\x05\x12\x15\n\rencode_height\x18\x0c \x01(\x05\"\x80\x01\n\x0c\x43\x61meraConfig\x12\x31\n\x0buvc_cameras\x18\x01 \x03(\x0b\x32\x1c.cmvr.config.UVCCameraConfig\x12=\n\x11realsense_cameras\x18\x02 \x03(\x0b\x32\".cmvr.config.RealSenseCameraConfig*:\n\nCameraMode\x12\x15\n\x11\x43\x41MERA_MODE_PHOTO\x10\x00\x12\x15\n\x11\x43\x41MERA_MODE_VIDEO\x10\x01*N\n\nStreamMode\x12\x13\n\x0fSTREAM_MODE_RGB\x10\x00\x12\x14\n\x10STREAM_MODE_RGBD\x10\x01\x12\x15\n\x11STREAM_MODE_DEPTH\x10\x02*7\n\tAlignMode\x12\x14\n\x10\x41LIGN_MODE_COLOR\x10\x00\x12\x14\n\x10\x41LIGN_MODE_DEPTH\x10\x01\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.camera_config.camera_config_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_CAMERAMODE']._serialized_start=822
|
||||
_globals['_CAMERAMODE']._serialized_end=880
|
||||
_globals['_STREAMMODE']._serialized_start=882
|
||||
_globals['_STREAMMODE']._serialized_end=960
|
||||
_globals['_ALIGNMODE']._serialized_start=962
|
||||
_globals['_ALIGNMODE']._serialized_end=1017
|
||||
_globals['_REALSENSECAMERACONFIG']._serialized_start=63
|
||||
_globals['_REALSENSECAMERACONFIG']._serialized_end=411
|
||||
_globals['_UVCCAMERACONFIG']._serialized_start=414
|
||||
_globals['_UVCCAMERACONFIG']._serialized_end=689
|
||||
_globals['_CAMERACONFIG']._serialized_start=692
|
||||
_globals['_CAMERACONFIG']._serialized_end=820
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/camera_config/camera_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
0
generated/cmvr/config/dexhand_config/__init__.py
Normal file
0
generated/cmvr/config/dexhand_config/__init__.py
Normal file
38
generated/cmvr/config/dexhand_config/dexhand_config_pb2.py
Normal file
38
generated/cmvr/config/dexhand_config/dexhand_config_pb2.py
Normal file
@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/dexhand_config/dexhand_config.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/dexhand_config/dexhand_config.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/cmvr/config/dexhand_config/dexhand_config.proto\x12\x0b\x63mvr.config\"M\n\x15RH56DFTPDexHandConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\n\n\x02ip\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\x05\x12\x0e\n\x06\x65nable\x18\x04 \x01(\x08\"N\n\rDexHandConfig\x12=\n\x11rh56dftp_dexhands\x18\x01 \x03(\x0b\x32\".cmvr.config.RH56DFTPDexHandConfigb\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.dexhand_config.dexhand_config_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_RH56DFTPDEXHANDCONFIG']._serialized_start=64
|
||||
_globals['_RH56DFTPDEXHANDCONFIG']._serialized_end=141
|
||||
_globals['_DEXHANDCONFIG']._serialized_start=143
|
||||
_globals['_DEXHANDCONFIG']._serialized_end=221
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/dexhand_config/dexhand_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
0
generated/cmvr/config/microphone_config/__init__.py
Normal file
0
generated/cmvr/config/microphone_config/__init__.py
Normal file
@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/microphone_config/microphone_config.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/microphone_config/microphone_config.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n5cmvr/config/microphone_config/microphone_config.proto\x12\x0b\x63mvr.config\"\x80\x01\n\x16\x46\x46MpegMicroPhoneConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x10\n\x08\x63hannels\x18\x02 \x01(\x05\x12\x12\n\nsampleRate\x18\x03 \x01(\x05\x12\x0e\n\x06volume\x18\x04 \x01(\x05\x12\x0e\n\x06\x65nable\x18\x05 \x01(\x08\x12\x14\n\x0cinput_device\x18\x06 \x01(\t\"S\n\x10MicroPhoneConfig\x12?\n\x12\x66\x66mpeg_microphones\x18\x01 \x03(\x0b\x32#.cmvr.config.FFMpegMicroPhoneConfigb\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.microphone_config.microphone_config_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_FFMPEGMICROPHONECONFIG']._serialized_start=71
|
||||
_globals['_FFMPEGMICROPHONECONFIG']._serialized_end=199
|
||||
_globals['_MICROPHONECONFIG']._serialized_start=201
|
||||
_globals['_MICROPHONECONFIG']._serialized_end=284
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/microphone_config/microphone_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
34
generated/cmvr/config/pinocchio_dls_ik_config_pb2.py
Normal file
34
generated/cmvr/config/pinocchio_dls_ik_config_pb2.py
Normal file
@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/pinocchio_dls_ik_config.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/pinocchio_dls_ik_config.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n)cmvr/config/pinocchio_dls_ik_config.proto')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.pinocchio_dls_ik_config_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
24
generated/cmvr/config/pinocchio_dls_ik_config_pb2_grpc.py
Normal file
24
generated/cmvr/config/pinocchio_dls_ik_config_pb2_grpc.py
Normal file
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/pinocchio_dls_ik_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
36
generated/cmvr/config/pinocchio_qp_ik_solver_config_pb2.py
Normal file
36
generated/cmvr/config/pinocchio_qp_ik_solver_config_pb2.py
Normal file
@ -0,0 +1,36 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/pinocchio_qp_ik_solver_config.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/pinocchio_qp_ik_solver_config.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/cmvr/config/pinocchio_qp_ik_solver_config.proto\x12\x0b\x63mvr.config\"\xcd\x01\n\x13PinocchioQpIKConfig\x12\x11\n\turdf_path\x18\x01 \x01(\t\x12\x17\n\x0f\x62\x61se_frame_name\x18\x02 \x01(\t\x12\x19\n\x11\x66lange_frame_name\x18\x03 \x01(\t\x12\x16\n\x0etcp_frame_name\x18\x04 \x01(\t\x12\x0e\n\x06lambda\x18\x05 \x01(\x01\x12\x10\n\x08w_posrot\x18\x06 \x01(\x01\x12\x11\n\tmax_iters\x18\x07 \x01(\x05\x12\x0b\n\x03tol\x18\x08 \x01(\x01\x12\x15\n\rqp_time_limit\x18\t \x01(\x01\x62\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.pinocchio_qp_ik_solver_config_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_PINOCCHIOQPIKCONFIG']._serialized_start=65
|
||||
_globals['_PINOCCHIOQPIKCONFIG']._serialized_end=270
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/pinocchio_qp_ik_solver_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
0
generated/cmvr/config/speaker_config/__init__.py
Normal file
0
generated/cmvr/config/speaker_config/__init__.py
Normal file
38
generated/cmvr/config/speaker_config/speaker_conifg_pb2.py
Normal file
38
generated/cmvr/config/speaker_config/speaker_conifg_pb2.py
Normal file
@ -0,0 +1,38 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
||||
# NO CHECKED-IN PROTOBUF GENCODE
|
||||
# source: cmvr/config/speaker_config/speaker_conifg.proto
|
||||
# Protobuf Python Version: 6.31.1
|
||||
"""Generated protocol buffer code."""
|
||||
from google.protobuf import descriptor as _descriptor
|
||||
from google.protobuf import descriptor_pool as _descriptor_pool
|
||||
from google.protobuf import runtime_version as _runtime_version
|
||||
from google.protobuf import symbol_database as _symbol_database
|
||||
from google.protobuf.internal import builder as _builder
|
||||
_runtime_version.ValidateProtobufRuntimeVersion(
|
||||
_runtime_version.Domain.PUBLIC,
|
||||
6,
|
||||
31,
|
||||
1,
|
||||
'',
|
||||
'cmvr/config/speaker_config/speaker_conifg.proto'
|
||||
)
|
||||
# @@protoc_insertion_point(imports)
|
||||
|
||||
_sym_db = _symbol_database.Default()
|
||||
|
||||
|
||||
|
||||
|
||||
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n/cmvr/config/speaker_config/speaker_conifg.proto\x12\x0b\x63mvr.config\"1\n\x13\x46\x46MpegSpeakerConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06\x65nable\x18\x02 \x01(\x08\"J\n\rSpeakerConfig\x12\x39\n\x0f\x66\x66mpeg_speakers\x18\x01 \x03(\x0b\x32 .cmvr.config.FFMpegSpeakerConfigb\x06proto3')
|
||||
|
||||
_globals = globals()
|
||||
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
||||
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'cmvr.config.speaker_config.speaker_conifg_pb2', _globals)
|
||||
if not _descriptor._USE_C_DESCRIPTORS:
|
||||
DESCRIPTOR._loaded_options = None
|
||||
_globals['_FFMPEGSPEAKERCONFIG']._serialized_start=64
|
||||
_globals['_FFMPEGSPEAKERCONFIG']._serialized_end=113
|
||||
_globals['_SPEAKERCONFIG']._serialized_start=115
|
||||
_globals['_SPEAKERCONFIG']._serialized_end=189
|
||||
# @@protoc_insertion_point(module_scope)
|
||||
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/speaker_config/speaker_conifg_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
File diff suppressed because one or more lines are too long
@ -0,0 +1,24 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import grpc
|
||||
import warnings
|
||||
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.76.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
raise RuntimeError(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cmvr/config/touch_screen_app_config/touch_screen_app_config_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
)
|
||||
BIN
generated_apriltags/1.0x1.0cm/1.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/1.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/10.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/10.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/11.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/11.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/12.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/12.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/13.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/13.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/14.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/14.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/15.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/15.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/16.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/16.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/17.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/17.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/18.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/18.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/19.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/19.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/2.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/2.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/20.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/20.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/3.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/3.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/4.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/4.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/5.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/5.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/6.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/6.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/7.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/7.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/8.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/8.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.0x1.0cm/9.ai
Normal file
BIN
generated_apriltags/1.0x1.0cm/9.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/1.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/1.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/10.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/10.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/11.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/11.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/12.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/12.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/13.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/13.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/14.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/14.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/15.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/15.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/16.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/16.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/17.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/17.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/18.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/18.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/19.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/19.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/2.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/2.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/20.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/20.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/3.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/3.ai
Normal file
Binary file not shown.
72
generated_apriltags/1.5x1.5cm/4.ai
Normal file
72
generated_apriltags/1.5x1.5cm/4.ai
Normal file
@ -0,0 +1,72 @@
|
||||
%PDF-1.4
|
||||
%† Ǽ
|
||||
1 0 obj
|
||||
<< /Pages 2 0 R /Type /Catalog >>
|
||||
endobj
|
||||
8 0 obj
|
||||
<< /ExtGState 4 0 R /Font 3 0 R /Pattern 5 0 R
|
||||
/ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /Shading 6 0 R
|
||||
/XObject 7 0 R >>
|
||||
endobj
|
||||
11 0 obj
|
||||
<< /Annots 10 0 R /Contents 9 0 R
|
||||
/MediaBox [ 0 0 42.5196850394 42.5196850394 ] /Parent 2 0 R
|
||||
/Resources 8 0 R /Type /Page >>
|
||||
endobj
|
||||
9 0 obj
|
||||
<< /Filter /FlateDecode /Length 12 0 R >>
|
||||
stream
|
||||
xœµ”ËNÃ0E÷óþ×NœØYò<59>º|@UF‚Jðû8 |oZg<5A>ĨjdefŽf:Ý\ï?žwûÛí¥¹º“
n»£xs<78>7ãÊ'tvðÓ˜×Oáäö¾7÷æÕl.¼y<šò(ïÊ÷³|·ó](ÞdÁ§¢®ÜÜ÷óIäAnÌ_܉B¹‹ÛÍ“é“íÆ},*8ãôÂ4Xç‡Ò,XÔ1¬²øÎÆa˜Ü¸(ÚM6Ž}\ûO?s1۬ÅدBRA¸’د=LP’ÁJ†çÊÍV<C38D>
¥‚OÞ/ÆKP§¤×n ¹P¼’a£¼!\–¨/QS
|
||||
ý¢‡uv„Q<>‰’
ePr„;®Ì”l(ƒ’ccPY’<59>ãû¥K…hÍ™¡RI{ËÍú…ì‚x-CÚF2lÏ”m<E2809D>A˱1¦LÀe‰ÖÍæ9Ôé"+®ô”l(ƒ’c£ ü¯Èeq®kCM$¦óŸÈ‚øý± (É <20>’akFymž•’(žÏ(¯˜TXChÂÄ~ìäÜÈs*
|
||||
endstream
|
||||
endobj
|
||||
12 0 obj
|
||||
404
|
||||
endobj
|
||||
10 0 obj
|
||||
[ ]
|
||||
endobj
|
||||
3 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
4 0 obj
|
||||
<< /A1 << /CA 0 /Type /ExtGState /ca 1 >> >>
|
||||
endobj
|
||||
5 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
6 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
7 0 obj
|
||||
<< >>
|
||||
endobj
|
||||
2 0 obj
|
||||
<< /Count 1 /Kids [ 11 0 R ] /Type /Pages >>
|
||||
endobj
|
||||
13 0 obj
|
||||
<< /CreationDate (D:20260318165303+08'00')
|
||||
/Creator (Matplotlib v3.5.3, https://matplotlib.org)
|
||||
/Producer (Matplotlib pdf backend v3.5.3) >>
|
||||
endobj
|
||||
xref
|
||||
0 14
|
||||
0000000000 65535 f
|
||||
0000000016 00000 n
|
||||
0000001013 00000 n
|
||||
0000000869 00000 n
|
||||
0000000890 00000 n
|
||||
0000000950 00000 n
|
||||
0000000971 00000 n
|
||||
0000000992 00000 n
|
||||
0000000065 00000 n
|
||||
0000000350 00000 n
|
||||
0000000849 00000 n
|
||||
0000000208 00000 n
|
||||
0000000829 00000 n
|
||||
0000001073 00000 n
|
||||
trailer
|
||||
<< /Info 13 0 R /Root 1 0 R /Size 14 >>
|
||||
startxref
|
||||
1230
|
||||
%%EOF
|
||||
BIN
generated_apriltags/1.5x1.5cm/5.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/5.ai
Normal file
Binary file not shown.
BIN
generated_apriltags/1.5x1.5cm/6.ai
Normal file
BIN
generated_apriltags/1.5x1.5cm/6.ai
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user