基于Matlab+Ros/Gazebo联合仿真:9自由度串并联机器人冗余运动(1)

本文介绍了Matlab与ROS的特点,阐述利用Matlab的robotics工具箱结合ROS实现机器人算法设计与仿真,可通过Matlab启动rosmaster等操作。还讲述了Ubuntu 16.04下Matlab+Ros/Gazebo联合仿真步骤,最后指出Matlab话题发布脚本编程的注意事项。

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

  1. Matlab与Ros简介

众所周知:Matlab拥有强大的数据处理、可视化绘图能力以及众多成熟的算法函数,非常适合算法开发。而ROS系统,则是一种新的标准化机器人系统软件框架。通过ROS,你可以使用大量的示例代码和开源程序轻松地完成机器人编程和控制任务。

那么:

如何利用matlat和ROS不同的优势,协同进行机器人设计与仿真?

如何用matlat程序通过ROS直接控制物理世界中的机器人?

以下内容摘自:古月居博客
ROS探索总结(三十五)——Matlab中的ROS

(相关参考:ROS与Matlab系列:一个简单的运动控制

答案是利用Matlab提供的tool box(工具箱)。Matlab有一个吊炸天的工具箱,几乎和哆啦A梦的口袋差不多,可以提供丰富而强大的扩展功能,其中有一个robotics工具箱,提供了一些机器人需要用到的工具,当然也包括ROS相关的工具。

在Matlab中的robotics system toolbox提供了ROS的大部分功能,我们可以通过Matlab启动rosmaster,创建ROS节点,发布ROS消息/服务,查看ROS话题数据,控制ROS机器人等,更重要的是可以结合Matlab强大的功能,实现机器人算法设计和实现,直接接入ROS系统,结合gazebo或者V-REP完成仿真。
在这里插入图片描述

上边这张框图就是ROS-MATLAB和机器人系统的通信框架,可以看到,Matlab拥有强大而丰富的算法功能包(视觉处理、控制系统、信号处理等等),通过ROS-MATLAB可以获取机器人的数据,在处理之后再将控制指令发送到机器人。简而言之,ROS-MATLAB让Matlab成为了机器人强大的计算后台。

需要注意的是,ROS-MATLAB在Matlab2013之后的版本才有,而且需要Matlab安装robotics system toolbox,可以登录官网链接下载安装。

Matlab中的robotics system toolbox到底可以实现哪些ROS的功能?我们还是打开Matlab看一下。

在Matlab的命令窗口中,输入“help robotics.ros”,如果工具箱没有问题的话,可以看到如下命令列表,每个命令后边都进行了相应功能的说明:
在这里插入图片描述

我们首先通过一个简单的例子对ROS-MATLAB有个大致的概念。

运行例程的第一步是什么?当然是把roscore跑起来,在ubuntu里我们使用的是roscore命令,而在Matlab里边,我们需要使用rosinit命令。
在这里插入图片描述
运行成功会有上图的提示。

然后我们来运行例程 exampleHelperROSCreateSampleNetwork,输入命令后稍等一下例程就会启动,使用rosnode、rostopic命令我们就可以查看节点和消息。

在这里插入图片描述
是不是有一种在ubuntu下的穿越感,仿佛是一个运行在windows下的虚拟机一般。

2.Ubuntu16.04 下的Matlab+Ros/Gazebo联合仿真
关于 Matlab与Ros的通信,网络上常见的教程是,在两个不同的操作系统平台下Matlab(Windows)+Ros(Ubuntu)的通信,这个过程需要配置两台计算机的IP地址,如下所示:
( 同样摘自:古月居博客
ROS探索总结(三十五)——Matlab中的ROS )
在这里插入图片描述
但是,如果只是做简单的运动仿真的话,无需像上述这么麻烦,需要两台计算机并进行复杂的配置操作,因为在Ubuntu下已有Matlab软件可以使用,这样就无需进行IP配置的操作,如本人所做的9自由度串并联机器人冗余运动的仿真。
在这里插入图片描述
仿真的步骤如下:

1)在MATLAB软件中写好运动仿真计算程序和话题发布程序

(机器人运动学计算脚本)
在这里插入图片描述
(Ros话题发布脚本)
在这里插入图片描述

2)用URDF文件建立在Gazebo中仿真的机器人模型和相关的launch启动文件
在这里插入图片描述

3)通过启动launch文件运行Ros core和Gazebo,加载进机器人模型
在这里插入图片描述

在这里插入图片描述

4)再在Matlab的命令行窗口输入以下命令,建立Matlab与Ros的通信连接

rosinit

在这里插入图片描述

  • 最后运行Matlab下的Ros话题发布脚本,将每一时刻的机器人关节运动量发布到对应的关节控制器中
    在这里插入图片描述

3 存在问题:Matlab 话题发布脚本编程注意事项

在Matlab的Robotics System Toolbox下进行话题发布的命令为rospublisher
在这里插入图片描述
个人之前发布话题的方法时将话题发布写成一个Matlab的函数脚本文件(function.m),然后在程序的循环体语句中调用它,结果出现两种情况:

  • Matlab报错奔溃的现象在这里插入图片描述

在终端中查看话题发布的消息数据的频率很低(3s左右),和话题脚本程序运行全程中Gazebo中模型无明显运动现象。

在这里插入图片描述
分析原因在于:编程逻辑错误,导致程序运行低效

具体原因为:用Matlab中Robotics System Toolbox下进行话题发布的命令rospublisher来初始声明话题名称和消息类型时,将其放入一个函数脚本文件中,然后在话题发布脚本程序中的循环体中调用该函数脚本,导致每循环一次都要进行一次话题的初始化声明,这将极大的耗费时间,从而导致话题的发布频率极低

在这里插入图片描述
在这里插入图片描述

正确的做法是:将rospublisher来初始声明话题名称和消息类型的程序语句放置到话题发布脚本程序的循环体之前,让其只执行一次,即可。在这里插入图片描述

MATLAB(Matrix Laboratory)是一款由美国MathWorks公司开发的高性能商业数学软件,它集成了高级技术计算语言、交互式环境以及丰富的工具箱,被广泛应用于工程计算、数据分析、算法开发和科学可视化等领域。MATLAB的核心功能包括: 1. **数值计算**:支持大规模矩阵和数组运算,对线性代数、微积分、概率统计等数学问题提供高效解决方案。 2. **编程环境**:提供了易于使用的脚本编写函数定义界面,支持面向对象编程,并可通过M文件实现模块化程序设计。 3. **数据可视化**:内置强大的二维和三维图形绘制功能,能够创建高质量的数据图表,便于数据分析和结果展示。 4. **工具箱扩展**:MathWorks为MATLAB提供了众多领域的专业工具箱,如信号处理、图像处理、通信系统、控制系统、机器学习、深度学习、量化金融、优化算法等,极大地扩展了MATLAB的应用范围。 5. **Simulink仿真**:作为MATLAB的重要组成部分,Simulink是一个动态系统建模、仿真和基于模型的设计环境,特别适用于多域物理系统和嵌入式系统的模拟和实时测试。 6. **集成能力**:MATLAB可以其他编程语言(如C、C++、Java、Python等)及外部应用程序进行数据交换和联合开发,也可以调用硬件接口进行实时实验和控制。 7. **交互式工作空间**:用户可以在命令窗口中直接输入表达式并立即得到结果,这种交互式的特性使得快速原型设计和调试变得极为便利。 总之,MATLAB是科学家、工程师和技术人员进行科研、教育和工业应用不可或缺的强大工具之一,尤其在需要大量数值计算和复杂系统建模的场景下发挥着重要作用。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值