fcu_link->connect( [this](const mavlink_message_t *msg, const Framing framing) { mavlink_pub_cb(msg, framing); plugin_route_cb(msg, framing); if (gcs_link) { if (this->gcs_quiet_mode && msg->msgid != mavlink::minimal::msg::HEARTBEAT::MSG_ID &&(ros::Time::now() - this->last_message_received_from_gcs > this->conn_timeout)) { return; } gcs_link->send_message_ignore_drop(msg); } }, []() { ROS_ERROR("FCU connection closed, mavros will be terminated."); ros::requestShutdown(); });
时间: 2023-06-14 21:06:09 浏览: 338
dds.rar_dds verilog_quartus 可以dds_verilog dds
这段代码看起来像是使用了一个名为 `fcu_link` 的对象进行连接操作。在连接时,使用了一个lambda表达式,其中使用了`mavlink_pub_cb`和`plugin_route_cb`函数对消息进行处理,并且如果存在`gcs_link`对象,会将消息发送给`gcs_link`。同时,该lambda表达式还包含了一个判断,如果`gcs_quiet_mode`被启用,且距离上次从GCS接收到消息已经超过了连接超时时间,就会直接返回不进行发送。当连接关闭时,会发出一个ROS_ERROR并请求关闭ROS节点。
阅读全文