# my_utils **Repository Path**: lulese/my_utils ## Basic Information - **Project Name**: my_utils - **Description**: 一些工具功能包(不断更新) 1. topic2tf:包括不同的消息类型的话题转换为tf 2. tf2topic 3.mjpeg摄像头驱动,并转为ros话题 4.pixel2map:像素坐标转世界坐标系 5. fake_slam: 加载pcd文件,输出点云地图 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-10-06 - **Last Updated**: 2025-06-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 每个功能包的作用 如有需要自取即可,下载下来删除其他包再编译更加轻量化。 ## 1. topic_tf_tran ### 简介 包括两个功能 topic2tf,包括不同的消息类型的话题转换为tf tf2topic,将tf转换到nav_msgs::Odometry或者geometry_msgs::PoseStamped ## 2. pixel2map ### 简介 像素坐标系转化到世界坐标系,定义的内参矩阵和话题等参数已经写到yaml和launch的私有参数中。 ### 依赖 ~~~ sudo apt install libyaml-cpp-dev ~~~ ## 3. camera_sdk ### 简介 mjpg相机opencv读取图像转出ros话题 ## 4. fake_slam ### 简介 使用雷达点云和真值位置,建立点云地图,以及加载pcd地图,输出点云地图 ### 依赖 ~~~ pip3 install open3d -i https://pypi.doubanio.com/simple ~~~ ## 5. imu_2_euler 将imu数据转化为欧拉角并画出图形 ## 6. pointcloud Cut 根据点云高度保留一定高度范围内的点 ## 7.serial_tool 串口传输demo,自定义校验规则,发送平移及四元数数据,转出话题。 ## 8.rtk2local 在使用rtk、gps作为定位来源的时候,mavros读到的local_position/pose的坐标系是东北天(地理上的东、北),而我们大部分算法的坐标系是flu,所以写了这个功能包,检测遥控器通道10输入值,把此时的gps坐标系归为局部坐标系原点接受`/mavros/local_position/pose`发出`/mavros/local_position/pose_flu`,并把其他程序中的目标点指令转化到gps坐标系接受`/mavros/setpoint_position/local_flu`发布`/mavros/setpoint_position/local`。 ## 9.pub_cam_info 以话题发布摄像头内参 ## 10.rc_topic 检查遥控器通道,发出标志位 ## 11.mutl_uav_serial 借助serial c++库进行多机的数据传输 ### 11.1 主要功能 1. **多无人机状态共享** - 通过串口广播自身的位置信息(MAVROS定位+视觉定位) - 接收其他无人机的状态信息并发布到ROS话题 - 支持多个无人机之间的双向通信 2. **电池状态监控与传输** - 订阅`/mavros/battery`话题获取电池状态 - 将电池百分比(0-100%)和状态标志位打包发送 - 接收并解析其他无人机的电池状态 3. **控制指令处理** - 解析接收到的控制指令包(ID 0x04) - 包含速度控制(v_x, v_y, v_z)和偏航控制(yaw) - 可扩展控制模式(mode)字段 4. **数据包协议处理** - 自定义二进制数据包格式: - 帧头:0xAA 0x55 - 目标地址/源地址 - UAV ID - 位置数据(半精度浮点数) - 电池状态 - 校验和 - 帧尾:0x55 0xAA - 支持多种数据包类型(普通数据包/控制包) 5. **半精度浮点压缩** - 实现float32到float16的高效转换 - 减少位置数据传输量(14字节代替28字节) - 保持足够的精度(误差小于0.01%) ### 11.2 核心特点 1. **高效通信架构** - 多线程设计:分离发送/接收线程 - 异步处理:非阻塞式串口通信 - 双缓冲机制:数据准备与发送解耦 2. **健壮的串口处理** - 自动重连机制:设备断开时自动恢复 - 错误恢复:读写异常后自动重建连接 - 流量控制:合理的发送频率控制 3. **灵活的参数配置** - 可配置的无人机ID和地址 - 可调整的通信频率(地面站/无人机) - 自定义ROS话题名称 - 调试模式开关(TX_debug/RX_debug) 4. **数据完整性保障** - 校验和验证(XOR) - 帧头/帧尾双重验证 - 数据包长度检查 5. **资源优化** - 紧凑的数据包设计(普通包41字节) - 半精度浮点数压缩 - 智能缓冲区管理(滑动窗口处理)