📍 参考点(Site)#
概述#
Site(参考点)是 MotrixSim 中一个重要的概念,它代表模型中用户感兴趣的位置点。Site 本质上是虚拟的位置标记,用于标记模型框架内特定的位置和方向。
主要特点#
虚拟参考点:
Site是虚拟的位置标记,不参与碰撞检测或惯性属性计算参考位置:用于指定传感器、端点等对象的空间属性
轻量级:相比物理几何体,
Site不参与物理计算,开销更小
使用方法和示例#
使用方法#
通过 SceneModel 对象获取所有 Site 信息、通过名称获取特定 Site 等:
# ----------Try to access site----------
# How many sites are in the model?
num_sites = model.num_sites
# Site objects
sites = model.sites
# Site names
site_names = model.site_names
print(f"num_sites : {num_sites}, sites : {sites}, site_names : {site_names}")
# Get site by name
car_imu = model.get_site("car_imu")
print(f"car_imu's site index : {car_imu.index}")
print(f"The car_imu site is on : [{car_imu.parent_link.name}] link")
print(f"site_name of car_imu : {car_imu.name}")
print(f"car_imu's local position : {car_imu.local_pos}")
print(f"car_imu's local rotation : {car_imu.local_quat}")
print(f"car_imu's world pose : {car_imu.get_pose(data)}")
# ----------End----------
完整示例代码参见 examples/site_and_sensor.py。
应用场景#
Site 有多种应用场景:
传感器位置:IMU、相机、激光雷达等传感器的安装位置
参考点标记:关键位置的标记,如关节中心、质心等
调试辅助:可视化重要位置点,帮助验证模型正确性
路径规划:作为路径规划中的关键点或目标点
在 MJCF 中定义 Site#
在 MJCF 文件中,Site 通过 <site> 标签定义。详细的标签属性和用法请参考 MJCF 格式说明。
注意:MotrixSim 目前已支持 Site 的核心功能和常用属性,部分<site>属性尚在开发中,请参照 支持列表 使用。
以下是 site_and_sensor.xml 中的 Site 定义示例:
<body>
<freejoint/>
<geom name="freebox" type="box" size="0.1 0.1 0.1" pos="0.8 0 1" rgba="1 0 1 1"/>
</body>
<body name="car" pos = "0 0 0">
<joint name="slider" type="slide" axis="1 0 0" limited="true" range = "-2 2"/>
<geom name = "box" type="box" size="0.25 0.25 0.25" pos = "0 0 0 " rgba="1 0 0 1"/>
<site name="car_imu" type="sphere" size="0.03" rgba="0 1 0 1" pos="0 0 0"/>
完整的 XML 文件参见:examples/assets/site_and_sensor.xml
注意事项#
坐标系:
Site的位置和方向是相对于其父链接的坐标系命名唯一性:每个
Site在模型中应该有唯一的名称可视化:
Site可以在渲染中显示,有助于调试和验证位置虚拟特性:
Site是虚拟的,如需物理交互请使用<geom>标签
API Reference#
更多与 Site 相关的 API,请参考 Site API