ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)

所用的学习链接:

【奥特学园】ROS机器人入门课程《ROS理论与实践》零基础教程P278-288

【以上视频笔记见http://www.autolabor.com.cn/book/ROSTutorials/】

官方参考链接:http://gazebosim.org/tutorials?tut=ros_gzplugins

前文参考

ROS入门(五)——仿真机器人一(URDF+Rviz)

ROS入门(六)——仿真机器人二(Xacro+Rviz+Arbotix小车运动)

ROS入门(七)——仿真机器人三(Gazebo+Xacro)

一、介绍

1.目标

1.运动控制以及里程计信息显示
2.雷达信息仿真以及显示
3.摄像头信息仿真以及显示
4.kinect 信息仿真以及显示

2.ros_control

为了提高机器人系统在不同平台上的可移植性,ROS内置了一个解决方案ros_control。包含了各种接口以实现不同平台上的机器人系统兼容,提高程序的效率和灵活性。

二、实操流程

1.运动控制

(1)运动控制 t6_move.xacro文件

在前面章节中已经创建了一个机器人模型,接下来需要编写一个单独的 xacro 文件【t6_move.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 
        
    

(2)xacro集成文件 t7_12346.xacro

新建 t7_12346.xacro



    
    
    
    
    

(3)launch文件启动gazebo

新建 t7_gazebo.launch


    
    
    

    
    
    
        
    

    
    
  • ctrl+shift+b编译
  • 新终端1
roscore
  • 新终端2
roslaunch urdf_gazebo t7_gazebo.launch

 (4)launch文件启动rviz

 新建 t7_rviz.launch


    
    

    
    
    

  • 新终端3
roslaunch urdf_gazebo t7_rviz.launch

(5)小车运动

查看话题列表,会发现多了 /cmd_vel 然后可以发布 vmd_vel 消息控制。

  •  方法一(推荐)

①如果没有安装teleop-twist-keyboard,则进行安装

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

 ②启动键盘方向控制

rosrun teleop_twist_keyboard teleop_twist_keyboard.py 

运行完就可以用键盘控制小车运动【注意要要让当前窗口为运行该代码的终端,小车才能运动】

 常用按键:

u :左侧逆时针圆周           i :前进          o :右侧顺时针圆周
j :逆时针原地运动           k :停止          l :顺时针原地运动
m :左侧顺时针圆周           , :后退          . :右侧逆时针圆周

q/z : increase/decrease max speeds by 10%(速度提高/降低10%)
w/x : increase/decrease only linear speed by 10%(线速度提高/降低10%)
e/c : increase/decrease only angular speed by 10%(角速度提高/降低10%)

ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)_第1张图片

  • 方法二

使用命令控制(或者可以编写单独的节点控制),在终端运行代码后发现gazebo中的小车运动了

# 查看话题列表
# rostopic list

rostopic pub -r 10 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.2, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)_第2张图片

(6)Rviz信息展示

①左侧设置Global Options→Fixed Frame:odom

②左下角Add→RobotModel、Axes、TF、Odometry

③左侧设置Odometry→Topic:/odom,并取消勾选Covariance【不然页面会呈现透明黄色】

④左上角File→Save config as→7.19_demo01/urdf_gazrbo目录下新建config文件夹→保存为 t7_car.rviz

修改 t7_rviz.launch的环境导入,可以重启重新加载

# 原句子
# 
 
# 更新后

控制小车在gazebo运动时,rviz将显示相关信息

ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)_第3张图片

2.雷达、摄像头信息仿真

(1)雷达传感器 t8_sensor_laser.xacro

 新建 t8_sensor_laser.xacro


    
    
        
            0 0 0 0 0 0
            true
            5.5
            
                
                    
                        360
                        1
                        -3
                        3
                    
                
                
                    0.10
                    30.0
                    0.01
                
                
                    gaussian
                    0.0
                    0.01
                
            
            
                /scan
                laser
            
        
    

(2)摄像头传感器 t9_sensor_camera.xacro

 新建 t9_sensor_camera.xacro


    
    
        
        
            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
            
        
    

(3)修改组合文件和启动

 ①修改 t7_12346.xacro



    
    
    
    
    

    
    

    
    

②启动

ctrl+shift+b 编译

​# 终端2
roslaunch urdf_gazebo t7_gazebo.launch

# 终端3
roslaunch urdf_gazebo t7_rviz.launch

(4)信息展示

① rviz中Add → LaserScan(设置 Topic:/scan)

② rviz中Add → Camera(设置 image topic:/camera/image_raw)

ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)_第4张图片

rviz窗口中显示了摄像头拍摄结果和雷达扫描结果 

3.kinect摄像头信息仿真

kinet摄像头是一种GBD深度摄像头,可以显示更多深度的拍摄信息

(1)kinet摄像头传感器 t10_sensor_kinet.xacro

新建 t10_sensor_kinet.xacro。

由于未搭建专门的组件作为kinet摄像头,因此使用小车构造中未被安排功能的支架作为摄像头。支架名称为support,因此将用到 " kinect link名称 " 的地方改为 " support "。【代码中已注释并修改过】


    
    
        
            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
                
                
                support_depth
                0.1
                0.0
                0.0
                0.0
                0.0
                0.0
                0.4
            
        
    

(2)修改组合文件和启动

 ①修改 t7_12346.xacro



    
    
    
    
    
    
    
    
    
    
    

②修改 t7_rviz.launch


    
    

    
    
    
    
    

②启动

ctrl+shift+b 编译

​# 终端2
roslaunch urdf_gazebo t7_gazebo.launch

# 终端3
roslaunch urdf_gazebo t7_rviz.launch

(3)信息展示

rviz中 → Camera → Image Topic :/camera/depth/image_raw

(4)点云数据展示

在kinect中也可以以点云的方式显示感知周围环境,而不用小车在rviz中运动,操作如下:

①rviz中 → Add → Point Cloud2

②Point Cloud2 → Topic :/camera/depth/points

【我的虚拟机同时启动rviz和gazebo,并加入各种各样的仿真信息显示组件的时候,都快爆炸了,所以一步步慢慢添加】

ROS入门(八)——仿真机器人四(Gazebo+Rviz+雷达、摄像头、kinet仿真显示)_第5张图片

加入点云数据后,gazebo中小车移动时,rviz中不会移动,而是前方的 " 大屏幕 " 内容显示为拍摄到的内容

你可能感兴趣的:(ROS入门,ros,gazebo,rviz,仿真,ros_control)