feat: added message for move

This commit is contained in:
2020-05-17 19:50:58 +02:00
parent 8b268ef48c
commit f9907ee650
5 changed files with 29 additions and 24 deletions

12
app.py
View File

@@ -46,10 +46,16 @@ def image_stream():
return ""
@sio.on("camera")
def camera_message(directions):
walle.set_movement(directions['angle'], directions['force'])
print(f"Moving camera in direction {directions['angle']:f} with velocity {directions['force']}")
@sio.on("move")
def message(directions):
walle.set_movement(directions['angle'], directions['distance'])
print(f"Moving in direction {directions['angle']:f} with velocity {directions['distance']}")
def move_message(directions):
walle.set_movement(directions['angle'], directions['force'])
print(f"Moving in direction {directions['angle']:f} with velocity {directions['force']}")
if __name__ == '__main__':

BIN
app.zip

Binary file not shown.

View File

@@ -30,12 +30,12 @@ export default {
window.document.body.requestFullscreen();
}
},
moveCamera({ distance, angle }) {
console.log({ action: 'camera', distance, angle });
moveCamera({ force, angle }) {
console.log({ action: 'camera', force, angle });
},
moveWalle({ distance, angle }) {
moveWalle({ force, angle }) {
this.$socket.emit('move', {
angle, distance,
force, angle,
});
// console.log({ action: 'walle', distance, angle });
},

View File

@@ -28,13 +28,13 @@ export default {
});
this.nipple.on('move', (evt, data) => {
this.$emit('move', {
distance: data.distance,
angle: data.angle.degree,
force: data.force,
angle: data.angle.radian,
});
});
this.nipple.on('end', () => {
this.$emit('move', {
distance: 0,
force: 0,
angle: 0,
});
});

View File

@@ -30,31 +30,30 @@ class WallE:
self.servo_controller = ServoController()
self.servo_controller.setup()
def set_movement(self, angle: float, distance: float):
if distance > 0:
distance = distance/50.0 # map 0 - 50 to 0 - 1
def set_movement(self, angle: float, force: float):
if force > 1:
force = 1.0
angle_rad = math.radians(angle)
cos_angle = math.cos(angle_rad)
sin_angle = math.sin(angle_rad)
cos_angle = math.cos(angle)
sin_angle = math.sin(angle)
velocity_l = 0
velocity_r = 0
if cos_angle > 0 and sin_angle > 0:
if cos_angle > sin_angle:
velocity_r = cos_angle * distance
velocity_l = sin_angle * distance
velocity_r = cos_angle * force
velocity_l = sin_angle * force
elif cos_angle < sin_angle:
velocity_r = sin_angle * distance
velocity_l = cos_angle * distance
velocity_r = sin_angle * force
velocity_l = cos_angle * force
elif cos_angle < 0 and sin_angle > 0:
if cos_angle < sin_angle:
velocity_r = 1 - sin_angle * distance
velocity_l = sin_angle * distance
velocity_r = 1 - sin_angle * force
velocity_l = sin_angle * force
elif cos_angle > abs(sin_angle):
velocity_r = sin_angle * distance
velocity_l = cos_angle * distance
velocity_r = sin_angle * force
velocity_l = cos_angle * force
else:
pass
self.motor_a.set(velocity_l)