机器人操作系统(ROS)课件10.1机器人模型构建与仿真_第1页
机器人操作系统(ROS)课件10.1机器人模型构建与仿真_第2页
机器人操作系统(ROS)课件10.1机器人模型构建与仿真_第3页
机器人操作系统(ROS)课件10.1机器人模型构建与仿真_第4页
机器人操作系统(ROS)课件10.1机器人模型构建与仿真_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机器人操作系统(ROS)机器人操作系统(ROS)机器人模型构建与仿真10.1机器人操作系统(ROS)10.1.1URDF介绍URDF(UnifiedRobotDescriptionFormat,统一机器人描述格式)是一个XML语法框架下用来描述机器人的语言格式,主要用于存储模型的形状、尺寸、颜色等基本属性。在构建机器人模型之前,我们需要了解URDF的语法和常用的标签。(1)URDF语法在URDF中编辑文件需要一定的编写语法,语言要求包含本体、关节、节点的定义以及节点间各关节的连接关系。下面将详细介绍URDF中几种常用的标签。(2)常用标签<link>标签<link>标签描述机器人某个刚体部分的外观和物理属性,包括连杆尺寸(size)、颜色(color)、形状(shape)、惯性矩阵(inertialmatrix)、碰撞属性(collisionproperties)等。机器人中每个link都会成为一个坐标系。link结构机器人操作系统(ROS)10.1.1URDF介绍一个典型的link标签如下:<linkname="my_link"><inertial><originxyz="000.5"rpy="000"/><massvalue="1"/><inertiaixx="100"ixy="0"xz="0"iyy="100"iyz="0"izz="100"/></inertial><visual><originxyz="000"rpy="000"/><geometry><boxsize="111"/></geometry><materialname="Cyan"><colorrgba="01.01.01.0"/></material></visual><collision><originxyz="000"rpy="000"/><geometry><cylinderradius="1"length="0.5"/></geometry></collision></link>首先,定义该link的名字(linkname),<inertial>标签用于描述link部分的惯性参数,这个标签是可选的,如果未指定,则默认为零质量和零惯性。originxyz和rpy分别为为惯性参考系相对于link参考系的位置和姿态,rpy以弧度表示固定轴滚动、俯仰和偏航角。此外,还可以设置质量(massvalue)、惯性矩阵(inertia)。<visual>标签用于描述link的外观参数,<visual>标签用于描述link的外观参数(可选),<collision>标签用于描述link的碰撞属性(可选),同一个link可以存在多个<collision>标签。它们所定义的几何图形的并集构成了link的碰撞描述。通常,使用更简单的碰撞模型来减少计算时间。机器人操作系统(ROS)10.1.1URDF介绍<joint>标签与人的关节相似,<joint>标签用于描述机器人关节,包括关节运动的位置和速度限制。joint结构一个典型的<joint>标签如下:<jointname="my_joint"type="floating"><originxyz="001"rpy="003.1416"/><parentlink="link1"/><childlink="link2"/><calibrationrising="0.0"/><dynamicsdamping="0.0"friction="0.0"/><limiteffort="30"velocity="1.0"lower="-2.2"upper="0.7"/></joint>每一个joint连接两个link,其中的origin是从parentlink到childlink的转换。接头位于parentlink的原点,是相对于上一个joint的origin描述的,而上面的<link>标签中的origin是相对于joint坐标系表达的。除了必须指定的两个link,关节的其他属性为可选属性,如<calibration>,作用是设置joint的参考位置,用于校准joint的绝对位置;<dynamics>的作用是描述关节的物理属性,如阻尼值、物理静摩擦力等。<dynamics>用于描述运动极限值,仅用于revolute(旋转关节)prismatic(滑动关节)的joint类型。机器人操作系统(ROS)<robot>标签<robot>是URDF中机器人描述文件的根标签,所有其他元素必须封装在其中。一个完整的机器人模型由一系列的<link>和<joint>等标签组成,典型的robot结构如图。在<robot>标签里可以设置该机器人的名称。robot结构10.1.1URDF介绍机器人操作系统(ROS)10.1.2创建URDF模型并校验创建模型(本书配套的机器人模型放在myrobot_description功能包下)创建模型文件myrobot_description/urdf/myrobot.urdf:<?xmlversion="1.0"encoding="utf-8"?><robotname="myrobot_description"><linkname="base_link"><inertial><originxyz="000"rpy="000"/><inertiaixx="0.0029446"ixy="-1.0694E-05"ixz="8.6442E-05"iyy="0.0086395"iyz="-7.9718E-07"izz="0.0097467"/></inertial><visual><originxyz="000"rpy="000"/>……该机器人底盘模型包括6个link和5个joint。6个link包括1个机器人底板、一个与底盘连接的放置激光雷达的台架和4个驱动轮,4个joint负责将驱动轮安装到机器人底板上,并设计了fixed和continuous类型的连接方式,fixed是固定关节,continuous类型的关节围绕单轴无限旋转。这样,一个比较基本的四轮实验小车模型就建立好了。机器人操作系统(ROS)URDF文件校验编程创建URDF文件后,必须进行文件校验,查看是否存在语法错误。对于我们这次创建的机器人模型,可以使用简单的命令工具来分析建立的结构是否存在语法错误,输入以下命令在终端安装工具:$sudoapt-getinstallliburdfdom-tools进入myrobot_description/urdf目录下,然后运行如下命令对myrobot.urdf文件进行检查:$check_urdfmyrobot.urdfcheck_urdf命令将解析myrobot.urdf文件,并显示在解析过程中检查出的错误。如果文件没有错误,终端将打印如图所示的信息。终端信息10.1.2创建URDF模型并校验机器人操作系统(ROS)准备工作在终端运行如下命令,显示所构建的URDF结构关系:$urdf_to_graphizmy_robot.Urdf终端执行完毕后会得到一个PDF文件,展示了编程构建的机器人模型的URDF关系文件:

