huchunxu / ros_exploring

《ROS机器人开发实践》源码
https://www.guyuehome.com
974 stars 563 forks source link

机器人模型左右轮的疑问 #26

Closed pineappleKID closed 4 years ago

pineappleKID commented 4 years ago

胡老师您好 在 https://github.com/huchunxu/ros_exploring/blob/master/robot_mrobot/mrobot_description/urdf/mrobot_body.urdf.xacro

        <joint name="base_left_motor_joint" type="fixed">
            <origin xyz="${motor_x} ${motor_y} 0" rpy="0 0 0" />        
            <parent link="base_link"/>
            <child link="left_motor" />
        </joint>

        <joint name="left_wheel_joint" type="continuous">
            <origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
            <parent link="left_motor"/>
            <child link="left_wheel_link"/>
            <axis xyz="0 1 0"/>
        </joint>

        <joint name="base_right_motor_joint" type="fixed">
            <origin xyz="${motor_x} -${motor_y} 0" rpy="0 0 0" />        
            <parent link="base_link"/>
            <child link="right_motor" />
        </joint>

        <joint name="right_wheel_joint" type="continuous">
            <origin xyz="0 -${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
            <parent link="right_motor"/>
            <child link="right_wheel_link"/>
            <axis xyz="0 1 0"/>
        </joint>

motor_x 是负的, motor_y, motor_lengthwheel_length 都是正的 左轮joint的y是正的,右轮joint的y是负的 这也符合+x向前,+y向左,+z向上的定义 根据 gazebo 教程 http://gazebosim.org/tutorials?tut=guided_b3 ,确实是这样定义的

但是在 https://github.com/huchunxu/ros_exploring/blob/master/robot_mrobot/mrobot_gazebo/urdf/mrobot_body.urdf.xacro

        <joint name="base_to_wheel_${lr}_joint" type="continuous">
            <parent link="base_link"/>
            <child link="wheel_${lr}_link"/>
            <origin xyz="${motor_x} ${translateY * base_link_radius} 0" rpy="0 0 0" /> 
            <axis xyz="0 1 0" rpy="0  0" />
        </joint>

        <wheel lr="right"  translateY="1" />
        <wheel lr="left"  translateY="-1" />

motor_x 是负的, base_link_radius 是正的 左轮joint的 y 是负的,右轮joint的 y 是正的,这与之前看到的定义是冲突的

请问这是以下哪种情况

如果不是打字错误,能否解答一下我的疑惑,感谢!

另外我跑过6.7.3的mbot_teleop,源码的状况符合真实指令的要求,自己改了translateY的正负性之后反而反了。

huchunxu commented 4 years ago

这里是因为在kinetic和melodic中的差速插件方向是相反的,所以和使用的ROS版本有关系

huchunxu@ps-micro.com

发件人: pineappleKID 发送时间: 2020-09-25 11:03 收件人: huchunxu/ros_exploring 抄送: Subscribed 主题: [huchunxu/ros_exploring] 机器人模型左右轮的疑问 (#26) 胡老师您好 在 https://github.com/huchunxu/ros_exploring/blob/master/robot_mrobot/mrobot_description/urdf/mrobot_body.urdf.xacro

    <joint name="left_wheel_joint" type="continuous">
        <origin xyz="0 ${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
        <parent link="left_motor"/>
        <child link="left_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>
    <joint name="base_right_motor_joint" type="fixed">
        <origin xyz="${motor_x} -${motor_y} 0" rpy="0 0 0" />        
        <parent link="base_link"/>
        <child link="right_motor" />
    </joint>
    <joint name="right_wheel_joint" type="continuous">
        <origin xyz="0 -${(motor_length+wheel_length)/2} 0" rpy="0 0 0"/>
        <parent link="right_motor"/>
        <child link="right_wheel_link"/>
        <axis xyz="0 1 0"/>
    </joint>

motor_x 是负的, motor_y, motor_length 和 wheel_length 都是正的 左轮joint的y是正的,右轮joint的y是负的 这也符合+x向前,+y向左,+z向上的定义 根据 gazebo 教程 http://gazebosim.org/tutorials?tut=guided_b3 ,确实是这样定义的 但是在 https://github.com/huchunxu/ros_exploring/blob/master/robot_mrobot/mrobot_gazebo/urdf/mrobot_body.urdf.xacro

    <wheel lr="right"  translateY="1" />
    <wheel lr="left"  translateY="-1" />

motor_x 是负的, base_link_radius 是正的 左轮joint的 y 是负的,右轮joint的 y 是正的,这与之前看到的定义是冲突的 请问这是以下哪种情况 我的理解有问题,就应该是那样的 打字错误 在某处做了配套的对应改动,使得它仍然是对的,我没意识到 如果不是打字错误,能否解答一下我的疑惑,感谢! 另外我跑过6.7.3的mbot_teleop,源码的状况符合真实指令的要求,自己改了translateY的正负性之后反而反了。 — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

pineappleKID commented 4 years ago

感谢胡老师的回答