Go to the documentation of this file.
8 std::string setup_file;
19 ROS_WARN(
"[%s] Bus Manager could not startup",
name_.c_str());
25 std::vector<std::shared_ptr<Rokubimini>> rokubiminis;
34 options.
name_ =
"RokubiminiBusManager::updateWorker";
51 ROS_WARN_STREAM(
"Cannot start up, Rokubimini Bus Manager is already running.");
70 ROS_DEBUG(
"[RokubiminiBusManager]: update called");
89 ROS_WARN_STREAM(
"Cannot shut down, Rokubimini Bus Manager is not running.");
111 ROS_ERROR(
"[%s] Could not create rokubiminis from parameter server",
name_.c_str());
119 std::vector<std::string> keys;
120 std::string rokubimini_name;
121 nh_->getParamNames(keys);
122 for (
const auto& key : keys)
125 if (key.find(
nh_->getNamespace() +
"/rokubiminis") != std::string::npos && key.find(
"/name") != std::string::npos)
127 nh_->getParam(key, rokubimini_name);
128 ROS_DEBUG(
"[%s] Key is: %s and name is: %s",
name_.c_str(), key.c_str(), rokubimini_name.c_str());
134 ROS_DEBUG(
"[%s] Successfully created rokubimini with name: %s",
name_.c_str(), rokubimini_name.c_str());
virtual void publishBusManagerRosDiagnostics()=0
Publish the ROS Diagnostics for the Bus Manager. It's virtual since it's implementation specific.
void startupWithCommunication() const
Starts up all Rokubimini devices after communication has been established from the Bus Manager.
virtual void readBus()
Reads the bus.
#define ROS_ERROR_STREAM(args)
void publishRosMessages() const
Publishes the ROS messages for each attached rokubimini.
virtual double loadTimeStep()=0
Loads the time_step from the Parameter Server.
std::string name_
The name of the bus.
virtual bool startup()
Starts the communication with all the Rokubimini devices.
void startupWithoutCommunication() const
Starts up all Rokubimini devices before communication has been established by the Bus Manager.
virtual void setRunMode()
Sets the devices controlled from the BusManager to run mode.
void publishRokubiminiRosDiagnostics() const
Publishes the ROS Diagnostics for each attached rokubimini.
void shutdownWithCommunication() const
Shuts down every Rokubimini device after communication has been closed.
NodeHandlePtr nh_
The internal NodeHandle variable.
virtual void setConfigMode()
Sets the devices controlled from the BusManager to config mode.
bool init() override
Initializes the Bus Manager Node.
#define ROS_DEBUG_STREAM(args)
void createRokubiminiRosDiagnostics() const
Creates ROS Diagnostics for each attached rokubimini.
std::vector< std::shared_ptr< Rokubimini > > getRokubiminis() const
void cleanup() override
Cleans up the Bus Manager Node.
virtual bool update(const bota_worker::WorkerEvent &event)
Updates with new values from/to the Rokubiminis.
#define ROS_WARN_STREAM(args)
virtual bool addRokubiminiToBus(const std::shared_ptr< Rokubimini > &rokubimini) const
Adds a Rokubimini to Bus.
virtual void shutdownBus()
Shuts down the bus.
virtual void shutdown()
Shuts down everything.
virtual void writeToBus()
Writes to the buses.
void createRokubiminiRosPublishers() const
Creates ROS Publishers for each attached rokubimini.
void updateProcessReading() const
Updates all Rokubimini instances with new measurements.
const ROSCPP_DECL std::string & getName()
void createRokubiminiRosServices() const
Creates ROS Services for each attached rokubimini.
virtual bool loadBusParameters()=0
Loads bus-specific parameters from parameter server. It's pure virtual since it's implementation-spec...
virtual bool createRokubiminisFromParamServer()
Creates rokubiminis from the parameter server.
virtual bool startupCommunication()
Starts the communication through the bus.
std::atomic< double > timeStep_
virtual bool load()
Loads the configuration of the bus (bus parameters and rokubiminis).
virtual bool createRokubimini(const std::string &rokubiminiName)=0
Creates an implementation-specific Rokubimini instance.
void shutdownWithoutCommunication() const
std::atomic< bool > isRunning_
Boolean that specifies if the Manager is already running.
bool addWorker(const bota_worker::WorkerOptions &options)