Skip to content

chon-group/argo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Argo

Argo is a customized agent architecture built on the Jason framework that extends Jason’s standard agents by adding the ability to control microcontrollers. Argo agents interact with the physical environment, capturing information from the environment using sensors and acting by sending commands to the microcontroller to activate the actuators. Sensors’ information is automatically processed as perceptions in the agent’s belief base.

Using ARGO with JaCaMo

Creating Hello Argo with Jason Framework

Dependencies

First, you need to deploy the Javino Blink example on your Arduino Board. Follow the steps below:

  • Download the latest Javino Library.
  • Import the library into your Arduino IDE.
  • Create a new project with the Javino Blink example. arduino
  • Deploy the code on your Arduino Board.

Creating the Jason Project

To install Jason-CLI follow these instructions: Jason-CLI Installation.

In a terminal, execute the following command:

jason app create helloArgo --console

Including the Argo Package in the Jason Project

Download the Argo .jar into lib folder as folows:

wget https://github.com/chon-group/argo/raw/master/out/argo.jar -P helloArgo/lib/

Edit the project file helloArgo/helloArgo.mas2j as follows:

MAS helloArgo {
    agents: bob agentArchClass jason.Argo;
    aslSourcePath: "src/agt";
}

Edit the agent file helloArgo/src/agt/bob.asl as follows:

/* Initial beliefs and rules */
serialPort(ttyACM0).

/* Initial goals */
!start.

/* Plans */
+!start:
serialPort(Port) <- 
	.print("Ah, Mr. Anderson, I see you are as predictable in this world as you are in the other.");
	argo.port(Port);
	argo.percepts(open).

+ledStatus(on) <-
	.print("Turning ON  the Led in Arduino!");
	argo.act(ledOff).

+ledStatus(off) <-
	.print("Turning OFF the Led in Arduino!");
	argo.act(ledOn).

+port(Port,Status):
Status = off | Status = timeout <-
	argo.percepts(close);
	.print("It's not over, Mr. Anderson! It's not over!").

Running

sudo chmod 777 /dev/ttyACM0
jason helloArgo/helloArgo.mas2j

argoJason

COPYRIGHT

Creative Commons License
Argo is licensed under a Creative Commons Attribution 4.0 International License. The licensor cannot revoke these freedoms as long as you follow the license terms:

  • Attribution — You must give appropriate credit like below:

Pantoja, C.E., Stabile, M.F., Lazarin, N.M., Sichman, J.S. (2016). ARGO: An Extended Jason Architecture that Facilitates Embedded Robotic Agents Programming. In: Baldoni, M., Müller, J., Nunes, I., Zalila-Wenkstern, R. (eds) Engineering Multi-Agent Systems. EMAS 2016. Lecture Notes in Computer Science(), vol 10093. Springer, Cham. https://doi.org/10.1007/978-3-319-50983-9_8

@InProceedings{10.1007/978-3-319-50983-9_8,
	author="Pantoja, Carlos Eduardo and Stabile, M{\'a}rcio Fernando and Lazarin, Nilson Mori and Sichman, Jaime Sim{\~a}o",
	editor="Baldoni, Matteo and M{\"u}ller, J{\"o}rg P. and Nunes, Ingrid and Zalila-Wenkstern, Rym",
	title="{ARGO: An Extended Jason Architecture that Facilitates Embedded Robotic Agents Programming}",
	booktitle="Engineering Multi-Agent Systems",
	year="2016",
	publisher="Springer International Publishing",
	address="Cham",
	pages="136--155",
	isbn="978-3-319-50983-9"
}

EXTRA

Some papers that have used Argo agents to control Arduino microcontrollers

About

Argo provides a customized agent architecture that extends standard agents by adding the ability to control microcontrollers (Arduino) using Javino.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages