Gazebo之MyRobot建立

1. 源由

在本章中,将学习如何在 SDFormat 中构建一个简单的两轮机器人。

注:SDFormat(Simulation Description Format),有时简称为 SDF,是一种 XML 格式,用于描述机器人模拟器、可视化和控制的对象和环境。

2. 示例

Step 1: 新建一个简单世界

从构建一个简单的世界开始,然后在其中构建我们的机器人。打开一个名为 empty_world.sdf 的新文件,并将以下代码复制到其中。

<?xml version="1.0" ?>
<sdf version="1.10">
    <world name="car_world">
        <physics name="1ms" type="ignored">
            <max_step_size>0.001</max_step_size>
            <real_time_factor>1.0</real_time_factor>
        </physics>
        <plugin
            filename="gz-sim-physics-system"
            name="gz::sim::systems::Physics">
        </plugin>
        <plugin
            filename="gz-sim-user-commands-system"
            name="gz::sim::systems::UserCommands">
        </plugin>
        <plugin
            filename="gz-sim-scene-broadcaster-system"
            name="gz::sim::systems::SceneBroadcaster">
        </plugin>

        <light type="directional" name="sun">
            <cast_shadows>true</cast_shadows>
            <pose>0 0 10 0 0 0</pose>
            <diffuse>0.8 0.8 0.8 1</diffuse>
            <specular>0.2 0.2 0.2 1</specular>
            <attenuation>
                <range>1000</range>
                <constant>0.9</constant>
                <linear>0.01</linear>
                <quadratic>0.001</quadratic>
            </attenuation>
            <direction>-0.5 0.1 -0.9</direction>
        </light>

        <model name="ground_plane">
            <static>true</static>
            <link name="link">
                <collision name="collision">
                <geometry>
                    <plane>
                    <normal>0 0 1</normal>
                    </plane>
                </geometry>
                </collision>
                <visual name="visual">
                <geometry>
                    <plane>
                    <normal>0 0 1</normal>
                    <size>100 100</size>
                    </plane>
                </geometry>
                <material>
                    <ambient>0.8 0.8 0.8 1</ambient>
                    <diffuse>0.8 0.8 0.8 1</diffuse>
                    <specular>0.8 0.8 0.8 1</specular>
                </material>
                </visual>
            </link>
        </model>
    </world>
</sdf>

保存文件,导航到保存文件的目录并启动模拟器:

$ gz sim empty_world.sdf

注:一个只有地面和阳光的空世界。

Step 2: 新建一个模型(model)

  • 定义了模型的名称 vehicle_blue,它应该在其同级(其他标签或同级模型)中是唯一的。
  • 每个模型可以有一个链接被指定为 canonical_link,模型的隐式框架附加到这个链接上。
  • 如果未定义,则第一个 <link> 将被选择为 canonical_link。
  • <pose> 标签用于定义模型的位置和方向,relative_to 属性用于定义模型相对于任何其他框架的姿态。
  • 如果未定义 relative_to,则模型的 <pose> 将相对于世界。
  • <pose> 标签内的值如下:<pose>X Y Z R P Y</pose>,其中 X Y Z 表示框架的位置,R P Y 表示横滚、俯仰、偏航的方向。我们将它们设置为零,使两个框架(模型和世界)相同。
<model name='vehicle_blue' canonical_link='chassis'>
    <pose relative_to='world'>0 0 0 0 0 0</pose>

Step 3: 机器人组成链接(Links)

Step 3.1: 新增底盘(Links/Chassis)

定义第一个链接,即我们汽车的底盘,以及它相对于模型的姿态。

    <link name='chassis'>
        <pose relative_to='__model__'>0.5 0 0.4 0 0 0</pose>
Step 3.1.1: 惯性属性(Inertial properties)

在这里,定义了底盘的惯性属性,如 <mass><inertia> 矩阵。使用此工具可以计算基本形状的惯性矩阵的值。

    <inertial> <!--inertial properties of the link mass, inertia matix-->
        <mass>1.14395</mass>
        <inertia>
            <ixx>0.095329</ixx>
            <ixy>0</ixy>
            <ixz>0</ixz>
            <iyy>0.381317</iyy>
            <iyz>0</iyz>
            <
### MoveIt与Gazebo联合仿真教程及配置方法 #### 创建机器人模型并集成到ROS环境中 为了实现MoveIt与Gazebo的联合仿真,首先需要准备机器人的URDF/XACRO描述文件以及相应的材料和纹理资源。这些文件定义了机器人的物理属性、关节类型及其运动范围等重要参数[^1]。 #### 构建支持包 构建一个专门用于仿真的ROS包(如`myrobot_gazebo`),此过程中需引入必要的依赖项,包括但不限于`gazebo_msgs`, `gazebo_plugins`, `gazebo_ros`, 和 `gazebo_ros_control`. 这些工具提供了接口和服务来启动模拟器并与之交互[^3]. #### 配置控制器管理器 编辑位于launch文件夹下的`simple_moveit_controller_manager.launch.xml`文件以适配具体的硬件抽象层(HAL),从而使得MoveIt能够通过指定的服务调用来操作虚拟环境中的实体对象[^4]. #### 添加自定义控制器或插件 对于特定应用场合可能还需要额外安装一些第三方库或是编写专属的功能模块作为扩展组件加入进来,比如PID调节算法或者其他形式的状态反馈机制等等[^2]. ```xml <!-- simple_moveit_controller_manager.launch.xml --> <launch> <!-- Load the controllers configuration file --> <rosparam command="load" file="$(find my_robot)/config/controllers.yaml"/> <!-- Start controller manager --> <node name="controller_spawner" pkg="controller_manager" type="spawner" args="joint_state_controller joint_trajectory_controller"/> </launch> ``` #### 启动仿真会话 最后一步就是组合上述各部分成果,在终端依次执行如下命令行指令完成整个系统的初始化工作: ```bash roslaunch my_robot_gazebo world.launch roslaunch my_robot_moveit_config demo.launch ``` 以上步骤概括了一个完整的从零开始建立基于MoveIt框架下运行于Gazebo平台上的自动化流程指南;当然实际项目里可能会涉及到更多细节调整和技术难题解决过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值