From df09ae9dfe9bb2fc8fd5e08f02b6cad60eb44579 Mon Sep 17 00:00:00 2001 From: Miguel Angel Date: Tue, 21 Jun 2016 03:22:29 -0400 Subject: [PATCH] Added LICENSE notices. Separated robot definition from implementation. --- Makefile | 44 ++++++++++++++++++++++++++++++++++++-------- ant.cfg | 23 +++++++++++++++++++++++ ant.world | 23 +++++++++++++++++++++++ ant_bot.inc | 23 +++++++++++++++++++++++ ias_robot.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ ias_robot.hpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ ias_ss.cpp | 7 +++---- map.inc | 23 +++++++++++++++++++++++ robot.cpp | 25 ------------------------- robot.hpp | 19 ------------------- 10 files changed, 231 insertions(+), 56 deletions(-) create mode 100644 ias_robot.cpp create mode 100644 ias_robot.hpp diff --git a/Makefile b/Makefile index e5813cc..9921bd1 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,47 @@ +# Copyright (c) 2016, Miguel Angel Astor Romero +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + CXX = g++ TARGET = ias-ss -OBJECTS = ias_ss.o robot.o -CFLAGS = -ansi -pedantic -Wall -g `pkg-config --cflags playerc++` -g +OBJECTS = ias_ss.o robot.o ias_robot.o +DEPENDS = $(OBJECTS:.o=.d) +CXXFLAGS = -ansi -pedantic -Wall `pkg-config --cflags playerc++` LDLIBS = `pkg-config --libs playerc++` -lboost_system -lpthread +all: CXXFLAGS += -O2 -D_NDEBUG all: $(TARGET) -$(TARGET): $(OBJECTS) - $(CXX) $(CFLAGS) -o $(TARGET) $(OBJECTS) $(LDLIBS) +debug: CXXFLAGS += -g +debug: $(TARGET) --include $(OBJECTS:.o=.d) +$(TARGET): $(OBJECTS) + $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LDLIBS) + +-include $(DEPENDS) %.o: %.cpp - $(CXX) -c $(CFLAGS) $*.cpp -o $*.o - $(CXX) -MM $(CFLAGS) $*.cpp > $*.d + $(CXX) -c $(CXXFLAGS) $*.cpp -o $*.o + $(CXX) -MM $(CXXFLAGS) $*.cpp > $*.d clean: - $(RM) $(TARGET) $(OBJECTS) *.d + $(RM) $(TARGET) $(OBJECTS) $(DEPENDS) diff --git a/ant.cfg b/ant.cfg index 661c482..56bc848 100644 --- a/ant.cfg +++ b/ant.cfg @@ -1,3 +1,26 @@ +# Copyright (c) 2016, Miguel Angel Astor Romero +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + driver ( name "stage" diff --git a/ant.world b/ant.world index 572e548..ad8ec85 100644 --- a/ant.world +++ b/ant.world @@ -1,3 +1,26 @@ +# Copyright (c) 2016, Miguel Angel Astor Romero +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + include "map.inc" include "ant_bot.inc" diff --git a/ant_bot.inc b/ant_bot.inc index 54438a1..a061e8d 100644 --- a/ant_bot.inc +++ b/ant_bot.inc @@ -1,3 +1,26 @@ +# Copyright (c) 2016, Miguel Angel Astor Romero +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + define ant_sensor sensor ( size [0.01 0.05 0.01 ] diff --git a/ias_robot.cpp b/ias_robot.cpp new file mode 100644 index 0000000..d9a53c6 --- /dev/null +++ b/ias_robot.cpp @@ -0,0 +1,50 @@ +/************************************************************************************* + * Copyright (c) 2016, Miguel Angel Astor Romero * + * All rights reserved. * + * * + * Redistribution and use in source and binary forms, with or without * + * modification, are permitted provided that the following conditions are met: * + * * + * 1. Redistributions of source code must retain the above copyright notice, this * + * list of conditions and the following disclaimer. * + * 2. Redistributions in binary form must reproduce the above copyright notice, * + * this list of conditions and the following disclaimer in the documentation * + * and/or other materials provided with the distribution. * + * * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * + *************************************************************************************/ + +#include "ias_robot.hpp" + +IASSS_Robot::IASSS_Robot(std::string hostname, uint32_t port) : Robot(hostname, port) { + std::cout << "Creating IAS-SS robot on host \"" << hostname << "\" and port " << port << "." << std::endl; +} + +IASSS_Robot::~IASSS_Robot() { + std::cout << "Destroying IAS-SS robot." << std::endl; +} + +void IASSS_Robot::run() { + _p_client->Read(); + + if(_r_proxy->GetRange(1) < 1.0) { + if(_r_proxy->GetRange(0) > 1.0) + _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(-45)); + else if(_r_proxy->GetRange(2) > 1.0) + _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(45)); + else + _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(180)); + } else { + _p_proxy->SetSpeed(0.3f, 0.0f); + } + sleep(1); +} diff --git a/ias_robot.hpp b/ias_robot.hpp new file mode 100644 index 0000000..c4f6fcd --- /dev/null +++ b/ias_robot.hpp @@ -0,0 +1,50 @@ +/************************************************************************************* + * Copyright (c) 2016, Miguel Angel Astor Romero * + * All rights reserved. * + * * + * Redistribution and use in source and binary forms, with or without * + * modification, are permitted provided that the following conditions are met: * + * * + * 1. Redistributions of source code must retain the above copyright notice, this * + * list of conditions and the following disclaimer. * + * 2. Redistributions in binary form must reproduce the above copyright notice, * + * this list of conditions and the following disclaimer in the documentation * + * and/or other materials provided with the distribution. * + * * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * + *************************************************************************************/ + +#ifndef IAS_ROBOT_HPP +#define IAS_ROBOT_HPP + +#include "robot.hpp" + +/** + * Concrete robot that implements the IAS-SS architecture as defined in: + * + * 1) R. Calvo et al. "Inverse ACO for Exploration and Surveillance in + * Unknown Environments", The Third International Conference on Advanced + * Cognitive Technologies and Applications, Rome, Italy 2011. + * + * 2) R. Calvo et al. "A Distributed, Bio-Inspired Coordination Strategy + * for Multiple Agent Systems Applied to Surveillance Tasks in Unknown + * Environments", Proc. of the IEEE IJCNN, San Jose, USA, 2011. + */ +class IASSS_Robot : Robot { +public: + IASSS_Robot(std::string hostname, uint32_t port); + virtual ~IASSS_Robot(); + + virtual void run(); +}; + +#endif diff --git a/ias_ss.cpp b/ias_ss.cpp index 5715ff3..7ee4606 100644 --- a/ias_ss.cpp +++ b/ias_ss.cpp @@ -28,10 +28,9 @@ #include #include -#include "robot.hpp" +#include "ias_robot.hpp" -const std::string HOST_NAME = "localhost"; -const uint32_t PORT = 6666; +const uint32_t PORT = PlayerCc::PLAYER_PORTNUM + 1; const uint32_t NUM_ROBOTS = 4; static bool done = false; @@ -62,7 +61,7 @@ int main(int argc, char **argv) { try { // Initialize the robot objects and threads. for(uint32_t i = 0; i < NUM_ROBOTS; ++i) { - robots.push_back(new IASSS_Robot(HOST_NAME, PORT + i)); + robots.push_back(new IASSS_Robot(PlayerCc::PLAYER_HOSTNAME, PORT + i)); if(pthread_create(&robot_threads[i], NULL, robot_thread, static_cast(robots[i])) != 0) { perror("Could not create robot thread"); diff --git a/map.inc b/map.inc index b9c42a5..e51fbc8 100644 --- a/map.inc +++ b/map.inc @@ -1,3 +1,26 @@ +# Copyright (c) 2016, Miguel Angel Astor Romero +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# 1. Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + define floorplan model ( color "gray30" diff --git a/robot.cpp b/robot.cpp index 1485ae1..52ab22f 100644 --- a/robot.cpp +++ b/robot.cpp @@ -35,32 +35,7 @@ Robot::Robot(std::string hostname, uint32_t port) { } Robot::~Robot() { - std::cout << "Destroying robot" << std::endl; delete _p_proxy; delete _r_proxy; delete _p_client; } - -IASSS_Robot::IASSS_Robot(std::string hostname, uint32_t port) : Robot(hostname, port) { - std::cout << "Creating IAS-SS robot on host \"" << hostname << "\" and port " << port << "." << std::endl; -} - -IASSS_Robot::~IASSS_Robot() { - std::cout << "Destroying IAS-SS robot." << std::endl; -} - -void IASSS_Robot::run() { - _p_client->Read(); - - if(_r_proxy->GetRange(1) < 1.0) { - if(_r_proxy->GetRange(0) > 1.0) - _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(-45)); - else if(_r_proxy->GetRange(2) > 1.0) - _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(45)); - else - _p_proxy->SetSpeed(0.0f, PlayerCc::dtor(180)); - } else { - _p_proxy->SetSpeed(0.3f, 0.0f); - } - sleep(1); -} diff --git a/robot.hpp b/robot.hpp index 64a9fb6..5a99416 100644 --- a/robot.hpp +++ b/robot.hpp @@ -46,23 +46,4 @@ protected: PlayerCc::RangerProxy * _r_proxy; }; -/** - * Concrete robot that implements the IAS-SS architecture as defined in: - * - * 1) R. Calvo et al. "Inverse ACO for Exploration and Surveillance in - * Unknown Environments", The Third International Conference on Advanced - * Cognitive Technologies and Applications, Rome, Italy 2011. - * - * 2) R. Calvo et al. "A Distributed, Bio-Inspired Coordination Strategy - * for Multiple Agent Systems Applied to Surveillance Tasks in Unknown - * Environments", Proc. of the IEEE IJCNN, San Jose, USA, 2011. - */ -class IASSS_Robot : Robot{ -public: - IASSS_Robot(std::string hostname, uint32_t port); - virtual ~IASSS_Robot(); - - virtual void run(); -}; - #endif