ROS入门教程(五)—— RViz仿真

上篇文章我们介绍了URDF文件的导出,本文将继上文介绍安装完导出URDF文件后,如何在机器人操作系统(ROS)中显示,并且让它动起来。


目录

前言

RViz机器人模型可视化

launch启动RViz配置文件

Arbotix控制机器人模型运动


前言

ROS中提供了Gazebo与RViz两种仿真软件,本文将机器人模型在RViz仿真环境中可视化,同时利用Arbotix功能包使机器人完成圆周运动。


RViz机器人模型可视化

step1.创建工作空间

Ctrl+Alt+T打开终端分别输入:

mkdir -p helloworld/src
cd helloworld
catkin_make

其中robot_ws为我们命名的工作空间名称,catkin_make是一个编译命令,该编译命令会帮我们创建好我们所需的文件并输出若干日志,成功结果如下:

ROS入门教程(五)—— RViz仿真_第1张图片

step2.创建功能包

继续在该终端输入:【启动VS Code】

code .

右键一级src目录选择Create Catkin Package【创建功能包】

ROS入门教程(五)—— RViz仿真_第2张图片

输入功能包名称【robot】再输入依赖【urdf xacro】创建结果如下

ROS入门教程(五)—— RViz仿真_第3张图片

step1~2若出现问题请学习参考ROS入门教程(三)—— 用C++实现Hello world

step3.覆盖原功能包

将刚新建的robot功能包删除,替换为我们利用sw2urdf插件导出的robot功能包,如下所示:

ROS入门教程(五)—— RViz仿真_第4张图片

成功结果如下,功能包中包含display.launch文件与robot.urdf文件:

ROS入门教程(五)—— RViz仿真_第5张图片

为了美观可以将base_link ,left_wheel_link 与right_wheel_link的color标签进行修改,即将34行改为"1 1 1 1",将74行与132行改为"0.412 0.412 0.412 1",结果如下所示:【Ctrl+S保存】

ROS入门教程(五)—— RViz仿真_第6张图片

step4.运行launch文件

Ctrl+Shift+B执行编译命令,结果如下:

ROS入门教程(五)—— RViz仿真_第7张图片

Ctrl+Shift+~启动命令行分别输入:

source ./devel/setup.bash
roslaunch robot display.launch

结果如下所示:

ROS入门教程(五)—— RViz仿真_第8张图片

step5.在RViz中添加机器人模型

ROS入门教程(五)—— RViz仿真_第9张图片

step6.修改大地坐标

ROS入门教程(五)—— RViz仿真_第10张图片

这样我们就成功的在RViz中显示了我们的机器人模型,实现了机器人模型的可视化。


launch启动RViz配置文件

读者可以发现,每次打开RViz都需要添加机器人模型,重新设置大地坐标系这实在是过于复杂,RViz提供了配置文件以适用于不必每次打开都要重新配置RVi:

step1.保存配置文件

按Ctrl+Shift+S保存文件至robot功能包中的config文件夹中,命名为robot.rviz,如下所示:

ROS入门教程(五)—— RViz仿真_第11张图片

step2.修改launch文件

将display.launch修改为以下:


  
  
  
  
  

这样每次运行该launch文件去启动RViz时就无需添加机器人模型与修改大地坐标了。


Arbotix控制机器人模型运动

step1.安装Arbotix功能包

Ctrl+Alt+T打开终端输入:

sudo apt install ros-melodic-arbotix

step2.配置yaml文件

在robot功能包下config文件夹中新建文件robot.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入门教程(五)—— RViz仿真_第12张图片

step3.修改URDF与launch文件

将robot功能包下urdf文件夹中的robot.urdf修改为以下:




  
    
      
        
      
      
        
      
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
        
        
        
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
    
  
  
    
      
      
      
    
    
      
      
        
      
      
        
      
    
    
      
      
        
      
    
  
  
    
    
    
    
    
  

其中与之前的URDF文件相比,增加了部件base_footprint,将其与base_link连接,读者可以发现,增加base_footprint后机器人正好基于地面了,相比与之前更加的合理,同时也为后续的里程计提供了便利,对比结果如下:

ROS入门教程(五)—— RViz仿真_第13张图片

ROS入门教程(五)—— RViz仿真_第14张图片

在此建议读者以后每次建立URDF文件都添加部件base_footprint。

将robot功能包下launch文件夹中的display.launch修改为以下:


  
  
  
  
  
  
     
     
  

step4.在RViz中添加odom里程计

在VS Code集成命令行输入:

source ./devel/setup.bash
roslaunch robot display.launch

 修改大地坐标为odom并添加odom里程计至RViz中:

ROS入门教程(五)—— RViz仿真_第15张图片

ROS入门教程(五)—— RViz仿真_第16张图片

step6.发布消息

Ctrl+Alt+T打开终端输入:

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
  x: 1.0
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 1.0" 

该代码段的旨在10HZ 的频率循环发送运动信息至订阅者,成功结果如下:

ROS入门教程(五)—— RViz仿真_第17张图片

到这里我们就完成了通过Arbotix功能包实现了机器人模型的运动。


文章预告:ROS入门教程(六)—— Gazebo仿真

资料来源:奥特学院(Autolabor)

商业转载请联系官方授权,非商业转载请注明出处

你可能感兴趣的:(ROS入门教程,ubuntu)