├── .github └── workflows │ └── main.yml ├── .gitignore ├── .gitmodules ├── README.md ├── clients ├── AlphabotAndroidClient │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ └── at │ │ │ │ └── mg6 │ │ │ │ └── filip │ │ │ │ └── alphabotandroidclient │ │ │ │ ├── BLECharacteristicSender.java │ │ │ │ ├── BLEHandler.java │ │ │ │ ├── BluetoothLeService.java │ │ │ │ ├── BluetoothLeServiceListener.java │ │ │ │ ├── ControlActivity.java │ │ │ │ ├── HoldDownListener.java │ │ │ │ ├── ImmersiveActivity.java │ │ │ │ ├── LPSConfigureDialog.java │ │ │ │ ├── LPSView.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── Obstacle.java │ │ │ │ └── ObstacleConfigureDialog.java │ │ │ └── res │ │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ │ ├── layout │ │ │ ├── activity_control.xml │ │ │ ├── activity_main.xml │ │ │ ├── dialog_lps_configure.xml │ │ │ └── dialog_obstacle_configure.xml │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── AlphabotClientLibrary │ ├── AlphabotClientLibrary.Core.Tcp │ │ ├── AlphabotClientLibrary.Core.Tcp.csproj │ │ ├── TcpHandlerWindows.cs │ │ └── TcpResponseInterpreter.cs │ ├── AlphabotClientLibrary.Core │ │ ├── AlphabotClientLibrary.Core.csproj │ │ └── Handler │ │ │ ├── ConnectionHandler.cs │ │ │ ├── ObstacleHandler.cs │ │ │ └── ResponseHandler.cs │ ├── AlphabotClientLibrary.Example.WinForms │ │ ├── AlphabotClientLibrary.Example.WinForms.csproj │ │ ├── AlphabotClientLibrary.Example.WinForms.csproj.user │ │ ├── MainForm.Designer.cs │ │ ├── MainForm.cs │ │ ├── MainForm.resx │ │ └── Program.cs │ ├── AlphabotClientLibrary.Shared │ │ ├── AlphabotClientLibrary.Shared.csproj │ │ ├── BleUuids.cs │ │ ├── Contracts │ │ │ ├── IAlphabotRequest.cs │ │ │ ├── IAlphabotResponse.cs │ │ │ ├── IConnectionData.cs │ │ │ └── IResponseInterpreter.cs │ │ ├── Models │ │ │ ├── BleConnectionData.cs │ │ │ ├── BleInformation.cs │ │ │ ├── Obstacle.cs │ │ │ ├── Position.cs │ │ │ └── WiFiConnectionData.cs │ │ ├── Requests │ │ │ ├── AddObstacleRequest.cs │ │ │ ├── CalibrateCompassRequest.cs │ │ │ ├── CalibrateSteeringRequest.cs │ │ │ ├── ConfigurePositioningAnchorRequest.cs │ │ │ ├── NavigationTargetRequest.cs │ │ │ ├── PingRequest.cs │ │ │ ├── RemoveAllObstaclesRequest.cs │ │ │ ├── RemoveObstacleRequest.cs │ │ │ ├── SpeedSteerRequest.cs │ │ │ ├── TestRequest.cs │ │ │ └── ToggleRequest.cs │ │ ├── ResponseInterpreter.cs │ │ └── Responses │ │ │ ├── AccelerometerResponse.cs │ │ │ ├── AnchorDistancesResponse.cs │ │ │ ├── BackDistanceSensorResponse.cs │ │ │ ├── CompassResponse.cs │ │ │ ├── DistanceSensorResponse.cs │ │ │ ├── ErrorResponse.cs │ │ │ ├── FrontDistanceSensorResponse.cs │ │ │ ├── GyroscopeResponse.cs │ │ │ ├── MagnetometerResponse.cs │ │ │ ├── MultipleSensorResponse.cs │ │ │ ├── NewObstacleRegisteredResponse.cs │ │ │ ├── PathFindingResponse.cs │ │ │ ├── PingResponse.cs │ │ │ ├── PositioningResponse.cs │ │ │ ├── TestResponse.cs │ │ │ ├── ToggleResponse.cs │ │ │ └── WheelSpeedResponse.cs │ ├── AlphabotClientLibrary.Test.Tcp.Client │ │ ├── AlphabotClientLibrary.Test.Tcp.Client.csproj │ │ └── Program.cs │ ├── AlphabotClientLibrary.Test.Tcp.Server │ │ ├── AlphabotClientLibrary.Test.Tcp.Server.csproj │ │ └── Program.cs │ ├── AlphabotClientLibrary.Test │ │ ├── AlphabotClientLibrary.Test.csproj │ │ ├── TcpRequestTest.cs │ │ └── TcpResponseTest.cs │ └── AlphabotClientLibrary.sln ├── AlphabotTcpClient │ ├── AlphabotTcpClient.sln │ └── AlphabotTcpClient │ │ ├── AlphabotClient.cs │ │ ├── AlphabotTcpClient.csproj │ │ ├── Program.cs │ │ ├── SocketReader.cs │ │ └── SocketWriter.cs ├── WPFClient │ ├── AlphabotWPFClient │ │ ├── AlphabotWPFClient.sln │ │ └── AlphabotWPFClient │ │ │ ├── AlphabotWPFClient.csproj │ │ │ ├── App.config │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── MainWindow.xaml │ │ │ ├── MainWindow.xaml.cs │ │ │ └── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ └── alphabot_ble_client │ │ └── alphabot_ble_client.ino └── XamarinClient │ ├── AlphabotXamarinClient.Android │ ├── AlphabotXamarinClient.Android.csproj │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ └── Resources │ │ ├── mipmap-anydpi-v26 │ │ ├── icon.xml │ │ └── icon_round.xml │ │ ├── mipmap-hdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ │ ├── mipmap-mdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ │ ├── mipmap-xxxhdpi │ │ ├── icon.png │ │ └── launcher_foreground.png │ │ └── values │ │ ├── colors.xml │ │ └── styles.xml │ ├── AlphabotXamarinClient.UWP │ ├── AlphabotXamarinClient.UWP.csproj │ ├── App.xaml │ ├── App.xaml.cs │ ├── Assets │ │ ├── LargeTile.scale-100.png │ │ ├── LargeTile.scale-200.png │ │ ├── LargeTile.scale-400.png │ │ ├── SmallTile.scale-100.png │ │ ├── SmallTile.scale-200.png │ │ ├── SmallTile.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── StoreLogo.backup.png │ │ ├── StoreLogo.scale-100.png │ │ ├── StoreLogo.scale-200.png │ │ ├── StoreLogo.scale-400.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ ├── AlphabotXamarinClient │ ├── AlphabotXamarinClient.csproj │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── Gyro │ │ ├── DirectionChangedEventArgs.cs │ │ └── GyroControl.cs │ ├── MainPage.xaml │ └── MainPage.xaml.cs │ └── XamarinClient.sln ├── docs ├── alphabot_build_instructions.md ├── alphabot_client.md ├── alphabot_emulation.md ├── alphabot_rpi_software.md ├── alphabot_usage.md ├── images │ ├── alphabot_assembled.png │ ├── alphabot_esp32_pcb.jpg │ ├── alphabot_esp32_pcb_12v_power.png │ ├── alphabot_esp32_pcb_assembly_1.png │ ├── alphabot_esp32_pcb_assembly_2.png │ ├── alphabot_esp32_pcb_assembly_3.png │ ├── alphabot_esp32_pcb_assembly_4.png │ ├── alphabot_esp32_pcb_connect_l298n.png │ ├── alphabot_turn_on.png │ ├── android_add_obstacle.png │ ├── android_connect_via_ble.png │ ├── android_local_speedometer.png │ ├── android_log_obstacle_dist.png │ ├── android_log_pathfinding.png │ ├── android_log_position.png │ ├── android_map_with_obstacle.png │ ├── android_positioning_setup_dialog.png │ ├── android_select_obstacle.png │ ├── android_wheel_speedometers.png │ ├── attach_alphabot_esp32_pcb.png │ ├── attach_front_wheel_1.png │ ├── attach_front_wheel_2.png │ ├── attach_front_wheel_3.png │ ├── attach_front_wheel_4.png │ ├── attach_rear_wheel_1.png │ ├── attach_rear_wheel_2.png │ ├── attach_rear_wheel_3.png │ ├── attach_rear_wheel_4.png │ ├── attach_rear_wheel_5.png │ ├── attach_rear_wheel_6.png │ ├── attach_steering_stepper_1.png │ ├── attach_steering_stepper_2.png │ ├── attach_tf-luna_1.png │ ├── attach_tf-luna_2.jpg │ ├── base_plate_insert_gear_motors.png │ ├── base_plate_steering_bracket_1.png │ ├── base_plate_steering_bracket_2.png │ ├── battery_case.jpg │ ├── connect_fc-03_sensors_to_alphabot_esp32_pcb_1.jpg │ ├── connect_fc-03_sensors_to_alphabot_esp32_pcb_2.png │ ├── connect_front_stepper_motor_to_alphabot_esp32_pcb.png │ ├── connect_positioning_tag_to_alphabot_esp32_pcb.png │ ├── connect_steering_stepper_to_alphabot_esp32_pcb.png │ ├── connect_tf-luna_to_alphabot_esp32_pcb.png │ ├── fc-03_infrared_sensor.jpg │ ├── front_bumper_1.png │ ├── front_bumper_2.png │ ├── gear_motor_solder_wires.jpg │ ├── hex_spacers.png │ ├── insert_positioning_tag.png │ ├── insert_wheel_encoder_1.png │ ├── insert_wheel_encoder_2.png │ ├── l298n_motor_driver.png │ ├── positioning_anchor_address.png │ ├── positioning_anchor_mounted.jpg │ ├── positioning_anchor_serial_output.png │ ├── positioning_anchor_with_holder.png │ ├── positioning_anchors_bad_placement.png │ ├── positioning_anchors_coordinates.png │ ├── positioning_anchors_good_placement.png │ ├── positioning_module_assembly_1.png │ ├── positioning_module_assembly_2.png │ ├── positioning_module_assembly_3.png │ ├── positioning_modules_label.jpg │ ├── positioning_tag_screw.png │ ├── positioning_tag_serial_output.png │ ├── rear_wheel_1.png │ ├── rear_wheel_2.png │ ├── rear_wheels_attached.png │ ├── rocker_switch.png │ ├── screw_steering_bracket_to_front_bumper_1.png │ ├── screw_steering_bracket_to_front_bumper_2.png │ ├── steering_axle_and_suspensions_1.png │ ├── steering_axle_and_suspensions_2.png │ ├── steering_axle_and_suspensions_3.png │ ├── steering_axle_insert_ball_bearings.png │ ├── steering_bracket_1.png │ ├── steering_bracket_2.png │ ├── steering_extension.png │ ├── tag_holder.png │ ├── usb_to_ttl_adapter.jpg │ ├── vscode_platformio_install.png │ ├── vscode_platformio_serial_monitor.png │ ├── vscode_platformio_upload.png │ └── wing.png └── wifi_ble_communication_protocol.md ├── emulator_devices ├── HCSR04.py ├── L298N_Driving.py └── ULN2003_Steering.py ├── emulator_rpi.py ├── emulator_tests └── basic_steering_test.py ├── esp32 ├── .gitignore ├── .vscode │ └── extensions.json ├── alphabot │ ├── BLECharacteristicSender.cpp │ ├── BLECharacteristicSender.h │ ├── BLEHandler.cpp │ ├── BLEHandler.h │ ├── Compass.cpp │ ├── Compass.h │ ├── DrivingAssistent.cpp │ ├── DrivingAssistent.h │ ├── MotionTracker.cpp │ ├── MotionTracker.h │ ├── Motor.cpp │ ├── Motor.h │ ├── Navigator.cpp │ ├── Navigator.h │ ├── Pathfinder.cpp │ ├── Pathfinder.h │ ├── PositioningKalmanFilter.cpp │ ├── PositioningKalmanFilter.h │ ├── PositioningSystem.cpp │ ├── PositioningSystem.h │ ├── SaveFile.cpp │ ├── SaveFile.h │ ├── StepperMotor.cpp │ ├── StepperMotor.h │ ├── TFLunaI2C.cpp │ ├── TFLunaI2C.h │ ├── TFLunaObstacleScanner.cpp │ ├── TFLunaObstacleScanner.h │ ├── TwoMotorDrive.cpp │ ├── TwoMotorDrive.h │ ├── WheelEncoder.cpp │ ├── WheelEncoder.h │ ├── WheelEncoderLeft.cpp │ ├── WheelEncoderLeft.h │ ├── WheelEncoderRight.cpp │ ├── WheelEncoderRight.h │ ├── alphabot.ino │ ├── config.h │ ├── motorconfig.h │ └── pinconfig.h ├── lib │ └── ICM20948 │ │ ├── library.json │ │ └── src │ │ ├── Arduino-ICM20948.cpp │ │ ├── Arduino-ICM20948.h │ │ ├── DataConverter.c │ │ ├── DataConverter.h │ │ ├── Icm20948.h │ │ ├── Icm20948Augmented.c │ │ ├── Icm20948Augmented.h │ │ ├── Icm20948AuxCompassAkm.c │ │ ├── Icm20948AuxCompassAkm.h │ │ ├── Icm20948AuxTransport.c │ │ ├── Icm20948AuxTransport.h │ │ ├── Icm20948DataBaseControl.c │ │ ├── Icm20948DataBaseControl.h │ │ ├── Icm20948DataBaseDriver.c │ │ ├── Icm20948DataBaseDriver.h │ │ ├── Icm20948DataConverter.c │ │ ├── Icm20948DataConverter.h │ │ ├── Icm20948Defs.h │ │ ├── Icm20948Dmp3Driver.c │ │ ├── Icm20948Dmp3Driver.h │ │ ├── Icm20948LoadFirmware.c │ │ ├── Icm20948LoadFirmware.h │ │ ├── Icm20948MPUFifoControl.c │ │ ├── Icm20948MPUFifoControl.h │ │ ├── Icm20948SelfTest.c │ │ ├── Icm20948SelfTest.h │ │ ├── Icm20948Serif.h │ │ ├── Icm20948Setup.c │ │ ├── Icm20948Setup.h │ │ ├── Icm20948Transport.c │ │ ├── Icm20948Transport.h │ │ ├── InvBool.h │ │ ├── InvError.h │ │ ├── InvExport.h │ │ ├── Message.c │ │ ├── Message.h │ │ ├── SensorTypes.h │ │ └── icm20948_img.dmp3a.h └── platformio.ini ├── pcb ├── alphabot_esp32_pcb │ ├── AlphabotESP32PCB_BOM_PCBWay.xlsx │ ├── AlphabotESP32PCB_Gerber.zip │ ├── centroid.csv │ └── schematic.svg └── dwm1000_adapter │ ├── DecawaveProMiniAdapter_BOM_PCBWay.xlsx │ ├── DecawaveProMiniAdapter_Gerber.zip │ ├── DecawaveProMiniAdapter_vector.pdf │ └── centroid.csv ├── positioning_anchor ├── .gitignore ├── .vscode │ └── extensions.json ├── DWM1000_Anchor │ ├── DW1000.cpp │ ├── DW1000.h │ ├── DW1000CompileOptions.h │ ├── DW1000Constants.h │ ├── DW1000Device.cpp │ ├── DW1000Device.h │ ├── DW1000Mac.cpp │ ├── DW1000Mac.h │ ├── DW1000Ranging.cpp │ ├── DW1000Ranging.h │ ├── DW1000Time.cpp │ ├── DW1000Time.h │ ├── DWM1000_Anchor.ino │ ├── deprecated.h │ └── require_cpp11.h └── platformio.ini ├── positioning_tag ├── .gitignore ├── .vscode │ └── extensions.json ├── DWM1000_Tag │ ├── DW1000.cpp │ ├── DW1000.h │ ├── DW1000CompileOptions.h │ ├── DW1000Constants.h │ ├── DW1000Device.cpp │ ├── DW1000Device.h │ ├── DW1000Mac.cpp │ ├── DW1000Mac.h │ ├── DW1000Ranging.cpp │ ├── DW1000Ranging.h │ ├── DW1000Time.cpp │ ├── DW1000Time.h │ ├── DWM1000_Tag.ino │ ├── deprecated.h │ └── require_cpp11.h └── platformio.ini ├── rpi ├── Alphabot.Net │ ├── Alphabot.Net.Car │ │ ├── Alphabot.Net.Car.csproj │ │ ├── AlphabotCar.cs │ │ ├── Contracts │ │ │ ├── IAlphabotCar.cs │ │ │ ├── IPwmDevice.cs │ │ │ ├── ISpeedController.cs │ │ │ └── ISteeringMethod.cs │ │ ├── Devices │ │ │ ├── AlphabotSpeedController.cs │ │ │ ├── CollisionPreventionAssist.cs │ │ │ ├── DualGearMotor.cs │ │ │ ├── GearMotor.cs │ │ │ ├── PositioningSystem.cs │ │ │ ├── PwmDevice.cs │ │ │ └── SteeringStepper.cs │ │ ├── DummyCar.cs │ │ ├── RemoteCar.cs │ │ └── Steering │ │ │ ├── SteeringController.cs │ │ │ ├── SteeringMethod.cs │ │ │ ├── SteeringMethodAbsolutePosition.cs │ │ │ ├── SteeringMethodRelativePosition.cs │ │ │ └── TurnDirection.cs │ ├── Alphabot.Net.Cli │ │ ├── Alphabot.Net.Cli.csproj │ │ └── Program.cs │ ├── Alphabot.Net.Remote │ │ ├── Alphabot.Net.Remote.csproj │ │ ├── Commands │ │ │ ├── ActionCalibrateSteering.cs │ │ │ ├── ActionCenterSteering.cs │ │ │ ├── ActionSetCollisionPrevention.cs │ │ │ ├── ActionSetSpeed.cs │ │ │ ├── ActionSetSteeringMethod.cs │ │ │ ├── ActionTurn.cs │ │ │ └── AlphabotAction.cs │ │ ├── Contracts │ │ │ ├── IAlphabotAction.cs │ │ │ ├── IClientHandler.cs │ │ │ ├── IProtocolParser.cs │ │ │ ├── IService.cs │ │ │ ├── ISessionHandler.cs │ │ │ └── ITextRequestHandler.cs │ │ ├── Core │ │ │ ├── ActionExecutor.cs │ │ │ ├── BitProtocolParser.cs │ │ │ ├── ClientHandler.cs │ │ │ ├── ProtocolParser.cs │ │ │ ├── SessionHandler.cs │ │ │ ├── SystemHandler.cs │ │ │ └── ToggleSettings.cs │ │ └── TcpService.cs │ ├── Alphabot.Net.Shared │ │ ├── Alphabot.Net.Shared.csproj │ │ ├── Contracts │ │ │ ├── IAlphabotRequest.cs │ │ │ ├── IAlphabotResponse.cs │ │ │ ├── IServiceLogger.cs │ │ │ ├── ISocketReader.cs │ │ │ └── ISocketWriter.cs │ │ ├── Delegates.cs │ │ ├── Logger │ │ │ ├── ConsoleLogger.cs │ │ │ ├── LogLevel.cs │ │ │ └── ServiceLogger.cs │ │ ├── Models │ │ │ └── Position.cs │ │ ├── Prefs │ │ │ ├── DeviceSettings.cs │ │ │ ├── Prefs.cs │ │ │ └── ServiceSettings.cs │ │ ├── Requests │ │ │ ├── CalibrateSteeringRequest.cs │ │ │ ├── ConfigurePositioningAnchorRequest.cs │ │ │ ├── PingRequest.cs │ │ │ ├── SpeedSteerRequest.cs │ │ │ └── ToggleRequest.cs │ │ ├── Responses │ │ │ ├── ErrorResponse.cs │ │ │ ├── PingResponse.cs │ │ │ ├── PositioningResponse.cs │ │ │ └── ToggleResponse.cs │ │ ├── SocketReader.cs │ │ ├── SocketWriter.cs │ │ └── TcpConnectionLostException.cs │ ├── Alphabot.Net.sln │ ├── Iot.Device.Bindings.dll │ ├── Microsoft.Extensions.Logging.Abstractions.dll │ ├── Microsoft.Win32.SystemEvents.dll │ ├── SixLabors.ImageSharp.dll │ ├── System.CodeDom.dll │ ├── System.Device.Gpio.dll │ ├── System.Drawing.Common.dll │ ├── System.IO.Ports.dll │ ├── System.Management.dll │ └── UnitsNet.dll └── sd_image │ ├── alphabot_defconfig │ ├── bcm2835-gpiomem │ ├── Makefile │ └── bcm2835-gpiomem.c │ ├── brcm-firmware │ ├── brcmfmac43430-sdio.raspberrypi,3-model-b.txt │ ├── brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt │ └── brcmfmac43455-sdio.raspberrypi,4-model-b.txt │ ├── build.sh │ ├── build_in_container.sh │ ├── clean.sh │ ├── kernel-patches │ ├── class.h.patch │ ├── dir.c.patch │ └── gpiolib-sysfs.c.patch │ ├── raspi4-firmware │ ├── fixup4.dat │ ├── fixup4cd.dat │ ├── fixup4db.dat │ ├── fixup4x.dat │ ├── start4.elf │ ├── start4cd.elf │ ├── start4db.elf │ └── start4x.elf │ └── rootfs │ ├── boot │ └── firmware │ │ └── sysconf.txt │ ├── etc │ ├── dnsmasq.conf │ ├── fstab │ ├── hostapd │ │ └── hostapd.conf │ ├── initramfs-tools │ │ ├── hooks │ │ │ ├── fix_brcm_missing_firmware │ │ │ └── rpi-resizerootfs │ │ └── scripts │ │ │ └── local-bottom │ │ │ └── rpi-resizerootfs │ ├── network │ │ └── interfaces.d │ │ │ ├── eth0 │ │ │ ├── usb0 │ │ │ └── wlan0 │ └── systemd │ │ ├── journald.conf │ │ └── system │ │ ├── alphabot-dotnet.service │ │ ├── rpi-generate-ssh-host-keys.service │ │ ├── rpi-reconfigure-raspi-firmware.service │ │ ├── rpi-set-sysconf.service │ │ └── set-wlan-ip-addr.service │ └── usr │ └── local │ └── sbin │ └── rpi-set-sysconf └── stl ├── dwm1000.anchor.adapter.board.mount.stl ├── stand └── alphabot.stand.V3.stl └── vehicle ├── addon ├── bumper.hc-sr04.front.V3.stl ├── bumper.lidar.front.stl ├── bumper.lidar.holder.stl ├── cable.stop.top.stl ├── dwm1000.tag.adapter.board.mount.stl ├── gy-271.holder.stl ├── hc-sr04.holder.stl ├── hc-sr04.square.top.mount.single.stl ├── raised.holder.stl ├── wheel.encoder.stl ├── wing.holder.V4.hc-sr04.stl ├── wing.holder.V5.50mm.stl └── wingv4.stl ├── base ├── alphabot.4Wheel.base.Top.V8.raspi.no.powerbank.stl ├── alphabot.4Wheel.base.Top.esp32.stl ├── alphabot.4Wheel.base.suspension.V6.stl └── frontwheel.suspension.distance.stl ├── steering ├── steering.axle.stl ├── steering.stepper.pin.stl ├── steering.stepper.pin.xl.stl ├── suspension.left.V4.stl └── suspension.right.V4.stl └── wheel ├── rim.62mm.back.bearing.cage.V2.stl ├── rim.62mm.front.bearing.cage.V2.stl ├── rim.62mm.front.nut.stl ├── rim.axle.back.l.stl ├── rim.axle.back.m.stl ├── rim.axle.back.stl ├── rim.axle.back.xl.stl ├── rim.back.62mm.V2.stl ├── rim.front.62mm.V2.stl └── tire.base.62.78.stl /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__/ 2 | rpi/sd_image/initrd.img 3 | rpi/sd_image/raspi_alphabot.img 4 | rpi/sd_image/vmlinuz-*-arm64 5 | rpi/sd_image/bcm2*-rpi-*.dtb 6 | .vs 7 | [Bb]in/ 8 | [Oo]bj/ 9 | .gradle/ 10 | *.iml 11 | .idea/ 12 | build/ 13 | clients/AlphabotAndroidClient/local.properties 14 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "qemu_rpi"] 2 | path = qemu_rpi 3 | url = https://github.com/Filiprogrammer/qemu_rpi.git 4 | -------------------------------------------------------------------------------- /clients/AlphabotAndroidClient/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 26 5 | defaultConfig { 6 | applicationId "at.mg6.filip.alphabotandroidclient" 7 | minSdkVersion 21 8 | targetSdkVersion 26 9 | versionCode 1 10 | versionName "1.0" 11 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 12 | } 13 | buildTypes { 14 | release { 15 | minifyEnabled false 16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 17 | } 18 | } 19 | } 20 | 21 | dependencies { 22 | implementation fileTree(dir: 'libs', include: ['*.jar']) 23 | implementation 'com.android.support:appcompat-v7:26.1.0' 24 | implementation 'com.android.support.constraint:constraint-layout:1.1.2' 25 | implementation 'com.android.support:support-v4:26.1.0' 26 | implementation 'com.android.support:design:26.1.0' 27 | testImplementation 'junit:junit:4.12' 28 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 29 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 30 | } 31 | -------------------------------------------------------------------------------- /clients/AlphabotAndroidClient/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /clients/AlphabotAndroidClient/app/src/main/java/at/mg6/filip/alphabotandroidclient/BluetoothLeServiceListener.java: -------------------------------------------------------------------------------- 1 | package at.mg6.filip.alphabotandroidclient; 2 | 3 | import android.bluetooth.BluetoothGattCharacteristic; 4 | 5 | public interface BluetoothLeServiceListener { 6 | void onCharacteristicChanged(BluetoothGattCharacteristic characteristic); 7 | void onCharacteristicWrite(BluetoothGattCharacteristic characteristic); 8 | void onDisconnect(); 9 | } 10 | -------------------------------------------------------------------------------- /clients/AlphabotAndroidClient/app/src/main/java/at/mg6/filip/alphabotandroidclient/ImmersiveActivity.java: -------------------------------------------------------------------------------- 1 | package at.mg6.filip.alphabotandroidclient; 2 | 3 | import android.support.v7.app.AppCompatActivity; 4 | import android.view.View; 5 | 6 | public class ImmersiveActivity extends AppCompatActivity { 7 | @Override 8 | protected void onResume() { 9 | super.onResume(); 10 | enableImmersiveMode(); 11 | } 12 | 13 | protected void enableImmersiveMode() { 14 | getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /clients/AlphabotAndroidClient/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 25 | 26 |