feat: send offsets to server

This commit is contained in:
ysandler 2021-01-22 19:09:01 -06:00 committed by Joshua Shoemaker
parent 2bb8ac647c
commit be6efeddcf
9 changed files with 133 additions and 6451 deletions

4
dist/Vision/main.js vendored

File diff suppressed because one or more lines are too long

6527
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -13,11 +13,13 @@
"@tensorflow-models/coco-ssd": "^2.2.1",
"@tensorflow/tfjs": "^2.8.2",
"express": "^4.17.1",
"socket.io": "^3.1.0"
"socket.io": "^3.1.0",
"socket.io-client": "^3.1.0"
},
"devDependencies": {
"@types/express": "^4.17.11",
"@types/socket.io": "^2.1.12",
"@types/socket.io-client": "^1.4.35",
"ts-loader": "^8.0.13",
"typescript": "^4.1.3",
"webpack": "^5.11.1",

View File

@ -50,16 +50,17 @@ class Server {
}
openSockets = (socketService: any) => {
socketService.on('connection', () => {
socketService.on('connection', (socket: Socket) => {
console.log('client connected')
socket.on('offsets', (offsets: any) => {
this.onReceiveOffsets(offsets)
})
})
socketService.on('message', (message: any) => {
console.log(message)
})
}
public onReceiveOffsets = (offsets: any[]) => {
onReceiveOffsets = (offsets: any[]) => {
this.eventManager.emit('onReceiveOffsets', offsets)
}

View File

@ -0,0 +1,7 @@
import IOffset from "./IOffset";
interface IRoboticsCommunicator {
sendOffsets(offsets: IOffset[]): void
}
export default IRoboticsCommunicator

View File

@ -3,7 +3,7 @@ import ObjectDetector from "../ObjectDetector"
const defaultPredictions = [
(prediction: DetectedObject) => prediction.score > 0.6,
(prediction: DetectedObject) => prediction.class === 'person',
(prediction: DetectedObject) => prediction.class === 'cat',
]
function makeObjectDetector (filterPredicates?: Function[]): ObjectDetector {

View File

@ -0,0 +1,8 @@
import RoboticsCommunicator from "../RoboticsCommunicator"
function makeRoboticsCommunicator () {
return new RoboticsCommunicator()
}
export default makeRoboticsCommunicator

View File

@ -0,0 +1,16 @@
import * as io from 'socket.io-client'
import IOffset from '../Interfaces/IOffset'
class RoboticsCommunicator {
socket: SocketIOClient.Socket
constructor () {
this.socket = io.connect()
}
sendOffsets = (offsets: IOffset[]) => {
this.socket.emit('offsets', offsets)
}
}
export default RoboticsCommunicator

View File

@ -1,6 +1,7 @@
import IObjectDetector from './Interfaces/IObjectDetector'
import IObjectLocator from './Interfaces/IObjectLocator'
import IOffset from './Interfaces/IOffset'
import IRoboticsCommunicator from './Interfaces/IRoboticsCommunicator'
import IUiRenderer from './Interfaces/IUiRenderer'
import IVideoCapturer from "./Interfaces/IVideoCapturer"
@ -8,17 +9,20 @@ import makeObjectDetector from './UseCases/Factories/makeObjectDetector'
import makeObjectLocator from './UseCases/Factories/makeObjectLocator'
import makeUiRenderer from './UseCases/Factories/makeUiRenderer'
import makeVideoCapturer from './UseCases/Factories/makeVideoCatpurer'
import makeRoboticsCommunicator from './UseCases/Factories/mkaeRoboticsCommunicator'
class App {
private objectDetector: IObjectDetector
private objectLocator: IObjectLocator
private videoCapturer: IVideoCapturer
private roboticsCommunicator: IRoboticsCommunicator
private uiRenderer: IUiRenderer
constructor () {
this.videoCapturer = makeVideoCapturer()
this.objectDetector = makeObjectDetector()
this.objectLocator = makeObjectLocator()
this.roboticsCommunicator = makeRoboticsCommunicator()
this.uiRenderer = makeUiRenderer()
const eventTarget = new EventTarget()
@ -36,6 +40,7 @@ class App {
const predictedObjects = await this.objectDetector.getPredictionsFromImageData(imageData)
const offsets: IOffset[] = predictedObjects.map(obj => this.objectLocator.getOffsetsFromPredictions(obj))
this.roboticsCommunicator.sendOffsets(offsets)
this.uiRenderer.render({ imageData, predictedObjects, offsets })
window.requestAnimationFrame(this.predictImage)