GithubHelp home page GithubHelp logo

io-robot's Introduction

IO-Robot

Alan Badillo Salas

Introducción

IO-Robot es un proyecto para programar robots vía JSON. Cada json recibido representa un comando y sus parámetros, los cuales pueden variar dependiendo del comando. Cada que el robot recibe un json de entrada, intenta ejecutar los comandos descritos y devuelve un json como salida con la información sobre si pudo ejecutar el comando y el estado parcial que fue modificado.

Crear un comando

El robot inicialmente posee un conjunto dado de comandos, sin embargo, podemos reemplazar los comandos o crear nuevos comandos a través del comando create.

Los comandos creados deberán implementar las siguientes claves en el json, con el fin que el robot funcione correctamente.

Ejemplo del comando norm

{
	command: 'create',
	library: 'vector',
	name: "norm",
	params: [
		{
			name: 'vector',
			flag: 'v',
			type: 'vector'
		}
	]
	output: '$v.x * $v.x + $v.y * $v.y'
}

Ejemplo del comando normalize

{
	command: 'create',
	library: 'vector',
	name: "normalize",
	params: [
		{
			name: 'vector',
			flag: 'v',
			type: 'vector'
		}
	],
	process: 'var r = $v.x * $v.x + $v.y * $v.y',
	output: {
		x: '$v.x / r',
		y: '$v.y / r',
		z: '$v.z / r'
	}
}

Ejemplo del comando +

{
	command: 'create',
	library: 'vector',
	name: "sum",
	alias: "+",
	params: [
		{
			name: 'u',
			flag: 'u',
			type: 'vector'
		},
		{
			name: 'v',
			flag: 'v',
			type: 'vector'
		}
	],
	output: {
		x: '$u.x + $v.x',
		y: '$u.y + $v.y',
		z: '$u.z + $v.z'
	}
}

Ejemplo del comando angle

{
	command: 'create',
	library: 'vector',
	name: "angle",
	params: [
		{
			name: 'u',
			flag: 'u',
			type: 'vector'
		},
		{
			name: 'v',
			flag: 'v',
			type: 'vector'
		}
	],
	process: [
		'var un = $.normalize($u)',
		'var vn = $.normalize($v)',
		'var a = $.dot(un, vn)'
	],
	output: 'a'
}

Comandos

A continuación se describirá cada comando con sus parámetros y tipo de dato con el siguiente formato comando:id parametro|corto=valorDefecto@tipo ....

status flags|f@[string] - muestra el estado del robot en los flags habilitados.

Ejemplo

{
	command: 'status',
	flags: [
		'position',
		'angle',
		'world_angle',
		'dx',
		'all'
	]
}

move distance|d@number forward|fw=true@bool - mueve el robot la distancia especificada.

sensor limit|l=0@number - obtiene la distancia del sensor que apunta hacia donde se mueve el robot, el límite menor a cero significa infinito.

Comandos de la librería vector

La librería vector permite realizar operaciones entre vectores haciendo que el robot las compute y nos devuelva el resultado.

Para ejecutar un comando de la librería vector tenemos que añadirle la clave library a nuestro json con el valor ["vector"].

norm vector|v@vector - obtiene la norma euclidiana del vector.

normalize vector|v@vector - obtiene el vector unitario del vector.

angle u@vector v@vector - obtiene el ángulo entre dos vectores.

distance u@vector v={x:0,y:0}@vector - obtiene la distancia entre dos vectores.

+ u@vector v@vector - suma dos vectores.

- u@vector v@vector - resta dos vectores.

*** u@vector v@vector** - devuelve el producto interno entre dos vectores.

rotate vector|v@vector angle|a@number - rota el vector según el ángulo.

io-robot's People

Contributors

badillosoft avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.