Below is the code of the ARK system
Code: Select all
#include "trajectory_loop_functions.h"
/****************************************/
/****************************************/
CTrajectoryLoopFunctions::CTrajectoryLoopFunctions():
m_unDataAcquisitionFrequency(10){
}
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::Init(TConfigurationNode& t_node) {
/* Initialize ALF*/
CALF::Init(t_node);
/* Other initializations: Varibales, Log file opening... */
// Open a log file
m_cOutput.open(m_strOutputFileName, std::ios_base::trunc | std::ios_base::out);
}
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::Reset() {
/* Close data file */
m_cOutput.close();
/* Reopen the file, erasing its contents */
m_cOutput.open(m_strOutputFileName, std::ios_base::trunc | std::ios_base::out);
}
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::Destroy() {
/* Close data file */
m_cOutput.close();
}
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::PostStep(){
/* Log experiment's results*/
if(((UInt16)m_fTimeInSeconds%m_unDataAcquisitionFrequency==0)&&((m_fTimeInSeconds-(UInt16)m_fTimeInSeconds)==0)){
m_cOutput << (UInt16) m_fTimeInSeconds << '\t';
UInt16 unKilobotID;
CVector2 cKilobotPosition;
for(UInt16 it=0;it< m_tKilobotEntities.size();it++){
unKilobotID=GetKilobotId(*m_tKilobotEntities[it]);
cKilobotPosition=GetKilobotPosition(*m_tKilobotEntities[it]);
m_cOutput << unKilobotID << '\t' << cKilobotPosition.GetX() << '\t' << cKilobotPosition.GetY() << '\t' << (UInt16)m_vecHasFood[unKilobotID] << '\t';
}
m_cOutput << std::endl;
}
}
/****************************************/
/****************************************/
/****************************************/
/****************************************/
/****************************************/
/****************************************/
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::GetExperimentVariables(TConfigurationNode& t_tree){
/* Get the experiment variables node from the .argos file */
TConfigurationNode& tExperimentVariablesNode = GetNode(t_tree,"variables");
/* Get Gradient field radius */
GetNodeAttribute(tExperimentVariablesNode, "gradientfieldradius", m_fGradientFieldRadius);
/* Get Gradient field color */
GetNodeAttribute(tExperimentVariablesNode, "gradientfieldcolor", m_cGradientFieldColor);
/* Get the output datafile name and open it */
GetNodeAttribute(tExperimentVariablesNode, "datafilename", m_strOutputFileName);
/* Get the frequency of data saving */
GetNodeAttributeOrDefault(tExperimentVariablesNode, "dataacquisitionfrequency", m_unDataAcquisitionFrequency, m_unDataAcquisitionFrequency);
/* Get the frequency of updating the environment plot */
GetNodeAttributeOrDefault(tExperimentVariablesNode, "m_unEnvironmentPlotUpdateFrequency", m_unEnvironmentPlotUpdateFrequency, m_unEnvironmentPlotUpdateFrequency);
/* Get the time for one kilobot message */
GetNodeAttributeOrDefault(tExperimentVariablesNode, "timeforonemessage", m_fTimeForAMessage, m_fTimeForAMessage);
}
/****************************************/
/****************************************/
void CTrajectoryLoopFunctions::UpdateKilobotState(CKilobotEntity &c_kilobot_entity){
UInt16 unKilobotID=GetKilobotId(c_kilobot_entity);
CVector2 vecKilobotPosition=GetKilobotPosition(c_kilobot_entity);
CColor cKilobotColor=GetKilobotLedColor(c_kilobot_entity);
if (cKilobotColor == CColor::BLUE){
}
}
/****************************************/
/****************************************/
/****************************************/
/****************************************/
REGISTER_LOOP_FUNCTIONS(CTrajectoryLoopFunctions, "trajectory_loop_functions")
Below is the code of the ARK system library
Code: Select all
#ifndef TRAJECTORY_LOOP_FUNCTIONS_H
#define TRAJECTORY_LOOP_FUNCTIONS_H
namespace argos {
class CSpace;
class CFloorEntity;
class CSimulator;
}
#include <math.h>
#include <argos3/core/simulator/loop_functions.h>
#include <argos3/plugins/robots/kilobot/simulator/ALF.h>
#include <argos3/core/simulator/simulator.h>
#include <argos3/core/simulator/physics_engine/physics_engine.h>
#include <argos3/core/utility/math/vector3.h>
#include <argos3/core/utility/math/vector2.h>
#include <argos3/core/utility/math/ray2.h>
#include <argos3/core/utility/math/quaternion.h>
#include <argos3/core/utility/math/rng.h>
#include <argos3/core/utility/logging/argos_log.h>
#include <argos3/core/simulator/entity/embodied_entity.h>
#include <argos3/core/simulator/entity/composable_entity.h>
#include <argos3/plugins/simulator/entities/led_equipped_entity.h>
#include <argos3/core/simulator/entity/floor_entity.h>
#include <argos3/plugins/robots/kilobot/simulator/kilobot_communication_entity.h>
#include <argos3/plugins/robots/kilobot/simulator/kilobot_communication_medium.h>
#include <argos3/plugins/robots/kilobot/simulator/kilobot_communication_default_actuator.h>
//kilobot messaging
#include <argos3/plugins/robots/kilobot/control_interface/kilolib.h>
#include <argos3/plugins/robots/kilobot/control_interface/message_crc.h>
#include <argos3/plugins/robots/kilobot/control_interface/message.h>
#include <array>
using namespace argos;
class CTrajectoryLoopFunctions : public CLoopFunctions
{
public:
CTrajectoryLoopFunctions();
virtual ~CTrajectoryLoopFunctions(){}
virtual void Init(TConfigurationNode& t_tree);
virtual void Reset();
virtual void Destroy();
virtual void PostStep();
/** Get a Vector of all the Kilobots in the space */
void GetKilobotsEntities();
/** Setup the initial state of the Kilobots in the space */
void SetupInitialKilobotStates();
/** Setup the initial state of the kilobot pc_kilobot_entity */
void SetupInitialKilobotState(CKilobotEntity& c_kilobot_entity);
/** Setup virtual environment */
void SetupVirtualEnvironments(TConfigurationNode& t_tree);
/** Get experiment variables */
void GetExperimentVariables(TConfigurationNode& t_tree);
/** Get the message to send to a Kilobot according to its position */
void UpdateKilobotState(CKilobotEntity& c_kilobot_entity);
/** Get the message to send to a Kilobot according to its position */
void UpdateVirtualSensor(CKilobotEntity& c_kilobot_entity);
/** Used to plot the Virtual environment on the floor */
virtual CColor GetFloorColor(const CVector2& vec_position_on_plane);
private:
/************************************/
/* Virtual Environment variables */
/************************************/
/** virtual environment types*/
enum EAreaType {
HOME = 0,
FOOD = 1
};
/** virtual environment struct*/
struct SVirtualArea
{
EAreaType EnvType;
CVector2 GoalLocation;
Real GoalSize;
SInt16 UpperBoundVS=13;
CColor Color;
Real MinTimeBetweenTwoMsg;
std::vector < Real > LastSent;
std::vector < bool > SignalSwap;
};
/** Virtual environments (one food area and one home area in this example) */
SVirtualArea m_sFoodEnv={FOOD};
SVirtualArea m_sHomeEnv={HOME};
/***********************************/
/* Experiment variables */
/***********************************/
/** Virtual robots' states*/
std::vector < bool > m_vecHasFood;
std::vector <SVirtualArea*> m_vecKilobotsEnvironment;
/** Gradient field radius */
Real m_fGradientFieldRadius;
/** Gradiant field color*/
CColor m_cGradientFieldColor;
/** output file for data acquizition */
std::ofstream m_cOutput;
/** output file name*/
std::string m_strOutputFileName;
/** data acquisition frequency in ticks */
UInt16 m_unDataAcquisitionFrequency;
};
#endif
Below is the error message when I run the make command
Code: Select all
antonio@antonio-Lenovo-V110-15AST:~/Desktop/argos3-kilobot-master/build$ make
[ 1%] Automatic MOC for target argos3plugin_simulator_kilolib
[ 1%] Built target argos3plugin_simulator_kilolib_autogen
[ 5%] Built target argos3plugin_simulator_kilolib
[ 6%] Automatic MOC for target argos3plugin_simulator_kilobot
[ 6%] Built target argos3plugin_simulator_kilobot_autogen
[ 23%] Built target argos3plugin_simulator_kilobot
[ 25%] Automatic MOC for target kilobot_diffusion
[ 25%] Built target kilobot_diffusion_autogen
[ 28%] Built target kilobot_diffusion
[ 29%] Automatic MOC for target kilobot_phototaxis
[ 29%] Built target kilobot_phototaxis_autogen
[ 32%] Built target kilobot_phototaxis
[ 33%] Automatic MOC for target orbit_star
[ 33%] Built target orbit_star_autogen
[ 36%] Built target orbit_star
[ 37%] Automatic MOC for target test_speaker_mod
[ 37%] Built target test_speaker_mod_autogen
[ 40%] Built target test_speaker_mod
[ 41%] Automatic MOC for target move_to_light
[ 41%] Built target move_to_light_autogen
[ 44%] Built target move_to_light
[ 45%] Automatic MOC for target simple_movement
[ 45%] Built target simple_movement_autogen
[ 48%] Built target simple_movement
[ 50%] Automatic MOC for target gradient_simple
[ 50%] Built target gradient_simple_autogen
[ 53%] Built target gradient_simple
[ 54%] Automatic MOC for target test_listener
[ 54%] Built target test_listener_autogen
[ 57%] Built target test_listener
[ 58%] Automatic MOC for target blinky
[ 58%] Built target blinky_autogen
[ 61%] Built target blinky
[ 62%] Automatic MOC for target test_speaker
[ 62%] Built target test_speaker_autogen
[ 65%] Built target test_speaker
[ 66%] Automatic MOC for target nonblocked_movement
[ 66%] Built target nonblocked_movement_autogen
[ 69%] Built target nonblocked_movement
[ 70%] Automatic MOC for target test_listener_mod
[ 70%] Built target test_listener_mod_autogen
[ 73%] Built target test_listener_mod
[ 75%] Automatic MOC for target disperse
[ 75%] Built target disperse_autogen
[ 78%] Built target disperse
[ 79%] Automatic MOC for target orbit_planet
[ 79%] Built target orbit_planet_autogen
[ 82%] Built target orbit_planet
[ 83%] Automatic MOC for target sync
[ 83%] Built target sync_autogen
[ 86%] Built target sync
[ 87%] Automatic MOC for target test_debug
[ 87%] Built target test_debug_autogen
[ 90%] Built target test_debug
[ 91%] Automatic MOC for target debug_loop_functions
[ 91%] Built target debug_loop_functions_autogen
[ 94%] Built target debug_loop_functions
[ 95%] Automatic MOC for target trajectory_loop_functions
[ 95%] Built target trajectory_loop_functions_autogen
Scanning dependencies of target trajectory_loop_functions
[ 96%] Building CXX object examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/trajectory_loop_functions.cpp.o
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp: In member function ‘virtual void CTrajectoryLoopFunctions::Init(argos::TConfigurationNode&)’:
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:16:22: error: cannot call member function ‘virtual void CALF::Init(argos::TConfigurationNode&)’ without object
CALF::Init(t_node);
^
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp: In member function ‘virtual void CTrajectoryLoopFunctions::PostStep()’:
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:45:17: error: ‘m_fTimeInSeconds’ was not declared in this scope
if(((UInt16)m_fTimeInSeconds%m_unDataAcquisitionFrequency==0)&&((m_fTimeInSeconds-(UInt16)m_fTimeInSeconds)==0)){
^~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:49:29: error: ‘m_tKilobotEntities’ was not declared in this scope
for(UInt16 it=0;it< m_tKilobotEntities.size();it++){
^~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:49:29: note: suggested alternative: ‘GetKilobotsEntities’
for(UInt16 it=0;it< m_tKilobotEntities.size();it++){
^~~~~~~~~~~~~~~~~~
GetKilobotsEntities
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:50:25: error: ‘GetKilobotId’ was not declared in this scope
unKilobotID=GetKilobotId(*m_tKilobotEntities[it]);
^~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:50:25: note: suggested alternative: ‘unKilobotID’
unKilobotID=GetKilobotId(*m_tKilobotEntities[it]);
^~~~~~~~~~~~
unKilobotID
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:51:30: error: ‘GetKilobotPosition’ was not declared in this scope
cKilobotPosition=GetKilobotPosition(*m_tKilobotEntities[it]);
^~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:51:30: note: suggested alternative: ‘cKilobotPosition’
cKilobotPosition=GetKilobotPosition(*m_tKilobotEntities[it]);
^~~~~~~~~~~~~~~~~~
cKilobotPosition
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp: In member function ‘void CTrajectoryLoopFunctions::GetExperimentVariables(argos::TConfigurationNode&)’:
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:79:95: error: ‘m_unEnvironmentPlotUpdateFrequency’ was not declared in this scope
GetNodeAttributeOrDefault(tExperimentVariablesNode, "m_unEnvironmentPlotUpdateFrequency", m_unEnvironmentPlotUpdateFrequency, m_unEnvironmentPlotUpdateFrequency);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:81:78: error: ‘m_fTimeForAMessage’ was not declared in this scope
GetNodeAttributeOrDefault(tExperimentVariablesNode, "timeforonemessage", m_fTimeForAMessage, m_fTimeForAMessage);
^~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp: In member function ‘void CTrajectoryLoopFunctions::UpdateKilobotState(argos::CKilobotEntity&)’:
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:88:23: error: ‘GetKilobotId’ was not declared in this scope
UInt16 unKilobotID=GetKilobotId(c_kilobot_entity);
^~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:88:23: note: suggested alternative: ‘unKilobotID’
UInt16 unKilobotID=GetKilobotId(c_kilobot_entity);
^~~~~~~~~~~~
unKilobotID
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:89:32: error: ‘GetKilobotPosition’ was not declared in this scope
CVector2 vecKilobotPosition=GetKilobotPosition(c_kilobot_entity);
^~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:89:32: note: suggested alternative: ‘vecKilobotPosition’
CVector2 vecKilobotPosition=GetKilobotPosition(c_kilobot_entity);
^~~~~~~~~~~~~~~~~~
vecKilobotPosition
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:90:25: error: ‘GetKilobotLedColor’ was not declared in this scope
CColor cKilobotColor=GetKilobotLedColor(c_kilobot_entity);
^~~~~~~~~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:90:25: note: suggested alternative: ‘cKilobotColor’
CColor cKilobotColor=GetKilobotLedColor(c_kilobot_entity);
^~~~~~~~~~~~~~~~~~
cKilobotColor
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:88:11: warning: unused variable ‘unKilobotID’ [-Wunused-variable]
UInt16 unKilobotID=GetKilobotId(c_kilobot_entity);
^~~~~~~~~~~
/home/antonio/Desktop/argos3-kilobot-master/src/examples/loop_functions/trajectory_loop_functions/trajectory_loop_functions.cpp:89:13: warning: unused variable ‘vecKilobotPosition’ [-Wunused-variable]
CVector2 vecKilobotPosition=GetKilobotPosition(c_kilobot_entity);
^~~~~~~~~~~~~~~~~~
examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/build.make:62: recipe for target 'examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/trajectory_loop_functions.cpp.o' failed
make[2]: *** [examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/trajectory_loop_functions.cpp.o] Error 1
CMakeFiles/Makefile2:1654: recipe for target 'examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/all' failed
make[1]: *** [examples/loop_functions/trajectory_loop_functions/CMakeFiles/trajectory_loop_functions.dir/all] Error 2
Makefile:151: recipe for target 'all' failed
make: *** [all] Error 2
antonio@antonio-Lenovo-V110-15AST:~/Desktop/argos3-kilobot-master/build$