我是靠谱客的博主 斯文中心,最近开发中收集的这篇文章主要介绍ros和matlab中的机器人,ROS与Matlab语言入门教程-从Simulink连接到ROS使能的机器人,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

用户可以使用Simulink连接到一个物理机器人或者ROS使能的机器人仿真器,如Gazebo,用户将在本例程学习如下内容:

配置Simulink以连接到使用ROS的单独机器人仿真器;

发送速度命令到仿真机器人;

从仿真机器人接收位置信息。

下面是用户将在本例程中创建的模型,如图2.2.1所示。

417aac8b3cd59032972c267b6103e580.png

任务1-启动机器人仿真器

本任务中,用户将启动一个基于ROS的仿真差动机器人仿真器,该仿真器在如下的主题接收和发送消息:

在“/mobile_base/commands/velocity”主题上,接收“geometry_msgs/Twist”类型的速度指令消息。

以“nav_msgs/Odometry”类型的消息,发送里程计的信息到“/odom”主题。

有如下两种方式设置基于ROS的仿真器:

方式一:在MATLAB中的仿真器

该方式使用一个简单的基于MATLAB的仿真器,绘制机器人的当前位置到一个单独的图像窗口。

在MATLAB命令行输入“rosinit”指令,这将创建一个本地的ROS主控节点,网络地址(URI)为http://localhost:11311。

输入“ExampleHelperRobotSimulator”启动机器人仿真器,打开一个图像窗口如图2.2.2所示。

57da27663cebf0e102032d07339d60b7.png

方式二:Gazebo仿真器

该方式使用一个“Gazebo”中的仿真器“TurtleBot”。

参阅“开始使用Gazebo和仿真TurtleBot”获取有关设置Gazebo环境的说明。

在虚拟机上的Ubuntu桌面上,点击“Gazebo Empty”图标。

注意ROS主控节点的网络地址(URI)类似:http://192.168.84.128:11311。

用户可以通过在Ubuntu的终端窗口输入“rostopic list”,验证Gazebo的环境设置是否正确,应该可以看到话题列表包含了“/mobile_base/commands/velocity”话题和“/odom”话题。

任务2-配置Simulink以连接到ROS网络

(1)从模型菜单,选择“Tools > Robot Operating System (ROS) > Configure Network Addresses”,如图2.2.3所示。

229724ddad2db0c49e5d467f78a688e8.png

(2)在“ROS Master”区域,下拉“Network Address”的内容并选择“Custom”。

如果用户选择方式一(MATLAB 仿真器),确保“Hostname/IP Address”设置为“localhost”,“Port”设置为“11311”。

如果用户选择方式二(Gazebo 仿真器),指定Gazebo中ROS主控节点的IP地址和端口号码,例如http://192.168.60.165:11311,那么在“Hostname/IP address”中输入“192.168.60.165”,在“Port”中输入“11311”,如图2.2.4所示。

eddfabb27e79d5947c466bd582703d32.png

任务3-发送速度指令到机器人

本任务中,用户将会创建一个发布器用于发送控制命令(线性和角度速度)到仿真器。用户可以使用“Slider Gain”块使得这些速度是可调的。ROS使用右手坐标系统,那么X代表前方,Y代表左侧而Z代表上方。控制指令使用“geometry_msgs/Twist”消息传输,此处“Linear.X”表示前向线性速度(m/s),“Angular.Z”表示绕Z轴的角速度(rad/s)。

打开一个新的Simulink模型。

从库浏览器的“Robotics System Toolbox”选项卡,拖放一个“Publisher”会到模型中并双击。设置“Topic source”域到“Select From ROS network”,点击“Topic”域旁边的“Select >>”,选择“/mobile_base/commands/velocity”并点击“OK”,注意,消息类型“geometry_msgs/Twist”是自动设定的。

从库浏览器的“Robotics System Toolbox”选显卡,拖放一个“Blank Message”块到模型中并双击。点击“Message type”旁边的“Select >>”,选择“geometry_msgs/Twist”并点击“OK”。

从库浏览器的“Simulink > Signal Routing”选项卡,拖放一个“Bus Assignment”块到模型中。

按如下方式连接“Blank Message”,“ Bus Assignment”和“Publish”:点击“Simulation > Update Diagram”确认总线消息是否正确的传播。用户可能得到一个错误信息“Selected signal 'signal1' in the Bus Assignment block 'untitled/Bus Assignment' cannot be found in the input bus signal”。该错误是预料中的事,因为将要在下一步得到解决。

a48f563344da778b7afd8270330968a7.png

双击“Bus Assignment”块,在右侧列表中选择“??? signal1”并点击“Remove”。在左侧列表,展开“Linear”和“Angular”属性,选择“Linear > X”和“Angular > Z”并点击“Select>>”,点击“OK”关闭块。

07bd1374726883fc8bf52473b8342529.png

增加一个“Constant”块、一个“Gain”块和两个“Slider Gain”块,将它们连接起来,如图2.2.7所示,并设“Gain”的值为-1(双击“Gain”)。

558d5451d7213a11b4d79e76d61ee590.png

设置“Slider Gain”块的限制值和当前值,如图2.2.8所示。

93b063eed8d9312d739c0bbf424edb54.png

任务4-从机器人接收定位信息

本任务中,用户将会创建一个订阅器接收被发送到“/odom”话题的消息,还会提取机器人的(X,Y)坐标并绘制机器人的路径。

从库浏览器的“Robotics System Toolbox”选项卡,拖放一个“Subscribe”块到模型中并双击。设置“Topic source”域到“Select From ROS network”,点击“Topic”域旁边的“Select>>”并选择话题为“/odom”并点击OK。注意,消息类型“nav_msgs/Odometry”是自动设定的。

从库浏览器的“Simulink > Signal Routing”选项卡,拖放一个“Bus Selector”块到模型中,连接“Subscribe”块的输出端口到“Bus Selector”块的输入端口,点击“Simulation > Update Diagram”确认总线的信息是否正确传播。

双击“Bus Selector”块,在右侧的列表选择“??? signal1”和“??? signal2”并点击“Remeve”。在左侧的列表,展开“Pose > Pose > Position”并选择“X”和“Y”,点击“Select>>”并点击“OK”。

6dcb6c81400d4e7af5b61ad458c5beed.png

从库浏览器的“Simulink > Sinks”选项卡,拖放一个“XY Graph”块到模型中。将“Bus Selector”的输出端口连接到“XY Graph”的输入端口。

整个模型应看起来如如2.2.10所示。方便起见,包含了一个预先配置的模型。

038cb50ed001c9ead47ab2da7f08822a.png

任务5-配置和运行模型

本任务中,用户将会配置并运行模型。

点击“Simulation > Model Configuration Parameters”,在“Solver”面板,设置“Type”为“Fixed-step”,“Fixed-step size”的值为0.01。

设置仿真停止时间为“inf”。

点击“Play”按钮开始仿真,一个XY图将会出现。在仿真器和XY图,用户应该能够看到机器人绕圆周运动。

在仿真运行的过程中,改变“Slider Gain”块的值以控制机器人,如果机器人跑出XY图的范围,双击“XY Graph”块并改变X和Y轴的限度值(仿真运行期间还可以更改)。

点击“Stop”按钮,停止仿真。

最后

以上就是斯文中心为你收集整理的ros和matlab中的机器人,ROS与Matlab语言入门教程-从Simulink连接到ROS使能的机器人的全部内容,希望文章能够帮你解决ros和matlab中的机器人,ROS与Matlab语言入门教程-从Simulink连接到ROS使能的机器人所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部