NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
dds_ros_bridge.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 
19 #ifndef DDS_ROS_BRIDGE_DDS_ROS_BRIDGE_H_
20 #define DDS_ROS_BRIDGE_DDS_ROS_BRIDGE_H_
21 
22 #include <pluginlib/class_list_macros.h>
23 
24 #include <map>
25 #include <memory>
26 #include <string>
27 #include <vector>
28 
30 
34 #include "dds_ros_bridge/rapid_sub_ros_pub.h"
36 #include "dds_ros_bridge/ros_ack.h"
41 #include "dds_ros_bridge/ros_command.h"
62 #include "dds_ros_bridge/ros_sub_rapid_pub.h"
65 
66 #include "ff_msgs/SetRate.h"
67 
68 #include "ff_common/ff_names.h"
69 #include "ff_util/ff_nodelet.h"
70 
71 // SoraCore Includes
72 #include "knDds/DdsSupport.h"
73 #include "knDds/DdsEntitiesFactory.h"
74 #include "knDds/DdsEntitiesFactorySvc.h"
75 
76 // miro includes
77 #include "miro/Configuration.h"
78 #include "miro/Robot.h"
79 #include "miro/Log.h"
80 
81 // ros includes
82 #include "std_msgs/String.h"
83 
84 namespace kn {
85  class DdsEntitiesFactorySvc;
86 } // end namespace kn
87 
88 namespace dds_ros_bridge {
89 
90 enum RateType {
99 };
100 
101 class RosSubRapidPub;
102 
104  public:
105  DdsRosBridge();
106  ~DdsRosBridge();
107 
113  bool BuildAccessControlStateToRapid(const std::string& sub_topic,
114  const std::string& name);
115  bool BuildAckToRapid(const std::string& sub_topic,
116  const std::string& name);
117  bool BuildAgentStateToRapid(const std::string& sub_topic,
118  const std::string& name);
119  bool BuildArmJointSampleToRapid(const std::string& sub_topic,
120  const std::string& name);
121  bool BuildArmStateToRapid(const std::string& sub_topic,
122  const std::string& name);
123  bool BuildBatteryStateToRapid(const std::string& sub_topic_battery_state_TL,
124  const std::string& sub_topic_battery_state_TR,
125  const std::string& sub_topic_battery_state_BL,
126  const std::string& sub_topic_battery_state_BR,
127  const std::string& sub_topic_battery_temp_TL,
128  const std::string& sub_topic_battery_temp_TR,
129  const std::string& sub_topic_battery_temp_BL,
130  const std::string& sub_topic_battery_temp_BR,
131  const std::string& name);
132  bool BuildCommandToRapid(const std::string& sub_topic,
133  const std::string& ac_sub_topic,
134  const std::string& failed_cmd_sub_topic,
135  const std::string& name);
136  bool BuildCompressedFileToRapid(const std::string& sub_topic,
137  const std::string& name);
138  bool BuildCompressedFileAckToRapid(const std::string& sub_topic,
139  const std::string& name);
140  bool BuildCompressedImageToImage(const std::string& sub_topic,
141  const std::string& name);
142  bool BuildCpuStateToRapid(const std::string& sub_topic,
143  const std::string& name);
144  bool BuildDataToDiskStateToRapid(const std::string& state_sub_topic,
145  const std::string& topics_sub_topic,
146  const std::string& name);
147  bool BuildDiskStateToRapid(const std::string& sub_topic,
148  const std::string& name);
149  bool BuildFaultConfigToRapid(const std::string& sub_topic,
150  const std::string& name);
151  bool BuildFaultStateToRapid(const std::string& sub_topic,
152  const std::string& name);
153  bool BuildGncFamCmdStateToRapid(const std::string& sub_topic,
154  const std::string& name);
155  bool BuildGncControlStateToRapid(const std::string& sub_topic,
156  const std::string& name);
157  bool BuildGuestScienceToRapid(const std::string& state_sub_topic,
158  const std::string& config_sub_topic,
159  const std::string& data_sub_topic,
160  const std::string& name);
161  bool BuildInertiaDataToRapid(const std::string& sub_topic,
162  const std::string& name);
163  bool BuildLogSampleToRapid(const std::string& sub_topic,
164  const std::string& name);
165  bool BuildOdomToPosition(const std::string& sub_topic,
166  const std::string& name);
167  bool BuildPayloadStateToPayloadState(const std::string& sub_topic,
168  const std::string& name);
169  bool BuildPlanStatusToPlanStatus(const std::string& sub_topic,
170  const std::string& name);
171  bool BuildPmcCmdStateToRapid(const std::string& sub_topic,
172  const std::string& name);
173  bool BuildPoseToPosition(const std::string& sub_topic,
174  const std::string& name);
175  bool BuildStringToTextMessage(const std::string& name);
176  bool BuildTelemetryToRapid(const std::string& sub_topic,
177  const std::string& name);
178  bool BuildZonesToRapidCompressedFile(const std::string& sub_topic,
179  const std::string& zones_srv,
180  const std::string& name);
181 
189  bool BuildCommandToCommand(const std::string& pub_topic,
190  const std::string& name);
191  bool BuildCompressedFileToCompressedFile(const std::string& pub_topic,
192  const std::string& name);
193 
194 
198  bool BuildCommandConfigToCommandConfig(const std::string& name);
199 
200  bool SetTelem(float rate, std::string &err_msg, RateType type);
201 
202  bool SetCommStatusRate(float rate, std::string &err_msg);
203  bool SetCpuStateRate(float rate, std::string &err_msg);
204  bool SetDiskStateRate(float rate, std::string &err_msg);
205  bool SetEkfPositionRate(float rate, std::string &err_msg, RateType type);
206  bool SetGncStateRate(float rate, std::string &err_msg);
207  bool SetPmcStateRate(float rate, std::string &err_msg);
208  bool SetSparseMappingPoseRate(float rate, std::string &err_msg);
209 
210  bool SetTelemRateCallback(ff_msgs::SetRate::Request &req,
211  ff_msgs::SetRate::Response &res);
212 
213  protected:
214  virtual void Initialize(ros::NodeHandle *nh);
215  bool ReadTopicInfo(const std::string& topic_abbr,
216  const std::string& sub_or_pub,
217  std::string& sub_topic,
218  bool& use);
219  bool ReadParams();
220  bool ReadRateParams();
221 
222  private:
223  config_reader::ConfigReader config_params_;
224 
225  int components_;
226 
227  ros::NodeHandle nh_;
228 
229  ros::Publisher robot_name_pub_;
230  ros::ServiceServer srv_set_telem_rate_;
231 
232  std::shared_ptr<kn::DdsEntitiesFactorySvc> dds_entities_factory_;
233  std::map<std::string, ff::RosSubRapidPubPtr> ros_sub_rapid_pubs_;
234  std::string agent_name_, participant_name_;
235  std::vector<ff::RapidPubPtr> rapid_pubs_;
236  std::vector<ff::RapidSubRosPubPtr> rapid_sub_ros_pubs_;
237 };
238 
239 } // end namespace dds_ros_bridge
240 
241 #endif // DDS_ROS_BRIDGE_DDS_ROS_BRIDGE_H_
dds_ros_bridge::DdsRosBridge::BuildAgentStateToRapid
bool BuildAgentStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:104
dds_ros_bridge::DdsRosBridge::BuildPmcCmdStateToRapid
bool BuildPmcCmdStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:569
dds_ros_bridge::DdsRosBridge::BuildFaultStateToRapid
bool BuildFaultStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:376
dds_ros_bridge::DdsRosBridge::BuildPoseToPosition
bool BuildPoseToPosition(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:590
ros_compressed_image_rapid_image.h
ros_data_to_disk.h
ros_compressed_file_ack.h
ros_inertia.h
dds_ros_bridge::DdsRosBridge::BuildCommandConfigToCommandConfig
bool BuildCommandConfigToCommandConfig(const std::string &name)
Definition: dds_ros_bridge.cc:727
dds_ros_bridge::DdsRosBridge::ReadTopicInfo
bool ReadTopicInfo(const std::string &topic_abbr, const std::string &sub_or_pub, std::string &sub_topic, bool &use)
Definition: dds_ros_bridge.cc:1140
dds_ros_bridge::DdsRosBridge::BuildCompressedFileToCompressedFile
bool BuildCompressedFileToCompressedFile(const std::string &pub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:705
dds_ros_bridge::SPARSE_MAPPING_POSE
@ SPARSE_MAPPING_POSE
Definition: dds_ros_bridge.h:98
rapid_compressed_file_ros_compressed_file.h
ros_telemetry_rapid_telemetry.h
dds_ros_bridge::RateType
RateType
Definition: dds_ros_bridge.h:90
ros_string_rapid_text_message.h
dds_ros_bridge::PMC_CMD_STATE
@ PMC_CMD_STATE
Definition: dds_ros_bridge.h:96
dds_ros_bridge::DISK_STATE
@ DISK_STATE
Definition: dds_ros_bridge.h:93
ros_arm_joint_sample.h
dds_ros_bridge::DdsRosBridge::BuildPayloadStateToPayloadState
bool BuildPayloadStateToPayloadState(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:527
ros_disk_state.h
dds_ros_bridge::DdsRosBridge::BuildPlanStatusToPlanStatus
bool BuildPlanStatusToPlanStatus(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:548
dds_ros_bridge::DdsRosBridge::BuildDiskStateToRapid
bool BuildDiskStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:335
rapid_command_ros_command_plan.h
ff_nodelet.h
dds_ros_bridge::DdsRosBridge::BuildOdomToPosition
bool BuildOdomToPosition(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:505
dds_ros_bridge::DdsRosBridge::BuildStringToTextMessage
bool BuildStringToTextMessage(const std::string &name)
Definition: dds_ros_bridge.cc:618
dds_ros_bridge::DdsRosBridge::SetTelem
bool SetTelem(float rate, std::string &err_msg, RateType type)
Definition: dds_ros_bridge.cc:748
dds_ros_bridge::DdsRosBridge::BuildGncFamCmdStateToRapid
bool BuildGncFamCmdStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:397
dds_ros_bridge::DdsRosBridge::BuildArmStateToRapid
bool BuildArmStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:146
dds_ros_bridge::DdsRosBridge::SetCommStatusRate
bool SetCommStatusRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:791
ros_guest_science.h
ros_odom_rapid_position.h
ros_gnc_fam_cmd_state.h
dds_ros_bridge::DdsRosBridge::SetDiskStateRate
bool SetDiskStateRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:817
ros_ack.h
ros_compressed_file_rapid_compressed_file.h
dds_ros_bridge::DdsRosBridge::SetEkfPositionRate
bool SetEkfPositionRate(float rate, std::string &err_msg, RateType type)
Definition: dds_ros_bridge.cc:833
dds_ros_bridge::EKF_STATE
@ EKF_STATE
Definition: dds_ros_bridge.h:94
dds_ros_bridge::DdsRosBridge::SetSparseMappingPoseRate
bool SetSparseMappingPoseRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:915
ros_plan_status_rapid_plan_status.h
dds_ros_bridge::DdsRosBridge::SetGncStateRate
bool SetGncStateRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:860
dds_ros_bridge::DdsRosBridge::BuildAckToRapid
bool BuildAckToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:84
name
std::string name
Definition: eps_simulator.cc:48
dds_ros_bridge::DdsRosBridge::BuildArmJointSampleToRapid
bool BuildArmJointSampleToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:125
kn
Definition: smart_dock_node.h:55
ros_pmc_cmd_state.h
dds_ros_bridge::DdsRosBridge::BuildZonesToRapidCompressedFile
bool BuildZonesToRapidCompressedFile(const std::string &sub_topic, const std::string &zones_srv, const std::string &name)
Definition: dds_ros_bridge.cc:661
dds_ros_bridge::DdsRosBridge::BuildDataToDiskStateToRapid
bool BuildDataToDiskStateToRapid(const std::string &state_sub_topic, const std::string &topics_sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:311
dds_ros_bridge::DdsRosBridge::~DdsRosBridge
~DdsRosBridge()
Definition: dds_ros_bridge.cc:60
ff_util::FreeFlyerNodelet
Definition: ff_nodelet.h:57
ff_names.h
dds_ros_bridge::DdsRosBridge::Initialize
virtual void Initialize(ros::NodeHandle *nh)
Definition: dds_ros_bridge.cc:969
ros_zones_rapid_compressed_file.h
dds_ros_bridge::DdsRosBridge::BuildCompressedFileAckToRapid
bool BuildCompressedFileAckToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:249
dds_ros_bridge::DdsRosBridge::BuildFaultConfigToRapid
bool BuildFaultConfigToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:355
rapid_pub.h
ros_pose_rapid_position.h
dds_ros_bridge::DdsRosBridge::BuildTelemetryToRapid
bool BuildTelemetryToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:639
dds_ros_bridge::DdsRosBridge::BuildCommandToRapid
bool BuildCommandToRapid(const std::string &sub_topic, const std::string &ac_sub_topic, const std::string &failed_cmd_sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:202
config_reader::ConfigReader
Definition: config_reader.h:48
dds_ros_bridge::DdsRosBridge::ReadRateParams
bool ReadRateParams()
Definition: dds_ros_bridge.cc:1422
dds_ros_bridge::COMM_STATUS
@ COMM_STATUS
Definition: dds_ros_bridge.h:91
dds_ros_bridge::DdsRosBridge::BuildGncControlStateToRapid
bool BuildGncControlStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:418
dds_ros_bridge::DdsRosBridge::BuildAccessControlStateToRapid
bool BuildAccessControlStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:63
dds_ros_bridge::DdsRosBridge::DdsRosBridge
DdsRosBridge()
Definition: dds_ros_bridge.cc:54
ros_log_sample.h
ros_payload_state.h
config_reader.h
dds_ros_bridge::CPU_STATE
@ CPU_STATE
Definition: dds_ros_bridge.h:92
ros_battery_state.h
ros_gnc_control_state.h
ros_arm_state.h
dds_ros_bridge::DdsRosBridge::BuildCpuStateToRapid
bool BuildCpuStateToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:291
dds_ros_bridge::DdsRosBridge::SetCpuStateRate
bool SetCpuStateRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:800
dds_ros_bridge::DdsRosBridge::SetTelemRateCallback
bool SetTelemRateCallback(ff_msgs::SetRate::Request &req, ff_msgs::SetRate::Response &res)
Definition: dds_ros_bridge.cc:932
dds_ros_bridge::DdsRosBridge::ReadParams
bool ReadParams()
Definition: dds_ros_bridge.cc:1162
ros_command_config_rapid_command_config.h
dds_ros_bridge::GNC_STATE
@ GNC_STATE
Definition: dds_ros_bridge.h:95
dds_ros_bridge
Definition: astrobee_astrobee_bridge.h:59
ros_fault_config.h
dds_ros_bridge::DdsRosBridge::BuildLogSampleToRapid
bool BuildLogSampleToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:485
dds_ros_bridge::DdsRosBridge::BuildCompressedImageToImage
bool BuildCompressedImageToImage(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:270
ros_cpu_state.h
dds_ros_bridge::DdsRosBridge::BuildCommandToCommand
bool BuildCommandToCommand(const std::string &pub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:684
dds_ros_bridge::DdsRosBridge::BuildCompressedFileToRapid
bool BuildCompressedFileToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:228
dds_ros_bridge::DdsRosBridge::BuildBatteryStateToRapid
bool BuildBatteryStateToRapid(const std::string &sub_topic_battery_state_TL, const std::string &sub_topic_battery_state_TR, const std::string &sub_topic_battery_state_BL, const std::string &sub_topic_battery_state_BR, const std::string &sub_topic_battery_temp_TL, const std::string &sub_topic_battery_temp_TR, const std::string &sub_topic_battery_temp_BL, const std::string &sub_topic_battery_temp_BR, const std::string &name)
Definition: dds_ros_bridge.cc:166
dds_ros_bridge::DdsRosBridge
Definition: dds_ros_bridge.h:103
ros_access_control.h
dds_ros_bridge::DdsRosBridge::BuildGuestScienceToRapid
bool BuildGuestScienceToRapid(const std::string &state_sub_topic, const std::string &config_sub_topic, const std::string &data_sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:439
ros_agent_state.h
dds_ros_bridge::DdsRosBridge::BuildInertiaDataToRapid
bool BuildInertiaDataToRapid(const std::string &sub_topic, const std::string &name)
Definition: dds_ros_bridge.cc:464
dds_ros_bridge::DdsRosBridge::SetPmcStateRate
bool SetPmcStateRate(float rate, std::string &err_msg)
Definition: dds_ros_bridge.cc:898
ros_fault_state.h
dds_ros_bridge::POSITION
@ POSITION
Definition: dds_ros_bridge.h:97