Simulink 和 Gazebo联合仿真控制机械臂【Matlab R2022a】

逛 B 站,偶然发现一个 up 主上传的视频,可以实现 Simulink 中搭建机器人的控制器设计,对运行在虚拟机中 Gazebo 中的机械臂进行控制,链接:三关节机械臂Gazebo-Simulink联合仿真,这让我很感兴趣,Matlab 中大量的轮子对控制器、规划器的设计非常有帮助,并且,能够大大提升算法开发和调试的效率,因此,决定要了解一下,毕竟最近做的控制器设计都是在 Matlab 中进行的,要是有 Gazebo 这样强大的物理仿真软件来验证运行效果岂不是如虎添翼!

顺藤摸瓜,发现 Matlab 官方提供了相关 demo ,链接: Control Manipulator Robot with Co-Simulation in Simulink and Gazebo。该 demo 旨在通过 Simulink 和 Gazebo 联合仿真实现对机械臂的控制。具体是指:针对 UR10 机械臂,使用逆运动学实现笛卡尔空间位姿到关节空间关节角的解算,然后应用具有动态补偿前馈项的关节空间 PD 控制器来控制机械臂运动。

然而我们知道控制是实时的,其中包含控制指令的发送,机器人状态的反馈。为了实现上述要求,Matlab 官方为用户提供了以下几个核心模块:

  • Gazebo Pacer:仿真时间同步模块;
  • Gazebo Read:根据设定的 Topic 和 Message type 从 Gazebo 接收相应的 Message;
  • Gazebo Apply Command:向 Gazebo simulation 发送指令;
  • gzlink、gzjoint、gzworld:函数作为机器人模型参数查询接口。

Step 1、Set Up Gazebo with Robot Model and Plugin

在此之前,有一个教程是为了测试基本的 Matlab 和 Gazebo 之间的通信:Perform Co-Simulation between Simulink and Gazebo

这里,我没用官方提供的虚拟机,采用的自己的 Linux 操作系统,为了实现通信,需要在 Linux 中手动配置相关插件,这个按照步骤来就行了。

我将在 Matlab 中生成的 GazeboPlugin.zip 放到了 /usr/src路径下,然后编译。
在这里插入图片描述
这里应该注意 Gazebo 的环境变量设置问题,不然每次开 Gazebo 加载 world 都得 export,可以把这个编译好的插件路径写入 bashrc 。

最后可以通过在 Matlab 中接收并观察到 Gazebo 中的传感器信息来验证已经建立了 Matlab 和 Gazebo 之间的通信。

下面 demo 是配置 UR 机械臂仿真环境的教程:Configure Gazebo and Simulink for Co-simulation of a Manipulator Robot
通信建立起来之后,下一步就是配置 UR10 机械臂的 Gazebo world 文件。按照教程,把 UR 机械臂克隆到自己建立的工作空间之后,用 roslaunch ur_gazebo ur10.launch 打开,然后使用 Gazebo save world as 将当前世界保存为Ur10BasicWithPlugin.world,这里边有个问题,需要将ros_control 这个插件注释掉,不然用 Gazebo 打开这个 world 的时候会报错。

在这里插入图片描述

注释之后,就能正常打开了:
在这里插入图片描述接下来,运行 Simulink,配置好 IP 地址,建立通信之后,运行提供的 Simulink 仿真,就能够实现对机械臂的笛卡尔空间位置控制了,至此,环境配置完毕。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值