当前位置: 首页 > news >正文

dz网站模版住宅城乡建设部门户网站

dz网站模版,住宅城乡建设部门户网站,wordpress 图片自动下载,河北搜索引擎优化转自 相信许多爱好者止步于昂贵的机器人价格。虽然有了Arduino#xff0c;但一个载重能力很弱的机器人小车成本也得一两百块钱。搭建自己的机器人更是费时费力。 所以如果你只是普通机器人爱好者#xff0c;或者还没想好要拿机器人做什么#xff0c;那我们还是从模拟器开始…转自 相信许多爱好者止步于昂贵的机器人价格。虽然有了Arduino但一个载重能力很弱的机器人小车成本也得一两百块钱。搭建自己的机器人更是费时费力。 所以如果你只是普通机器人爱好者或者还没想好要拿机器人做什么那我们还是从模拟器开始吧…… URDF 为了制作我们的模拟器首先我们得了解下什么是URDF 什么是 Unified Robot Description Format——统一机器人描述格式。总觉得这和Sensor支持才是ROS的精华所在通信frameworks的并不见得出彩。 可能大部分读者都像我这样穷bi~背景声没钱买ROS支持的机器人不过ROS还是很Nice的考虑到了这一群体提供了模拟器支持。(明明是为了更快速的软件开发喂) 本想从ROS网站的培训教程开始http://wiki.ros.org/urdf/Tutorials开始的不过本着实践为本的目的我们还是以《Learning ROS for Robostic Programming》为基础吧。 参考文献 1. ROS urdf教程http://wiki.ros.org/urdf/Tutorials 2. 《Learning ROS for Robostic Programming》 准备工作 安装urdf_tutorial包 [plain] view plain copy sudo apt-get install ros-hydro-urdf-tutorial   执行 [plain] view plain copy rosrun rviz rviz  当然没有运行roscore你的rviz也无法启动。不过如果错误显示你的rviz找不到执行文件的话请参照http://wiki.ros.org/rviz URDF基本语法 统一机器人描述格式URDF其实就是为了能够抽象描述一个机器人的硬件。而且URDF是基于XML的所以阅读起来应该非常容易。 笔者以为要理解URDF用自顶向下的方式更快。即从为了解决一个怎样的问题开始。在这里我们先用一个简单场景熟悉一下会用到的工具。 不得不说小车是最简单实用的机器人 一个车身加四个轮子就组成了最基本的小车结构而且具备一定载重能力的小车也不会太贵。 见如下图片。 图一 第一版 在URDF语言中机器人都会由各个部件(Link)通过关节(Joint)连接而成。而这里的关键就是描述部件和关节之间的关系。 在这个简单的小车模型中一共有5个部件 车身 4个轮子。 4个关节 每个轮子一个。 于是我们得到了最初了URDF版本 01_car_skeleton.urdf [html] view plain copy robot nametest_robot    link namebase_link /    link namewheel_1 /    link namewheel_2 /    link namewheel_3 /    link namewheel_4 /        joint namejoint_base_wheel1 typefixed      parent linkbase_link/      child linkwheel_1/    /joint        joint namejoint_base_wheel2 typefixed      parent linkbase_link/      child linkwheel_2/    /joint        joint namejoint_base_wheel3 typefixed      parent linkbase_link/      child linkwheel_3/    /joint        joint namejoint_base_wheel4 typefixed      parent linkbase_link/      child linkwheel_4/    /joint  /robot  很简单对吧 用link tag描述各个部件joint tag描述各个关节。用parent和child描述关节连接的部件。 只要描述了Link和Joint之间的关系我们很容易就能构建机器人的框架。 我们可以用如下命令来检查urdf文件是否有语法问题。 [plain] view plain copy check_urdf 01_skeleton.urdf  只要得到如下结果就表明语法没问题。 [html] view plain copy robot name is: test_robot  ---------- Successfully Parsed XML ---------------  root Link: base_link has 4 child(ren)      child(1):  wheel_1      child(2):  wheel_2      child(3):  wheel_3      child(4):  wheel_4   但请注意这虽然描述了各个部件之间的关系但仍是一个不完整的URDF无法在模拟器中显示。 第二版 visualtag用来描述模块的视觉效果。 geometrytag 用来描述模块的形状和大小。 origintag用来描述模块的位置。 加上模块大小之后的小车文件如下所示。02_visual.urdf [html] view plain copy robot nametest_robot    link namebase_link      visual         geometry           box size0.2 .3 .1/         /geometry         origin rpy0 0 0 xyz0 0 0.05/      /visual    /link      link namewheel_1      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz0.1 0.1 0/      /visual    /link      link namewheel_2      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz-0.1 0.1 0/      /visual    /link      link namewheel_3      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz0.1 -0.1 0/      /visual    /link      link namewheel_4      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz-0.1 -0.1 0/      /visual    /link      joint namejoint_base_wheel1 typefixed      parent linkbase_link/      child linkwheel_1/    /joint      joint namejoint_base_wheel2 typefixed      parent linkbase_link/      child linkwheel_2/    /joint      joint namejoint_base_wheel3 typefixed      parent linkbase_link/      child linkwheel_3/    /joint      joint namejoint_base_wheel4 typefixed      parent linkbase_link/      child linkwheel_4/    /joint  /robot  现在通过如下命令你就通过rviz查看你的小车模型啦。 [html] view plain copy roslaunch urdf_tutorial display.launch model:02_visual.urdf  第三步 上色 我们的小车就快完成了但全是红色总觉得怪怪的而且很难辨认。 不过上色同样很简单。使用material tag并且设置color tag 我们得到第三个版本03_color.urdf [html] view plain copy robot nametest_robot    link namebase_link      visual         geometry           box size0.2 .3 .1/         /geometry         origin rpy0 0 0 xyz0 0 0.05/         material namewhite           color rgba1 1 1 1/         /material      /visual    /link      link namewheel_1      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz0.1 0.1 0/        material nameblack          color rgba0 0 0 1/        /material      /visual    /link      link namewheel_2      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz-0.1 0.1 0/        material nameblack/      /visual    /link      link namewheel_3      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz0.1 -0.1 0/        material nameblack/      /visual    /link      link namewheel_4      visual        geometry          cylinder length0.05 radius0.05/        /geometry        origin rpy0 1.5 0 xyz-0.1 -0.1 0/        material nameblack/      /visual    /link      joint namejoint_base_wheel1 typefixed      parent linkbase_link/      child linkwheel_1/    /joint      joint namejoint_base_wheel2 typefixed      parent linkbase_link/      child linkwheel_2/    /joint      joint namejoint_base_wheel3 typefixed      parent linkbase_link/      child linkwheel_3/    /joint      joint namejoint_base_wheel4 typefixed      parent linkbase_link/      child linkwheel_4/    /joint  /robot  我们可以看到rviz的结果如图一所示。 这下我们差不多完成了。我们马上就可以移动我们的小车啦。 但是等等在我们的URDF文件中内嵌了关于各个部件的大小参数以及位置。这些当然是我们根据草图用计算器算出来的。 但是这样的扩展性也太差了吧难道对每个模型我们都得这么计算吗对于相同模型的不同尺寸我们还得重新计算一次 第四步 Xacro 什么是Xacro? 我们可以把它理解成为针对URDF的扩展性和配置性而设计的宏语言(macro language)。 有了Xacro我们就可以像编程一样来写URDF文件了。 首先我们来看Xacro文件的变量定义 [html] view plain copy xacro:property namebody_width value.2 /   只要定义了body_width我们就可以通过${body_width}来引用其值了。有了这个至少我们可以把需要配置的变量进行统一管理。 其次我们来看一下Xacro如何进行宏定义。 这里的宏和C语言的宏很像在转换成URDF文件时编译器会将其展开。其基本语法为 [html] view plain copy xacro:macro namewheel paramsparam1 param2  /xacro:macro  我们来看下URDF文件中关于车身和车轮的大小描述。 box size0.2 .3 .1/ origin rpy0 0 0 xyz0 0 0.05/ cylinder length0.05 radius0.05/ origin rpy0 1.5 0 xyz-0.1 0.1 0/ 这里涉及到的参数有 车身的大小body_size车身中心的位置(body_pos)。 车轮半径(wheel_radius)和轮胎宽度(wheel_width)车轮圆心的位置(wheel1_pos, wheel2_pos, wheel3_pos, wheel4_pos)。 相应的在Xacro中定义参数的语法为 [html] view plain copy xacro:property namebody_size value.2 .3 .1 /    xacro:property namebody_pos value0 0 0.05 /    xacro:property namewheel_radius value0.05 /    xacro:property namewheel_length value0.05 /    xacro:property namewheel1_pos value0.1 0.1 0 /    xacro:property namewheel2_pos value-0.1 0.1 0 /    xacro:property namewheel3_pos value0.1 -0.1 0 /    xacro:property namewheel4_pos value-0.1 -0.1 0 /  并且每个轮子和连接的代码也基本相同。 基于上述亮点我们可以得到以下xacro文件。04_xacro.xacro [html] view plain copy ?xml version1.0?  robot xmlns:sensorhttp://playerstage.sourceforge.net/gazebo/xmlschema/#sensor           xmlns:controllerhttp://playerstage.sourceforge.net/gazebo/xmlschema/#controller           xmlns:interfacehttp://playerstage.sourceforge.net/gazebo/xmlschema/#interface           xmlns:xacrohttp://playerstage.sourceforge.net/gazebo/xmlschema/#interface nametest_robot      xacro:property namebody_size value.2 .3 .1 /    xacro:property namebody_pos value0 0 0.05 /    xacro:property namewheel_radius value0.05 /    xacro:property namewheel_length value0.05 /    xacro:property namewheel1_pos value0.1 0.1 0 /    xacro:property namewheel2_pos value-0.1 0.1 0 /    xacro:property namewheel3_pos value0.1 -0.1 0 /    xacro:property namewheel4_pos value-0.1 -0.1 0 /      xacro:macro namewheel paramswheelname position      link name${wheelname}        visual          geometry            cylinder length${wheel_length} radius${wheel_radius}/          /geometry          origin rpy0 1.5 0 xyz${position}/          material nameblack            color rgba0 0 0 1/          /material        /visual      /link        joint namejoint_base_${wheelname} typefixed        parent linkbase_link/        child link${wheelname}/      /joint    /xacro:macro    xacro:wheel wheelnamewheel1 position${wheel1_pos}/    xacro:wheel wheelnamewheel2 position${wheel2_pos}/    xacro:wheel wheelnamewheel3 position${wheel3_pos}/    xacro:wheel wheelnamewheel4 position${wheel4_pos}/      link namebase_link      visual         geometry           box size${body_size}/         /geometry         origin rpy0 0 0 xyz${body_pos}/         material namewhite           color rgba1 1 1 1/         /material      /visual    /link  /robot  验证该文件的正确性可以有两种方法。 1. 转换成URDF文件使用check_urdf [html] view plain copy rosrun xacro xacro.py 04_xacro.xacro  04_xacro.urdf  2. 使用xacrodisplay.launch [html] view plain copy roslaunch urdf_tutorial xacrodisplay.launch model:04_xacro.xacro  我们都会得到和图1一样的小车模型。这下我们就可以用Xacro来构建机器人模型了。
http://www.yutouwan.com/news/457350/

