关于机器人在Gazebo中不报错,且不能移动问题

项目场景:

关于机器人在Gazebo中不报错,且不能移动问题


问题描述

  1. 设置好Gazebo端控制器及其配置,并且在Moveit端设置好对应配置
  2. 使用launch文件打开Gazebo和Moveit,所有控制器启动成功
  3. 使用Moveit设置target,在rviz中可以看到机器人顺利plan,并且terminal log中显示execution succeed.
  4. 但是Gazebo中的机器人模型却不移动,并且Moveit端和Gazebo端都没有报错。

原因分析:

这种情况是urdf的模型参数问题。我的问题在于urdf中link标签下inertia中的数值太小,所以机器人几乎不移动。或许有及其微小的移动,但是很难察觉到,这也是Gazebo端不报错的原因。


解决方案:

将inertia中的ixx,iyy,izz调大,发送命令后机器人关节成功驱动。


更新

后面又遇到了这个问题,但这次我希望不改变关节的质量和惯性参数以达到真实仿真的目的。这次我重新分析了模型,根本原因在于模型质量过大,而urdf中的effort limit设置过于小。比如我自己的整个机器几十公斤,一个部件就有几公斤,但是此时我的effort limit设置还是1,肯定是无法把机器人带起来了,具体代码如下:

        <joint
            name="${leg_prefix}_yaw_joint"
     		type="revolute">
            <origin xyz="${yaw_xyz}" rpy="${yaw_rpy}"/>
            <parent link="base_link" />
            <child link="${leg_prefix}_yaw_link" />
            <axis xyz="0 0 -1" />
            <dynamics damping="0.0" friction="0.0"/>
            <limit lower="-0.3927" upper="0.3927" effort="1" velocity="1" /> //urdf中的关节limit设置过于小,输出力上限就是1
        </joint>

当我把limit的值设定大一些,机器人就能够动起来了,我觉得这才是比较好的解决方法。
另外,当机器人的质量过大时,我们还得调节控制器中的pid参数,才能够让机器人达到良好的运行效果。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值