# AGV_ws **Repository Path**: liang_yong_yu/agv_ws ## Basic Information - **Project Name**: AGV_ws - **Description**: 无人车控制中心 - **Primary Language**: C++ - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 24 - **Forks**: 16 - **Created**: 2021-04-08 - **Last Updated**: 2025-09-02 ## Categories & Tags **Categories**: auto-driving **Tags**: None ## README ** AGV_ws** ## 介绍 无人车控制中心,负责无人车手柄控制、记录参考路径、跟踪给定路径 ## 注意事项 ###!!!切记:push的时候不要选择build和devel文件 1.gitee仓库使用常见错误: 2.程序中所有角度均为弧度,需要度时要转换 3.必须启动参数服务器运行程序 ## 必备库文件 1. Python库文件 pygame 2. QT versin 5.12.0 3. Opencv 3.4.0 ## 参数详解 L_car 0.75m 车辆前后轮轴距 ##编译步骤 1.rosdep install --from-paths src --ignore-src --rosdistro $ROS_DISTRO 编译时,使用catkin_make,第一次会报错,切结source setup.bash文件后再次编译即可 2.安装启动手柄所需的pygame库 ros python pip3 install pygame pip3 install rospkg 3.安装仿真必须的库文件 sudo apt-get install ros-melodic-joint-state-publisher-gui sudo apt-get install ros-melodic-tf2-sensor-msgs sudo apt-get install ros-melodic-move-base-msgs sudo apt-get install libpcap-dev 4.安装Opencv 3.4.0 unzip opencv file mkdir build && cd build cmake .. sudo make install ## 参与贡献 0. 王恒老师 1. 2019届 博士 张腾飞 (策划+指导) 2. 2019届 硕士 梁永裕,yyliang1996@163.com,172459226@qq.com 个人博客:https://blog.csdn.net/qq_18676517?spm=1000.2115.3001.5343 3. 2018届 硕士 王亚东(GPS数据解析) ## 话题名称及类型 1. agv_control 订阅车辆位置信息: “AGV/pose_fuse”:geometry_msgs/PoseStamped 说明:AGV_POSE表示车辆的位置信息,/GPS表示通过GPS获取,发布的消息格式为geometry_msgs/Pose http://docs.ros.org/en/api/geometry_msgs/html/msg/Pose.html 车辆行驶轨迹:tf_pub 订阅话题:AGV/pose_fuse 发布话题:nav_msgs::Path AGV/drove_path 发布话题 AGV/Control_Mode "UInt64" 手柄控制车辆的模式,用于其他模块发送相应数据 2. joystick 手柄消息: “joy_node_pub” 自定义消息格式,话题名称为:“AGV/joystick_data”,具体格式见msg文件 3. agv_can 车辆控制以及服务消息: 控制话题+数据类型 "AGV/Control": agv_can/control 服务消息+数据类型 “AGV/state_info”:agv_can/feedback 车辆底层节点 ”AGV_Control_Rec“ 跟踪路径信息 “AGV/Path”: nav_msgs/Path TF变换发布者 “tf_broadcaster” 车辆里程计信息发布: 4. darknet 使用ZED相机跟踪行人 发布节点 "Agv_Camera_pub" 话题名:“AGV/person_info” geometry_msgs::PoseStamped PoseStamped 消息含义: data.pose.position.x 水平方向,右侧为正,左侧为负数 data.pose.position.y 垂直方向,下面为正,上面为负 data.pose.position.z 前后方向,为正 data.pose.orientation.y 跟踪行人的ID号 5. receive_ins_data 车载GNSS数据解析并发布话题 数据类型+话题: geometry_msgs::PoseStamped AGV/PoseInfoFromGps 数据类型+话题: receive_ins_data::gsof AGV/OriginalGsofData 6. agv_can 新版车辆底层控制程序 AGV/speed std_msgs::Float64 发布AGV后轮车速信息 AGV/Control can_communicate/control 7. xsens_ros_driver IMU XSENS话题: 标准IMU话题数据 topic: imu/data 四元数 topic: filter/quaternion 磁场 topic: imu/mag 三轴角速度 topic:imu/angular_velocity 三轴加速度 topic:imu/acceleration 发布xyz轴的速度 topic: filter/velocity 发布IMU当前位姿和初始化位姿TF2变换,只含有旋转/tf imu_link-->imu_init_pose 发布IMU当前位姿和初始化位姿四元数 \filter/quaternion 8. agv_tf: agv_pose_gps_odom 发布融合后的车辆位置和姿态信息 节点 AGV_fusion_pose 发布:geometry_msgs::PoseStamped AGV/pose_fuse 订阅:geometry_msgs::PoseStamped AGV/PoseInfoFromGps receive_ins_data::gsof AGV/OriginalGsofData 9. plan_path 发布路径规划话题消息 跟踪路径信息 “AGV/plan_path”: nav_msgs/Path A*算法 10. dwa_local_planner DWA局部路径规划实现 定阅话题: 发布话题: ## 开发日志 2021-4-11 LYY 新建类说明以及初始化节点信息,规范话题消息格式及类型 添加手柄节点,自定义手柄消息和话题格式,测试通过 2021-4-12 LYY libagv中引入自定义消息头文件,设计库函数,修改lib中的类函数 2021-4-14 LYY 将车辆底层CAN通讯功能包加入工作空间,自定义与底层通讯的消息和服务格式, 调试手柄与主程序通讯正常 2021-4-15 LYY 加入GPS读取数据pkg 2021-4-15,16,17,18 LYY 实现运动学仿真,设定参考路径并发布;手柄控制仿真和测试完成; 2021-4-19 LYY 实现Pure Pursuit 和 PID 控制器设计,仿真验证给定参考路径的跟踪效果 2021-4-20 LYY 修复路径跟踪bug,添加预瞄点显示,下一步添加手柄开关自动记录形式路径并保存在相关文件中或者手柄按键直接发送路径; 将无人车PID参数保存与参数服务器,通过参数服务器修改控制器参数 2021-5-12 LYY 并入Move_base以及激光雷达驱动包 2021-5-29 LYY 将cartgrapher定位结果与控制结合,发布车辆的位置信息 2021-6-11 LYY 加入地图仿真,加入A*路径规划,删除冗余pkg 2021-6-21 LYY A*路径规划,程序流程图介绍,演示视频备份 2021-7-20 LYY 修改主程序架构,后续设计多线程技术实现主节点,优化主节点执行速度; 2021-8-26 LYY 局部路径规划模块+底层驱动上位机显示 2021-09-01 LYY local_planner测试完成;车辆sim_node中考虑加速度,转向加速度约束;主控制结点加入局部路径规划接受Mode 2021-09-15 LYY add automatic back