В настоящее время я пытаюсь создать базовую модель нашего робота URDF (в основном это модифицированный мобильный скутер с передним рулевым управлением + задним приводом, как в автомобиле) для использования в ROS / Gazebo.
Мне удалось заставить рулевое управление работать («поворачивая колесо влево или вправо вдоль оси Z, пока не сработает порог»). Теперь я предполагаю, что мне также нужно дать всем колесам возможность двигаться / катиться вперед и назад, используя соединение типа «непрерывный».
К сожалению, сейчас я застрял здесь. Каждый раз, когда я поворачиваюсь, а затем пытаюсь изменить параметр "крен", положение рулевого управления сбрасывается на ноль. Вы можете проверить это в этом симуляторе: http://www.mymodelrobot.appspot.com (код URDF должен быть положить на правой стороне, а затем вы нажимаете «Загрузить робот URDF», тогда вы можете изменить параметры в верхней правой части). Я опробовал его только на одном колесе (левый передний или «передний линк» в URDF - иногда я пишу названия на немецком языке).
Я действительно не знаю, в чем проблема, я попробовал несколько модификаций. Вы знаете, в чем может быть проблема?
Вот URDF:
<?xml version="1.0"?>
<robot name="ben">
<!-- * * * Link Definitions * * * -->
<link name="basis_unten">
<visual>
<origin xyz="0 0 0.35" rpy="0 0 0"/>
<geometry>
<box size="1.70 0.66 0.50"/>
</geometry>
<material name="Cyan1">
<color rgba="0.0 0.9 0.9 0.9"/>
</material>
</visual>
<collision>
<geometry>
<box size="2.70 0.88 0.50"/>
</geometry>
</collision>
</link>
<link name="basis_oben">
<visual>
<origin xyz="-0.1 0 0.84" rpy="0 0 0"/>
<geometry>
<box size="1.50 0.66 0.68"/>
</geometry>
<material name="Cyan1">
<color rgba="0.0 0.9 0.9 0.9"/>
</material>
</visual>
<collision>
<geometry>
<box size="2.50 0.88 0.68"/>
</geometry>
</collision>
</link>
<link name="reifen_front_links">
<visual>
<origin xyz="0 0 0" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.155"/>
</geometry>
<material name="reifenfarbe">
<color rgba="0 0 0 1.0"/>
</material>
</visual>
</link>
<link name="reifen_front_rechts">
<visual>
<origin xyz="0 0 0" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.155"/>
</geometry>
<material name="reifenfarbe">
<color rgba="0 0 0 1.0"/>
</material>
</visual>
</link>
<link name="reifen_back_links">
<visual>
<origin xyz="-0.6 0.29 0.155" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.155"/>
</geometry>
<material name="reifenfarbe">
<color rgba="0 0 0 1.0"/>
</material>
</visual>
</link>
<link name="reifen_back_rechts">
<visual>
<origin xyz="-0.6 -0.29 0.155" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.155"/>
</geometry>
<material name="reifenfarbe">
<color rgba="0 0 0 1.0"/>
</material>
</visual>
</link>
<link name="lidar">
<visual>
<geometry>
<cylinder length ="0.041" radius="0.03625"/>
</geometry>
<material name="lidarfarbe">
<color rgba="0.1 0 0 1"/>
</material>
<origin rpy="0 0.785 0" xyz="0.8 0 1.16"/>
</visual>
</link>
<link name="kamera_vorne">
<visual>
<geometry>
<box size="0.02 0.15 0.03"/>
</geometry>
<material name="kamerafarbe">
<color rgba="0 0 1 1"/>
</material>
<origin rpy="0 0 0" xyz="0.77 0 1.01"/>
</visual>
</link>
<link name="kamera_links">
<visual>
<origin xyz="0.50 0.29 1.05" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="kamerafarbe">
<color rgba="0 0 1 1"/>
</material>
</visual>
</link>
<link name="kamera_rechts">
<visual>
<origin xyz="0.50 -0.29 1.05" rpy="-1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="kamerafarbe">
<color rgba="0 0 1 1"/>
</material>
</visual>
</link>
<link name="kamera_back">
<visual>
<origin xyz="-0.85 0 1.11" rpy="0 -1.57 0"/>
<geometry>
<cylinder length ="0.04" radius="0.02"/>
</geometry>
<material name="kamerafarbe">
<color rgba="0 0 1 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_front_links">
<visual>
<origin xyz="0.75 0.29 0.5" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_front_rechts">
<visual>
<origin xyz="0.75 -0.29 0.5" rpy="-1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_back_links">
<visual>
<origin xyz="-0.75 0.29 0.5" rpy="1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_back_rechts">
<visual>
<origin xyz="-0.75 -0.29 0.5" rpy="-1.57075 0 0"/>
<geometry>
<cylinder length ="0.10" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_fresseobenl">
<visual>
<origin xyz="0.85 0.045 0.77" rpy="0 1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_fresseobenr">
<visual>
<origin xyz="0.85 -0.045 0.77" rpy="0 1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_fresseuntenl">
<visual>
<origin xyz="0.85 0.23 0.42" rpy="0 1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_fresseuntenr">
<visual>
<origin xyz="0.85 -0.23 0.42" rpy="0 1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_rueckenoben">
<visual>
<origin xyz="-0.85 0 0.77" rpy="0 -1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_rueckenuntenl">
<visual>
<origin xyz="-0.85 0.27 0.42" rpy="0 -1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_rueckenuntenm">
<visual>
<origin xyz="-0.85 0 0.42" rpy="0 -1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<link name="ultrasonic_rueckenuntenr">
<visual>
<origin xyz="-0.85 -0.27 0.42" rpy="0 -1.57 0"/>
<geometry>
<cylinder length ="0.02" radius="0.02"/>
</geometry>
<material name="sensorfarbe">
<color rgba="1 0 0 1"/>
</material>
</visual>
</link>
<joint name="reifenlinks_joint" type="revolute">
<parent link="basis_unten"/>
<child link="reifen_front_links"/>
<origin xyz="0.46 0.29 0.155" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<limit lower="-0.35" upper="0.35" effort="10" velocity="3"/>
</joint>
<joint name="reifenrechts_joint" type="revolute">
<parent link="basis_unten"/>
<child link="reifen_front_rechts"/>
<origin xyz="0.46 -0.29 0.155" rpy="0 0 0"/>
<axis xyz="0 0 1"/>
<limit lower="-0.35" upper="0.35" effort="10" velocity="3"/>
</joint>
<link name="right_front_steering">
<visual>
<geometry>
<box size ="0.01 0.01 0.01"/>
</geometry>
<origin rpy="0 0 0" xyz="0 0 0"/>
</visual>
</link>
<joint name="right_front_steering_to_right_front_wheel" type="continuous">
<parent link="right_front_steering"/>
<child link="reifen_front_links"/>
<origin xyz="0.46 0.29 0.155"/>
<axis xyz="0 1 0"/>
</joint>
</robot>