From 4de07e1988335b7af4c664f37bd26f6fffc552aa Mon Sep 17 00:00:00 2001 From: Redstone1024 <2824517378@qq.com> Date: Sat, 28 Oct 2023 21:30:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 15 ++ .vsconfig | 13 ++ Config/DefaultEditor.ini | 0 Config/DefaultEngine.ini | 207 ++++++++++++++++++ Config/DefaultGame.ini | 3 + Config/DefaultInput.ini | 85 +++++++ Content/BP_Master.uasset | Bin 0 -> 203543 bytes Content/Level.umap | Bin 0 -> 24287 bytes Content/UMG_Master.uasset | Bin 0 -> 504542 bytes MecanumVehicle.py | 171 +++++++++++++++ MecanumVehicle.uproject | 22 ++ Platforms/HoloLens/Config/HoloLensEngine.ini | 32 +++ README.md | 15 ++ Source/MecanumVehicle.Target.cs | 15 ++ Source/MecanumVehicle/MecanumVehicle.Build.cs | 31 +++ Source/MecanumVehicle/MecanumVehicle.cpp | 6 + Source/MecanumVehicle/MecanumVehicle.h | 6 + .../MecanumVehicle/MecanumVehicleAdapter.cpp | 127 +++++++++++ Source/MecanumVehicle/MecanumVehicleAdapter.h | 59 +++++ Source/MecanumVehicleEditor.Target.cs | 15 ++ 20 files changed, 822 insertions(+) create mode 100644 .gitignore create mode 100644 .vsconfig create mode 100644 Config/DefaultEditor.ini create mode 100644 Config/DefaultEngine.ini create mode 100644 Config/DefaultGame.ini create mode 100644 Config/DefaultInput.ini create mode 100644 Content/BP_Master.uasset create mode 100644 Content/Level.umap create mode 100644 Content/UMG_Master.uasset create mode 100644 MecanumVehicle.py create mode 100644 MecanumVehicle.uproject create mode 100644 Platforms/HoloLens/Config/HoloLensEngine.ini create mode 100644 README.md create mode 100644 Source/MecanumVehicle.Target.cs create mode 100644 Source/MecanumVehicle/MecanumVehicle.Build.cs create mode 100644 Source/MecanumVehicle/MecanumVehicle.cpp create mode 100644 Source/MecanumVehicle/MecanumVehicle.h create mode 100644 Source/MecanumVehicle/MecanumVehicleAdapter.cpp create mode 100644 Source/MecanumVehicle/MecanumVehicleAdapter.h create mode 100644 Source/MecanumVehicleEditor.Target.cs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93e6106 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +Binaries +DerivedDataCache +Intermediate +Saved +Build +.vscode +.vs +*.VC.db +*.opensdf +*.opendb +*.sdf +*.sln +*.suo +*.xcodeproj +*.xcworkspace diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 0000000..1a9d718 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,13 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.Net.Component.4.6.2.TargetingPack", + "Microsoft.VisualStudio.Component.VC.14.36.17.6.x86.x64", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.Windows10SDK.22000", + "Microsoft.VisualStudio.Workload.CoreEditor", + "Microsoft.VisualStudio.Workload.ManagedDesktop", + "Microsoft.VisualStudio.Workload.NativeDesktop", + "Microsoft.VisualStudio.Workload.NativeGame" + ] +} diff --git a/Config/DefaultEditor.ini b/Config/DefaultEditor.ini new file mode 100644 index 0000000..e69de29 diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini new file mode 100644 index 0000000..99e7ea9 --- /dev/null +++ b/Config/DefaultEngine.ini @@ -0,0 +1,207 @@ + + +[/Script/EngineSettings.GameMapsSettings] +GameDefaultMap=/Game/Level.Level +EditorStartupMap=/Game/Level.Level + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Scalable +AppliedDefaultGraphicsPerformance=Scalable + +[/Script/Engine.RendererSettings] +r.Mobile.ShadingPath=0 +r.Mobile.SupportGPUScene=False +r.Mobile.AntiAliasing=1 +r.Mobile.FloatPrecisionMode=0 +r.Mobile.AllowDitheredLODTransition=False +r.Mobile.VirtualTextures=False +r.DiscardUnusedQuality=False +r.Shaders.CompressionFormat=2 +r.AllowOcclusionQueries=True +r.MinScreenRadiusForLights=0.030000 +r.MinScreenRadiusForDepthPrepass=0.030000 +r.MinScreenRadiusForCSMDepth=0.010000 +r.PrecomputedVisibilityWarning=False +r.TextureStreaming=True +Compat.UseDXT5NormalMaps=False +r.VirtualTextures=False +r.VT.EnableAutoImport=True +r.VirtualTexturedLightmaps=False +r.VT.AnisotropicFiltering=False +bEnableVirtualTextureOpacityMask=False +r.VT.TileSize=128 +r.VT.TileBorderSize=4 +r.vt.FeedbackFactor=16 +WorkingColorSpaceChoice=sRGB +RedChromaticityCoordinate=(X=0.640000,Y=0.330000) +GreenChromaticityCoordinate=(X=0.300000,Y=0.600000) +BlueChromaticityCoordinate=(X=0.150000,Y=0.060000) +WhiteChromaticityCoordinate=(X=0.312700,Y=0.329000) +r.ClearCoatNormal=False +r.DynamicGlobalIlluminationMethod=1 +r.ReflectionMethod=1 +r.ReflectionCaptureResolution=128 +r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True +r.Lumen.HardwareRayTracing=False +r.Lumen.HardwareRayTracing.LightingMode=0 +r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject=False +r.Lumen.TraceMeshSDFs=1 +r.Shadow.Virtual.Enable=1 +r.RayTracing=False +r.RayTracing.Shadows=False +r.RayTracing.Skylight=False +r.RayTracing.UseTextureLod=False +r.PathTracing=True +r.GenerateMeshDistanceFields=True +r.DistanceFields.DefaultVoxelDensity=0.200000 +r.Nanite.ProjectEnabled=True +r.AllowStaticLighting=True +r.NormalMapsForStaticLighting=False +r.ForwardShading=False +r.VertexFoggingForOpaque=True +r.SeparateTranslucency=True +r.TranslucentSortPolicy=0 +TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000) +vr.VRS.HMDFixedFoveationLevel=0 +vr.VRS.HMDFixedFoveationDynamic=False +r.CustomDepth=1 +r.CustomDepthTemporalAAJitter=True +r.PostProcessing.PropagateAlpha=0 +r.DefaultFeature.Bloom=True +r.DefaultFeature.AmbientOcclusion=True +r.DefaultFeature.AmbientOcclusionStaticFraction=True +r.DefaultFeature.AutoExposure=False +r.DefaultFeature.AutoExposure.Method=0 +r.DefaultFeature.AutoExposure.Bias=1.000000 +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True +r.DefaultFeature.MotionBlur=False +r.DefaultFeature.LensFlare=False +r.TemporalAA.Upsampling=True +r.AntiAliasingMethod=0 +r.MSAACount=4 +r.DefaultFeature.LightUnits=1 +r.DefaultBackBufferPixelFormat=4 +r.Shadow.UnbuiltPreviewInGame=True +r.StencilForLODDither=False +r.EarlyZPass=3 +r.EarlyZPassOnlyMaterialMasking=False +r.Shadow.CSMCaching=False +r.DBuffer=True +r.ClearSceneMethod=1 +r.VelocityOutputPass=1 +r.Velocity.EnableVertexDeformation=2 +r.SelectiveBasePassOutputs=False +bDefaultParticleCutouts=False +fx.GPUSimulationTextureSizeX=1024 +fx.GPUSimulationTextureSizeY=1024 +r.AllowGlobalClipPlane=False +r.GBufferFormat=1 +r.MorphTarget.Mode=True +r.GPUCrashDebugging=False +vr.InstancedStereo=False +r.MobileHDR=True +vr.MobileMultiView=False +r.Mobile.UseHWsRGBEncoding=False +vr.RoundRobinOcclusion=False +r.MeshStreaming=False +r.HeterogeneousVolumes=True +r.WireframeCullThreshold=5.000000 +r.SupportStationarySkylight=True +r.SupportLowQualityLightmaps=True +r.SupportPointLightWholeSceneShadows=True +r.SupportSkyAtmosphere=True +r.SupportSkyAtmosphereAffectsHeightFog=True +r.SupportCloudShadowOnForwardLitTranslucent=False +r.Shadow.TranslucentPerObject.ProjectEnabled=False +r.Water.SingleLayerWater.SupportCloudShadow=False +r.Substrate=False +r.Substrate.OpaqueMaterialRoughRefraction=False +r.Substrate.Debug.AdvancedVisualizationShaders=False +r.Material.RoughDiffuse=False +r.Material.EnergyConservation=False +r.OIT.SortedPixels=False +r.SkinCache.CompileShaders=False +r.SkinCache.SkipCompilingGPUSkinVF=False +r.SkinCache.DefaultBehavior=1 +r.SkinCache.SceneMemoryLimitInMB=128.000000 +r.Mobile.EnableStaticAndCSMShadowReceivers=True +r.Mobile.EnableMovableLightCSMShaderCulling=True +r.Mobile.Forward.EnableLocalLights=True +r.Mobile.Forward.EnableClusteredReflections=False +r.Mobile.EnableNoPrecomputedLightingCSMShader=False +r.Mobile.AllowDistanceFieldShadows=True +r.Mobile.AllowMovableDirectionalLights=True +r.Mobile.EnableMovableSpotlightsShadow=False +r.GPUSkin.Support16BitBoneIndex=False +r.GPUSkin.Limit2BoneInfluences=False +r.SupportDepthOnlyIndexBuffers=True +r.SupportReversedIndexBuffers=True +r.Mobile.AmbientOcclusion=False +r.GPUSkin.UnlimitedBoneInfluences=False +r.GPUSkin.UnlimitedBoneInfluencesThreshold=8 +DefaultBoneInfluenceLimit=(Default=0,PerPlatform=()) +MaxSkinBones=(Default=65536,PerPlatform=(("Mobile", 256))) +r.Mobile.PlanarReflectionMode=0 +r.Mobile.SupportsGen4TAA=True +bStreamSkeletalMeshLODs=(Default=False,PerPlatform=()) +bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=()) +VisualizeCalibrationColorMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationColor.PPM_DefaultCalibrationColor +VisualizeCalibrationCustomMaterialPath=None +VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale + +[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] +CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' + +[/Script/Engine.UserInterfaceSettings] +bAuthorizeAutomaticWidgetVariableCreation=False + +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/MecanumVehicle") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/MecanumVehicle") ++ActiveClassRedirects=(OldClassName="TP_BlankGameModeBase",NewClassName="MecanumVehicleGameModeBase") + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=81D630CB419CCE7C987D8C9AF30709C2 +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + diff --git a/Config/DefaultGame.ini b/Config/DefaultGame.ini new file mode 100644 index 0000000..461d4db --- /dev/null +++ b/Config/DefaultGame.ini @@ -0,0 +1,3 @@ + +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=EE6145CD461B3A171C8C0AA1AE145861 diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini new file mode 100644 index 0000000..4cc3605 --- /dev/null +++ b/Config/DefaultInput.ini @@ -0,0 +1,85 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bShouldFlushPressedKeysOnViewportFocusLost=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde ++ConsoleKeys=Caret + diff --git a/Content/BP_Master.uasset b/Content/BP_Master.uasset new file mode 100644 index 0000000000000000000000000000000000000000..462e02212bc87755efb737a3dedefbad7d0f7387 GIT binary patch literal 203543 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%0DUH@}N9;1LBx!X?kd~vgXwp{l6=eeg(&)&TG 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 a&qF5b!3bzuUz8X7aGf<%f`hNlkcI(#w literal 0 HcmV?d00001 diff --git a/Content/UMG_Master.uasset b/Content/UMG_Master.uasset new file mode 100644 index 0000000000000000000000000000000000000000..bb47d4148fc7f6367b1d902d6cf956b586c6c0d4 GIT binary patch literal 504542 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

