ROS学习笔记16:机器人系统建模与仿真

一、概述:

1.机器人系统仿真:

        是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。

(1)仿真优势:低成本、高效、高安全性。

(2)仿真缺陷:仿真器所使用的物理引擎目前还不能够完全精确模拟真实世界的物理情况;仿真器构建的是关节驱动器(电机&齿轮箱)、传感器与信号通信的绝对理想情况,目前不支持模拟实际硬件缺陷或者一些临界状态等情形。

2.机器人系统仿真所需组件:

(1)创建机器人模型:

        URDF (Unified Robot Description Format,统一(标准化)机器人描述格式) ,以 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。

(2)显示各传感器信息:

        rviz(ROS Visualization Tool,ROS的三维可视化工具),它的主要目的是以三维方式显示ROS消息,可以将数据进行可视化表达。例如:可以显示机器人模型,可以无需编程就能表达激光测距仪(LRF)传感器中的传感器到障碍物的距离,Kinect或Xtion等三维距离传感器的点云数据(PCD, Point Cloud Data),从相机获取的图像值等。

(3)搭建仿真环境:

        Gazebo是一款3D动态模拟器,用于显示机器人模型并创建仿真环境,能够在复杂的室内和室外环境中准确有效地模拟机器人。与游戏引擎提供高保真度的视觉模拟类似,Gazebo提供高保真度的物理模拟,其提供一整套传感器模型,以及对用户和程序非常友好的交互方式。

二、URDF语法讲解:

1.将URDF集成进rviz基本流程:

        URDF 不能单独使用,需要结合 Rviz 或 Gazebo。URDF 只是一个文件,需要在 Rviz 或 Gazebo中渲染成图形化的机器人模型。

(1)创建功能包,并导入依赖:

ROS学习笔记16:机器人系统建模与仿真_第1张图片

        在该功能包下创建四个文件夹:

1)urdf:用于存放机器人模型的URDF或xacro文件;

2)meshes:用于放置URDF中引用的模型渲染文件;

3)launch:用于保存相关启动文件;

4)config:用于保存rviz的配置文件。

(2)编写urdf文件:

        在功能包中新建子文件夹:urdf,添加一个.urdf文件,内容如下:


  
    
      
        
      
    
  

ROS学习笔记16:机器人系统建模与仿真_第2张图片

ROS学习笔记16:机器人系统建模与仿真_第3张图片

(3)在launch文件中集成URDF与rviz:

        在功能包中新建子文件夹:launch,添加一个.launch文件,内容如下:


 
    
    
 
    
    
 

ROS学习笔记16:机器人系统建模与仿真_第4张图片

ROS学习笔记16:机器人系统建模与仿真_第5张图片

(4)通过launch文件启动rviz,并加载机器人模型:

ROS学习笔记16:机器人系统建模与仿真_第6张图片

ROS学习笔记16:机器人系统建模与仿真_第7张图片

PS:编译过程中有可能出现因缺少xacro的包导致编译失败

ROS学习笔记16:机器人系统建模与仿真_第8张图片

 解决方式是输入以下安装指令安装xacro相关包:

sudo apt-get install ros-noetic-xacro

(5)rviz 启动后,会发现并没有机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下:ROS学习笔记16:机器人系统建模与仿真_第9张图片

 (6)Fixed Frame处要将默认值map改为urdf文件中机器人底座的name(此处设置的是base_link): ROS学习笔记16:机器人系统建模与仿真_第10张图片

 (7)重复启动launch文件时,Rviz 之前的组件配置信息不会自动保存,需要重复执行步骤4的操作,为了方便使用,可以使用如下方式优化:

1)在功能包中新建子文件夹config:

ROS学习笔记16:机器人系统建模与仿真_第11张图片

2)将文件另存为一个.rviz文件:

ROS学习笔记16:机器人系统建模与仿真_第12张图片

ROS学习笔记16:机器人系统建模与仿真_第13张图片

2.urdf语法:

        URDF文件是一个标准的XML文件,在ROS中预定义了一系列的标签用于描述机器人模型机器人模型可能较为复杂,但是ROS的URDF中机器人的组成却是较为简单,URDF中有四类标签:

        :根标签,类似于 launch文件中的launch标签;

        :连杆标签;

        :关节标签;

        : 集成gazebo需要使用的标签。

