发布网友 发布时间:2024-10-24 03:40
共1个回答
热心网友 时间:2024-11-03 22:43
一、引言
在前面的推文中,我们分享了构建里程计解算ROS节点的方法,详情请见:《搭建ROS机器人之——阿克曼底盘里程计解算节点》。在ROS中,里程计主要功能是记录机器人的轨迹,同时也用于辅助地图构建。近期,社群反馈在通过Gmapping实现建图过程中遇到问题,故接下来的推文将详细讲解建图节点配置及相关ROS基础与工具。
二、Service通信方式
已通过例程总结ROS中节点间通信的前两种方式:Topic、Action;现在讲解第三种:Service。Service基于请求和应答,用于分布式系统通信,一个节点作为服务端接收客户端请求,直至收到应答。接下来,通过实例理解Service通信方式:客户端向服务端发送两个数,服务端接收计算和反馈。需自定义消息进行实现。
三、TF:坐标转换库
TF库提供标准方法跟踪坐标系并在系统内转换数据,确保组件用户能确认数据位于所需坐标系中,无需了解转换过程细节。在执行任务时,机器人需知晓位置及相对其他坐标系的位置。例如,实现机器人移动手臂抓取物体功能,首先计算物体相对于传感器位置,其次计算机器人相对于房间位置,最后确定物体相对于机器人的位置。关键步骤——坐标转换通过TF实现。
四、gmapping包介绍
Gmapping ROS包结合里程计、雷达及TF转换,输出2D栅格地图。正确使用功能包需了解其输入输出。通常ROS节点输入数据来自订阅(Subscriber),输出数据用于发布(Publisher)。具体包括:激光雷达测距数据、坐标系转换数据、地图元数据与完整地图数据、地图获取请求等。
五、map_server包介绍
使用Gmapping后,实时地图需保存,使用map_server功能包中的map_saver节点实现。地图保存在指定目录,提供地图数据持久化。
六、robot_pose_ekf包介绍
此功能包用于融合传感器信息,提供稳定里程计数据,解决“地图漂移”问题。融合数据包括:轮式里程计、IMU、视觉里程计、GPS信息,输出机器人3D姿态估计及tf转换。
七、实操与rqt工具的使用
详细讲解Gmapping建图所需launch文件配置,如NEOR mini(阿克曼)和NEOR(两轮差速)配置实例。实操中使用rqt工具检查节点间通讯与tf转换树,确保所有要求满足。
八、展望
后续推文将分享使用开源ROS包搭建ROS-阿克曼小车的代码方法,涉及导航、激光里程计等技术。