相关文章:

  • 淘宝上开个网站建设做视频好用的素材网站
  • 贵阳网站商城建设wordpress代码解释
  • 网站分析表手机怎么建网站
  • 怎样制作网站的步骤钓鱼网站网址
  • 成都网站建设开发价格东莞建设监督网站
  • 杭州网站建设 双收php 企业网站源码
  • 汕头网站建设设计价格中国企业网站建设案例
  • 红酒网站建设策划书wordpress togetherjs
  • scratch编程网站广州网站建设多少钱
  • 湖北网站建设电话怎么做充值网站
  • 茶叶网站规划关于信用体系建设的网站
  • 深圳网站建设公司团队建设网站技术公司电话
  • 哪个网站可以做司考题wordpress 区块链
  • 张家港专业做网站怎样用word2003做网站
  • 成都网站建设公司通信技术公司网站建设
  • 阿里云如何建立网站2个淘宝可以做情侣网站么
  • 信用体系建设网站维运工作制度郴州市简介
  • 建筑资质证书查询网站申请个人网站域名
  • 新乡市做网站的公司黄浦西安网站建设
  • 网站建设设计制作公司切实加强门户网站建设
  • 网站开发人员招聘企业门户网站建设内容
  • 校园网站建设 必要性分析阿里云的虚拟主机用什么做网站
  • 手机站是什么意思广告设计公司vi
  • 贵阳城乡和住房建设厅网站梅州做网站多少钱
  • 网站版块下载html5网页制作工具
  • 建网站软件如何制作表白小程序
  • 建设网站的费用怎么做账google搜索引擎入口2022
  • 律师事务所网站建设重要性p2p是什么意思
  • 建设银行网站首页是多少成都app开发
  • 网站建设的建议和意见胶州企业网站设计