Files
car_simulation/scene.xml
2026-06-20 21:46:03 +08:00

142 lines
5.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<mujoco model="origincar_scene">
<compiler angle="radian" autolimits="true"/>
<option timestep="0.005" iterations="10" solver="PGS"/>
<statistic center="0 0 0.1" extent="3"/>
<visual>
<headlight diffuse="0.6 0.6 0.6" ambient="0.3 0.3 0.3" specular="0 0 0"/>
<rgba haze="0.15 0.25 0.35 1"/>
<global azimuth="120" elevation="-20"/>
<quality shadowsize="4096"/>
</visual>
<asset>
<texture name="checker_tex" type="2d" builtin="checker" width="512" height="512" mark="edge"
rgb1="0.35 0.45 0.55" rgb2="0.55 0.65 0.75" markrgb="0.15 0.15 0.15"/>
<material name="checker_mat" texture="checker_tex" texrepeat="5 5" texuniform="true" reflectance="0.05"/>
<mesh name="cone_mesh" file="cone.obj"/>
<mesh name="cone_white_mesh" file="cone_white.obj"/>
<texture name="map_tex" type="2d" file="map_full.png"/>
<material name="map_mat" texture="map_tex" texrepeat="0.2 0.2" texuniform="true" reflectance="0.0"/>
<texture name="qr_tex" type="2d" file="qr_code.png"/>
<material name="qr_mat" texture="qr_tex" texrepeat="1 1" texuniform="true"/>
<texture type="skybox" builtin="gradient" rgb1="0.4 0.5 0.6" rgb2="0 0 0" width="512" height="512"/>
</asset>
<default>
<geom density="500"/>
<joint damping="0.5"/>
<default class="wheel">
<geom type="cylinder" size="0.03 0.0125" density="1000" condim="3"/>
<joint damping="0.2"/>
</default>
<default class="steering">
<joint axis="0 0 1" damping="2" limited="true" range="-0.6 0.6"/>
<geom type="sphere" size="0.015" density="500" contype="0" conaffinity="0" rgba="0 0 0 0"/>
</default>
<default class="cone_blue">
<geom density="300" rgba="0.0 0.0 0.5 1"/>
</default>
</default>
<worldbody>
<light name="sun" pos="0 0 5" dir="0 0 -1" directional="true" castshadow="true"
diffuse="0.8 0.8 0.8" specular="0.2 0.2 0.2"/>
<!-- Checkerboard ground (infinite) -->
<geom name="floor" type="plane" size="0 0 0.01" material="checker_mat"
friction="0.6 0.1 0.1" condim="3"/>
<!-- 5m x 5m map tile, just above the ground -->
<geom name="map_tile" type="box" size="2.5 2.5 0.002" pos="0 0 0.002"
material="map_mat" friction="0.6 0.1 0.1" condim="3"/>
<!-- 40cm white fence around the map -->
<!-- QR signboard: 25cm(H)×20cm(W)×1cm(D), tilted 15°, facing SW -->
<body name="signboard" pos="2.25 -0.72 0.125" euler="-0.262 0 2.242">
<geom name="board_white" type="box" size="0.10 0.005 0.125" rgba="1 1 1 1"/>
<geom name="board_qr" type="box" size="0.10 0.001 0.10" pos="0 0.006 0.025" material="qr_mat"/>
</body>
<!-- ===== Blue cone obstacles (auto-generated from cones.json) ===== -->
<!-- CONES -->
<geom name="fence_n" type="box" size="2.5 0.02 0.2" pos="0 2.5 0.2" rgba="1 1 1 1"/>
<geom name="fence_s" type="box" size="2.5 0.02 0.2" pos="0 -2.5 0.2" rgba="1 1 1 1"/>
<geom name="fence_e" type="box" size="0.02 2.5 0.2" pos=" 2.5 0 0.2" rgba="1 1 1 1"/>
<geom name="fence_w" type="box" size="0.02 2.5 0.2" pos="-2.5 0 0.2" rgba="1 1 1 1"/>
<body name="base_link" pos="0 0 0.08">
<freejoint/>
<geom name="base_geom" type="box" size="0.138 0.082 0.04" pos="0 0 0.07"
rgba="0.4 0.039 0.039 1" contype="0" conaffinity="0"/>
<!-- Camera: look along +X, right=-Y, up=+Z -->
<camera name="front_cam" pos="0.1205 0 0.11" xyaxes="0 -1 0 0 0 1" fovy="60"/>
<body name="camera" pos="0.1205 0 0.11">
<geom name="camera_geom" type="box" size="0.0075 0.0225 0.015" pos="0 0 0.015"
rgba="0.365 0.306 0.306 1"/>
</body>
<body name="board_link" pos="-0.038 0 0.11">
<geom name="board_geom" type="box" size="0.100 0.082 0.035" pos="0 0 0.035"
rgba="0.965 0.596 0.596 1"/>
</body>
<!-- Lidar on top of car -->
<body name="lidar" pos="0 0 0.12">
<geom name="lidar_geom" type="cylinder" size="0.02 0.015" rgba="0.2 0.2 0.2 1"/>
</body>
<!-- ===== Rear wheels (drive only, no steering) ===== -->
<body name="down_left_Link" pos="-0.0841 0.0945 0.03">
<joint name="down_left_joint" axis="0 1 0"/>
<geom class="wheel" zaxis="0 1 0" rgba="0.745 0.129 0.129 1"/>
</body>
<body name="down_right_Link" pos="-0.0841 -0.0945 0.03">
<joint name="down_right_joint" axis="0 -1 0"/>
<geom class="wheel" zaxis="0 -1 0" rgba="0.745 0.129 0.129 1"/>
</body>
<!-- ===== Front wheels (steer + drive) ===== -->
<body name="up_left_steer" pos="0.0841 0.0945 0.03">
<joint name="up_left_steer_joint" axis="0 0 1" limited="true" range="-0.6 0.6"/>
<geom class="steering"/>
<body name="up_left_Link">
<joint name="up_left_drive_joint" axis="0 1 0"/>
<geom class="wheel" zaxis="0 1 0" rgba="0.745 0.129 0.129 1"/>
</body>
</body>
<body name="up_right_steer" pos="0.0841 -0.0945 0.03">
<joint name="up_right_steer_joint" axis="0 0 1" limited="true" range="-0.6 0.6"/>
<geom class="steering"/>
<body name="up_right_Link">
<joint name="up_right_drive_joint" axis="0 -1 0"/>
<geom class="wheel" zaxis="0 -1 0" rgba="0.745 0.129 0.129 1"/>
</body>
</body>
</body>
</worldbody>
<actuator>
<!-- Drive motors (torque) for all 4 wheels -->
<motor name="down_left_drive" joint="down_left_joint" ctrlrange="-20 20"/>
<motor name="down_right_drive" joint="down_right_joint" ctrlrange="-20 20"/>
<motor name="up_left_drive" joint="up_left_drive_joint" ctrlrange="-20 20"/>
<motor name="up_right_drive" joint="up_right_drive_joint" ctrlrange="-20 20"/>
<!-- Steering position servos (kp/kv matched to car.py pattern) -->
<position name="up_left_steer" joint="up_left_steer_joint" ctrlrange="-0.6 0.6" kp="3000" kv="300"/>
<position name="up_right_steer" joint="up_right_steer_joint" ctrlrange="-0.6 0.6" kp="3000" kv="300"/>
</actuator>
</mujoco>