(1)标签:

        标签是完整机器人模型最顶层标签,标签都必须包含在标签内。如下图所示,一个完整的机器人模型由一系列组成:

ROS学习笔记16:机器人系统建模与仿真_第14张图片

         标签内可以设置机器人的名称,其基本语法如下:


  ......
  ......
  ......
  ......

(2)标签:

        标签用于描述机器人某个部件的外观和物理属性,如形状、尺寸、颜色、惯性矩阵、碰撞参数等。机器人的link结构一般如下图所示:

ROS学习笔记16:机器人系统建模与仿真_第15张图片

        基本的URDF描述语法如下:


  ......
  ......
  ......

      子标签的描述内容如下:

ROS学习笔记16:机器人系统建模与仿真_第16张图片

示例:demo02_link.urdf


  
    
    
      
      
      
      
      
      
      
      
    
    
    
    
    
      
    
  

(3)标签:

        标签用于描述机器人关节的运动学和动力学属性,包括关节运动的位置和速度限制。

        根据机器人的关节运动形式,可以将其分为六种类型:

ROS学习笔记16:机器人系统建模与仿真_第17张图片

        与人的关节一样,机器人关节(joint)的主要作用是连接两个刚体(link),这两个link分别称为parent linkchild link,如下图所示:

ROS学习笔记16:机器人系统建模与仿真_第18张图片

         标签的描述语法如下:


  
  
  
  
  
  ...

        在这些joint的属性中,必须指定joint的parent link和child link,其他属性可选:

1):强制的属性,父级连杆的名字,是这个link在机器人结构树中的名字。

2):强制的属性,子级连杆的名字,是这个link在机器人结构树中的名字。

3):xyz=各轴线上的偏移量 rpy=各轴线上的偏移弧度。

4):xyz用于设置围绕哪个关节轴运动。

5):关节的参考位置,用来校准关节的绝对位置。

6):用于描述关节的物理属性,例如阻尼值、物理静摩擦力等,经常在动力学仿真中用到。

7):用于描述运动的一些极限值,包括关节运动的上下限位置、速度限制、力矩限制等。

8):用于描述该关节与已有关节的关系。

9):用于描述安全控制器参数。

(4)标签:

        标签用于描述机器人在Gazebo模型中仿真所需要的参数,包括机器人材料的属性、Gazebo插件等。该标签不是机器人模型必须的部分,只有在Gazebo仿真时才需要加入。

        基本语法如下:


  Gazebo/Black

3.(练习)创建机器人模型,底盘为长方体,在长方体的上方安装一摄像头,摄像头可以沿着z轴360度旋转:

(1)编写demo03_joint.urdf文件:



  
  
    
      
        
      
      
      
        
      
    
  
  
  
    
      
        
      
      
      
        
      
    
  
  
  
    
    
    
    
    
    
  

ROS学习笔记16:机器人系统建模与仿真_第19张图片

(2)编写launch文件:

        joint_state_publisher节点:可以发布每个joint的状态。

        robot_state_publisher节点:将机器人各个link、joint之间的关系,通过TF的形式整理成三维姿态信息发布出去。


  
  
  
  
  
  
  
  
  
  
  
  
  

(3)运行:

ROS学习笔记16:机器人系统建模与仿真_第20张图片

 ROS学习笔记16:机器人系统建模与仿真_第21张图片

ROS学习笔记16:机器人系统建模与仿真_第22张图片

PS:使用launch文件启动rviz时,可能出现如下报错

ROS学习笔记16:机器人系统建模与仿真_第23张图片

解决方案 :缺少依赖包,按指令安装以下依赖包即可

sudo apt-get install ros-noetic-robot-state-publisher
sudo apt-get install ros-noetic-joint-state-publisher
sudo apt-get install ros-noetic-joint-state-publisher-gui

ROS学习笔记16:机器人系统建模与仿真_第24张图片ROS学习笔记16:机器人系统建模与仿真_第25张图片ROS学习笔记16:机器人系统建模与仿真_第26张图片

        补充完以上依赖包后,通过launch文件打开rviz,发现之前存在的status错误全部解决了。