>15R)hxg1}lQXD#eP> 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 literal 0 HcmV?d00001 diff --git a/MecanumVehicle.py b/MecanumVehicle.py new file mode 100644 index 0000000..29039ab --- /dev/null +++ b/MecanumVehicle.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python3 + +import time +import struct +import socket +import RPi.GPIO as GPIO + +def clamp(n, a, b): + + if n < a: + + return a + + elif n > b: + + return b + + else: + + return n + +interval = 0.001 + +udp_addr = ("192.168.1.1", 6000) + +GPIO.setmode(GPIO.BCM) + +motor_pins = [4, 18, 17, 27, 23, 22, 24, 25] +motor_pwms = [] + +def init_motor(): + + GPIO.setup(motor_pins, GPIO.OUT) + + for motor_index in range(0, 8): + + motor_pwms.append(GPIO.PWM(motor_pins[motor_index], 500)) + motor_pwms[motor_index].start(0) + +motor_LF_forward = 0 +motor_LF_reverse = 1 + +motor_RF_forward = 3 +motor_RF_reverse = 2 + +motor_LR_forward = 5 +motor_LR_reverse = 4 + +motor_RR_forward = 6 +motor_RR_reverse = 7 + +def stop_motor(): + + for motor_index in range(0, 8): + + motor_pwms[motor_index].ChangeDutyCycle(0.0) + +def set_motor(motor, speed, is_brake = False): + + motor_forward = -1 + motor_reverse = -1 + + if motor == "LF": + + motor_forward = motor_LF_forward + motor_reverse = motor_LF_reverse + + elif motor == "RF": + + motor_forward = motor_RF_forward + motor_reverse = motor_RF_reverse + + elif motor == "LR": + + motor_forward = motor_LR_forward + motor_reverse = motor_LR_reverse + + else: # motor == "RR" + + motor_forward = motor_RR_forward + motor_reverse = motor_RR_reverse + + if is_brake == True: + + motor_pwms[motor_forward].ChangeDutyCycle(100.0) + motor_pwms[motor_reverse].ChangeDutyCycle(100.0) + + elif speed < 0: + + motor_pwms[motor_forward].ChangeDutyCycle(0.0) + motor_pwms[motor_reverse].ChangeDutyCycle(-speed * 100.0) + + elif speed > 0: + + motor_pwms[motor_forward].ChangeDutyCycle(speed * 100.0) + motor_pwms[motor_reverse].ChangeDutyCycle(0.0) + + else: + + motor_pwms[motor_forward].ChangeDutyCycle(0.0) + motor_pwms[motor_reverse].ChangeDutyCycle(0.0) + +sock = socket.socket() +lasttime = 0 + +def init_udp(): + + global sock + + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + sock.bind(("0.0.0.0", 6000)) + sock.setblocking(False) + +def hand_udp(): + + global sock + global udp_addr + global lasttime + + try: + + (data, source) = sock.recvfrom(1024) + + udp_addr = source + + if len(data) == 6: + + seq, speed_LF, speed_RF, speed_LR, speed_RR, is_brake = struct.unpack("!Bbbbb?", data) + + set_motor("LF", clamp(speed_LF / 128, -1.0, 1.0), is_brake) + set_motor("RF", clamp(speed_RF / 128, -1.0, 1.0), is_brake) + set_motor("LR", clamp(speed_LR / 128, -1.0, 1.0), is_brake) + set_motor("RR", clamp(speed_RR / 128, -1.0, 1.0), is_brake) + + sock.sendto(struct.pack("!B", seq), udp_addr) + + lasttime = time.time() + + except socket.error: + + pass + + if time.time() - lasttime >= 0.5: + + set_motor("LF", 0.0, True) + set_motor("RF", 0.0, True) + set_motor("LR", 0.0, True) + set_motor("RR", 0.0, True) + +try: + + init_motor() + init_udp() + + while True: + + hand_udp() + + time.sleep(interval) + +except KeyboardInterrupt: + + print("\nKeyboardInterrupt") + +finally: + + stop_motor() + + GPIO.cleanup() + + print("Exit") diff --git a/MecanumVehicle.uproject b/MecanumVehicle.uproject new file mode 100644 index 0000000..dfbbe10 --- /dev/null +++ b/MecanumVehicle.uproject @@ -0,0 +1,22 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.3", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "MecanumVehicle", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + } + ] +} \ No newline at end of file diff --git a/Platforms/HoloLens/Config/HoloLensEngine.ini b/Platforms/HoloLens/Config/HoloLensEngine.ini new file mode 100644 index 0000000..7a24085 --- /dev/null +++ b/Platforms/HoloLens/Config/HoloLensEngine.ini @@ -0,0 +1,32 @@ + + +[/Script/HoloLensPlatformEditor.HoloLensTargetSettings] +bBuildForEmulation=False +bBuildForDevice=True +bUseNameForLogo=True +bBuildForRetailWindowsStore=False +bAutoIncrementVersion=False +bShouldCreateAppInstaller=False +AppInstallerInstallationURL= +HoursBetweenUpdateChecks=0 +bEnablePIXProfiling=False +TileBackgroundColor=(B=64,G=0,R=0,A=255) +SplashScreenBackgroundColor=(B=64,G=0,R=0,A=255) ++PerCultureResources=(CultureId="",Strings=(PackageDisplayName="",PublisherDisplayName="",PackageDescription="",ApplicationDisplayName="",ApplicationDescription=""),Images=()) +TargetDeviceFamily=Windows.Holographic +MinimumPlatformVersion=10.0.18362.0 +MaximumPlatformVersionTested=10.0.19041.0 +MaxTrianglesPerCubicMeter=500.000000 +SpatialMeshingVolumeSize=20.000000 +CompilerVersion=Default +Windows10SDKVersion=10.0.18362.0 ++CapabilityList=internetClientServer ++CapabilityList=privateNetworkClientServer ++Uap2CapabilityList=spatialPerception +bSetDefaultCapabilities=False +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +SoundCueCookQualityIndex=-1 + diff --git a/README.md b/README.md new file mode 100644 index 0000000..62e10dd --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +### MecanumVehicle + +> 这是 2023 年山东理工大学 秋名山机器人竞速大赛 的小车 + +MecanumVehicle.py - 树莓派车入口 + +MecanumVehicle.uproject - 控制端入口 + +基于树莓派的简单网络遥控车实现方案。 + +支持使用主流游戏手柄操作,电机功率差速补偿,远程操作。 + +网络协议基于 UDP ,车作为服务端,控制端作为客户端接入。 + +客户端基于 Unreal Engine 5 ,其中控制端在 Windows 11 平台上测试通过。 diff --git a/Source/MecanumVehicle.Target.cs b/Source/MecanumVehicle.Target.cs new file mode 100644 index 0000000..400622b --- /dev/null +++ b/Source/MecanumVehicle.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class MecanumVehicleTarget : TargetRules +{ + public MecanumVehicleTarget( TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V2; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1; + ExtraModuleNames.Add("MecanumVehicle"); + } +} diff --git a/Source/MecanumVehicle/MecanumVehicle.Build.cs b/Source/MecanumVehicle/MecanumVehicle.Build.cs new file mode 100644 index 0000000..c9984e0 --- /dev/null +++ b/Source/MecanumVehicle/MecanumVehicle.Build.cs @@ -0,0 +1,31 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; + +public class MecanumVehicle : ModuleRules +{ + public MecanumVehicle(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange( + new string[] + { + "Core", + "Engine", + "InputCore" , + "CoreUObject", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "RHI", + "Sockets", + "Networking", + "RenderCore", + } + ); + } +} diff --git a/Source/MecanumVehicle/MecanumVehicle.cpp b/Source/MecanumVehicle/MecanumVehicle.cpp new file mode 100644 index 0000000..f021da3 --- /dev/null +++ b/Source/MecanumVehicle/MecanumVehicle.cpp @@ -0,0 +1,6 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#include "MecanumVehicle.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, MecanumVehicle, "MecanumVehicle" ); diff --git a/Source/MecanumVehicle/MecanumVehicle.h b/Source/MecanumVehicle/MecanumVehicle.h new file mode 100644 index 0000000..677c8e2 --- /dev/null +++ b/Source/MecanumVehicle/MecanumVehicle.h @@ -0,0 +1,6 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "CoreMinimal.h" + diff --git a/Source/MecanumVehicle/MecanumVehicleAdapter.cpp b/Source/MecanumVehicle/MecanumVehicleAdapter.cpp new file mode 100644 index 0000000..c76932f --- /dev/null +++ b/Source/MecanumVehicle/MecanumVehicleAdapter.cpp @@ -0,0 +1,127 @@ +#include "MecanumVehicleAdapter.h" + +#include "Sockets.h" +#include "Networking.h" +#include "Misc/Timespan.h" +#include "SocketSubsystem.h" + +AMecanumVehicleAdapter::AMecanumVehicleAdapter(const FObjectInitializer& ObjectInitializer) +{ + PrimaryActorTick.bCanEverTick = true; +} + +void AMecanumVehicleAdapter::BeginPlay() +{ + Super::BeginPlay(); + + SocketSubsystem = ISocketSubsystem::Get(PLATFORM_SOCKETSUBSYSTEM); + + UDPSocket = SocketSubsystem->CreateSocket(NAME_DGram, TEXT("Raspberry Socket"), FNetworkProtocolTypes::IPv4); + + UDPBuffer.SetNumUninitialized(1024); + + PingTime = 1024.0; + + for (int32 Index = 0; Index < MAX_uint8; ++Index) + { + UDPRecvTime[Index] = FDateTime(0); + } + + UpdataSocket(TEXT("192.168.1.1")); +} + +void AMecanumVehicleAdapter::UpdataCompensation(const TArray& Value) +{ + if (Value.Num() != 8) return; + + SpeedCompensationMax[0] = Value[0]; + SpeedCompensationMax[1] = Value[1]; + SpeedCompensationMax[2] = Value[2]; + SpeedCompensationMax[3] = Value[3]; + + SpeedCompensationMin[0] = Value[4]; + SpeedCompensationMin[1] = Value[5]; + SpeedCompensationMin[2] = Value[6]; + SpeedCompensationMin[3] = Value[7]; + +} + +void AMecanumVehicleAdapter::UpdataSocket(const FString& IP, const int32 Port) +{ + int32 BytesNum = 0; + Addr = SocketSubsystem->CreateInternetAddr(); + + bool bIsValid; + Addr->SetIp(TEXT("192.168.1.1"), bIsValid); + Addr->SetIp(*IP, bIsValid); + Addr->SetPort(Port); +} + +void AMecanumVehicleAdapter::UpdataInput(const FVector Value, const bool bIsBrake) +{ + ++UDPSequenceIndex; + + UDPSequenceIndex %= MAX_uint8; + + UDPRecvTime[UDPSequenceIndex] = FDateTime::UtcNow(); + + double SpeedLF = 0.0f; + double SpeedRF = 0.0f; + double SpeedLR = 0.0f; + double SpeedRR = 0.0f; + + SpeedLF += Value.X; + SpeedRF += Value.X; + SpeedLR += Value.X; + SpeedRR += Value.X; + + SpeedLF += Value.Y; + SpeedRF -= Value.Y; + SpeedLR -= Value.Y; + SpeedRR += Value.Y; + + SpeedLF += Value.Z; + SpeedRF -= Value.Z; + SpeedLR += Value.Z; + SpeedRR -= Value.Z; + + UDPBuffer[0] = UDPSequenceIndex; + UDPBuffer[1] = (int8)(FMath::Clamp(FMath::Sign(SpeedLF) * FMath::Lerp(SpeedCompensationMin[0], SpeedCompensationMax[0], FMath::Abs(SpeedLF)) * 128.0, MIN_int8, MAX_int8)); + UDPBuffer[2] = (int8)(FMath::Clamp(FMath::Sign(SpeedRF) * FMath::Lerp(SpeedCompensationMin[1], SpeedCompensationMax[1], FMath::Abs(SpeedRF)) * 128.0, MIN_int8, MAX_int8)); + UDPBuffer[3] = (int8)(FMath::Clamp(FMath::Sign(SpeedLR) * FMath::Lerp(SpeedCompensationMin[2], SpeedCompensationMax[2], FMath::Abs(SpeedLR)) * 128.0, MIN_int8, MAX_int8)); + UDPBuffer[4] = (int8)(FMath::Clamp(FMath::Sign(SpeedRR) * FMath::Lerp(SpeedCompensationMin[3], SpeedCompensationMax[3], FMath::Abs(SpeedRR)) * 128.0, MIN_int8, MAX_int8)); + UDPBuffer[5] = bIsBrake; + + int32 BytesNum = 0; + UDPSocket->SendTo(UDPBuffer.GetData(), 6, BytesNum, *Addr); +} + +void AMecanumVehicleAdapter::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + + int32 BytesNum = 0; + TSharedRef Source = SocketSubsystem->CreateInternetAddr(); + + uint32 PendingDataSize; + while (UDPSocket->HasPendingData(PendingDataSize)) + { + UDPSocket->RecvFrom(UDPBuffer.GetData(), UDPBuffer.Num(), BytesNum, *Source); + + if (BytesNum == 1) + { + uint8 Index = UDPBuffer[0]; + PingTime = (FDateTime::UtcNow() - UDPRecvTime[Index]).GetTotalMilliseconds(); + } + else continue; + + UDPLastTime = FDateTime::UtcNow(); + } + + PingTime = FMath::Max(PingTime, (FDateTime::UtcNow() - UDPLastTime).GetTotalMilliseconds()); +} + +void AMecanumVehicleAdapter::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); +} diff --git a/Source/MecanumVehicle/MecanumVehicleAdapter.h b/Source/MecanumVehicle/MecanumVehicleAdapter.h new file mode 100644 index 0000000..60bea85 --- /dev/null +++ b/Source/MecanumVehicle/MecanumVehicleAdapter.h @@ -0,0 +1,59 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Actor.h" +#include "MecanumVehicleAdapter.generated.h" + +class FSocket; +class ISocketSubsystem; + +UCLASS() +class MECANUMVEHICLE_API AMecanumVehicleAdapter : public AActor +{ + GENERATED_BODY() + +public: + + AMecanumVehicleAdapter(const FObjectInitializer& ObjectInitializer); + + UPROPERTY(BlueprintReadOnly) + double PingTime; + + UFUNCTION(BlueprintCallable) + void UpdataCompensation(const TArray& Value); + + UFUNCTION(BlueprintCallable) + void UpdataSocket(const FString& IP, const int32 Port = 6000); + + UFUNCTION(BlueprintCallable) + void UpdataInput(const FVector Value, const bool bIsBrake); + + UFUNCTION(BlueprintCallable) + + //~ Begin AActor Interface. + virtual void BeginPlay() override; + virtual void Tick(float DeltaSeconds) override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + //~ End AActor Interface. + +private: + + ISocketSubsystem* SocketSubsystem; + + FSocket* UDPSocket; + + TSharedPtr Addr; + + TArray UDPBuffer; + + int32 UDPSequenceIndex = 0; + + FDateTime UDPLastTime; + + FDateTime UDPRecvTime[(int32)MAX_uint8 + 1]; + + double SpeedCompensationMax[4] = { 1.0, 1.0, 1.0, 1.0 }; + + double SpeedCompensationMin[4] = { 0.0, 0.0, 0.0, 0.0 }; + +}; diff --git a/Source/MecanumVehicleEditor.Target.cs b/Source/MecanumVehicleEditor.Target.cs new file mode 100644 index 0000000..ec7bb26 --- /dev/null +++ b/Source/MecanumVehicleEditor.Target.cs @@ -0,0 +1,15 @@ +// Copyright Epic Games, Inc. All Rights Reserved. + +using UnrealBuildTool; +using System.Collections.Generic; + +public class MecanumVehicleEditorTarget : TargetRules +{ + public MecanumVehicleEditorTarget( TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V2; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_1; + ExtraModuleNames.Add("MecanumVehicle"); + } +}