# move_base-kaiyuan **Repository Path**: yongwangzhiqiankai/move_base-kaiyuan ## Basic Information - **Project Name**: move_base-kaiyuan - **Description**: movebase 增加pid位置精度调整 ,在一移动机器人到达位置后会再次调整位置,提高定位精度。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 7 - **Forks**: 5 - **Created**: 2025-02-08 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README movebase 增加pid位置精度调整 ,在一移动机器人到达位置后会再次调整位置,提高定位精度。 作者: 苏凯 微信号:yongwangzhiqiankai 微信昵称:一往无前 邮箱: 422168787@qq.com qq交流群号: 742679602,也欢迎企业hr入群招聘 项目仅供学习交流,企业使用需联系作者 b站演示: https://www.bilibili.com/video/BV1DB4y1674r/?spm_id_from=333.1387.upload.video_card.click&vd_source=a40d5b174b39ff9a4157afe245dd7db1 参数中:pid_isStartPid: true 开启精度调整功能,建议把局部路径规划eb.yaml参数中的角度精度yaw_goal_tolerance值设置为6.28(车头朝着目标点位置,可以减少一次转向调整); 订阅:目标点精度规划的返回值 xy_goal_pid_pub = nh.advertise("/getPidGoalToleranceMovebase", 1); 注意:movebase在调整精度时,不能接受新的目标命令。等待调整完成后才会进行新的指令 =============================代码改动================================================ 1. /home/spurs9528/workspace/PMRobot/src/navigation/move_base/cfg/MoveBase.cfg #sukai pid 2022008-29last,3def,min,mx,eb.yaml gen.add("pid_kp", double_t, 0, "Restore to the original configuration", 0.5,0.01,1.9) gen.add("pid_kd", double_t, 0, "Restore to the original configuration", 0.5,0.01,1.9) gen.add("pid_ki", double_t, 0, "Restore to the original configuration", 0.1,0.01,1.9) gen.add("pid_time_out", int_t, 0, "Restore to the original configuration", 200,50,500) gen.add("pid_xy_goal_tolerance", double_t, 0, "Restore to the original configuration", 0.05,0.01,1) gen.add("pid_yaw_goal_tolerance", double_t, 0, "Restore to the original configuration", 0.05,0.01,6.28) gen.add("pid_tolerate_xy_goal_tolerance", double_t, 0, "Restore to the original configuration", 0.05,0.01,1) gen.add("pid_tolerate_yaw_goal_tolerance", double_t, 0, "Restore to the original configuration", 0.05,0.01,6.28) gen.add("pid_distance_threshold", double_t, 0, "Restore to the original configuration", 0.35,0.05,0.5) gen.add("pid_isStartPid", bool_t, 0, "Restore to the original configuration", True) gen.add("ispubobstacle", bool_t, 0, "Restore to the original configuration", False) gen.add("isOmni", bool_t, 0, "Restore to the original configuration", False) 2. move_base_params.yaml ####todo sukai pid 精度调整 2022008-29----------------- 1. -------------------------------- #kp系数 pid_kp: 0.5 #kd系数 pid_kd: 0.5 #ki系数 pid_ki: 0.1 #超时时间 pid_time_out: 200 #目标位置精度,不依靠导航调整,自动通过pid调整 pid_xy_goal_tolerance: 0.05 #目标角度精度,不依靠导航调整,自动通过pid调整 pid_yaw_goal_tolerance: 0.05 #目标位置精度容忍值 pid_tolerate_xy_goal_tolerance: 0.05 #目标角度精度容忍值 pid_tolerate_yaw_goal_tolerance: 0.05 #大于30cm时不能调整,误差太大 pid_distance_threshold: 0.35 #true:开启精度调整功能,建议把局部路径规划 【 eb.yaml或dwa.yaml或teb.yaml 】 参数中的角度精度yaw_goal_tolerance值设置为6.28(车头朝着目标点位置,可以减少一次转向调整); pid_isStartPid: true # true:发送障碍物消息,并阻止小车前进;【这个不是很好用,建议在全局规划中去检测障碍物】 ispubobstacle: true #是否为全向机器人 isOmni: False ###------------------------------------------------------------------------------------ 4.遇到障碍时发布消息【这个功能不是很好用,建议在全局规划中去检测障碍物】: 配置: eb.yaml # true:发送障碍物消息,并阻止小车前进; ispubobstacle: true local_costmap_params.yaml #设置机器人检测障碍物的最大范围,单位为米 2.5 obstacle_range: 1 订阅topic: /pubobstacle 消息类型: std_msgs::String "showobstacle" :前方有障碍物 ================================== 清除一所有障碍物 发布topic: /updateCleancostmap 消息类型: std_msgs::String 发布一个空消息