4.base_footprint优化urdf:

        之前实现的机器人模型是半沉到地下的,因为默认情况下: 底盘的中心点位于地图原点上,所以会导致这种情况产生。

        优化策略:将初始link设置为一个尺寸极小的link(比如半径为0.001m的球体,或边长0.001m的立方体),然后再在初始 link上添加底盘等刚体,这个初始link一般称之为 base_footprint。



  
    
      
    
  

  
    
    
    
    

base_footprint的相关链接:

DAY5-URDF优化 简单小练习 工具_Zima Blue?的博客-CSDN博客

【ROS_URDF】小车+摄像头+优化footprint的urdf文件,带中文注释_Baily24的博客-CSDN博客

5.(课后作业)urdf文件编写练习:

要求:

(1)新建文件,demo05_test.urdf,并与launch文件集成;

(2)创建一个四轮圆柱状机器人模型,机器人参数如下:底盘为圆柱状,半径 10cm,高 8cm,四轮由两个驱动轮和两个万向支撑轮组成,两个驱动轮半径为 3.25cm,轮胎宽度1.5cm,两个万向轮为球状,半径 0.75cm,底盘离地间距为 1.5cm,与万向轮直径一致(注意joint偏移量的计算)。

作业过程:

(1)创建urdf文件:


    
	    
	        
	            
	                
	            
	        
	    

    
		
	    
	        
	            
	                
	            
	            
	            
	                
	            
	        
	    
	
	    
	        
	        
	        
	    


    
	    
	    
	        
	            
	                
	            
	            
	            
	                
	            
	        
	
	    
	
	    
	        
	        
	        
	        
	    
	
	
	    
	        
	            
	                
	            
	            
	            
	                
	            
	        
	
	    
	
	    
	        
	        
	        
	        
	    


    
	    
	    
	        
	            
	                
	            
	            
	            
	                
	            
	        
	    
	
	    
	        
	        
	        
	        
	    
	
	    
	        
	            
	                
	            
	            
	            
	                
	            
	        
	    
	
	    
	        
	        
	        
	        
	    

ROS学习笔记16:机器人系统建模与仿真_第27张图片

(2) 在launch文件中集成URDF与rviz:


    
    

    
    

    
    
    

    
    


ROS学习笔记16:机器人系统建模与仿真_第28张图片

 (3)编译,通过launch文件启动rviz,并加载机器人模型:

ROS学习笔记16:机器人系统建模与仿真_第29张图片ROS学习笔记16:机器人系统建模与仿真_第30张图片

相关链接:

【基于ROS的URDF练习实例】四轮机器人与摄像头的使用_生如昭诩的博客-CSDN博客

6.urdf工具:

        URDF提供了一些命令行工具,可以帮助我们检查、梳理模型文件,需要在终端中独立安装:

sudo apt-get install liburdfdom-tools

(1)check_urdf语法检查:

check_urdf <名称>.urdf

        check_urdf会解析urdf文件,并且显示解析过程中发现的错误。如果一切正常,在终端中会输出以下信息:

(2)urdf_to_graphiz结构查看:

urdf_to_graphiz <名称>.urdf

        urdf_to_graphiz命令可以查看urdf模型的整体结构。

ROS学习笔记16:机器人系统建模与仿真_第31张图片

ROS学习笔记16:机器人系统建模与仿真_第32张图片

三、URDF优化—xacro:

1.xacro简介:

        urdf构建的机器人模型存在以下问题:

(1)在设计关节的位置时,需要按照一定的公式计算,公式是固定的,但是在 URDF 中依赖于人工计算,存在不便,容易计算失误,且当某些参数发生改变时,还需要重新计算;

(2)URDF 中的部分内容是高度重复的,驱动轮与支撑轮的设计实现,不同轮子只是部分参数不同,形状、颜色、翻转量都是一致的,在实际应用中,构建复杂的机器人模型时,更是易于出现高度重复的设计,按照一般的编程涉及到重复代码应该考虑封装。

        在 ROS 中,为解决这样的问题,针对urdf模型产生了另一种精简化、可复用、模块化的描述形式——xacro,它具备如下优势:

(1)精简模型代码:在xacro文件中,可以通过创建宏定义的方式定义常量或复用代码,不仅可以减少代码量,而且可以让模型代码更加模块化、更具可读性;

(2)提供可编程接口:xacro的语法支持一些可编程接口,如常量、变量、数学公式、条件语句等,可以让建模过程更加智能有效。

2.xacro语法讲解:

(1)属性与算术运算:

1)属性定义:

2)属性调用:

${属性名称}

3)算术运算:

${数学表达式}

(2)宏:

        类似于函数实现,提高代码复用率,优化代码结构,提高安全性。

1)宏定义:


  ......

2)宏调用:

(3)文件包含:


  
  ......

3.xacro文件编写:

demo01.urdf.xacro


    
    
    
    
    
    

    
    
        
            
                
                    
                

                

                
                    
                
            
        

        
        
            
            
            
            
            
        

    
    
    

4.xacro文件转换成urdf文件:

        命令行进入 xacro文件 所属目录,执行:

rosrun xacro xacro <文件名>.xacro > <文件名>.urdf

        这样就将 xacro 文件解析为 urdf 文件,并储存在当前路径。

 解析前:

ROS学习笔记16:机器人系统建模与仿真_第33张图片

 解析后:

ROS学习笔记16:机器人系统建模与仿真_第34张图片

5.xacro文件集成launch文件:


  
  
  
  
  
  
  
  

ROS学习笔记16:机器人系统建模与仿真_第35张图片

6.通过launch启动rviz:

(这里笔者做出来的结果总是报错,错误原因应该是demo01.urdf.xacro代码有错误,但笔者尚未找到错误,也尚未在网上找到可用代码)

相关链接:

ROS ERROR_printeger的博客-CSDN博客

使用xacro优化URDF的问题解决_m0_56588389的博客-CSDN博客

四.xacro练习:

1.要求:

(1)将demo05_test.urdf所搭建的机器人,改写为.xacro文件,驱动轮和支撑轮通过宏实现;

(2)将所提供的摄像头与雷达的.xacro文件与机器人底盘组合,用调用各文件 ;

(3)通过launch文件启动rviz并显示模型。

2.编写xacro文件:

(1)小车底盘的xacro文件:




    
    
    
    
        
    
    
     
     
     
     

    
    
      
        
          
        
      
    

    
      
        
          
        
        
        
          
        
      
    

    
      
      
      
    

    
    
    
    
    
    
      
        
          
            
          
          
          
        
      

      
        
        
        
        
      
    
    
    
    
    
     

    
    
      
        
            
                
            
            
            
        
      

      
          
          
          
          
      
    

    
    


(2)摄像头的xacro文件:



    
    
     
     
     
     
     
     
    
    
    
    	
    		
    			
    		
    		
    			
    		
    	
    
    
    
    	
    	
    		
    

ROS学习笔记16:机器人系统建模与仿真_第36张图片

(3)雷达的xacro文件:



    
    
     
    
    
    
    
    
    
     
    
    
    
    
    
    
    
    	
    		
    			
    		
    		
    			
    		
    	
    
    
    
    	
    	
    	
    
    
    
    
    	
    		
    			
    		
    		
    			
    		
    	
    
    
    
    	
    	
    	
    

ROS学习笔记16:机器人系统建模与仿真_第37张图片

3.组合小车模型文件:



    
    
    

4.编写launch文件:

ROS学习笔记16:机器人系统建模与仿真_第38张图片


    
    
    
    
    

5.通过launch文件启动rviz:

ROS学习笔记16:机器人系统建模与仿真_第39张图片

ROS学习笔记16:机器人系统建模与仿真_第40张图片

 相关链接:

【ROS进阶篇】第八讲(下) URDF的编程优化Xacro使用_生如昭诩的博客-CSDN博客

五、基于ArbotiX和rviz的仿真器(rviz中控制机器人运动):

1.ArbotiX介绍:

        Arbotix是一款控制电机、舵机的控制板,并提供相应的 ros 功能包,这个功能包的功能不仅可以驱动真实的 Arbotix 控制板,它还提供一个差速控制器,通过接受速度控制指令更新机器人的 joint 状态,从而帮助我们实现机器人在 rviz 中的运动。

2.安装ArbotiX:

安装方式一:命令行调用

sudo apt-get install ros-noetic-arbotix

ROS学习笔记16:机器人系统建模与仿真_第41张图片

        如果命令行安装失败,尝试方式二。

安装方式二:源码安装

git clone https://github.com/vanadiumlabs/arbotix_ros.git
先从 github 下载源码,移至当前工作空间/src下,然后调用catkin_make编译。

3.添加ArbotiX所需的配置文件:

        在config文件夹下新建control.yaml文件。

# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controller
controllers: {
   # 单控制器设置
   base_controller: {
          #类型: 差速控制器
       type: diff_controller,
       #参考坐标
       base_frame_id: base_footprint, 
       #两个轮子之间的间距
       base_width: 0.2,
       #控制频率
       ticks_meter: 2000, 
       #PID控制参数,使机器人车轮快速达到预期速度
       Kp: 12, 
       Kd: 12, 
       Ki: 0, 
       Ko: 50, 
       #加速限制
       accel_limit: 1.0 
    }
}

ROS学习笔记16:机器人系统建模与仿真_第42张图片

(详细内容参考:http://wiki.ros.org/arbotix_python/diff_controller)

4.launch文件中配置ArbotiX节点:


  
  
  
  
  
  
  
  
  
  
    
    
  

(1)调用了arbotix_python功能包下的arbotix_driver节点

(2)arbotix驱动机器人运行时,需要获取机器人信息,可以通过file家在配置文件

(3)在仿真环境下,需要配置sim为true

ROS学习笔记16:机器人系统建模与仿真_第43张图片

5.启动launch文件并配置rviz:

ROS学习笔记16:机器人系统建模与仿真_第44张图片

ROS学习笔记16:机器人系统建模与仿真_第45张图片

6.控制机器人模型运动:

ROS学习笔记16:机器人系统建模与仿真_第46张图片

ROS学习笔记16:机器人系统建模与仿真_第47张图片

ROS学习笔记16:机器人系统建模与仿真_第48张图片

ROS学习笔记16:机器人系统建模与仿真_第49张图片

相关链接:

Rviz中控制机器人模型运动(arbotix)_most delay的博客-CSDN博客_rviz控制机器人运动

六、URDF集成Gazebo:

1.urdf与Gazebo集成的基本流程:

(1)创建功能包并导入依赖:

ROS学习笔记16:机器人系统建模与仿真_第50张图片

ROS学习笔记16:机器人系统建模与仿真_第51张图片

(2)修改urdf文件(这里以盒状的demo01.urdf的基础修改):

ROS学习笔记16:机器人系统建模与仿真_第52张图片




    
        
            
                
            
            
            
                
            
        
        
            
                
            
            
        
        
            
            
            
        
    
    
        Gazebo/Black
    


注意, URDF 与 Gazebo 集成时,和 Rviz 有明显区别:
1)必须使用 标签,在仿真环境中,必然涉及到碰撞检测,collision 提供碰撞检测的依据,简单的模型,可采用和标签中一样的内容;
2)必须使用 标签,包含了机器人的质量和惯性矩阵;
3)颜色设置,需要重新使用 标签标注,中的颜色设置只能在 rviz 中显示。

(3)launch文件启动Gazebo并显示模型:

1)launch文件:

ROS学习笔记16:机器人系统建模与仿真_第53张图片



    
    

    
    

    
    

最后一句话意思是在Gazebo中加载一个机器人模型,该功能由gazebo_ros下的spawn_model提供:
-urdf 加载的是 urdf 文件
-model car 模型名称是 car
-param robot_description 从参数 robot_description 中载入模型

2)显示模型:

ROS学习笔记16:机器人系统建模与仿真_第54张图片

ROS学习笔记16:机器人系统建模与仿真_第55张图片

2.urdf集成Gazebo示例:

(1)编写封装惯性矩阵算法的xacro文件:


    
    
        
            
            
        
    

    
        
            
             
        
    

    
       
               
               
       
   

ROS学习笔记16:机器人系统建模与仿真_第56张图片

(2)为机器人模型中的每一个link添加collision和inertial标签,并且重置颜色属性:

ROS学习笔记16:机器人系统建模与仿真_第57张图片

1)底盘文件(demo05_car_base.urdf.xacro):




    
    
    
    
    
        
    
    
     
     
     
     
     

    
    
      
        
          
        
      
    

    
      
        
          
        
        
        
          
        
      
      
        
          
        
        
      
      

    


    
      
      
      
    
    
        Gazebo/Yellow
    

    
    
    
    
     

    
    
      
        
          
            
          
          
          
        
        
          
            
          
          
        
        

      

      
        
        
        
        
      

      
        Gazebo/Red
      

    
    
    
    
    
     
     

    
    
      
        
            
                
            
            
            
        
        
            
                
            
            
        
        
      

      
          
          
          
          
      
      
        Gazebo/Red
      
    

    
    



2)相机文件(demo05_car_camera.urdf.xacro):



    
     
     
     
     
     
     

     

    
    
        
            
                
            
            
            
        
        
            
                
            
            
        
        
    

    
        
        
        
    
    
        Gazebo/Blue
    

3)雷达文件(demo05_car_laser.urdf.xacro):




    
     
     
     
     
     

     

    
        
            
                
            
            
            
                
            
        

        
            
                
            
            
        

        

    

    
        
        
        
    

    
        Gazebo/White
    

    
     
     
     
     
     

     

    
    
        
            
                
            
            
            
        
        
            
                
            
            
        
        
    

    
        
        
        
    
    
        Gazebo/Black
    

4)组合底盘、摄像头与雷达的 Xacro 文件(demo05.urdf.xacro):



    
    
    
    

(3)在launch文件中启动gazebo并添加机器人模型:

ROS学习笔记16:机器人系统建模与仿真_第58张图片


    
    
    
    

    
    

ROS学习笔记16:机器人系统建模与仿真_第59张图片

3.Gazebo仿真环境搭建:

ROS学习笔记16:机器人系统建模与仿真_第60张图片

ROS学习笔记16:机器人系统建模与仿真_第61张图片

ROS学习笔记16:机器人系统建模与仿真_第62张图片

七、URDF、rviz、Gazebo综合应用:

1.ros_control:

        rviz+Arbotix构建的仿真器使用了Arbotix差速控制器实现对机器人模型的控制,但是这款控制器有很大的局限性,无法在ROS丰富的机器人应用中通用。

        ros_control是ROS为开发者提供的机器人控制中间件,包含一系列控制器接口、传动装置接口、硬件接口、控制器工具等,可以帮助机器人应用功能包快速落地,提高开发效率。

ROS学习笔记16:机器人系统建模与仿真_第63张图片

2.运动控制实现流程:

(1)为已经创建完毕的机器人模型,编写一个单独的xacro文件,添加传动装置以及控制器:



    
    
        
        
            transmission_interface/SimpleTransmission
            
                hardware_interface/VelocityJointInterface
            
            
                hardware_interface/VelocityJointInterface
                1
            
        
    

    
    
    

    
    
        
            Debug
            true
            /
            1
            true
            true
            100.0
            true
            left_wheel2base_link 
            right_wheel2base_link 
            ${base_link_radius * 2} 
            ${wheel_radius * 2} 
            1
            30
            1.8
            cmd_vel 
            odom 
            odom 
            base_footprint 
        
    


ROS学习笔记16:机器人系统建模与仿真_第64张图片

(2)将move.xacro文件集成进总的机器人模型文件(以demo05.xacro为载体):



    
    
    
    
    

ROS学习笔记16:机器人系统建模与仿真_第65张图片

(3)launch文件启动gazebo,加载课程所提供的仿真环境,控制小车运动:

解决方案:

sudo apt-get ros-noetic-teleop-twist-keyboard

ROS学习笔记16:机器人系统建模与仿真_第66张图片

 结果展示:

