# ORB_SLAM3 data processor and the networking pipeline.



## Prerequisites
1. Install cmake: https://cmake.org/download/
2. Install Gstreamer. Download and follow the instructions guideline from DriveCast. Follow the rules of installation STRICTLY.
3. Install OSCPack_1_1_0: http://www.rossbencina.com/code/oscpack
4. Install vcpkg: https://vcpkg.io/en/getting-started.html
5. Install Visual Studio 2019. Install the version of Windows SDK 10.0.20348.0
6. Download and build Prerequisites for the changed ORB_SLAM3 library and the ORB_SLAM3 library itself from here:

## Build OscPack:
1. In the extracted folder: `mkdir build && cd build`
2. `cmake ..`
3. Open `TestOscPack.sln` project in Visual Studio. Edit Preferences ONLY of oscpack. Change buld type to `Release`
4. Change: General -> Configuration Type -> Static Library (.lib)
5. Also: Advanced -> Target File Extension -> .lib
6. Build oscpack, OscReceiveTest, SimpleReceive, SimpleSend, OscSendTests

## Build ORB_SLAM3
 - Instructions are here: https://git.drivecast.tech/PodmogilnyjIvan/ORB_SLAM3  
 - Save the path to your `vcpkg.cmake` file, you'll need it later.  
 - Don't forget to write `vcpkg integrate all` to use vcpkg in Visual Studio projects.

## Build MyGst
1. In `CMakeLists.txt` file
   - Under `OSC BEGIN` section define your `OSC_DIR`
   - Under `ORB_SLAM3 BEGIN` section define directories for all of the libraries mentioned in the file.
   - Under `OpenCV BEGIN` section in `set(OpenCV_DIR XXX)` instead of XXX define your directory.


 2. `mkdir build && cd build`
 3. `cmake -DCMAKE_TOOLCHAIN_FILE=C:/Users/ivan/Source/Repos/ORB_SLAM3/Thirdparty/Pangolin/vcpkg/scripts/buildsystems/vcpkg.cmake ..` Instead of my path, you have to paste your path to `vcpkg.cmake`
 4. Open Visual Studio 16 2019 with Administrative (IMPORTANT!) privilege and open the project
 5. For `gst_get_ndi` project: Preferences -> Linker -> Input -> Additional Dependencies. Delete Release/ORB_SLAM3.lib if you see this.
 6. You need to build `gst_get_ndi` and `my_ndi_source` projects. Before building, edit the Preferences of these two projects...
    - C/C++ -> Code Generation -> Runtime Library -> MT
    - The path `Boost_DIR/stage/lib` paste to Linker -> General -> Additional Library Directories

7. Change Preferences of oscpack project:
   - C/C++ -> Code Generation -> Runtime Library -> MT
8. Build `gst_get_ndi` and `my_ndi_source`

## Running
Along with the library, .cmd and .bat scripts are provided. Put them in the `Project_DIR/build/Release` directory. Project_DIR stands for the MyGst project itself.

1. In cmd 1, in `oscpack_DIR/build/Release` directory: run `OscReceiveTest.exe`
2. In cmd 2, in the `Project_DIR/build/Release` directory: run `set-env.bat`, then Run `run_source.cmd`
3. In cmd 3, in the `Project_DIR/build/Release` directory: run `set-env.bat`, then Run `run_gst_loopthrough_capture.cmd`

You should now be able to see RoboRace video, and in cmd_1 you should be able to see the receiving of the processed data.
