25 bool sensor_level_hil;
30 std::string actuators_pub_topic;
31 std::string mavlink_pub_topic;
32 std::string hil_controls_sub_topic;
44 Eigen::AngleAxisd roll_angle(S_B_roll, Eigen::Vector3d::UnitX());
45 Eigen::AngleAxisd pitch_angle(S_B_pitch, Eigen::Vector3d::UnitY());
46 Eigen::AngleAxisd yaw_angle(S_B_yaw, Eigen::Vector3d::UnitZ());
48 const Eigen::Quaterniond q_S_B = roll_angle * pitch_angle * yaw_angle;
68 std::vector<mavros_msgs::Mavlink> hil_msgs =
hil_interface_->CollectData();
70 while (!hil_msgs.empty()) {
81 mav_msgs::Actuators act_msg;
85 act_msg.normalized.push_back(hil_controls_msg->roll_ailerons);
86 act_msg.normalized.push_back(hil_controls_msg->pitch_elevator);
87 act_msg.normalized.push_back(hil_controls_msg->yaw_rudder);
88 act_msg.normalized.push_back(hil_controls_msg->aux1);
89 act_msg.normalized.push_back(hil_controls_msg->aux2);
90 act_msg.normalized.push_back(hil_controls_msg->throttle);
92 act_msg.header.stamp.sec = current_time.
sec;
93 act_msg.header.stamp.nsec = current_time.
nsec;
100 int main(
int argc,
char** argv) {
101 ros::init(argc, argv,
"rotors_hil_interface_node");
int main(int argc, char **argv)
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
ros::Rate rate_
Object for spinning.
std::unique_ptr< HilInterface > hil_interface_
Pointer to the HIL interface object.
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
ros::Publisher actuators_pub_
ROS publisher for sending actuator commands.
void MainTask()
Main execution loop.
static constexpr char COMMAND_ACTUATORS[]
bool param(const std::string ¶m_name, T ¶m_val, const T &default_val) const
void publish(const boost::shared_ptr< M > &message) const
static constexpr double kDefaultBodyToSensorsRoll
static const std::string kDefaultMavlinkPubTopic
static constexpr bool kDefaultSensorLevelHil
static const std::string kDefaultHilControlsSubTopic
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
void HilControlsCallback(const mavros_msgs::HilControlsConstPtr &hil_controls_msg)
Callback for handling HilControls messages.
virtual ~HilInterfaceNode()
ros::Subscriber hil_controls_sub_
ROS subscriber for handling HilControls messages.
static constexpr double kDefaultBodyToSensorsYaw
static constexpr double kDefaultBodyToSensorsPitch
static constexpr double kDefaultHilFrequency
ROSCPP_DECL void spinOnce()
ros::NodeHandle nh_
ROS node handle.
ros::Publisher mavlink_pub_
ROS publisher for sending MAVLINK messages.