新手避坑指南:用Prometheus+PX4+ROS在Gazebo里复现无人机追踪小车(保姆级流程)
新手避坑指南用PrometheusPX4ROS在Gazebo里复现无人机追踪小车保姆级流程当第一次接触无人机仿真开发时很多人会被复杂的工具链和晦涩的错误信息劝退。本文将手把手带你完成从零搭建仿真环境到实现视觉追踪的全过程特别针对Ubuntu 20.04系统下ROS Noetic与PX4的兼容性问题、Gazebo模型加载异常等高频坑点提供解决方案。不同于常规教程的理想化流程这里每个步骤都经过真实环境验证包含你可能遇到的报错截图和对应修复方法。1. 环境准备避开依赖地狱1.1 系统基础配置推荐使用纯净安装的Ubuntu 20.04.6 LTS避免已有ROS环境造成冲突。实测在虚拟机VMware Workstation 16和物理机Intel i7-11800H RTX 3060均可稳定运行# 检查系统版本 lsb_release -a # 输出应为Ubuntu 20.04.6 LTS常见问题显卡驱动不兼容在NVIDIA显卡设备上建议安装470系列驱动较新驱动可能导致Gazebo黑屏sudo apt install nvidia-driver-470内存不足Gazebo运行至少需要8GB空闲内存建议配置16GB以上1.2 ROS Noetic安装陷阱官方安装指南常忽略关键细节# 正确完整的安装命令包含常遗漏的python3-rosdep sudo sh -c echo deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main /etc/apt/sources.list.d/ros-latest.list sudo apt install curl curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - sudo apt update sudo apt install ros-noetic-desktop-full python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential安装后务必执行# 初始化rosdep常因网络问题失败需更换源 sudo rosdep init rosdep update --include-eol-distros2. Prometheus仿真套件部署2.1 源码编译避坑从GitHub克隆最新代码时注意子模块更新git clone --recursive https://github.com/amov-lab/Prometheus.git # 若已克隆未带子模块 cd Prometheus git submodule update --init --recursive编译时常见错误处理Eigen3版本冲突手动指定路径cmake -DCMAKE_BUILD_TYPERelease -DEIGEN3_INCLUDE_DIR/usr/include/eigen3 ..Gazebo模型缺失手动下载并放置到~/.gazebo/models/2.2 PX4固件烧录使用v1.13.3稳定版本避免最新版API变更cd PX4-Autopilot git checkout v1.13.3 make px4_sitl_default gazebo可能遇到的报错[Err] [REST.cc:205] Error in REST request解决方案禁用在线模型下载export GZ_SIM_RESOURCE_PATH~/Prometheus/Simulator/gazebo_simulator/models3. Gazebo仿真环境搭建3.1 自定义世界文件配置修改Prometheus/Simulator/gazebo_simulator/worlds/empty.world添加追踪目标model nametracking_car include urimodel://prius_hybrid/uri pose1 0 0.2 0 0 0/pose /include /model关键参数说明prius_hybridGazebo自带的混合动力汽车模型posex y z roll pitch yaw单位米/弧度3.2 传感器标定验证启动深度相机仿真后检查图像话题rostopic list | grep camera # 应有/camera/depth/image_raw和/camera/rgb/image_raw若图像无数据检查URDF文件中的插件配置gazebo referencecamera_link sensor typedepth named435i update_rate30/update_rate camera horizontal_fov1.0472/horizontal_fov image width640/width height480/height /image /camera /sensor /gazebo4. YOLOv5目标检测实战4.1 模型转换陷阱将PyTorch模型转换为TensorRT引擎时注意CUDA版本匹配# 使用docker避免环境污染 docker run --gpus all -it --rm -v $(pwd):/workspace nvcr.io/nvidia/tensorrt:22.07-py3 cd /workspace python3 export.py --weights yolov5s.pt --include engine --device 0常见问题处理ONNX导出失败降低PyTorch版本至1.10.0TensorRT推理报错指定显式batch尺寸torch.onnx.export(model, im, f, opset_version12, input_names[images], output_names[output], dynamic_axes{images: {0: batch}, output: {0: batch}})4.2 ROS节点调试技巧修改Prometheus/Modules/object_detection/config/detection.yamltarget_name: car # 与Gazebo模型名称一致 conf_thres: 0.6 # 降低虚警率启动检测节点后实时调试方法# 查看检测结果 rostopic echo /prometheus/object_detection # 可视化检测框 rqt_image_view /camera/rgb/image_raw5. 追踪算法调参实战5.1 PID控制器参数整定修改Prometheus/Modules/control/config/pid_controller.yamlposition: xy: P: 1.5 # 比例增益过大易震荡 I: 0.01 # 积分时间常数 D: 0.3 # 微分增益 z: P: 1.2 I: 0.005 D: 0.2调试技巧先将所有参数设为0逐步增加P值直到出现轻微震荡加入D值抑制震荡最后加入I值消除静差5.2 多坐标系转换验证检查TF树是否正确rosrun tf view_frames evince frames.pdf正确结构应包含world → odom → base_link → camera_link常见问题修复# 手动发布静态TF示例值需根据实际调整 rosrun tf static_transform_publisher 0 0 0.1 0 0 0 base_link camera_link 1006. 全流程联调检查清单执行完整流程前按此清单逐项确认[ ] Gazebo能正常加载无人机和小车模型[ ]/mavros/state显示connected为True[ ]rostopic hz /camera/rgb/image_raw输出≈30Hz[ ] YOLOv5检测话题有有效输出[ ]rqt_graph显示所有节点正常连接最后启动主控节点roslaunch prometheus_gazebo sitl_vision_tracking.launch当无人机成功锁定移动的小车并保持2米距离时恭喜你完成了这个复杂的系统工程如果遇到异常建议从最基础的传感器数据流开始逐级排查往往能发现配置中的细微错误。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2455747.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!