机器人模型的URDF关系10.1.2创建URDF模型并校验机器人操作系统(ROS)10.1.3在rviz中显示模型可以使用rviz将已创建的机器人模型可视化显示出来,用来检查构建你的模型是否符合设计预期。启动文件目录为myrobot_description/launch/display_urdf.launch,launch文件详细内容如下:<launch><paramname="robot_description"textfile="$(findlingao_description)/urdf/myrobot.urdf"/><!—设置GUI参数,显示关节控制插件--><paramname="use_gui"value="true"/><!—设置joint_state_publisher节点,发布机器人的关节状态--><nodename="joint_state_publisher"pkg="joint_state_publisher"type="joint_state_publisher"><paramname="rate"value="20.0"/></node><!—设置robot_state_publisher节点,发布TF转换--><nodename="robot_state_publisher"pkg="robot_state_publisher"type="robot_state_publisher"> <paramname="rate"value="20.0"/></node><!--运行rviz可视化界面--><nodename="rviz"pkg="rviz"type="rviz"args="/></launch>创建启动文件机器人操作系统(ROS)运行启动文件在终端输入以下命令运行该启动文件:$roslaunchmyrobot_descriptiondisplay_urdf.launch若出现如下报错:CouldnotfindtheGUI,installthe‘joint_state_publisher_gui’package则使用下面命令进行安装:$sudoapt-getinstallros-melodic-joint-state-publisher-gui若运行成功,则会出现如下界面:10.1.3在rviz中显示模型rviz界面机器人操作系统(ROS)10.1.3在rviz中显示模型在rviz界面中点击Add,添加RobotModel和TF,如图所示,并将FixedFrame修改为base_link,此时将会在rviz中显示之前构建好的机器人模型。添加机器人模型添加TF机器人操作系统(ROS)10.1.3在rviz中显示模型rviz界面中的机器人模型机器人操作系统(ROS)10.1.4在仿真环境中控制小车运动在本节中,我们使用rviz界面来实现机器人运动的仿真控制。需要安装软件包rbx1和ArbotiX功能包。rbx1软件包(来源于《ROSbyExample》),包括路径规划,视觉,语音识别和其他功能的一些程序包。ArbotiX是一款控制电机、舵机的控制板,提供相应的ROS功能包arbotix_ros,该功能包不仅可以驱动真实的驱动板,还提供了一个控制器,通过接收速度控制指令更新机器人的joint状态,从而帮助我们实现仿真机器人的运动控制。机器人操作系统(ROS)首先安装rbx1的软件包,通过执行如下命令将rbx1克隆到本地或拷贝本书配套的源码到工作空间:$gitclone/pirobot/rbx1.git$cdrbx1$gitcheckoutmelodic-devel通过以下命令下载arbotix_ros的源码或复制本书源码至工作空间中:$gitclone/vanadiumlabs/arbotix_ros.git下载完成后编译功能包。软件基础10.1.4在仿真环境中控制小车运动机器人操作系统(ROS)接下来,需要将虚拟机器人启动文件(fake_turtlebot.launch)中修改成自己的urdf文件,修改后的文件如下所示:<launch><paramname="/use_sim_time"value="false"/><!--LoadtheURDF/Xacromodelofourrobot--><!--argname="urdf_file"default="$(findxacro)/xacro.py'$(findrbx1_description)/urdf/turtlebot.urdf.xacro'"/--><argname="urdf_file"default="$(findxacro)/xacro.py'$(findmyrobot_description)/urdf/myrobot.urdf'"/><paramname="robot_description"command="$(argurdf_file)"/><nodename="arbotix"pkg="arbotix_python"type="arbotix_driver"output="screen"clear_params="true"><rosparamfile="$(findrbx1_bringup)/config/fake_turtlebot_arbotix.yaml"command="load"/><paramname="sim"value="true"/></node><nodename="robot_state_publisher"pkg="robot_state_publisher"type="state_publisher"><paramname="publish_frequency"type="double"value="20.0"/></node><!--Weneedastatictransformsforthewheels--><nodepkg="tf"type="static_transform_publisher"name="base_link_to_footprint"args="000000/base_footprint/base_link100"/></launch>软件基础10.1.4在仿真环境中控制小车运动机器人操作系统(ROS)运行如下指令启动仿真机器人和rviz:$roslaunchrbx1_bringupfake_turtlebot.launch$rosrunrvizrviz-d`rospackfindrbx1_nav`/sim.rviz在rviz界面中点击Add,添加RobotModel,将FixedFrame修改为odom,会出现如图界面。rviz界面中的机器人模型10.1.4在仿真环境中控制小车运动机器人操作系统(ROS)使用以下指令通过命令行发送机器人控制命令:$rostopicpub-r10/cmd_velgeometry_msgs/Twist{linear:{x:0.1,y:0,z:0},angular:{x:0,y:0,z:-0.5}}”若想可视化机器人的运动,点击Add,添加Odometry,将Topic修改为/odom。这时,可以看到机器人在做圆周运动。发送机器人控制命令可视化机器人圆周运动10.1.4在仿真环境中控制小车运动机器人操作系统(ROS)除了命令行的方式外,我们还可以通过编写脚本的方式控制机器人移动。创建Python脚本文件timed_out_and_back.py,该节点实现的功能是让小车模型先前进1米,再旋转180度,重复两次。部分内容如下:#-*-coding:utf-8-*-#!/usr/bin/envpythonimportrospyfromgeometry_msgs.msgimportTwistfrommathimportpiclassOutAndBack():def__init__(self):rospy.init_node('ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论