You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS2/Gazebo立方体纹理问题:单面显示与防重复平铺

Gazebo立方体单面带Aruco标记的解决方案

问题1:仅在立方体一个面显示Aruco标记

默认box视觉组件会将材质应用到所有六个面,最直接的解决方式是拆分视觉元素:

  • 保留一个纯色立方体作为主体视觉
  • 添加一个薄平板(极小厚度的box)作为单独的视觉组件,仅给这个平板贴Aruco纹理,再将其精准定位在立方体的目标面上

修改后的模型SDF代码:

<model name='charger'>
    <static>true</static>
    <link name='charger_link'>
        <!-- 立方体主体(纯色无纹理) -->
        <visual name='cube_body'>
            <geometry>
                <box>
                    <size>1 1 1</size>
                </box>
            </geometry>
            <material>
                <diffuse>0.8 0.8 0.8 1</diffuse> <!-- 灰色主体,可自定义颜色 -->
            </material>
        </visual>
        <!-- Aruco标记专属面(薄平板) -->
        <visual name='aruco_face'>
            <geometry>
                <box>
                    <size>1 1 0.01</size> <!-- 极小厚度模拟单一平面 -->
                </box>
            </geometry>
            <material>
                <script>
                    <uri>model://aruco_markers/materials/scripts</uri>
                    <uri>model://aruco_markers/textures</uri> <!-- 指向纹理目录而非单个文件 -->
                    <name>aruco_marker_42</name>
                </script>
            </material>
            <pose>0 0 0.5005 0 0 0</pose> <!-- 定位在立方体顶面,0.5是立方体半高,加0.0005让平板贴在外部 -->
        </visual>
        <!-- 碰撞体保留单个立方体即可 -->
        <collision name='charger_collision'>
            <geometry>
                <box>
                    <size>1 1 1</size>
                </box>
            </geometry>
        </collision>
    </link>
    <pose>0 7.7 0.5 0 0 0</pose>
</model>

问题2:让Aruco图片尺寸小于立方体单个面(居中无平铺)

调整.material文件的纹理参数,强制关闭重复平铺并设置缩放比例,确保图片居中显示:

修改后的.material文件:

material aruco_marker_42
{
  technique
  {
    pass
    {
      texture_unit
      {
        texture aruco_marker_42.png
        scale 0.8 0.8 <!-- 纹理缩放至面的80%大小,可按需调整数值 -->
        repeat_u false
        repeat_v false
        wrap s_clamp t_clamp <!-- 超出纹理范围的部分用边缘像素填充,杜绝平铺 -->
        filtering anisotropic
        max_anisotropy 8
      }
    }
  }
}

关键注意点:

  • scale参数直接控制纹理相对于平面的大小,小于1的数值会让图片缩小并自动居中
  • 模型文件中多余的<texture>标签可以删除,避免和.material文件的配置冲突
  • 确保repeat_u/repeat_v设为false,彻底关闭纹理循环

内容的提问来源于stack exchange,提问作者Steve Brown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 05:15:28