# gen_commnet **Repository Path**: BearBoy1204/gen_commnet ## Basic Information - **Project Name**: gen_commnet - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-03 - **Last Updated**: 2026-03-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 有 ROS2 了,还用这个锤子 当前版本功能 UDP 接收 订阅的 都是 同一端口 - 单发 - 发往不同的 IP - 群发 - 发往 .255 广播端口 ### ws_comm 通用通信模块生成 | 无人机集群通用 ROS Msgs 定义完 **消息格式** 后,可以自动生成对应的 C++ 代码。 用于将 ROS1话题 和 MAVLINK数据包 相互转换, 并通过 串口/UDP/TCP 等方式发送。 实现 一对一/一对多 通信。 ### ROS1下的集群自定义通信 [UDP] > 消息的详细定义,以 **gen_mavlinkHPP/message_definitions/v1.0/commnet.xml**为准. > 请务必保证 **/cluster_msgs/msg**、 **gen_mavlinkHPP/message_definitions/v1.0/commnet.xml** 以及 **关联到的cpp** 文件中ROS MSG定义的一致性(即在修改了消息的定义后,同步修改). > 注意修改 `common.yaml` 参数. ### Func 1. 在XML文件中自定义消息. 2. 生成 `mavlink/***.h` 头文件. 3. 生成 `ros_udp_***.cpp/h` 程序文件. ### [注意匹配两者] **mavlink消息**的定义文件 `commnet.xml` 与 **ROS1 msgs消息**的定义文件 `ws_comm/src/cluster_msgs/msg/???.msg`。 ### ROS msgs定义、 Ros Topic & Mavlink 关联说明. > 消息修改后 **/cluster_msgs/msg**、 **gen_mavlinkHPP/message_definitions/v1.0/commnet.xml** 以及 **关联到的cpp** 都需要修改. ``` ### 通用格式 uint8 sysid # 发送端 ID uint8 compid # 接收端 ID # ID的特殊定义 [100-地面站] [99-所有无人机] *** *** *** *** ``` 消息的详细定义,以 **commnet.xml**为准。 ### git submodule help git submodule update --init --recursive git submodule add https://gh-proxy.com/https://github.com/mavlink/mavlink mavlink ### mavlink 依赖 ``` # mavlink pip3 install --user future sudo apt install python3-lxml libxml2-utils python3-tk -y # Ubuntu 2004 & ROS1-Noedic sudo apt install ros-noetic-mavros* ros-noetic-serial ros-noetic-geographic-msgs ros-noetic-geometry-msgs -y # OR Ubuntu 1804 & ROS1-Melodic sudo apt install ros-melodic-mavros* ros-melodic-serial ros-melodic-geographic-msgs ros-melodic-geometry-msgs -y ``` ### -决-定-愉-快-鸽-鸽- ```queue_size ros::Publisher pub_???_state = nh_pub.advertise( "???_state", queue_size // 不同的队列大小 ); ``` ```TCP_NODELAY // hints = ros::TransportHints().tcp().tcpNoDelay(true); ros::TransportHints hints; hints.tcpNoDelay(true); // 关键:对应命令行的 --tcp-nodelay ros::Publisher pub_???_state = nh_pub.advertise( "???_state", // 话题名 queue_size, // 队列大小 hints // 绑定 TCP_NODELAY 配置 ); ```