资讯动态

Diliverycar(五)

发布时间:2026/10/7 2:50:27 来源:尧图企业网站定制
一、今天的目标跑通导航流程连接小车 → SSH 登录 → 启动 robot_navigation → 队友 Ubuntu 连接小车 ROS Master → RViz 显示地图 → 显示 LaserScan → AMCL → 2D Pose Estimate → 2D Nav Goal今天主要解决的是网络/IP → ROS Master → RViz → /map → /scan → /initialpose → AMCL 粒子一、SSH 登录小车执行ssh EPRobot172.20.10.2成功进入EPRobotEPRobot2然后cd ~/robot_ws source devel/setup.bash检查echo $ROS_DISTRO返回melodic说明Ubuntu / ROS 环境正常 robot_ws 正常 SSH 正常二、启动小车导航在小车 SSH 终端运行roslaunch robot_navigation robot_navigation.launch启动后出现的重要信息Serial Open Succeed Received a 384 x 384 map Initializing likelihood field model odom received!同时启动了base_control lslidar_driver_node laser_filter map_server amcl move_base robot_state_publisher地图参数384 × 384 resolution 0.05 m/pixel黄色的 costmap 警告当时没有影响正常运行。三、小车端 ROS 环境变量今天还明确区分了“小车”和“队友电脑”的 ROS_IP。小车端应该使用export ROS_MASTER_URIhttp://172.20.10.2:11311 export ROS_IP172.20.10.2 unset ROS_HOSTNAME source ~/robot_ws/devel/setup.bash四、Ubuntu 的 ROS 网络设置队友电脑本地终端应该export ROS_MASTER_URIhttp://172.20.10.2:11311 export ROS_IP172.20.10.5 unset ROS_HOSTNAME source /opt/ros/melodic/setup.bash即参数值ROS Master172.20.10.2小车172.20.10.2队友 Ubuntu172.20.10.5注意今天一开始写成ROS_MASTER_URI... ROS_IP...但没有export。正确必须是export ROS_MASTER_URI... export ROS_IP...否则 ROS 节点不一定能继承变量。五、队友电脑没有 robot_ws在队友 Ubuntu 上执行cd ~/robot_ws出现没有那个文件或目录然后find ~ -maxdepth 2 -type d \( -name robot_ws -o -name catkin_ws \) 2/dev/null也没有结果。说明队友电脑本地没有机器人源码工作空间。但是这并不妨碍作为远程 RViz 客户端使用。只需要source /opt/ros/melodic/setup.bash然后通过 ROS 网络连接小车即可。六、确认队友电脑已经连接 ROS Master执行rostopic list成功看到大量话题/map /map_metadata /scan /scan_filtered /tf /tf_static /amcl_pose /initialpose /particlecloud /cmd_vel /odom /move_base/...说明队友 Ubuntu ↓ 172.20.10.2:11311 ↓ 小车 ROS Master已经连接成功。七、启动 RViz因为队友本地没有robot_ws所以没有使用roslaunch robot_navigation navigation_rviz.launch而是直接rvizRViz 中Fixed Frame map八、重点RViz 中需要添加的显示项目重新启动默认 RViz 后只剩Grid。关于AMCL需要点击Add加入DisplayTopicMap/mapLaserScan/scanPoseArray/particlecloud粒子云TF默认Path/move_base/NavfnROS/planFixed Framemap九、LaserScan 红线突然消失有一次地图仍然存在但LaserScan不再显示红线。最开始怀疑/scan。检查rostopic hz /scan结果却出现ERROR: Unable to communicate with master!继续检查ps -ef | grep rosmaster只有grep rosmaster没有真正的rosmaster。同时ss -lntp | grep 11311没有输出。因此确认ROS Master 已经停止。ROS Master 为什么会断之前运行robot_navigation.launch的终端被停止或对应 ROS Master 退出。由于这个 launch 会auto-starting new master所以它退出后rosmaster也一起没了。这也是为什么RViz 地图/红线开始异常 rostopic 无法连接重新启动 ROS Master / 导航重新在小车export ROS_MASTER_URIhttp://172.20.10.2:11311 export ROS_IP172.20.10.2 unset ROS_HOSTNAME source ~/robot_ws/devel/setup.bash然后roslaunch robot_navigation robot_navigation.launch重新出现Serial Open Succeed Received a 384 x 384 map odom received!队友电脑重新执行rostopic list话题全部恢复。LaserScan 恢复队友电脑rostopic hz /scan能够看到频率。RVizLaserScan Topic /scan Status Ok红色激光数据恢复。今天确认有红线 ≠ 只是 RViz 开关问题如果红线没了要同时检查/scan ROS Master RViz Topic十、问题2D Pose Estimate 不生效接下来最大的一个问题是点击2D Pose Estimate但地图里的机器人/红框不移动。最开始检查rostopic echo /initialpose然后在 RViz 再拖一次 2D Pose。结果没有任何输出说明RViz 没有真正发布/initialpose。检查 2D Pose Estimate TopicRVizPanels → Tool Properties → 2D Pose Estimate看到Topic /initialpose因此 Topic 设置本身正确。真正定位到 2D Pose 问题执行rostopic info /initialpose得到Type: geometry_msgs/PoseWithCovarianceStamped Publishers: None Subscribers: * /amcl这里非常关键。说明AMCL 正在订阅 /initialpose 但是 RViz 没有作为 Publisher 注册也就是说RViz有问题AMCL 没问题 /initialpose 没问题 RViz 有问题为什么 RViz 没注册 /initialpose原因很可能是ROS Master 中途重启但 RViz 是 ROS Master 重启以前启动的旧 RViz。ROS Master 重启之后旧 RViz 没有正确重新注册 Publisher。解决关闭旧 RViz → 保持 robot_navigation 正常运行 → 设置队友 Ubuntu ROS 环境 → 重新启动 rviz重新启动 RViz队友电脑export ROS_MASTER_URIhttp://172.20.10.2:11311 export ROS_IP172.20.10.5 unset ROS_HOSTNAME source /opt/ros/melodic/setup.bash rviz然后重新添加Map LaserScan PoseArray TF Path十一、AMCL 粒子为什么变成一大片红箭头重新配置后看到地图上方出现非常密集的大量红色箭头。这不是雷达坏了。这是PoseArray Topic /particlecloud也就是AMCL 粒子当前大量粒子分散表示AMCL 对小车当前实际位置不确定。也就是定位还没有收敛。PoseArray 和 LaserScan 的区别今天非常容易混淆LaserScanTopic /scan用于显示激光雷达测量。它应该大致落在黑色墙体上。PoseArrayTopic /particlecloud用于显示 AMCL 粒子。它显示为很多小箭头如果粒子铺满一大片定位未收敛如果粒子集中在机器人周围定位较好正确的 2D Pose Estimate 操作恢复/initialposePublisher 后2D Pose Estimate操作方法鼠标起点 小车现实位置 箭头方向 小车现实车头方向然后观察LaserScan和地图黑色墙体是否重合。如果明显错重新 2D Pose Estimate不需要重启。AMCL 如何逐渐收敛做完大致正确的2D Pose Estimate以后不一定马上完全收敛。可以让小车慢速前进一点 → 小幅转弯 → 再前进一点AMCL 会综合激光雷达 里程计 地图逐渐修正位置。正常现象粒子一大片 ↓ 逐渐缩小 ↓ 集中在小车附近十二、最终判断定位是否成功以后不要只看“机器人图标”。重点看三个东西检查项目正常表现/scan有稳定频率LaserScan红色激光基本贴合地图墙体/particlecloud粒子逐渐集中如果三项基本正常再进行2D Nav Goal最后就是红线和黑色边框会重合这样十三、今天最重要的排障经验现象优先检查SSH 一直没响应IP、网段Connection refused对方在线但 SSH 端口没开不知道小车 IPnmap -p 22 网段rostopic报 Unable to communicate with masterrosmaster / 11311地图 Status OK 但看不见RViz 视角没有红色激光/scan、ROS Master、LaserScan Topic2D Pose 不生效/initialposePublisher/initialposeSubscribers 有/amclPublisher NoneRViz 没正确注册ROS Master 中途重启RViz 最好重新启动一大片红箭头AMCL/particlecloud未收敛小车刚放回地图不用重启重新 2D Pose激光和墙不重合初始位置/车头方向不准

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