ROS+GAZEBO遇到的问题


本章博客主要是记录用ROS+GAZEBO仿真时遇到的问题s


1. 用ROS topic 给GAZEBO中的机器人驱动关节发送控制命令,命令波形突然归零,出现多个毛刺

原因:驱动关节在控制命令下,达到关节限位,插件强制将发送给驱动关节的控制命令归零。
pluginname="gazebo_ros_control"filename=“libgazebo_ros_control.so”
解决办法:仔细对比drake生成的控制曲线和gazebo中的关节位置曲线和限位,修正关节限位或者控制命令

2. gazebo步行双足机器人简易模型不能按照控制命令相应动作,比如倒着走、向哪边倾倒向哪边走等

原因:
(1). Drake的初始状态和Gazebo中机器人的初始状态不一样,比如gazebo中双足立于地面,模拟了从双足站立相到单足摆动相的过程,而Drake中的规划算法的初始状态不一样,Drake中直接就是单足摆动相,其生成的关节控制输入是针对当前Drake Visualizer中的动作,初始的关节位置和Gazebo中不同,所以轨迹不能完全契合;
(2). 且目前用的简易的步行模型不能在Gazebo中天然稳定站立,所以需要修改才能稳定站立,一旦修改,gazebo中的模型和Drake中使用的模型又不一致,这将引入新的差异;
(3). 到这走也是因为向那个方向倾倒,归根结底还是因为模型不准确、初始状态不一致、步态不完全,因为目前仅仅是一个(确切的说是一条腿)步态,且不完整。
解决办法:
(1). 确保Drake中所使用模型和Gazebo中模型一致,即机器人初始的状态一致,机器人在Drake中初始状态也为双足站立相,或许在Drake中生成连续步态,可以粗暴的解决这个初始化问题;
(2). 先在gazebo中建立稳定站立的机器人模型。通过工具去读初始关节位置,然后在drake中设置为同样的位置,利用优化约束。
根本思路:将gazebo中的模型和drake中的模型保持一致,且务必熟悉Drake中的各项设置,生成连续步态

3.机器人在gazebo中,突然乱飞,飞走

原因:一般是因为碰撞或者关节超限引起的ODE数值不稳定
解决办法:
(1). 首先判断是否存在正常运行的阶段,如果有,则仔细观察看是哪一个link/joint最先颤抖,则这个link/joint很可能存在碰撞侵入或者关节超限,修改关节限位或者删除Collision 属性(penetration),若不存在正常不乱飞的阶段,检查初始化设定,是不是声明了collision 属性但是初始化又过于在于地面之下(因为一点点在地面之下,gazebo可以处理);
(2). 设置Gazebo中的pyhysics中的iterations属性到跟大的数值。
目前乱飞不是很严重的情况下,设置到200,初始是50。

reference

https://answers.ros.org/question/12695/gazebo-freaks-when-joints-hit-limits/

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值