ros2+xacro文件示例代码备份

2023-12-19

重要提示:在xacro文件虽然是xml文件,但是如果在xacro文件中随意插入自定义标签,虽然check_urdf不会报错,但是最后rviz2解析的时候会出现错误,例如,如果在上述xml文件中加入以下代码将出现显示异常:

<material name="blank">
    <color rgba="0 0 0 0"/>
</material>

上述代码在使用check_urdf时候或者执行的时候不会报任何错误,但是显示出来的rviz2机器人模型异常。我猜测是加入了异常的便签引起,删除以后即可正常显示各个部件

total.xacro文件

<robot name="half_total" xmlns:xacro="http://wiki.ros.org/wiki/xacro">
    <xacro:include filename="$(find urdf_pkg)/urdf/base.xacro"/>
    <xacro:include filename="$(find urdf_pkg)/urdf/camera.xacro"/>
    <xacro:include filename="$(find urdf_pkg)/urdf/radar.xacro"/>
</robot>

base.xacro文件

<robot name="half" xmlns:xacro="http://wiki.ros.org/wiki/xacro">
  <xacro:property name="PI" value="3.1415926"/><!--定义一个变量PI,后边用来调用的-->
  <xacro:property name="base_footprint_radius" value="0.001"/>
  <xacro:property name="base_radius" value="0.1"/>
  <xacro:property name="base_length" value="0.08"/>
  <xacro:property name="ground_clearance" value="0.015"/>
  <link name="base_footprint">
    <visual>
      <geometry>
          <sphere radius="${base_footprint_radius}"/>
      </geometry>
    </visual>
  </link>
  <link name="base">
    <visual>
      <geometry>
        <cylinder radius="${base_radius}" length="${base_length}"/>
      </geometry>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <material name="yellow">
        <color rgba="0.3 0.3 0.0 0.5"/>
      </material>
    </visual>
  </link>
  <joint name="base2base_footprint" type="fixed">
    <parent link="base_footprint"/>
    <child link="base"/>
    <origin xyz="0 0 ${ground_clearance+base_length/2}"/>
  </joint>
  <xacro:property name="wheel_radius" value="0.0325"/>
  <xacro:property name="wheel_length" value="0.015"/>
  <xacro:macro name="add_wheel" params="name flag">
    <link name="${name}_wheel">
      <visual>
        <geometry>
          <cylinder radius="${wheel_radius}" length="${wheel_length}"/>
        </geometry>
        <origin xyz="0.0 0.0 0.0" rpy="${PI/2} 0 0"/>
        <material name="black"/>
      </visual>
    </link>
    <joint name="${name}_wheel2base" type="continuous">
      <parent link="base"/>
      <child link="${name}_wheel"/>
      <origin xyz="0 ${flag*base_radius} ${-(ground_clearance+base_length/2-wheel_radius)}"/>
      <axis xyz="0 1 0"/>
    </joint>
  </xacro:macro>
  <xacro:add_wheel name="left" flag="1"/>
  <xacro:add_wheel name="right" flag="-1"/>
  <xacro:property name="support_wheel_radius" value="0.0075">
  </xacro:property>
  <xacro:macro name="add_support_wheel" params="name flag">
    <link name="${name}_wheel">
      <visual>
        <geometry>
            <sphere radius="${support_wheel_radius}"/>
        </geometry>
        <origin xyz="0 0 0" rpy="0.0 0.0 0.0"/>
        <material name="black">
        </material>
      </visual>
    </link>
    <joint name="${name}_wheel2base" type="continuous">
      <parent link="base"/>
      <child link="${name}_wheel"/>
      <origin xyz="${flag*(base_radius-support_wheel_radius)} 0 ${-(base_length/2+ground_clearance/2)}"/>
      <axis xyz="1 1 1"/>
    </joint>
  </xacro:macro>
  <xacro:add_support_wheel name="front" flag="1"/>
  <xacro:add_support_wheel name="back" flag="-1"/>
</robot>

camera.xacro文件

<robot name="camera_2" xmlns:xacro="http://wiki.ros.org/xacro">
    <xacro:property name="camera_length" value="0.01"/>
    <xacro:property name="camera_width" value="0.025"/>
    <xacro:property name="camera_height" value="0.025"/>
    <xacro:property name="camera_x" value="0.08"/>
    <xacro:property name="camera_y" value="0"/>
    <xacro:property name="camera_z" value="${base_length/2+camera_height/2}"/>
    <link name="camera">
        <visual>
            <geometry>
                <box size="${camera_length} ${camera_width} ${camera_height}"/>
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0"/>
            <material name="black"/>
        </visual>
    </link>
    <joint name="camra2base" type="fixed">
        <parent link="base"/>
        <child link="camera"/>
        <origin xyz="${camera_x} ${camera_y} ${camera_z}"/>
    </joint>