ROS学习笔记16:机器人系统建模与仿真_第67张图片

 ROS学习笔记16:机器人系统建模与仿真_第68张图片

ROS学习笔记16:机器人系统建模与仿真_第69张图片

3.rviz查看里程计信息:

(1)launch文件启动rviz:

        创建demo06_odom.launch文件:


    
        
    
             

ROS学习笔记16:机器人系统建模与仿真_第70张图片

(2)在rviz中添加组件:

1)启动demo06_car.launch文件:

ROS学习笔记16:机器人系统建模与仿真_第71张图片

2)启动demo06_odom.launch文件:

相关链接:

6.7.1 机器人系统仿真/URDF、Gazebo与Rviz综合运用/机器人运动控制以及里程计信息显示_janedipan的博客-CSDN博客

4.雷达信息仿真及显示:

(1)为机器人添加雷达配置:


 
  
      //reference要和laser连杆名称一致
            //type雷达类型 name起名字
      0 0 0 0 0 0        //6D位姿
      true        //雷达射线true可视,false不可视
      5.5        //雷达射线更新频率  次/s
      
        
          
            360        //采样个数,雷达旋转一周采样数
            1        //分辨率,每N个射线测距一次,设置大一点设备计算压力小,但是损失精度
            -3        //采样范围,单位是弧度,以机器人朝向为中心
            3        //逆时针为正,顺时针为负(看下面演示)
          
        
        
          0.10        //采样范围   单位  米
          30.0
          0.01         //采样精度
        
                //高斯噪声,数据采集不可能每次都准确
          gaussian
          0.0
          0.01
        
      
      
        /scan        //雷达发布的话题!!!
        laser
      
    
  
 

ROS学习笔记16:机器人系统建模与仿真_第72张图片

(2)将laser.xacro文件集成进总的机器人模型文件:



    
    
    
    
    
    

ROS学习笔记16:机器人系统建模与仿真_第73张图片

(3)launch文件启动gazebo和rviz并显示雷达数据:

ROS学习笔记16:机器人系统建模与仿真_第74张图片

相关链接:

ros学习笔记之雷达信息仿真及显示_要好好养胃的博客-CSDN博客

5.摄像头信息仿真及显示:

(1)为机器人添加摄像头配置:


  
  
    
    
      30.0 
      
      
        1.3962634
        
          1280
          720
          R8G8B8
        
        
          0.02
          300
        
        
          gaussian
          0.0
          0.007
        
      
      
      
        true
        0.0
        /camera
        image_raw
        camera_info
        camera
        0.07
        0.0
        0.0
        0.0
        0.0
        0.0
      
    
  

ROS学习笔记16:机器人系统建模与仿真_第75张图片

(2)将laser.xacro文件集成进总的机器人模型文件:



    
    
    
    
    
    

ROS学习笔记16:机器人系统建模与仿真_第76张图片

(3)launch文件启动gazebo和rviz并显示摄像头数据:

1)启动gazebo:

ROS学习笔记16:机器人系统建模与仿真_第77张图片

2)打开rviz,添加摄像头:

ROS学习笔记16:机器人系统建模与仿真_第78张图片

相关链接:

6.7.3 摄像头信息仿真以及显示_赵虚左的博客-CSDN博客

6.kinect信息仿真及显示:

(1)为机器人添加kinect配置:


      
      
        true
        20.0
        
          ${60.0*PI/180.0}
          
            R8G8B8
            640
            480
          
          
            0.05
            8.0
          
        
        
          camera
          true
          10
          rgb/image_raw
          depth/image_raw
          depth/points
          rgb/camera_info
          depth/camera_info
          kinect link名称
          0.1
          0.0
          0.0
          0.0
          0.0
          0.0
          0.4
        
      
    
 

ROS学习笔记16:机器人系统建模与仿真_第79张图片

(2)将laser.xacro文件集成进总的机器人模型文件:



    
    
    
    
    
    
    
    

ROS学习笔记16:机器人系统建模与仿真_第80张图片

相关链接:

机器人系统仿真(十六)——摄像头和kinect信息仿真以及显示_蔡军帅的博客-CSDN博客

你可能感兴趣的:(ROS编程技术,机器人,学习)