ROS和Gazebo进行机器人仿真(一)

Gazebo是一种多机器人仿真器,可用于室内外机器人仿真。Gazebo在ROS中有良好的接口,包含ROS和Gazebo的所有控制。

若要实现ROS到Gazebo的通信,我们必须安装ROS-Gazebo接口。

应该安装以下软件包:

$ sudo apt 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-plugins : 它包含用于传感器、执行结构的Gazebo插件。

*gazebo-ros-control : 它包含用于在ROS和Gazebo之间通信的标准控制器。

安装后,请使用以下命令检查Gazebo是否安装正确:

$ roscore & rosrun gazebo_ros gazebo

一.为Gazebo创建机械臂仿真模型

我们可以通过添加仿真参数来更新现有的机器人描述,从而创建一个机械臂仿真模型。

我们需要去创建一个软件包:

$ catkin_create_pkg seven_dof_arm_gazebo gazebo_msgs gazebo_plugins gazebo_ros gazebo_ros_control mastering_ros_robot_description_pkg

也可以在相应的Git库中获得完整的软件包。如下:

$ git clone https://github.com/jocacace/seven_dof_arm_gazebo.git

可以在seven_dof_arm.xacro文件中看到机器人的完整仿真模型,上一章讲过。

该文件包含了URDF标签,这对于仿真是必要的,我们将定义碰撞、惯性、传动、关节、连杆、以及Gazebo。

我们可以使用seven_dof_arm_gazebo软件包来启动现有的仿真模型,启动文件为:seven_dof_arm_world.launch的启动文件。

代码如下:

 1 <launch>
 2
 3   <!-- these are the arguments you can pass this launch file, for example paused:=t   rue -->
 4   <arg name="paused" default="false"/>
 5   <arg name="use_sim_time" default="true"/>
 6   <arg name="gui" default="true"/>
 7   <arg name="headless" default="false"/>
 8   <arg name="debug" default="false"/>
 9
10   <!-- We resume the logic in empty_world.launch -->
11   <include file="$(find gazebo_ros)/launch/empty_world.launch">
12     <arg name="debug" value="$(arg debug)" />
13     <arg name="gui" value="$(arg gui)" />
14     <arg name="paused" value="$(arg paused)"/>
15     <arg name="use_sim_time" value="$(arg use_sim_time)"/>
16     <arg name="headless" value="$(arg headless)"/>
17   </include>
18
19   <!-- Load the URDF into the ROS Parameter Server -->
20   <param name="robot_description" command="$(find xacro)/xacro --inorder ‘$(find ma   stering_ros_robot_description_pkg)/urdf/seven_dof_arm.xacro‘" />
21
22
23   <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF    robot -->
24   <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" out   put="screen"
25     args="-urdf -model seven_dof_arm -param robot_description"/>
26
27
28 </launch>

启动以下命令来显示仿真机械臂

$ roslaunch seven_dof_arm_gazebo seven_dof_arm_world.launch

模型如下:

接下来我们来详细的讨论一下机器人的仿真模型文件

1.为Gazebo机器人模型添加颜色和纹理

在机器人仿真中我们可以看到每个连杆都有不同的颜色和纹理。在xacro文件中,下面的标签可以为机器人的连杆提供纹理和颜色:

140   <gazebo reference="bottom_link">
141     <material>Gazebo/White</material>
142   </gazebo>

172   <gazebo reference="base_link">
173     <material>Gazebo/White</material>
174   </gazebo>

210   <gazebo reference="shoulder_pan_link">
211     <material>Gazebo/Red</material>
212   </gazebo>

2.添加transmission标签来启动模型

为了使用ROS控制器来启动机器人,我们需要定义<transmission>(传动)标签来连接执行机构和关节,以下是为传动的宏:

 92    <xacro:macro name="transmission_block" params="joint_name">
 93       <transmission name="tran1">
 94         <type>transmission_interface/SimpleTransmission</type>
 95         <joint name="${joint_name}">
 96           <hardwareInterface>hardware_interface/PositionJointInterface</hardwareIn    terface>
 97         </joint>
 98         <actuator name="motor1">
 99           <hardwareInterface>hardware_interface/PositionJointInterface</hardwareIn    terface>
100           <mechanicalReduction>1</mechanicalReduction>
101         </actuator>
102       </transmission>
103    </xacro:macro>

在这里<joint name="">是连接启动器的关节。<type>标签是传动类型。目前,仅支持简单的传动transmission_interface/SimpleTransmission. <hardwareInterface>

标签是要加载的硬件接口类型(位置、速度或力度),在该示例中,使用了位置控制硬件接口。这个硬件接口由gazebo_ros_control插件加载,下一节将看到。

3.添加gazebo_ros_control插件

在添加传动标签后,我们应该在仿真模型中添加gazebo_ros_control插件来解析传动标签并分配适当的硬件接口和控制管理器。代码如下:

563   <gazebo>
564     <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
565       <robotNamespace>/seven_dof_arm</robotNamespace>
566     </plugin>
567   </gazebo>
568

<plugin>标签指定了要加载的插件名是libgazebo_ros_control.so。可以将<robotNamespace>标签作为机器人的名称,

如果我们没有指定名称,它将从URDF 自动加载机器人的名称。我们还可以在参数服务器(<robotParam>)上指定控制器刷新速率(<control-Period>),robot_description(URDF)

的位置以及机器人硬件接口的类型(<robotSimType>).默认的硬件接口可以是:JointStateInerface、EffortJointInterface或VelocityJointInterface.