</robot>

radar.xacro

<robot name="radar" xmlns:xacro="http://wiki.ros.org/wiki/xacro">
    <xacro:property name="holder_length" value="0.15"/>
    <xacro:property name="holder_radius" value="0.01"/>
    <xacro:property name="holder_x" value="0"/>
    <xacro:property name="holder_y" value="0"/>
    <xacro:property name="holder_z" value="${base_length/2+holder_length/2}"/>
    <link name="holder">
        <visual>
            <geometry>
                <cylinder radius="${holder_radius}" length="${holder_length}"/>
            </geometry>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
            <material name="red">
                <color rgba="0.8 0.2 0.0 0.8"/>
            </material>
        </visual>
    </link>
    <joint name="holder2base" type="fixed">
        <parent link="base"/>
        <child link="holder"/>
        <origin xyz="${holder_x} ${holder_y} ${holder_z}"/>
    </joint>
    <xacro:property name="radar_length" value="0.05"/>
    <xacro:property name="radar_radius" value="0.03"/>
    <xacro:property name="radar_x" value="0"/>
    <xacro:property name="radar_y" value="0"/>
    <xacro:property name="radar_z" value="${holder_length/2+radar_length/2}"/>
    <link name="radar">
        <visual>
            <geometry>
                <cylinder radius="${radar_radius}" length="${radar_length}"/>
            </geometry>
            <origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0"/>
            <material name="black"/>
        </visual>
    </link>
    <joint name="radar2holder" type="fixed">
        <parent link="holder"/>
        <child link="radar"/>
        <origin xyz="${radar_x} ${radar_y} ${radar_z}"/>
    </joint>
</robot>

如果把代码里面的<material name="black"></material>赋予实际数值就会变成这样---看不见

因此代码里面的那些个有个material便签但是没有实际数值的地方都是用来通过编译的,用来欺骗软件检查的。不是用来真实的显示颜色的,如果是要真实显示颜色就要赋予实际的非0像素值。因为黑色在rivz2里面看不见

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros2+xacro文件示例代码备份 的相关文章

  • 【Redis】Redis 红锁

    1 概述 上一篇文章 redis Redis 分布式锁 redis session Redlock 红锁 Zookeeper锁 本章节主要讲解redis中的红锁 假设我们有个客户端要获取锁 然后向master去获取锁 然后master会把锁
  • HTML+CSS+JS网页期末作业 源码评论区自取(海绵宝宝网页设计)

    课代表来给大家整理一下 HTML CSS JS网页期末作业 源码评论区自取 源码领取方式 1 评论 已三连 学习 2 然后点击私信按钮 发送关键词 学习 机器人会自动回复的

