Gazebo也在其模型仓库中提供了各种流行机器人、传感器和各种3D物体的仿真模型。我们也可以直接使用。也可以自己设计机器人模型进行仿真。
上一节设计了机器人的3D模型之后,将使用Gazebo仿真器进行仿真。
4.1、使用Gazebo和ROS仿真机械臂
在开始使用之前,应安装以下软件包:
sudo apt-get install ros-melodic-gazebo-ros-pkgs ros-melodic-gazebo-msgs ros-melodic-gazebo-plugins ros-melodic-gazebo-ros-control
其中:
gazebo-ros-pkgs:包含用于将ROS与Gazebo连接的封装和工具
gazebo-msgs:包含ROS与Gazebo交互的消息和服务的数据结构
gazebo-plugin:包含用于传感器、执行结构的Gazebo插件
gazebo-ros-control:包含用于在ROS和Gazebo之间通信的标准控制器。
安装完成后,使用以下命令检查是否安装正确:
roscore & rosrun gazebo_ros gazebo
4.2、为Gazebo创建机械臂仿真环境
1、创建仿真机械臂的软件包
catkin_create_pkg seven_dof_arm_gazebo gazebo_msgs gazebo_plugins gazebo_ros gazebo_ros_control mastering_ros_robot_description_pkg
新建launch文件夹,创建seven_dof_arm_world.launch的启动文件,内容如下:
当机器人上装有传感器时,可以检查由传感器插件生成的话题,
rostopic list
使用image_view的工具查看3D视觉传感器的图像数据:
查看RGB原始图像:
rosrun image_view image_view image:=/rgbd_camera/rgb/image_raw
查看IR原始图像:
rosrun image_view image_view image:=/rgbd_camera/ir/image_raw
查看深度图像:
rosrun image_view image_view image:=/rgbd_camera/depth/image_raw
还可以在RVIZ中查看传感器的点云数据:
rosrun rviz rviz -f /rgbd_camera_optical_frame
4.3、在Gazebo中使用ROS控制器
为了让关节动起来,需要分配一个ROS控制器。需要为每个关节连接上与transmission标签内指定的硬件接口兼容的控制器。
ROS控制器使用硬件接口与硬件交互。硬件接口的主要功能:充当ROS控制器与真实或仿真硬件之间的媒介。
ros_control软件包:
control_toolbox:包含了通用模块
4.3.1、ROS控制器如何与Gazebo交互
左边是ROS控制器,中间是机器人硬件接口,右边是仿真器/真实硬件。
navigation、MoveIt!软件包为移动机器人控制器或机械臂控制器提供目标位置。控制器将位置、速度或驱动力发送到机器人的硬件接口上。
硬件接口与实际硬件和仿真分离。来自硬件接口的值可以馈送到Gazebo进行仿真或馈送到实际硬件本身。
4.3.2、将关节状态控制器和关节位置控制器连接到手臂
关节状态控制器发布手臂的关节状态;关节位置控制器可以接受每个关节的目标位置并让每个关节运动。在seven-dof_arm_gazebo/config文件夹下创建文件seven_dof_arm_gazebo_control.yaml。内容如下:
可见,所有的控制器都位于命名空间seven_dof_arm中,第一个是关节状态控制器,其余是关节位置控制器。
4.3.3、在Gazebo中启动ROS控制器
上面准备好配置文件,就可以在seven_dof_arm_gazebo/launch/launch文件中创建一个启动文件seven_dof_arm_gazebo_control.launch,该文件将启动所有的控制器并进行Gazebo仿真。