Commit 188acc2f authored by beuchatp's avatar beuchatp
Browse files

Added first attempt at node that offers a status-as-json service for the web interfac

parent e8406d2b
......@@ -281,6 +281,7 @@ add_message_files(
add_service_files(
FILES
IntIntService.srv
IntStringService.srv
Controller.srv
CMRead.srv
CMQuery.srv
......@@ -393,42 +394,43 @@ endif()
# add_executable(${PROJECT_NAME}_node src/dfall_pkg_node.cpp)
if(VICON_LIBRARY)
add_executable(ViconDataPublisher src/nodes/ViconDataPublisher.cpp)
add_executable(ViconDataPublisher src/nodes/ViconDataPublisher.cpp)
endif()
add_executable(FlyingAgentClient src/nodes/FlyingAgentClient.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(BatteryMonitor src/nodes/BatteryMonitor.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CrazyRadioEmulator src/nodes/CrazyRadioEmulator.cpp
src/classes/QuadrotorSimulator.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CsoneControllerService src/nodes/CsoneControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(DefaultControllerService src/nodes/DefaultControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
# add_executable(SafeControllerService src/nodes/SafeControllerService.cpp)
# add_executable(DemoControllerService src/nodes/DemoControllerService.cpp
# src/classes/GetParamtersAndNamespaces.cpp)
add_executable(StudentControllerService src/nodes/StudentControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
# add_executable(MpcControllerService src/nodes/MpcControllerService.cpp)
add_executable(RemoteControllerService src/nodes/RemoteControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(TuningControllerService src/nodes/TuningControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(PickerControllerService src/nodes/PickerControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(TemplateControllerService src/nodes/TemplateControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(FlyingAgentClient src/nodes/FlyingAgentClient.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(AgentStatusForWebInterface src/nodes/AgentStatusForWebInterface.cpp)
add_executable(BatteryMonitor src/nodes/BatteryMonitor.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CrazyRadioEmulator src/nodes/CrazyRadioEmulator.cpp
src/classes/QuadrotorSimulator.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CsoneControllerService src/nodes/CsoneControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(DefaultControllerService src/nodes/DefaultControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
# add_executable(SafeControllerService src/nodes/SafeControllerService.cpp)
# add_executable(DemoControllerService src/nodes/DemoControllerService.cpp
# src/classes/GetParamtersAndNamespaces.cpp)
add_executable(StudentControllerService src/nodes/StudentControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
# add_executable(MpcControllerService src/nodes/MpcControllerService.cpp)
add_executable(RemoteControllerService src/nodes/RemoteControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(TuningControllerService src/nodes/TuningControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(PickerControllerService src/nodes/PickerControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(TemplateControllerService src/nodes/TemplateControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(TestMotorsControllerService src/nodes/TestMotorsControllerService.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CentralManagerService src/nodes/CentralManagerService.cpp src/classes/CrazyflieIO.cpp)
add_executable(ParameterService src/nodes/ParameterService.cpp)
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(CentralManagerService src/nodes/CentralManagerService.cpp src/classes/CrazyflieIO.cpp)
add_executable(ParameterService src/nodes/ParameterService.cpp)
add_executable(MocapEmulator src/nodes/MocapEmulator.cpp
src/classes/QuadrotorSimulator.cpp
src/classes/GetParamtersAndNamespaces.cpp)
add_executable(MocapEmulator src/nodes/MocapEmulator.cpp
src/classes/QuadrotorSimulator.cpp
src/classes/GetParamtersAndNamespaces.cpp)
......@@ -496,24 +498,25 @@ if(VICON_LIBRARY)
add_dependencies(ViconDataPublisher dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
endif()
add_dependencies(FlyingAgentClient dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(BatteryMonitor dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CrazyRadioEmulator dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CsoneControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(DefaultControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(SafeControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(DemoControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(StudentControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(MpcControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(RemoteControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(TuningControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(PickerControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(TemplateControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(FlyingAgentClient dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(AgentStatusForWebInterface dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(BatteryMonitor dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CrazyRadioEmulator dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CsoneControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(DefaultControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(SafeControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(DemoControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(StudentControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
# add_dependencies(MpcControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(RemoteControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(TuningControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(PickerControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(TemplateControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(TestMotorsControllerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CentralManagerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(ParameterService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(CentralManagerService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(ParameterService dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(MocapEmulator dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
add_dependencies(MocapEmulator dfall_pkg_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
......@@ -550,28 +553,29 @@ if(VICON_LIBRARY)
target_link_libraries(ViconDataPublisher ${VICON_LIBRARY})
endif()
target_link_libraries(FlyingAgentClient ${catkin_LIBRARIES})
target_link_libraries(BatteryMonitor ${catkin_LIBRARIES})
target_link_libraries(CrazyRadioEmulator ${catkin_LIBRARIES})
target_link_libraries(CsoneControllerService ${catkin_LIBRARIES})
target_link_libraries(DefaultControllerService ${catkin_LIBRARIES})
# target_link_libraries(SafeControllerService ${catkin_LIBRARIES})
# target_link_libraries(DemoControllerService ${catkin_LIBRARIES})
target_link_libraries(StudentControllerService ${catkin_LIBRARIES})
target_link_libraries(FlyingAgentClient ${catkin_LIBRARIES})
target_link_libraries(AgentStatusForWebInterface ${catkin_LIBRARIES})
target_link_libraries(BatteryMonitor ${catkin_LIBRARIES})
target_link_libraries(CrazyRadioEmulator ${catkin_LIBRARIES})
target_link_libraries(CsoneControllerService ${catkin_LIBRARIES})
target_link_libraries(DefaultControllerService ${catkin_LIBRARIES})
# target_link_libraries(SafeControllerService ${catkin_LIBRARIES})
# target_link_libraries(DemoControllerService ${catkin_LIBRARIES})
target_link_libraries(StudentControllerService ${catkin_LIBRARIES})
# if(Eigen3_FOUND)
# target_link_libraries(MpcControllerService ${catkin_LIBRARIES} Eigen3::Eigen)
# target_link_libraries(MpcControllerService ${catkin_LIBRARIES} Eigen3::Eigen)
# else()
# target_link_libraries(MpcControllerService ${catkin_LIBRARIES})
# target_link_libraries(MpcControllerService ${catkin_LIBRARIES})
# endif()
target_link_libraries(RemoteControllerService ${catkin_LIBRARIES})
target_link_libraries(TuningControllerService ${catkin_LIBRARIES})
target_link_libraries(PickerControllerService ${catkin_LIBRARIES})
target_link_libraries(TemplateControllerService ${catkin_LIBRARIES})
target_link_libraries(RemoteControllerService ${catkin_LIBRARIES})
target_link_libraries(TuningControllerService ${catkin_LIBRARIES})
target_link_libraries(PickerControllerService ${catkin_LIBRARIES})
target_link_libraries(TemplateControllerService ${catkin_LIBRARIES})
target_link_libraries(TestMotorsControllerService ${catkin_LIBRARIES})
target_link_libraries(CentralManagerService ${catkin_LIBRARIES})
target_link_libraries(ParameterService ${catkin_LIBRARIES})
target_link_libraries(CentralManagerService ${catkin_LIBRARIES})
target_link_libraries(ParameterService ${catkin_LIBRARIES})
target_link_libraries(MocapEmulator ${catkin_LIBRARIES})
target_link_libraries(MocapEmulator ${catkin_LIBRARIES})
if(Qt5_FOUND)
......
// Copyright (C) 2019, ETH Zurich, D-ITET, Paul Beuchat
//
// This file is part of D-FaLL-System.
//
// D-FaLL-System is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// D-FaLL-System is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with D-FaLL-System. If not, see <http://www.gnu.org/licenses/>.
//
//
// ----------------------------------------------------------------------------------
// DDDD FFFFF L L SSSS Y Y SSSS TTTTT EEEEE M M
// D D F aaa L L S Y Y S T E MM MM
// D D --- FFFF a a L L --- SSS Y SSS T EEE M M M
// D D F a aa L L S Y S T E M M
// DDDD F aa a LLLL LLLL SSSS Y SSSS T EEEEE M M
//
//
// DESCRIPTION:
// The service that provides data to the web interface
//
// ----------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------
// III N N CCCC L U U DDDD EEEEE SSSS
// I NN N C L U U D D E S
// I N N N C L U U D D EEE SSS
// I N NN C L U U D D E S
// III N N CCCC LLLLL UUU DDDD EEEEE SSSS
// ----------------------------------------------------------------------------------
#include <stdlib.h>
//#include <iostream>
#include <string>
#include <ros/ros.h>
#include <ros/package.h>
#include <ros/network.h>
// Include the standard message types
#include "std_msgs/Int32.h"
//#include "std_msgs/Float32.h"
//#include <std_msgs/String.h>
// Include the DFALL message types
#include "dfall_pkg/SetpointWithHeader.h"
// Include the DFALL service types
#include "dfall_pkg/IntStringService.h"
// Include the shared definitions
#include "nodes/Constants.h"
//#include "classes/GetParamtersAndNamespaces.h"
// SPECIFY THE PACKAGE NAMESPACE
using namespace dfall_pkg;
//using namespace std;
// ----------------------------------------------------------------------------------
// DDDD EEEEE FFFFF III N N EEEEE SSSS
// D D E F I NN N E S
// D D EEE FFF I N N N EEE SSS
// D D E F I N NN E S
// DDDD EEEEE F III N N EEEEE SSSS
// ----------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------
// V V A RRRR III A BBBB L EEEEE SSSS
// V V A A R R I A A B B L E S
// V V A A RRRR I A A BBBB L EEE SSS
// V V AAAAA R R I AAAAA B B L E S
// V A A R R III A A BBBB LLLLL EEEEE SSSS
// ----------------------------------------------------------------------------------
// The crazyradio status
// > as received via messages
int m_crazyradio_status = CRAZY_RADIO_STATE_DISCONNECTED;
// The flying state of the agent
// > as received via messages
int m_agent_operating_state = STATE_UNAVAILABLE;
// The instant controller,
// > as received via messages
int m_instant_controller = DEFAULT_CONTROLLER;
// The battery level
// > as received via messages
int m_battery_level = BATTERY_LEVEL_UNAVAILABLE;
// The setpoint of the default controller
// > as received via messages
float m_setpoint_default[4] = {0.0,0.0,0.4,0.0};
// The setpoint of the student controller
// > as received via messages
float m_setpoint_student[4] = {0.0,0.0,0.4,0.0};
// ----------------------------------------------------------------------------------
// FFFFF U U N N CCCC TTTTT III OOO N N
// F U U NN N C T I O O NN N
// FFF U U N N N C T I O O N N N
// F U U N NN C T I O O N NN
// F UUU N N CCCC T III OOO N N
//
// PPPP RRRR OOO TTTTT OOO TTTTT Y Y PPPP EEEEE SSSS
// P P R R O O T O O T Y Y P P E S
// PPPP RRRR O O T O O T Y PPPP EEE SSS
// P R R O O T O O T Y P E S
// P R R OOO T OOO T Y P EEEEE SSSS
// ----------------------------------------------------------------------------------
// Callbacks for messages with the status of things:
// > For the status of the crazyradio
void crazyRadioStatusCallback(const std_msgs::Int32& msg);
// > For the flying state of the agent
void agentOperatingStateCallback(const std_msgs::Int32& msg);
// > For the instant controller
void instantControllerChangedCallback(const std_msgs::Int32& msg);
// > For the battery level
void newBatteryLevelCallback(const std_msgs::Int32& msg);
// > For the Default Controller Setpoint
void defaultControllerSetpointChangedCallback(const SetpointWithHeader& newSetpoint);
// > For the Student Controller Setpoint
void studentControllerSetpointChangedCallback(const SetpointWithHeader& newSetpoint);
// Service callback for providing status to the Web Interface
bool statusForWebInterfaceCallback(IntStringService::Request &request, IntStringService::Response &response);
\ No newline at end of file
......@@ -217,6 +217,15 @@
/>
</node>
</group>
<!-- AGENT STATUS FOR WEB INTERFACE -->
<node
pkg = "dfall_pkg"
name = "AgentStatusForWebInterface"
output = "screen"
type = "AgentStatusForWebInterface"
>
</node>
</group>
......
......@@ -139,6 +139,15 @@
/>
</node>
<!-- AGENT STATUS FOR WEB INTERFACE -->
<node
pkg = "dfall_pkg"
name = "AgentStatusForWebInterface"
output = "screen"
type = "AgentStatusForWebInterface"
>
</node>
</group>
</launch>
// Copyright (C) 2019, ETH Zurich, D-ITET, Paul Beuchat
//
// This file is part of D-FaLL-System.
//
// D-FaLL-System is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// D-FaLL-System is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with D-FaLL-System. If not, see <http://www.gnu.org/licenses/>.
//
//
// ----------------------------------------------------------------------------------
// DDDD FFFFF L L SSSS Y Y SSSS TTTTT EEEEE M M
// D D F aaa L L S Y Y S T E MM MM
// D D --- FFFF a a L L --- SSS Y SSS T EEE M M M
// D D F a aa L L S Y S T E M M
// DDDD F aa a LLLL LLLL SSSS Y SSSS T EEEEE M M
//
//
// DESCRIPTION:
// The service that provides data to the web interface
//
// ----------------------------------------------------------------------------------
// INCLUDE THE HEADER
#include "nodes/AgentStatusForWebInterface.h"
// ----------------------------------------------------------------------------------
// FFFFF U U N N CCCC TTTTT III OOO N N
// F U U NN N C T I O O NN N
// FFF U U N N N C T I O O N N N
// F U U N NN C T I O O N NN
// F UUU N N CCCC T III OOO N N
//
// III M M PPPP L EEEEE M M EEEEE N N TTTTT A TTTTT III OOO N N
// I MM MM P P L E MM MM E NN N T A A T I O O NN N
// I M M M PPPP L EEE M M M EEE N N N T A A T I O O N N N
// I M M P L E M M E N NN T AAAAA T I O O N NN
// III M M P LLLLL EEEEE M M EEEEE N N T A A T III OOO N N
// ----------------------------------------------------------------------------------
// CALLBACKS FOR MESSAGES WITH THE STATUS OF THINGS
// > For the status of the crazyradio
void crazyRadioStatusCallback(const std_msgs::Int32& msg)
{
m_crazyradio_status = msg.data;
}
// > For the flying state of the agent
void agentOperatingStateCallback(const std_msgs::Int32& msg)
{
m_agent_operating_state = msg.data;
}
// > For the instant controller
void instantControllerChangedCallback(const std_msgs::Int32& msg)
{
m_instant_controller = msg.data;
}
// > For the battery level
void newBatteryLevelCallback(const std_msgs::Int32& msg)
{
m_battery_level = msg.data;
}
// > For the Default Controller Setpoint
void defaultControllerSetpointChangedCallback(const SetpointWithHeader& newSetpoint)
{
m_setpoint_default[0] = newSetpoint.x;
m_setpoint_default[1] = newSetpoint.y;
m_setpoint_default[2] = newSetpoint.z;
m_setpoint_default[3] = newSetpoint.yaw;
}
// > For the Student Controller Setpoint
void studentControllerSetpointChangedCallback(const SetpointWithHeader& newSetpoint)
{
m_setpoint_student[0] = newSetpoint.x;
m_setpoint_student[1] = newSetpoint.y;
m_setpoint_student[2] = newSetpoint.z;
m_setpoint_student[3] = newSetpoint.yaw;
}
// SERVICE CALLBACK FOR PROVIDING STATUS TO THE WEB INTERFACE
bool statusForWebInterfaceCallback(IntStringService::Request &request, IntStringService::Response &response)
{
// Concatenate the json together using a string stream
std::stringstream ss;
ss << "{\"crazyradiostatus\": \"" << m_crazyradio_status << "\"}";
std::string s = ss.str();
// Put the string into the response
//response.data = "test of service for web interface";
//response.data = "{\"crazyradiostatus\": \"%d\"}", m_crazyradio_status;
response.data = ss.str();
// Return success
return true;
}
// ----------------------------------------------------------------------------------
// M M A III N N
// MM MM A A I NN N
// M M M A A I N N N
// M M AAAAA I N NN
// M M A A III N N
// ----------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
// Starting the ROS-node
ros::init(argc, argv, "AgentStatusForWebInterface");
// Create a "ros::NodeHandle" type local variable "nodeHandle"
// as the current node, the "~" indcates that "self" is the
// node handle assigned to this variable.
ros::NodeHandle nodeHandle("~");
// Get the namespace of this "AgentStatusForWebInterface" node
std::string m_namespace = ros::this_node::getNamespace();
ROS_INFO_STREAM("[AGENT STATUS FOR WEB INTERFACE] ros::this_node::getNamespace() = " << m_namespace);
// SUBSCRIBERS
// FOR THE CRAZY RADIO STATUS:
// > Get a node handle to the Crazy Radio
std::string namespace_to_crazyradio = m_namespace + "/CrazyRadio";
ros::NodeHandle nodeHandle_to_crazyradio(namespace_to_crazyradio);
// > Subscribe to the topic
ros::Subscriber crazyRadioStatusSubscriber = nodeHandle_to_crazyradio.subscribe("CrazyRadioStatus", 1, crazyRadioStatusCallback);
// FOR THE FLYING STATE OF THE AGENT
// > Get a node handle to the Flying Agent Client
std::string namespace_to_FlyingAgentClient = m_namespace + "/FlyingAgentClient";
ros::NodeHandle nodeHandle_to_FlyingAgentClient(namespace_to_FlyingAgentClient);
// > Subscribe to the topic
ros::Subscriber agentOperatingStateSubscriber = nodeHandle_to_FlyingAgentClient.subscribe("FlyingState", 1, agentOperatingStateCallback);
// FOR THE INSTANT CONTROLLER
// > Subscribe to the topic
ros::Subscriber instantControllerSubscriber = nodeHandle_to_FlyingAgentClient.subscribe("ControllerUsed", 1, instantControllerChangedCallback);
// FOR THE BATTERY LEVEL
// > Get a node handle to the Battery Monitor
std::string namespace_to_BatteryMonitor = m_namespace + "/BatteryMonitor";
ros::NodeHandle nodeHandle_to_BatteryMonitor(namespace_to_BatteryMonitor);
// > Subscribe to the topic
ros::Subscriber newBatteryLevelSubscriber = nodeHandle_to_BatteryMonitor.subscribe("Level", 1, newBatteryLevelCallback);
// FOR THE DEFAULT CONTROLLER SETPOINT
// > Get a node handle to the Default Controller Service
std::string namespace_to_DefaultController = m_namespace + "/DefaultControllerService";
ros::NodeHandle nodeHandle_to_DefaultController(namespace_to_DefaultController);
// > Subscribe to the topic
ros::Subscriber defaultControllerSetpointChangedSubscriber = nodeHandle_to_DefaultController.subscribe("SetpointChanged", 1, defaultControllerSetpointChangedCallback);
// FOR THE STUDENT CONTROLLER SETPOINT
// > Get a node handle to the Student Controller Service
std::string namespace_to_StudentController = m_namespace + "/StudentControllerService";
ros::NodeHandle nodeHandle_to_StudentController(namespace_to_StudentController);
// > Subscribe to the topic
ros::Subscriber stuentControllerSetpointChangedSubscriber = nodeHandle_to_StudentController.subscribe("SetpointChanged", 1, studentControllerSetpointChangedCallback);
// SERVICE SERVERS
// Service callback for provide status to the Web Interface
ros::ServiceServer statusForWebInterfaceService = nodeHandle.advertiseService("StatusAsJson", statusForWebInterfaceCallback);
// Inform the user the this node is ready
ROS_INFO("[AGENT STATUS FOR WEB INTERFACE] Ready :-)");
// Spin as a single-thread node
ros::spin();
return 0;
}
uint32 data
---
string data
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment