3.2.4 stage_ros2基本模型

基本模型(model)模拟具有基本属性的对象;位置、大小、速度、颜色、对各种传感器的可见性等。基本模型还具有由线性列表组成的主体。在内部,基本模型被用作所有其他模型类型的基类。我们可以使用基本模型来模拟环境对象。在stage中,底盘模型、雷达模型、相机模型等都可以看作是基本模型的子类。

1.添加基本模型

在stage_sim.launch.py文件中添加如下内容:

# -----------------------------------------------------------------------------
# 添加障碍物
model( pose [ -2 -4 0 0 ] color "green")
# define a block
define my_block model
(
  size [1.0 1.0 1.0]
  gui_nose 0
  gui_grid 0
  gui_outline 0
)

# throw in a block
my_block( pose [ 0 4 0 90 ] color "red" bitmap "maps/ghost.png")

上述代码中,直接使用默认的基础model创建了一个绿色模型对象,并且还自定义了继承自model的my_block模型,然后创建了该模型对象。

2.编译执行

构建功能包并执行launch文件后,运行结果如下。

3.窗体参数

摘要和默认值

model (
    pose [ 0.0 0.0 0.0 0.0 ]
    size [ 0.1 0.1 0.1 ]
    origin [ 0.0 0.0 0.0 0.0 ]
    velocity [ 0.0 0.0 0.0 0.0 ]

    color "red"
    color_rgba [ 0.0 0.0 0.0 1.0 ]
    bitmap ""
    ctrl ""

    # determine how the model appears in various sensors
    fiducial_return 0
    fiducial_key 0
    obstacle_return 1
    ranger_return 1
    blob_return 1
    laser_return LaserVisible
    gripper_return 0
    gravity_return 0
    sticky_return 0

    # GUI properties
    gui_nose 0
    gui_grid 0
    gui_outline 1
    gui_move 0 (1 if the model has no parents);

    boundary 0
    mass 10.0
    map_resolution 0.1
    say ""
    alwayson 0
)

详解

  • pose [ x:<float> y:<float> z:<float> heading:<float> ]
    指定模型在其父坐标系中的姿态。

  • size [ x:<float> y:<float> z:<float> ]
    指定模型在各个维度上的大小。

  • origin [ x:<float> y:<float> z:<float> heading:<float> ]
    指定对象中心的位置,相对于其姿态。

  • velocity [ x:<float> y:<float> z:<float> heading:<float> omega:<float> ]
    指定模型的初始速度。请注意,如果模型撞到障碍物,其速度将被设置为零。

  • velocity_enable int (默认为0)
    大多数模型忽略其速度状态。这样可以节省处理时间,因为大多数模型的速度永远不会被设置为非零值。一些子类(例如ModelPosition)会改变这个默认值,因为它们期望移动。用户可以在这里指定一个非零值来启用对该模型的速度控制。这与调用Model::VelocityEnable()的效果相同。

  • color <string>
    使用X11数据库(rgb.txt)中的颜色名称指定对象的颜色。

  • bitmap filename:<string>
    通过解释位图中的线条来绘制模型(支持bmp、jpeg、gif、png)。文件被打开并解析为一组线条。这些线条被缩放以适应模型当前大小所定义的矩形内。

  • ctrl <string>
    指定模型的控制器模块及其参数字符串。例如,字符串"foo bar bash"将加载libfoo.so,其Init()函数将以整个字符串作为参数进行调用(包括库名称)。控制器需要解析字符串(如果需要参数)。

  • fiducial_return fiducial_id <int>
    如果非零,则通过fiducialfinder传感器检测到此模型。该值用作基准标识符。

  • fiducial_key <int>
    仅当模型和fiducialfinder的fiducial_key值匹配时,fiducial_id模型才会被fiducialfinder检测到。这允许您在同一环境中拥有几种独立类型的基准标识,每种类型只显示在为其"调谐"的fiducialfinders中。

  • obstacle_return <int>
    如果为1,则此模型可以与具有此属性设置的其他模型发生碰撞。

  • ranger_return <int>
    如果为1,则该模型可以被ranger传感器检测到。

  • blob_return <int>
    如果为1,则该模型可以在blob_finder中被检测到(取决于其颜色)。

  • laser_return <int>
    如果为0,则此模型不会被激光传感器检测到。如果为1,则该模型在激光传感器中显示为正常(0)反射。如果为2,则显示为高(1)反射。

  • gripper_return <int>
    如果为1,则该模型可以被夹爪夹取,并且可以通过与具有非零obstacle_return的任何东西的碰撞来推动。

  • gui_nose <int>
    如果为1,则在模型上绘制显示其朝向的鼻子(正X轴)。

  • gui_grid <int>
    如果为1,则在模型上绘制比例网格。

  • gui_outline <int>
    如果为1,则在模型周围绘制边界框,指示其大小。

  • gui_move <int>
    如果为1,则模型可以在GUI窗口中通过鼠标移动。

results matching ""

    No results matching ""