第 8 章 机器人实体导航实现01

第 8 章 机器人实体导航实现01

码农世界 2024-05-30 前端 86 次浏览 0个评论

重要参考:

课程链接: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机器人模型以及坐标变换

    机器人的不同部件有不同的坐标系,我们需要将这些坐标系集成进同一坐标树,实现方案有两种:

    1. 不同的部件相对于机器人底盘其位置都是固定的,可以通过发布静态坐标变换以实现集成;
    2. 可以通过加载机器人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坐标变换正常):

    后续,在导航时使用机器人模型。

转载请注明来自码农世界,本文标题:《第 8 章 机器人实体导航实现01》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,86人围观)参与讨论

还没有评论,来说两句吧...

Top