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

公司建网站费用怎么做分录个人网站模板素材下载

公司建网站费用怎么做分录,个人网站模板素材下载,百度地图在线使用,如何建设营销型网站塞巴斯蒂安 一、说明 在机器人项目中#xff0c;仿真是一个具有多种用途的重要方面。首先#xff0c;您可以测试希望机器人执行的行为代码。其次#xff0c;您可以使用仿真来测试不同类型的硬件#xff0c;例如距离传感器、相机或 3D 点云传感器#xff0c;看看哪种效果最… 塞巴斯蒂安 · 一、说明 在机器人项目中仿真是一个具有多种用途的重要方面。首先您可以测试希望机器人执行的行为代码。其次您可以使用仿真来测试不同类型的硬件例如距离传感器、相机或 3D 点云传感器看看哪种效果最好。第三可视化模拟的相同软件可以与真正的机器人实时使用在机器人扫描和导航环境的同时查看环境。 在我的机器人项目中我从 ROS1 开始并提供了一个可以使用 RVIZ 可视化的基本机器人模型。然后我构建了一个实用的原型完全基于Arduino不涉及ROS。在项目的当前阶段我致力于构建一个与视觉传感器兼容的 Gazebo 模型。 本文继续该系列使用 Gazebo 快速启动 ROS2 模拟。我们将了解创建模拟的基本工具 - ROS启动文件和Gazebo - 并学习应用基本步骤 - 选择3D模型将它们放置在世界上。 本文的技术背景是 Ubuntu 20.04、ROS2 Foxy、Gazebo11但它也应该适用于较新的版本。 二、基本机器人仿真术语 本段简要列出了理解物理仿真方面所必需的所有术语。如果您对词汇量很坚定请跳过本节。 运动学运动学是物理学的一个分支它控制着身体在时间、位置、速度和加速度方面的运动方式而不考虑身体的重量或向外力如重力动力学物理学的另一个分支它考虑当物体有质量并受到力影响时物体的位置、速度和加速度如何变化。在机器人中这也称为机器人动力学里程计一种通过连续记录运动数据来估计物体位置并计算物体移动的距离和轨迹的方法惯性这种力是运动物体对任何其他会改变其方向、速度或加速度的力的阻力摩擦力当两个物体靠近另一个物体移动并抵抗该移动时施加的力关节关节是连接两个物体的机械元件。关节有不同的类型来描述连接的物体如何移动。 来源ROS机器人编程书 RPY 值此首字母缩略词代表横滚、俯仰、偏航用于描述物体在 3D 空间中的运动。对象可以根据下图在这三个轴上移动 来源 wikipedia.org 三、循序渐进如何创建模拟世界 Gazebo是在ROS之外开始的但后来完全整合了。它更侧重于机器人和世界的完整物理模拟。特别是世界通过物理引擎提供正确的物理模拟机器人可以撞到物体这些物体会移动最终甚至撞到你的机器人身上。Gazebo 带有预定义的世界模型您甚至可以定义自己的模型。 在本教程中我们将启动一个带有空世界的凉亭模拟然后在里面生成一个机器人。简而言之基本步骤是 创建新的 ROS 包并设置目录结构创建一个空的坐标定位文件创建启动文件在机器人 URDF 模型中添加其他物理属性参数化机器人 URDF 模型以使用 Gazebo 或 RVIZ 运行。用启动文件开始空的世界 以下各节详细介绍了这些任务。 3.1 第 1 步包创建和目录结构 我们将创建一个如下所示的包结构 radu_gazebo/ ├── config │ └── rviz.config ├── launch │ └── launch.py ├── radu_bot │ └── __init__.py ├── resource ├── scripts ├── test ├── urdf │ └── core.xacro └── worlds │ └── room.world ├── package.xml ├── setup.cfg ├── setup.py 为方便起见只需运行以下命令 ros2 pkg create --build-type python radu_gazebo mkdir radu_gazebo/launch radu_gazebo/world mkdir radu_gazebo/launch radu_gazebo/world/room.world touch radu_gazebo/launch/room.launch 3.2 第 2 步清空坐标定位文件 该文件是一个SDF文件将包含我们想要模拟的所有内容的标签墙壁窗户和家具等对象。我们将从一个简单的空白世界开始并逐步添加新对象。room.worldmodel !-- FILE: world/room.world -- ?xml version1.0? sdf version1.6 world nameroomincludeurimodel://sun/uri/includeincludeurimodel://ground_plane/uri/include /world /sdf 您可以手动将此文件加载到凉亭中。但是由于我们最终也将在这个模型中生成一个机器人因此最好继续直接启动文件。 3.3 步骤 3启动文件 正如我们在上一篇文章中了解到的ROS2 不再支持 XML 启动文件而是使用 Python 文件。 我们使用的启动文件包装包中的启动命令并提供一个世界参数。gazebo_ros #!/usr/bin/python3 import os from ament_index_python.packages import get_package_share_directory from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.actions import IncludeLaunchDescription from launch.launch_description_sources import PythonLaunchDescriptionSource package_name radu_bot world_file room.world def generate_launch_description():pkg_gazebo_ros get_package_share_directory(gazebo_ros)pkg_radu_simulation get_package_share_directory(package_name)# launch Gazebo by including its definitiongazebo IncludeLaunchDescription(PythonLaunchDescriptionSource(os.path.join(pkg_gazebo_ros, launch, gazebo.launch.py),))# load the world fileworld_arg DeclareLaunchArgument(world,default_value[os.path.join(pkg_radu_simulation, worlds, world_file), ],descriptionSDF world file)return LaunchDescription([gazebo,world_arg]) 3.4 第 4 步使用 Gazebo 标签扩展机器人模型 为了在凉亭中使用RViz的URDF模型我们需要对模型进行一些更改。 首先我们需要为机器人提供额外的物理方面以便它在模拟中正确运行。其次机器人的视觉外观不同。RVIZ 模型的颜色和文本定义不适用。如果使用网格也需要更改它们。第三我们还需要额外的插件以便 Gazebo 工具正常工作 让我们逐步查看这些更改。 3.5 物理模拟属性 惯性 物体的惯性是当其当前运动受到另一个物体影响时施加的反作用力。在凉亭模型中标签用于表示这一方面。inertial 下面是一个示例 link namebase_linkinertialorigin xyz0 0 0 rpy0 0 0/mass value0.25 /inertia ixx0.000486 ixy0.0 ixz0.0 iyy0.000486 iyz0.0 izz0.000729//inertialvisualorigin rpy0 0 0 xyz0 0 0/geometrycylinder radius0.09 length0.09//geometry/visual /link 标签相对于其父链接定位链接在这里您可以更改值以移动估计的质量中心。通过您指定此链接质量以千克为单位。最后该元素是 x、y 和 z 上的力如何影响链接的矩阵。您可以在维基百科上阅读物理文章或使用这个方便的python脚本。originxyzmassinertial 摩擦 另一组变量控制机器人中链接的摩擦。你用四个值来表达这一点。首先提供静态和动态接触刚度。在这里我们使用值和这是许多ROS项目中使用的默认值。其次值和是静态和动态摩擦系数您可以根据链接的材料在维基百科上查找。kpkd1000001.0mu1mu2 gazebo referencebase_linkkp100000.0/kpkd1.0/kdmu110.0/mu1mu210.0/mu2 /gazebo 碰撞 这定义了机器人的硬材料边界——它会影响在模拟中将重力和其他力施加到机器人上的方式。这些属性由链接中的标记表示。它的属性非常简单只需复制原始链接和值如下所示。collisiongeometryorigin link namebase_linkinertialorigin xyz0 0 0 rpy0 0 0/mass value0.25 /inertia ixx0.000486 ixy0.0 ixz0.0 iyy0.000486 iyz0.0 izz0.000729//inertialvisualorigin rpy0 0 0 xyz0 0 0/geometrycylinder radius0.09 length0.09//geometry/visualcollisionorigin rpy0 0 0 xyz0 0 0/geometrycylinder radius0.09 length0.09//geometry/collision /link 关节特性 机器人中的关节应进一步建模以表达其真实世界的行为。 对于所有非静态、非连续接头集合和值upperlower对于所有连续接头添加和限制effortvelocity joint namecamera_jointlimit upper0.5 lower-0.5/ /joint joint nameleft_wheel_jointlimit effort0.1 velocity0.005/ /joint 3.6 可视化模拟属性 要更改机器人的视觉效果您有以下选项 简单的颜色 这与 RViz 中的工作方式相同在链接标签中您可以引用一个元素。visualcolor material namebluecolor rgba0 0 0.8 1/ /material link namecameravisualsmaterial nameblue/visuals /link 预定义网格 Gazebo 提供了一组内置网格这些网格在此源代码文件中列出。应用它们在标签内添加标签如下所示。materialgazebo gazebo referencebase_linkmaterialGazebo/Grey/material /gazebo 自定义网格 使用自定义网格表示链接时只需在链接的标记中引用它们如下所示geometry link namecameramesh filename:package://radu_bot/model/meshes/camera.dae / /link 重要提示建议不要在标签中使用自定义网格文件因为这会影响仿真性能。相反请根据可用的盒子、圆柱体和球体类型定义值。collisiongeometry 3.7 第 5 步参数化机器人 URDF 模型以使用 Gazebo 或 RViz 跑步 如您所见所需的更改是根本性的。而且它们不向后兼容Gazebo 所需的所有更改都无法被 RVIZ 解析。 由于这些原因复杂的机器人项目将URDF方面分成不同的XACRO文件。经过一些实验我想出了以下层次结构。 core- 包含用于渲染机器人链接和关节的核心宏rviz- RVIZ主文件它定义参数并导入其他文件rviz_viusals- 定义机器人在RViz中的可视化方式gazebo- 凉亭核心文件就像定义参数和导入其他文件一样gazebo_visuals- 定义如何在凉亭中可视化机器人gazebo_physics- 计算链接和标签的附加宏inertialcollisiongazebo_sensor- 添加传感器数据gazebo_controll- 添加了 ROS 控制插件并定义用于渲染标签的宏transmission 让我们看看这种方法在实践中是如何工作的。运行 Xacro 渲染模型时将使用命令 -o radu_rviz_compiled.urdf。此文件将...xacro rviz.xacro 导入其他必需的文件 xacro:include filename$(find radu_bot)/urdf2/core.xacro/ xacro:include filename$(find radu_bot)/urdf2/visuals.xacro/ 2. 定义控制宏执行的基本参数 xacro:property namegazebo_build valuefalse / xacro:property namerviz_build valuetrue / 3. 执行宏以创建 URDF 模型 xacro:box_link namebase_link size0.6 0.3 0.05 color${torso_color_name} color_rgb${torso_color_rgb} / xacro:wheel_link nameright_wheel_frontside / xacro:wheel_joint namebase_link_right_wheel_frontside parentbase_link childright_wheel_frontside xyz0.2 -0.2 -0.05 / xacro:wheel_link nameright_wheel_backside / xacro:wheel_joint namebase_link_right_wheel_backside parentbase_link childright_wheel_backside xyz-0.2 -0.2 -0.05 / xacro:wheel_link nameleft_wheel_frontside / xacro:wheel_joint namebase_link_left_wheel_frontside parentbase_link childleft_wheel_frontside xyz0.2 0.2 -0.05 / xacro:wheel_link nameleft_wheel_backside / xacro:wheel_joint namebase_link_left_wheel_backside parentbase_link childleft_wheel_backside xyz-0.2 0.2 -0.05 / 在使用这种方法一段时间后我意识到处理可变性的核心逻辑在文件内部用于呈现链接和关节的宏具有将由主文件触发的不同块。请参阅以下定义。在第 3 行中评估条件以添加特定于 RViz 的视觉对象。在第 14 行中另一个条件检查凉亭物理属性并将其应用于模型。core.xacrolinkxacro:if xacro:macro namebox_link paramsname size color color_rgb link name${name}xacro:if value${rviz_build}visualorigin xyz0 0 0 rpy0 0 0/geometrybox size${size}//geometrymaterial name${color}color rgba${color_rgb}//material/visual/xacro:ifxacro:if value${gazebo_build}pose0 0 0 0 0 0/posexacro:box_inertia m0.6 x0.7 y0.4 z0.2/collision namecollision_${name}origin xyz0 0 0 rpy0 0 0/geometrybox size${size}//geometry/collision/xacro:if /link /xacro:macro 3.8 第 6 步生成机器人 Gazebo 节点通过启动文件启动但机器人需要生成到节点中。感谢博客文章如何在 ROS2 中生成机器人我创建了以下启动文件。 #!/usr/bin/python3 import os import sys import rclpy from gazebo_msgs.srv import SpawnEntity from ament_index_python.packages import get_package_share_directory package_name radu_bot def main(argsNone):rclpy.init(argsargs)node rclpy.create_node(minimal_client)cli node.create_client(SpawnEntity, /spawn_entity)sdf_file_path (os.path.join(get_package_share_directory(package_name), urdf, radu_gazebo_compiled.urdf)),model open(sdf_file_path[0], r).read()print(MODEL %s %model)req SpawnEntity.Request(name radu_bot,xml model,robot_namespace radu,reference_frame world,)while not cli.wait_for_service(timeout_sec1.0):node.get_logger().info(service not available, waiting again...)future cli.call_async(req)rclpy.spin_until_future_complete(node, future)if future.result() is not None:node.get_logger().info(Result str(future.result().success) future.result().status_message)else:node.get_logger().info(Service call failed %r % (future.exception(),))node.destroy_node()rclpy.shutdown() if __name__ __main__:main() 启动文件还可以在启动期间转换 Xacro 文件如diff_bot示例中所示。例如要加载 Gazebo 配置您需要执行以下命令 import xacro def generate_launch_description():pkg_radu_simulation get_package_share_directory(package_name)robot_description_path os.path.join(pkg_radu_simulation,urdf,gazebo.xacro,)robot_description {robot_description: xacro.process_file(robot_description_path).toxml()} 四、启动机器人 首先我们构建当前工作区。 $ colcon build --symlink-install --cmake-clean-first --event-handlers console_direct --packages-up-to radu_bot 然后我们推出凉亭。 $ ros2 launch radu_bot gazebo.launch.py [INFO] [launch]: All log files can be found below /home/devcon/.ros/log/2021-05-30-09-07-30-541933-giga-36879 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [gzserver-1]: process started with pid [36886] [INFO] [gzclient -2]: process started with pid [36889] 然后生成机器人。 $ ros2 run radu_bot spawn_radu [INFO] [1622358479.722919377] [minimal_client]: Result True SpawnEntity: Successfully spawned entity [radu_bot] 最后渲染机器人 五、结论 本文向您展示了如何从头开始在 ROS2 中创建与 Gazebo 兼容的模拟。事实证明这是一个漫长的 过程您需要 1 创建一个包2 创建坐标定位文件3 创建启动文件4 将 Gazebo 特定标签添加到我们的机器人模型中5 参数化您的机器人模型以与 Gazebo 和 RVIZ 兼容以及 6 在模拟中生成机器人实体。形成所有这些步骤。添加 Gazebo 物理是学习和应用的时间密集型我希望您也能获得宝贵的见解。最后我们可以使用自定义启动脚本文件在 Gazebo 和 RViz 中生成 RADU。从这里我们可以在模拟中移动机器人。
http://www.w-s-a.com/news/566530/

相关文章:

  • 柳州网站优化搜索引擎优化方法案例
  • 什么网站比较少人做响应式网站开发周期
  • 公司网站欢迎语工作期间员工花钱做的网站
  • 新网站该如何做网站优化呢网络营销网站设计
  • 旅游门户网站模板下载做策划网站推广怎么写简历
  • 建设隔离变压器移动网站wordpress动态导航
  • 平潭建设局网站中国免费素材网
  • 虚拟主机可以做视频视频网站吗做爰全过程免费的视频网站有声音
  • 专业做家电经销的网站网络管理系统有哪几部分组成
  • 自学网站编程网站名称需要注册吗
  • 网站后台管理系统怎么添加框安徽省工程建设协会网站
  • 雨花台网站建设wordpress找回
  • 四川哪家网站推广做的好网站开发人才需求
  • 什么网站可以找手工活做一站式服务平台官网
  • 做购物网站的步骤网站核心词如何做
  • 做品牌设计网站公司网站没做301怎么做301
  • 服务流程企业网站wordpress文章的使用
  • 网站开发组合淘宝网站开发选什么类目
  • 广东手机网站建设个人电脑做网站主机
  • 健身俱乐部网站开发文档建一个网站需要什么条件
  • 买的网站模板怎么做建设行政管理部门网站
  • 怎么让百度多收录网站关键词seo深圳
  • 陕西交通建设集团网站体检个人网站设计模板田田田田田田田田
  • ae模板网站推荐安徽建筑信息平台
  • 新网站建设代理商wordpress模板商店
  • 中国十大设计素材网站wordpress发布失败
  • 江西省建设监理网站网页制作与设计是什么
  • 在招聘网站做销售怎么样网址你懂我意思正能量不用下载ios
  • 高端企业网站定制公司企业网站2000元
  • 成都网站建设:河北省建设工程质量监督网站