ROS controller_manager - проблема скорости вращения колеса колеблется даже при использовании PID - PullRequest
0 голосов
/ 21 июня 2020

У меня модель мобильного робота с дифференциальным приводом (urdf). Я использую пакет controller_manager (ros_control) для управления скоростью колес. Однако скорости всегда колеблются и не go для устойчивого состояния. Это нормально ? или у меня проблема с моим дизайном.

Здесь показаны значения обработки левого и правого колес в командных значениях (2 «синих» и 5 «красных»)

Это фото модели ddmr

<?xml version="1.0" ?>
<link name="link_dummy">
    <pose>0 0 0.0325 0 0 0</pose>
    <origin rpy="0 0 0" xyz = "0 0 0"/>
    <collision name="collision_dummy">
        <geometry>
            <box size="0.001 0.001 0.001"/>
        </geometry>
    </collision>
    <visual name="visual_dummy">
        <geometry>
            <box size="0.001 0.001 0.001"/>
        </geometry>
    </visual>
</link>

<joint name="dummy_chassis" type="fixed">
    <origin xyz = "0 0 0" rpy="0 0 0"/>
    <parent link="link_dummy"/>
    <child link="link_chassis"/>
</joint> 


<link name="link_chassis">
    <!-- pose and inertial -->
    <pose>0 0 0 0 0 0</pose>
    <inertial>
        <mass value="5"/>
        <origin rpy="0 0 0" xyz="0 0 0"/>
        <inertia ixx="0.006541666" ixy="0" ixz="0" iyy="0.016541666" iyz="0" izz="0.02008333"/> 
    </inertial>
    <!-- body -->
    <collision name="collision_chassis">
        <origin rpy="0 0 0" xyz="0 0 0"/>
        <geometry>
            <box size="0.19 0.11 0.006"/>
        </geometry>
    </collision>
    <visual name="visual_chassis">
        <origin rpy="0 0 0" xyz="0 0 0"/>
        <geometry>
            <box size="0.19 0.11 0.006"/>
        </geometry>
        <material name="white">
            <color rgba="1.0 1.0 1.0 1.0"/>
        </material>
    </visual>
</link>

<link name="caster_cylinder">
    <inertial>
        <origin xyz="0 0 0" rpy="1.5707 0 0"/>
        <mass value="0.3"/>
        <inertia ixx="1" ixy="0" ixz="0" iyy="1" iyz="0" izz="1"/>
    </inertial>
    <collision name="caster_collision">
        <origin rpy="1.5707 0 0" xyz="0 0 0"/>
        <geometry>
            <cylinder length="0.015" radius="0.015"/>
        </geometry>
    </collision>
    <visual name="caster_visual">
        <origin rpy="1.5707 0 0" xyz="0 0 0"/>
        <geometry>
            <cylinder length="0.015" radius="0.015"/>
        </geometry>
    </visual>
</link>

<joint name="joint_caster" type="continuous">
    <origin rpy="0 0 0" xyz = "0.06 0 -0.018"/>
    <child link="caster_cylinder"/>
    <parent link="link_chassis"/>
    <axis rpy="0 0 0" xyz="0 1 0"/>
    <limit effort="5" velocity="5"/>
    <joint_properties damping="1.0" friction="1.0"/>
</joint> 

<link name="sensor_laser">

    <inertial>
        <origin xyz="0.0 0.0 0.0" rpy="0 0 0"/>
        <mass value="0.0001"/>
        <inertia ixx="0.05458333" ixy="0" ixz="0" iyy="0.05458333" iyz="0" izz="0.0525"/>
    </inertial>
    <collision name="snesor_laser_collision">
        
        <geometry>
            <cylinder radius="0.0005" length="0.0001"/>
        </geometry>
    </collision>
    <visual name="sensor_laser_visual">
        
        <geometry>
            <cylinder radius="0.0005" length="0.0001"/>
        </geometry>
        <material name="green">
            <color rgba="0.0 0.8 0.0 1.0"/>
        </material>
    </visual>
</link>

<joint name="joint_sensor_link" type="continuous">
    <origin xyz="0.05 0.0 0.003" rpy ="0 0 0"/>
    <parent link="link_chassis"/>
    <child link="sensor_laser"/>
    <axis rpy="0 0 0" xyz="0 0 1"/>
    <limit effort="10000" velocity="1000"/>
    <joint_properties damping="1" friction="1"/>
</joint>

