重要参考:
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
9.3.1 导航实现01_准备工作
1.1分布式架构
分布式架构搭建完毕且能正常运行,在PC端可以远程登陆机器人端。
1.2功能包安装
在机器人端安装导航所需功能包:
-
安装 gmapping 包(用于构建地图):sudo apt install ros-
-gmapping -
安装地图服务包(用于保存与读取地图):sudo apt install ros-
-map-server -
安装 navigation 包(用于定位以及路径规划):sudo apt install ros-
-navigation 新建功能(包名自定义,比如:nav),并导入依赖: gmapping map_server amcl move_base
1.3机器人模型以及坐标变换
机器人的不同部件有不同的坐标系,我们需要将这些坐标系集成进同一坐标树,实现方案有两种:
- 不同的部件相对于机器人底盘其位置都是固定的,可以通过发布静态坐标变换以实现集成;
- 可以通过加载机器人URDF文件结合 robot_state_publisher、joint_state_publisher实现不同坐标系的集成。
方案1在上一章中已做演示,接下来介绍方案2的实现。
1.3.1 创建机器人模型相关的功能包
创建功能包:catkin_create_pkg mycar_description urdf xacro
1.3.2 准备机器人模型文件
在功能包下新建 urdf 目录,编写具体的 urdf 文件(机器人模型相关URDF文件的编写可以参考第6章内容),示例如下:
文件car.urdf.xacro用于集成不同的机器人部件,内容如下:
文件car_base.urdf.xacro机器人底盘实现,内容如下:
文件car_camera.urdf.xacro机器人摄像头实现,内容如下:
文件car_laser.urdf.xacro机器人雷达实现,内容如下:
1.3.3 在launch文件加载机器人模型
launch 文件(文件名称自定义,比如:car.launch)内容示例如下:
为了使用方便,还可以将该文件包含进启动机器人的launch文件中,示例如下:
1.4结果演示
不使用机器人模型时,机器人端启动机器人(使用包含TF坐标换的launch文件),从机端启动rviz,在rviz中添加RobotModel与TF组件,rviz中结果(此时显示机器人模型异常,且TF中只有代码中发布的坐标变换):
使用机器人模型时,机器人端加载机器人模型(执行上一步的launch文件)且启动机器人,从机端启动rviz,在rviz中添加RobotModel与TF组件rviz中结果(此时显示机器人模型,且TF坐标变换正常):
后续,在导航时使用机器人模型。
还没有评论,来说两句吧...