随机推荐

  • 运维笔记之centos部署Go-FastDfs

    安装Go FastDfs 当前最新版本为1 4 5 但发布的最新版本为1 4 4 下载文件 wget no check certificate https github com sjqzhang go fastdfs releases do
  • 解决Failed to retrieve the Dart SDK from: https://storage.googleapis.com/flutter_infra/问题

    mac终端执行flutter h命令后 出现过 Failed to retrieve the Dart SDK from https storage googleapis com flutter infra flutter 91a63d6a
  • 嵌入式培训机构到底怎么选?培训了能找到工作吗

    嵌入式作为一种广泛应用于企业级开发的编程语言 对于想要从事软件开发行业的人来说 掌握嵌入式技能是非常重要的 而参加嵌入式培训机构是一个快速提升技能的途径 然而 很多人可能会担心 参加嵌入式培训了能找到工作吗 如何选择靠谱的嵌入式培训机构 要
  • 推荐好用的XSS漏洞扫描利用工具

    工具介绍 toxssin 是一种开源渗透测试工具 可自动执行跨站脚本 XSS 漏洞利用过程 它由一个 https 服务器组成 它充当为该工具 toxin js 提供动力的恶意 JavaScript 有效负载生成的流量的解释器 安装与使用 1
  • Python-一键爬取图片、音频、视频资源

    前言 使用Python爬取任意网页的资源文件 比如图片 音频 视频 一般常用的做法就是把网页的HTML请求下来通过XPath或者正则来获取自己想要的资源 这里我做了一个爬虫工具软件 可以一键爬取资源 媒体文件 但是需要说明的是 这里爬取资源
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 网站禁止搜索引擎的抓取方法

    网站获得搜索引擎抓取是很多企业期待的 当然 某些特殊的情况是我们不愿意让网站抓取全部或部分内容 如果我们不想要搜索引擎索引网站的某些内容或全部内容 最好的办法就是借助rebots txt文件 成都网站建设公司锐美网络 现在给大家说明一下如何
  • 天猫双十实战

    import numpy as np import matplotlib pyplot as plt from sklearn linear model import SGDRegressor from sklearn preprocess
  • 现在web前端培训班出来还能找到工作吗

    web前端是一种广泛应用于企业级开发的编程语言 因此对于想要从事软件开发行业的人来说 掌握web前端技能是非常重要的 而对于没有相关靠谱背景或工作经验的人来说 参加web前端培训班是一个快速掌握这一技能的途径 然而 很多人可能会担心 参加w
  • 鸿蒙(HarmonyOS)项目方舟框架(ArkUI)更改应用名称

    鸿蒙 HarmonyOS 项目方舟框架 ArkUI 更改应用名称 一 操作环境 操作系统 Windows 10 专业版 IDE DevEco Studio 3 1 SDK HarmonyOS 3 1 二 更改应用名称 HAP 更改位置如下
  • BENTLY 125800-01 励磁系统电源模

    BENTLY 125800 01 励磁系统电源模 BENTLY 125800 01 励磁系统电源模产品详情 BENTLY 125800 01 励磁系统电源模块通常用于为电力发电机的励磁系统提供电源 这些模块在电力工业中非常重要 因为它们确保
  • java中使用断言的好处和坏处?断言语句如下所示:Assert.notNull(field, exceptionMsg);

    断言是一种在编程中用于检查和验证假设的机制 Java 中使用断言可以通过 assert 关键字来实现 给定的断言语句 Assert notNull field exceptionMsg 表示当 field 为 null 时 会抛出一个指定的
  • 解决 Hive 外部表分隔符问题的实用指南

    简介 在使用 Hive 外部表时 分隔符设置不当可能导致数据导入和查询过程中的问题 本文将详细介绍如何解决在 Hive 外部表中正确设置分隔符的步骤 问题描述 在使用Hive外部表时 可能会遇到分隔符问题 这主要是因为Hive在读取数据时
  • 继电器和接触器的区别是什么?作用是什么?

    目录 继电器的原理与作用 接触器的原理与作用 区别 用途和容量 触点结构和数量 触发方式 耐久性和可靠性 继电器的原理与作用 继电器的原理是基于电磁感应现象的一种电器元件 继电器由线圈 铁芯和触点组成 当线圈通电时 通过产生的磁场使铁芯磁化
  • 硬件产品经理:硬件产品敏捷开发

    目录 简介 敏捷 CSDN学院 作者简介 简介 之所以敏捷产品开发流程会越来越普遍 主要得益于这个方法可以让企业使用更少的资源去开发出令客户满意的新产品 敏捷开发强调的最重要的一点就是 快 也就是要求通过快速迭代来获取频繁的客户反馈 这就特
  • 中高级网络安全职位的薪资水平持续上升!

    近两年网络安全科技人才供给逐渐充裕 供求紧张程度得到一定缓 解 2022 年 2023 年 很多高科技企业裁员和降薪 网络安全科技人才就业在一定程度上受到了大环境的影响 也使签约薪酬有所下降 市场价回落至 2018 年水平 但值得一提的是
  • HONEYWELL 05701-A-0326 工业机器人控制器

    HONEYWELL 05701 A 0326 工业机器人控制器 HONEYWELL 05701 A 0326 工业机器人控制器产品详情 HONEYWELL 05701 A 0326 工业机器人控制器在各种制造和生产领域中发挥关键作用 用于控
  • MVVM控件焦点问题

    在wpf中 有时点击空白处控件失去焦点事件无法触发 要解决这个问题 可以在主窗体mainwindow中重写MouseDown事件 MainWindowView xaml cm Message Attach Event MouseDown A
  • 红队基础建设与介绍

    目录 1 ATT CK相关背景 2 渗透测试与红队 2 1 渗透测试 2 2 红队 3 红队基础建设 3 1 设定行动 3 1 1 团队协作 3 1 2 制定计划 3 1 3 确认目标 3 2 功能隔离 3 2 1 网络钓鱼MSTP 3 2
  • ros2+xacro文件示例代码备份

    重要提示 在xacro文件虽然是xml文件 但是如果在xacro文件中随意插入自定义标签 虽然check urdf不会报错 但是最后rviz2解析的时候会出现错误 例如 如果在上述xml文件中加入以下代码将出现显示异常