4.在Gazebo中添加3D视觉传感器

原文地址:https://www.cnblogs.com/tanshengjiang/p/12293024.html

时间: 2024-10-11 21:59:09

ROS和Gazebo进行机器人仿真(一)的相关文章

ROS和Gazebo进行机器人仿真(二)

一.在Gazebo中使用ROS控制器 在本节中,我们将讨论如何在Gazebo中让机器人的每个关节运动. 为了让关节动起来,我们需要分配一个ROS控制器,尤其是,我们需要为每个关节连上一个与transmission标签内指定的硬件接口兼容的控制器. ROS控制器主要由一套反馈机构组成,可以接受某一设定点,并用执行机构的反馈控制输出. ROS控制器使用硬件接口与硬件交互,硬件接口的主要功能是充当ROS控制器与真实或仿真硬件之间的中介,根据ROS控制器生成的数据来分配 资源控制它. 在本机器人,我们定

在ROS中开始自主机器人仿真 - 1 概述

建立自主机器人是很难的,特别是在刚开始的时候. ROS 仿真有助于帮助我们从宏观上对机器人系统进行把握,帮助我们学习如何可以让机器人学会自己去适应环境. 明白机器人从测量和激光数据采集到转变为电机运动的过程. 机器人如何利用传感器进行感知, 找出好的路径, 应该执行什么样的命令. 这不是一套完整的自主机器人仿真的指导内容,但希望是一个好的开始. 所介绍的是小项目的一部分, 主要集中于如何开始自己的自主机器人仿真. 首先, 我们用ROS自带的turtlebot库,让机器人跑起来,这样我们有了直观的

在ROS中开始自主机器人仿真 - 3 让turtlebot自主导航

我们已经在gazebo中实现了机器人的仿真,而且能够控制机器人的运动, 查看机器人所感知到的信息, 包括lasercan, 图像信息, 深度信息, 点云, 也包括没有提到的速度信息. 这里,我们建立用ROS navigation stack 导航功能包ROS navigation stack 导航功能包 , 进行机器人地图构建与导航. part 2.1: 让turtlebot自主导航 1 创建地图 使用下面的命令,借助键盘遥控机器人创建精确详尽的地图. 加载Gazebo仿真环境 roslaunc

在ROS中开始自主机器人仿真 - 2 让turtlebot跑起来

借助ROS的工具箱让turtlebot在gazebo中运行起来. part 1.1: 让turtlebot跑起来 1. 在gazebo中显示机器人 roslaunch turtlebot_gazebo turtlebot_world.launch 默认加载了一个playground 的world文件. 2. 用键盘进行控制机器人 roslaunch turtlebot_teleop keyboard_teleop.launch --screen Moving around: u i o j k

在ROS中开始自主机器人仿真 - 4 建立自己的自主机器人URDF模型

要建立自己的自主机器人,首先,必须要建立自己的机器人模型,URDF(Unified Robot Description Format)模型. part 3 建立自主机器人URDF模型 机器人URDF模型主要由两个文件组成:.xacro 是主文件,包含URDF项,包括关节,连杆:.gazebo包含gazebo的具体信息以便在gazebo中仿真. 例子请见:How to Build a Differential Drive Simulation 以下工程的源码下载地址请见: http://downl

基于 Mathematica 的机器人仿真环境(机械臂篇)[转]

完美的教程,没有之一,收藏学习. 目的 本文手把手教你在 Mathematica 软件中搭建机器人的仿真环境,具体包括以下内容(所使用的版本是 Mathematica 11.1,更早的版本可能缺少某些函数,所以请使用最新版.[email protected]).  1 导入机械臂的三维模型  2 (正/逆)运动学仿真  3 碰撞检测  4 轨迹规划  5 (正/逆)动力学仿真  6 控制方法的验证  不妨先看几个例子: 逆运动学 双臂协作搬运 显示运动痕迹 (平移)零空间运动  无论你是从事机器

ROS中的3D机器人建模(二)

一,创建我们的第一个URDF模型 我们设计的第一个机器人模型是pan-and-tilt机械结构,代码如下 pan_tilt.urdf: 1 <?xml version="1.0"?> 2 <robot name="pan_tilt"> 3 4 <link name="base_link"> 5 6 <visual> 7 <geometry> 8 <cylinder length=&

ROS Rviz Gazebo

今天找到了学习RVC的方法,在听video的时候,你看着pdf来跟上节奏,去理解,下课的时候再来matlab编程设计的思想,同时做下note笔记.对于gazebo其是建立在ros系统上的一个调节与控制机器人的控制软件,基于的是ros系统的:Rviz是另外一visualization可视化的工具.可以通过wiki来了解彼此的install以及用法.学习Rviz以及Gazebo的方法是需要不停地在网站上看wiki以及tutorial,同时你需要严格地熟悉ROS的教程,也就是网络上的tutorial,

ROS,Gazebo以及Rviz的启动以及环境设置问题

在基于linux上的ros,其需要注意环境变量,如下是ros gazebo以及rviz的启动方式. rosed baxter_tools enable_robot.py 使用默认的方式打开上述的.py文件,这个打开方式是在桌面的.bashrc里面进行修改,例如可以使用export EDITOR="emacs"这是表示一个新开的窗口,也可以使用"emacs -nw"表示不是新的窗口.此外,修改的bashrc原来的窗口source .bashrc;新开的窗口就是可以的.