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

scratch少儿编程网站/整合营销传播的六种方法

scratch少儿编程网站,整合营销传播的六种方法,高校网站建设存在的问题,合肥网站建设新浪营销URDF(Unified Robot Description Format)是一种基于XML的格式,用于描述机器人模型的结构、关节、连杆和传感器信息,并可以与Gazebo、RViz等仿真环境结合使用。 一、基础语法 1. urdf文件组成 URDF 主要由以下几个核心元素&#…

        URDF(Unified Robot Description Format)是一种基于XML的格式,用于描述机器人模型的结构、关节、连杆和传感器信息,并可以与Gazebo、RViz等仿真环境结合使用。

一、基础语法

1. urdf文件组成

URDF 主要由以下几个核心元素(标签)组成:

(1)一级标签(根标签)

<robot> <!--根标签-->

(2)二级标签

        根标签是 robot,而二级标签通常是在 robot 标签内定义的具体组件和元素。以下是一些常见的二级标签:

<link>        <!-- 定义一个刚体部分 -->
<joint>       <!-- 定义两个链接之间的连接及其运动方式 -->
<sensor>      <!-- 定义传感器 -->
<transmission> <!-- 定义传动方式,主要用于控制器与电机连接 -->
<material>    <!-- 定义材质属性 -->
<geometry>    <!-- 定义几何形状,用于可视化 -->
<visual>      <!-- 定义视觉表示,用于渲染和模拟 -->
<collision>   <!-- 定义碰撞体积,用于物理引擎 -->
<inertial>    <!-- 定义惯性矩阵,用于物理仿真 -->
<frame>       <!-- 定义坐标系 -->

(3)三级标签

        在 URDF 中,三级标签通常是用于具体配置和描述某个二级标签的更多详细信息。以下是一些常见的三级标签,它们一般位于二级标签内部。

<geometry>       <!-- 用于定义物体的几何形状 --><box>         <!-- 定义立方体的几何形状 --><cylinder>    <!-- 定义圆柱体的几何形状 --><sphere>      <!-- 定义球形几何形状 --><mesh>        <!-- 定义网格形状 -->
</geometry><visual>         <!-- 定义可视化表示 --><material>    <!-- 定义可视化的材质 --><ambient> <!-- 环境光 --><diffuse> <!-- 漫反射光 --><specular> <!-- 高光反射 --></material>
</visual><collision>      <!-- 定义碰撞体积 --><geometry>    <!-- 定义碰撞体积的几何形状 --><box>     <!-- 立方体 --><cylinder><!-- 圆柱体 --><sphere>  <!-- 球体 --></geometry>
</collision><inertial>       <!-- 定义惯性属性 --><mass>        <!-- 质量 --><inertia>     <!-- 惯性矩阵 -->
</inertial><origin>         <!-- 定义元素在坐标系中的位置和姿态 --><xyz>         <!-- 定义位置 --><rpy>         <!-- 定义旋转角度 -->
</origin><transmission>   <!-- 定义传动系统 --><actuator>    <!-- 定义执行器 --><hardwareInterface> <!-- 定义硬件接口 --></actuator>
</transmission>

2. <robot>根标签

        URDF 中为了保证 XML 语法的完整性,使用 <robot> 标签作为根标签,所有的 <link><joint> 以及其他标签都必须包含在 <robot> 标签内。在该标签内,可以通过 name 属性设置机器人模型的名称。所有其他标签(如 <link><joint><material><transmission> 等)都是 <robot> 的子级标签。

<?xml version="1.0"?>
<robot name="simple_robot">  <!-- 名称自定 --><!-- 这里是机器人模型的内容 -->
</robot>

3. <link> 和 <joint>

简述:在机器人模型中,link1link2 分别代表类似于人的大臂和小臂的刚体部分,而 joint 则类似于肘关节,负责连接这两个部件并允许它们相对运动(例如,肘部的弯曲)。

(1)<link>

  link 代表机器人中的一个刚性部件,例如机械臂的一个关节、轮式机器人的车轮等。link 主要包含以下元素:

  • <inertial>:描述 link 的惯性,包括质量、质心和惯性矩阵。
  • <visual>:定义 link 的外观(几何形状、颜色、材质)。
  • <collision>:定义物理仿真中 link 的碰撞形状(通常比 visual 简化)。
<?xml version="1.0"?>
<robot name="simple_robot"><!-- 定义一个 link --><link name="simple_link"><!-- 定义惯性属性 --><inertial><mass value="1.0"/> <!-- 质量 --><origin xyz="0 0 0"/> <!-- 相对坐标 --><inertia ixx="0.1" iyy="0.1" izz="0.1" ixy="0" ixz="0" iyz="0"/> <!-- 惯性矩阵 --></inertial><!-- 定义可视化属性 --><visual><geometry><box size="1 1 1"/> <!-- 立方体形状,尺寸为 1x1x1 --></geometry><material name="green"/> <!-- 绿色 --></visual><!-- 定义碰撞属性 --><collision><geometry><box size="1 1 1"/> <!-- 碰撞盒子,尺寸为 1x1x1 --></geometry></collision></link>
</robot>

(2)<joint>

  joint 用于连接两个 link,并定义它们的相对运动方式,例如固定连接、旋转或滑动等。joint 主要包含以下元素:

  • <parent>:定义 joint 连接的父 link
  • <child>:定义 joint 连接的子 link
  • <type>:定义 joint 的类型(fixedrevoluteprismaticcontinuous 等)。

  • <origin>:定义 joint 相对于 parent 的初始位置。
  • <axis>(可选):如果是 revoluteprismatic 关节,则定义运动轴。
  • <limit>(可选):定义 joint 的运动范围、速度和力矩限制。
<?xml version="1.0"?>
<robot name="simple_robot"><!-- 第一个 link --><link name="link1"><visual><geometry><box size="1 1 1"/></geometry></visual></link><!-- 第二个 link --><link name="link2"><visual><geometry><box size="1 1 1"/></geometry></visual></link><!-- 定义关节,连接 link1 和 link2 --><joint name="simple_joint" type="revolute"><parent link="link1"/><child link="link2"/><axis xyz="0 1 0"/>  <!-- 旋转轴:绕 y 轴旋转 --><limit lower="-1.57" upper="1.57" effort="10" velocity="1"/> <!-- 旋转范围限制 --></joint>
</robot>

 4. <sensor>

   <sensor> 标签在 URDF 中用于定义机器人上的传感器,例如激光雷达、相机、IMU(惯性测量单元)等。传感器用于模拟机器人感知环境的能力,在 Gazebo 等仿真环境中非常常见。传感器类型如下所示:

<sensor type="camera"/>  <!-- 相机传感器 -->
<sensor type="ray"/>     <!-- 激光雷达传感器 -->
<sensor type="proximity"/>  <!-- 接近传感器 -->
<sensor type="imu"/>     <!-- 惯性测量单元传感器 -->
<sensor type="force_torque"/>  <!-- 力与扭矩传感器 -->
<sensor type="gps"/>     <!-- 全球定位系统传感器 -->
<sensor type="contact"/> <!-- 接触传感器 -->
<sensor type="barometer"/>  <!-- 气压计传感器 -->
<sensor type="ultrasonic"/>  <!-- 超声波传感器 -->
<sensor type="range"/>   <!-- 距离传感器 -->

        不同类型的传感器(如相机、IMU、激光雷达等)会有不同的子标签和配置项,具体内容会根据传感器的类型而变化。这里将不太过多介绍标签,详细查看其他博客,这里主要是为了让读者了解其结构框架。激光雷达传感器如下所示:

<robot name="example_robot"><!-- 定义一个 Link --><link name="base_link"><visual><geometry><box size="1 1 1"/></geometry></visual></link><!-- 定义一个传感器 (激光雷达) --><sensor name="laser_sensor" type="ray"><origin xyz="0 0 1" rpy="0 0 0"/> <!-- 定义传感器相对于 link 的位置和姿态 --><ray><scan><horizontal><samples value="720"/>  <!-- 扫描样本数量 --><resolution value="1"/> <!-- 扫描分辨率 --><min_angle value="-1.5708"/> <!-- 最小扫描角度 (单位: 弧度) --><max_angle value="1.5708"/> <!-- 最大扫描角度 (单位: 弧度) --></horizontal></scan><range><min value="0.1"/>  <!-- 最小测距距离 --><max value="10.0"/> <!-- 最大测距距离 --><resolution value="0.01"/> <!-- 测距分辨率 --></range></ray></sensor>
</robot>
  • <sensor> 标签
    这是根标签,定义了一个传感器的相关信息。

    • name:传感器的名称(在本例中为 laser_sensor)。
    • type:传感器的类型(在本例中为 ray,表示激光雷达)。
  • <origin> 标签
    这个标签定义了传感器相对于父 link 的位置和姿态。

    • xyz="0 0 1":表示传感器在父 link 坐标系中的位置。xyz 表示位置的偏移量。
    • rpy="0 0 0":表示传感器的旋转姿态,rpy 表示滚转(roll)、俯仰(pitch)、偏航(yaw)的角度,这里都是 0,表示没有旋转。
  • <ray> 标签
    这个标签用于定义激光传感器的具体扫描行为。

    • <scan> 标签:定义扫描的相关参数。

      • <horizontal> 标签:定义水平扫描的参数。
    • <range> 标签:定义传感器的测距范围。

二、 实验:使用launch文件启动rviz查看机器人模型

注意:什么类型的文件就要放在功能包的什么目录下,没有则手动创建该目录。

 1. 编写机器人模型的urdf文件。

my_car.urdf

<?xml version="1.0" ?>
<robot name="my_robot"><!-- 材质 --><material name="blue"><color rgba="0.0 0.0 1.0 1.0"/></material><material name="black"><color rgba="0.0 0.0 0.0 1.0"/></material><!-- 机器人主体 --><link name="base_link"><visual><geometry><box size="0.4 0.3 0.2"/></geometry><material name="blue"/></visual></link><!-- 左右轮子 --><link name="wheel_left"><visual><geometry><cylinder radius="0.05" length="0.02"/></geometry><material name="black"/></visual></link><link name="wheel_right"><visual><geometry><cylinder radius="0.05" length="0.02"/></geometry><material name="black"/></visual></link><!-- 摄像头 --><link name="camera_link"><visual><geometry><box size="0.1 0.1 0.1"/></geometry><material name="black"/></visual></link><!-- 前轮(万向轮) --><link name="front_wheel"><visual><geometry><cylinder radius="0.05" length="0.02"/>  <!-- 更改为圆形 --></geometry><material name="black"/></visual></link><!-- 轮子关节(旋转类型) --><joint name="wheel_left_joint" type="revolute"><parent link="base_link"/><child link="wheel_left"/><origin xyz="-0.1 -0.15 -0.1" rpy="1.5708 0 0"/>  <!-- 旋转90° --><axis xyz="0 0 1"/>  <!-- 旋转轴设置为X轴,确保向前滚动 --><limit effort="100" velocity="1.0" lower="-1.0" upper="1.0"/></joint><joint name="wheel_right_joint" type="revolute"><parent link="base_link"/><child link="wheel_right"/><origin xyz="-0.1 0.15 -0.1" rpy="1.5708 0 0"/><axis xyz="0 0 1"/>  <!-- 旋转轴设置为X轴,确保向前滚动 --><limit effort="100" velocity="1.0" lower="-1.0" upper="1.0"/></joint><!-- 摄像头关节(固定) --><joint name="camera_joint" type="fixed"><parent link="base_link"/><child link="camera_link"/><origin xyz="0.1 0 0.15"/></joint><!-- 前轮关节(固定) --><joint name="front_wheel_joint" type="fixed"><parent link="base_link"/><child link="front_wheel"/><!-- 将z坐标调整为-0.12,确保万向轮能挨到地面 --><origin xyz="0.15 0 -0.12" rpy="1.5708 0 0"/></joint></robot>

2. 编写launch文件。

mycar_rviz.launch

<launch><!-- 传入参数,决定是否启用图形界面 --><arg name="gui" default="true" /><!-- 加载 URDF 机器人模型 --><param name="robot_description" command="$(find xacro)/xacro $(find robot_vslam)/urdf/my_car.urdf"/><!-- 机器人状态发布器 --><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"><param name="use_sim_time" value="false"/></node><!-- 关节状态发布器(如果机器人有 Revolute/Prismatic 关节) --><node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"><param name="use_gui" value="false"/> <!-- 这里设置为 false,避免重复图形化界面 --></node><!-- 关节状态发布器图形界面(可选,基于 "gui" 参数) --><node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" if="$(arg gui)" /><!-- 启动 RViz --><node name="rviz" pkg="rviz" type="rviz" required="true"><param name="config" value="$(find robot_vslam)/rviz/robot.rviz"/></node>
</launch>

3. 运行launch,查看效果。

运行完后,界面中没有机器人模型,我们需要先添加模型。

http://www.whsansanxincailiao.cn/news/31993356.html

相关文章:

  • 网站建设环境配置/seo网课培训
  • 厦门易尔通做网站怎么样/win7一键优化工具
  • 天津网站设计开发/常用的网络推广手段有哪些
  • 哪家做的濮阳网站建设/360收录批量查询
  • 大良营销网站建设咨询/产品网络营销方案
  • 哪些网络公司可以做机票预订网站/刚刚刚刚刚刚刚刚刚刚刚刚刚刚
  • 郑州网站优化培训机构/网站搜索引擎优化诊断
  • 怎么做北京赛网站/营销网站建设选择
  • 桂林网站优化公司/软文客
  • 网站发文超链接怎么做/网站建设公司大全
  • 一个域名怎么做多个网站/百度站长平台链接
  • 网站技术招标怎么做/重庆关键词seo排名
  • 设计网站官网入口/网络服务提供者知道或者应当知道
  • 小说网站做兼职/如何进行搜索引擎的优化
  • 做盗链电影网站怎么样/黑锋网seo
  • 如保做网站赢利/可以建网站的网络公司有哪些
  • 婚庆网站开发的意义/百度网盘登录入口
  • 使用腾讯云建设网站教程/第一站长网
  • 在线客服招聘在家工作/优化排名seo
  • 网站建设swot/百度免费发布信息网站
  • 淘宝网站制作/百度搜索引擎首页
  • 手机电商网站开发/口碑营销案例2022
  • 图书馆网站建设费用/收录好的网站
  • 职业生涯规划大赛作品/福州百度快速优化
  • 昆山高端网站建设/视频号视频下载助手app
  • 石家庄做网站电话/产品网络营销推广方案
  • 昆明做网站的旅行社/seo搜索引擎优化是什么意思
  • 安徽龙山建设有限公司网站/今日油价92汽油价格
  • 红旗渠建设集团网站/杭州百度
  • 网站建设找哪家好/路由优化大师