<link name="link_camera">
    <inertial>
        <mass value="0.00001"/>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <inertia ixx="0.000001" ixy="0" ixz="0" iyy="0.000001" iyz="0" izz="0.000001"/>
    </inertial>
    <collision>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
            <box size="0.005 0.005 0.005"/>
        </geometry>
    </collision>
    <visual>
        <origin xyz="0 0 0" rpy="0 0 0"/>
        <geometry>
            <box size="0.005 0.005 0.005"/>
        </geometry>
    </visual>
</link> 

<joint name="join_camera" type="fixed">
    <axis xyz="0 1 0"/>
    <origin xyz="0 0 0.0525" rpy="0 0 0"/>
    <parent link="sensor_laser"/>
    <child link="link_camera"/>
</joint> 

<link name="link_right_wheel">
    <inertial>
        <mass value="1"/>
        <origin rpy="1.5707 0 0" xyz="0 0 0"/>
        <inertia ixx="0.0002828125" ixy="0" ixz="0" iyy="0.000528125" iyz="0" izz="0.0002828125"/>
    </inertial>
    <collision name="link_right_wheel_collision">
        <origin rpy="1.5707 0 0 " xyz="0.0 0.0 0.0"/>
        <geometry>
            <cylinder length="0.015" radius="0.0325"/>
        </geometry>
    </collision>
    <visual name="link_right_wheel_visual">
        <origin rpy="1.5707 0 0" xyz="0.0 0.0 0"/>
        <geometry>
            <cylinder length="0.015" radius="0.0325"/>
        </geometry>
        <material name="grey">
            <color rgba="0.2 0.2 0.2 1.0"/>
        </material>
    </visual>   
</link>

<joint name="joint_right_wheel" type="continuous">
    <origin rpy="0 0 0" xyz="-0.05 -0.0635 0"/>
    <child link="link_right_wheel"/>
    <parent link="link_chassis"/>
    <axis rpy="0 0 0" xyz="0 1 0"/>
    <limit effort="100" velocity="100"/>
    <joint_properties damping="1" friction="0.1"/>
</joint>

<link name="link_left_wheel">
    <inertial>
        <mass value="1"/>
        <origin rpy="1.5707 0 0" xyz="0 0 0"/>
        <inertia ixx="0.0002828125" ixy="0" ixz="0" iyy="0.000528125" iyz="0" izz="0.0002828125"/>
    </inertial>
    <collision name="link_left_wheel_collision">
        <origin rpy="1.5707 0 0" xyz="0.0 0.0 0"/>
        <geometry>
            <cylinder length="0.015" radius="0.0325"/>
        </geometry>
    </collision>
    <visual name="link_left_wheel_visual">
        <origin rpy="1.5707 0 0" xyz="0.0 0.0 0.0"/>
        <geometry>
            <cylinder length="0.015" radius="0.0325"/>
        </geometry>

        <material name="gray"/>
    </visual>
</link>

<joint name="joint_left_wheel" type="continuous">
    <origin rpy="0 0 0" xyz="-0.05 0.0635 0"/>
    <child link="link_left_wheel"/>
    <parent link="link_chassis"/>
    <axis rpy="0 0 0" xyz="0 1 0"/>
    <limit effort="100" velocity="100"/>
    <joint_properties damping="1" friction="0.1"/>
</joint>

<!-- TRANSMISSION -->
<transmission name="left_wheel_trans">
    <type> transmission_interface/SimpleTransmission </type>
    <joint name="joint_left_wheel">
        <hardwareInterface>hardware_interface/EffortJointInterface </hardwareInterface>
    </joint>
    <actuator name="left_motor">
        <hardwareInterface>hardware_interface/EffortJointInterface </hardwareInterface>
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
</transmission>

<transmission name="right_wheel_trans">
    <type> transmission_interface/SimpleTransmission </type>
    <joint name="joint_right_wheel">
        <hardwareInterface>hardware_interface/EffortJointInterface </hardwareInterface>
    </joint>
    <actuator name="right_motor">
        <hardwareInterface>hardware_interface/EffortJointInterface </hardwareInterface>
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
</transmission>

<transmission name="sensor_trans">
    <type>transmission_interface/SimpleTransmission</type>
    <joint name="joint_sensor_link">
        <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
    </joint>
    <actuator name="sensor_motor">
        <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        <mechanicalReduction>1</mechanicalReduction>
    </actuator>
</transmission>

<!-- GAZEBO ROS CONTROL PLUGIN-->
<gazebo>
    <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
        <robotNameSpace>/ddmr</robotNameSpace>
    </plugin>
</gazebo>







            
...