Skip to content
This repository has been archived by the owner on Oct 17, 2024. It is now read-only.
/ argo-jcm Public archive

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

License

Notifications You must be signed in to change notification settings

chon-group/argo-jcm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 

Repository files navigation

Argo for JaCaMo

In this tutorial you will learn how to import the Argo BDI-agent Architecture in a JaCaMo project and execute a Blink Project (hello world).

Dependencies:

  1. JaCaMo Framework already installed.

  2. An IoT device using a serial communication channel, programmed using the Javino Blink Example.

    Arduino SimulIDE
    Blink tutorial with Arduino Board Blink tutorial with SimulIDE

Instructions:

  1. In a terminal command, create a Multiagent System Project, using the command below:

    jacamo app create jacamoWithArgo --console
    
  2. Include the Argo Package in the JaCaMo Project. Edit the project file jacamoWithArgo/jacamoWithArgo.jcm as follows:

    mas jacamoWithArgo {
    	agent bob: sample_agent.asl {
    	ag-arch: jason.Argo
    	}
    	uses package: argo "com.github.chon-group:Argo:+"
    }
    
  3. Change the file jacamoWithArgo/src/agt/sample_agent.asl including the content below:

    /* Initial beliefs and rules */
    serialPort(ttyACM0).            /* physical Arduino Board in /dev/ttyACM0  */
    //serialPort(ttyUSB0).          /* physical Arduino Board in /dev/ttyUSB0  */
    //serialPort(ttyEmulatedPort0). /* simulated arduino with simulIDE         */
    
    /* 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!").
    
    
  4. Execute the Multiagent System

    jacamo jacamoWithArgo/jacamoWithArgo.mas2j
    

The expected output:

Examples and Others

See the Argo Wiki Page

COPYRIGHT

Creative Commons License
The Argo Jacamo Package 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:

Lazarin, N.M., Pantoja, C.E., Viterbo, J. (2024). Dealing with the Unpredictability of Physical Resources in Real-World Multi-agent Systems. In: Rocha, A.P., Steels, L., van den Herik, J. (eds) Agents and Artificial Intelligence. ICAART 2023. Lecture Notes in Computer Science(), vol 14546. Springer, Cham. https://doi.org/10.1007/978-3-031-55326-4_3

BibTeX Citation
@InProceedings{argoJCMPackage,
	doi="10.1007/978-3-031-55326-4_3"
	author="Lazarin, Nilson Mori
	and Pantoja, Carlos Eduardo
	and Viterbo, Jos{\'e}",
	editor="Rocha, Ana Paula
	and Steels, Luc
	and van den Herik, Jaap",
	title="Dealing with the Unpredictability of Physical Resources in Real-World Multi-agent Systems",
	booktitle="Agents and Artificial Intelligence",
	year="2024",
	publisher="Springer Nature Switzerland",
	address="Cham",
	pages="48--71",
	isbn="978-3-031-55326-4"
}

About

Argo for JaCaMo 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

Releases

No releases published

Packages

No packages published