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 08:06:09 浏览: 90
这段代码看起来像是使用了一个名为 `fcu_link` 的对象进行连接操作。在连接时,使用了一个lambda表达式,其中使用了`mavlink_pub_cb`和`plugin_route_cb`函数对消息进行处理,并且如果存在`gcs_link`对象,会将消息发送给`gcs_link`。同时,该lambda表达式还包含了一个判断,如果`gcs_quiet_mode`被启用,且距离上次从GCS接收到消息已经超过了连接超时时间,就会直接返回不进行发送。当连接关闭时,会发出一个ROS_ERROR并请求关闭ROS节点。
相关问题
/** * @brief MAVLink FCU device conection */ mavconn::MAVConnInterface::Ptr fcu_link;
这段代码是在使用MAVLink库中的MAVConnInterface类来创建一个指针,用于与飞控单元(FCU)进行通信。MAVLink是一个用于通信和控制无人机的协议,可以在不同的硬件和操作系统之间进行跨平台通信。MAVConnInterface是MAVLink库中的一个接口,它提供了与MAVLink协议兼容的设备之间进行通信的方法。在这里,使用指针是为了方便对FCU进行访问和控制。
std::atomic<bool> fcu_caps_known; std::atomic<uint64_t> fcu_capabilities;
这是 C++11 中的原子变量声明,用于并发编程中的线程同步。
`std::atomic<bool> fcu_caps_known` 声明了一个布尔类型的原子变量 `fcu_caps_known`,可以用于多个线程之间访问或修改该变量时的同步。
`std::atomic<uint64_t> fcu_capabilities` 声明了一个 64 位无符号整型的原子变量 `fcu_capabilities`,也可以用于多个线程之间的同步访问或修改。
原子变量的使用可以避免多个线程同时修改同一个变量而导致的数据竞争问题,保证线程安全。在 C++11 中,原子变量是通过硬件提供支持实现的,性能较高。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)