关于gazobo加载之后机械臂疯狂抖动

本文分析了Dubot_Magician机械臂在Gazebo中出现抖动的原因,并给出了调整启动参数避免碰撞的具体解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用moveit配置完dubot_magician机械臂之后,我运行roslaunch my_magician3 gazebo.launch将机械臂加载到gazebo世界里面,发现机械臂出现了疯狂抖动:

搞了很久也没有搞明白,后来请教师兄,得知原因如下:
我刚开始的gazebo.launch文件中代码是这样写的

圈1的代码是将机械臂模型加载到世界坐标系中的相应位置(x,y,z):

我在这里将其设置为(0,0,0).

而重要的一点是:gazebo加载出来的模型具有碰撞属性,如果一个可动的部分与其他物体发生碰撞,那么它就会把它弹开。而发生碰撞,就是说两个物体重合了:二者坐标相近或者相等,造成体积有重合,进而发生碰撞。

看各个部分坐标,就要看urdf文件,那么我的urdf文件如下:

图没有截全,但上下两图连起来是连贯的。

我画圈的部分是magician_origin_joint1的坐标,可以看到它的父连杆是magician_origin,子连杆是magician_base,它相对于父连杆magician_origin的位置是(x,y,z)=(0,0,-0.139)就意味着在magician_origin下方0.139,而magician_origin和大地相连,坐标为(0,0,0),那么就意味着magician_origin_joint1和大地发生了碰撞,所以会“拼命”把它弹开(或许是互相弹开),所以会出现不断疯狂抖动的情况。

那么解决办法如下:
将gazebo.launch中的圈2中的z坐标改成大于0.139即可,因为gazebo会按照urdf的顺序来加载模型,那么先加载world,再加载origin,然后magician_origin_joint1。。。。一直加载到结尾,那么只要保证机械臂的所有部分都高于地面,不和地面发生碰撞即可。

题外话:
无论是launch文件还是urdf文件,它们都是xml文件,按照行的顺序执行,也可以看一看xml文件相关的。

### Gazebo 机械模型创建与使用教程 #### 准备工作 为了在Gazebo中成功创建并操作机械模型,需先完成一系列准备工作。确保已安装ROS (Robot Operating System),以及Gazebo模拟器,并配置好开发环境以便能够编译和运行ROS包。 #### 声明模型中的宏定义 通过URDF (Unified Robot Description Format) 文件来描述机器人的物理特性。对于复杂的多关节结构如六轴机械而言,可以利用Xacro——一种基于XML的预处理工具简化复杂重复部分的编写过程[^1]。 ```xml <?xml version="1.0"?> <robot name="six_dof_arm" xmlns:xacro="http://www.ros.org/wiki/xacro"> <!-- 宏定义 --> <xacro:macro name="joint_macro" params="parent child joint_type origin_xyz axis_xyz limit_lower limit_upper effort velocity"> <joint name="${child}_to_${parent}" type="${joint_type}"> <origin xyz="${origin_xyz}" rpy="0 0 0"/> <parent link="${parent}"/> <child link="${child}"/> <axis xyz="${axis_xyz}"/> <limit lower="${limit_lower}" upper="${limit_upper}" effort="${effort}" velocity="${velocity}"/> </joint> </xacro:macro> ... </robot> ``` #### 创建六轴机械模型 构建完整的机械链路,包括但不限于基座(base_link), 各个连杆(link_1, link_2,...) 和它们之间的连接关系(joint)。注意合理设定各部件的质量、惯量矩阵等属性以保证仿真的稳定性。 #### 加入Gazebo特定属性 为了让机械能够在Gazebo环境中正常运作,还需为其添加额外的信息标签,例如视觉外观材料(materials)、碰撞检测几何形状(collision geometries)等。这些可以通过扩展原有的URDF文件实现: ```xml <gazebo reference="base_link"> <material>Gazebo/Blue</material> </gazebo> ... <link name="link_n"> <visual> <geometry> <box size="0.1 0.1 0.6"/> </geometry> <material name="red"/> </visual> <collision> <geometry> <box size="0.1 0.1 0.6"/> </geometry> </collision> </link> ``` #### 显示机器人模型 一旦完成了上述步骤,则可通过Launch文件启动整个系统,在RViz可视化界面查看到所设计的机械形态。此时应指定固定的坐标系(fixed_frame),并通过加载`RobotModel`插件展示出详细的链接结构图[^2]。 #### 解决常见问题 当遇到机械Gazebo内出现异常行为时(如下坠、漂移或抖动),可能是由于关节驱动力(effort)设置不当造成的。适当调整此参数使之匹配对应的连杆质量(mass),可有效缓解此类现象的发生。另外也要检查是否存在潜在的初始位置冲突情况,即某些部位是否意外地嵌入到了其他实体内部[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值