主要内容

为TurtleBot创建UI

这个例子展示了如何创建一个UI收集传感器数据和控制TurtleBot®机器人。你可以使用UI和显示测程法和激光扫描数据阅读和teleoperate机器人速度通过发送命令。

对于这个示例,指定所有的代码和相关的回调函数在一个MATLAB®文件函数。

设置界面及其组件

创建一个函数,设置UI控制机器人。指定的尺寸按钮,每个按钮的回调。

指定函数头的UI。

函数turtlebot_UI

创建UI和隐藏在构建它。

图(f =“可见”,“关闭”,“位置”[50900570]);

为不同的按钮添加组件和轴用于图数据。指定是很重要的“回调”名称-值对正确的处理函数。这些函数指定。

hforward = uicontrol (“风格”,“按钮”,“字符串”,“前进”,“位置”(770440、70、25),“回调”,@forwardCB);hleft = uicontrol (“风格”,“按钮”,“字符串”,“左”,“位置”(730400、70、25),“回调”,@leftCB);hright = uicontrol (“风格”,“按钮”,“字符串”,“对”,“位置”(815400、70、25),“回调”,@rightCB);hback = uicontrol (“风格”,“按钮”,“字符串”,“回来”,“位置”(770360、70、25),“回调”,@backCB);hgetOdom = uicontrol (“风格”,“按钮”,“字符串”,“让奥多姆”,“位置”(730320、70、25),“回调”,@getOdomCB);hreset = uicontrol (“风格”,“按钮”,“字符串”,“重置”,“位置”(815320、70、25),“回调”,@resetCB);hgetScan = uicontrol (“风格”,“按钮”,“字符串”,“扫描”,“位置”(730280、70、25),“回调”,@getScanCB);hclear = uicontrol (“风格”,“按钮”,“字符串”,“清楚”,“位置”(815280、70、25),“回调”,@clearCB);哈=轴(“单位”,“像素”,“位置”[60600400]);

显示UI添加后通过设置的所有组件可见“上”

%使UI可见f。可见=“上”;

连接到机器人

连接到你的TurtleBot机器人利用其特定的IP地址。你的模拟或真实TurtleBot必须在相同的ROS网络计算机MATLAB运行。

ipaddress =“192.168.192.130”;%你的机器人的IP地址tbot = turtlebot (ipaddress, 11311);tbot.Velocity。TopicName =' / cmd_vel ';

初始化变量所需的传感器数据。重置TurtleBot的测程法。

odomList = [];scanPts = [];resetOdometry (tbot);

为UI按钮指定回调函数

每个UI按钮有一个回调函数,激活当按钮被按下。你在你指定这些功能turtlebot_UI函数文件。

创建方向按钮回调控制机器人。

函数eventdata forwardCB(源)setVelocity (tbot, 0.25, 0)结束函数eventdata leftCB(源)setVelocity (tbot 0 0.25)结束函数eventdata rightCB(源)setVelocity (tbot 0 -0.25)结束函数eventdata backCB(源)setVelocity (tbot, -0.25, 0)结束

的输入setVelocity接口的对象,turtlebot,线速度和角速度。

创建回调函数和清晰的测程法和激光扫描数据。plotOdomplotScan是便利的函数绘制测程法和激光扫描当前轴。

函数getOdomCB plotOdom(来源、eventdata)结束函数eventdata resetCB(源)resetOdometry (tbot);odomList = [];plotOdom结束函数eventdata getScanCB(源)plotOdomplotScan举行结束函数eventdata clearCB(源)scanPts = [];plotOdom结束

指定plotOdomplotScan功能,这情节传感器数据对当前轴在UI中。

函数plotOdom%得到当前并保存测程法和情节奥多姆= getOdometry (tbot);odomList = [odomList;odom.Position (1) odom.Position (2)];情节(odomList (: 1) odomList (:, 2),“b”)举行箭袋(odom.Position (1) odom.Position (2),cos (odom.Orientation(1)),罪(odom.Orientation (1)),“r”,“线宽”,2)xlim ([5,5]) ylim([5,5])网格结束函数plotScan%情节激光扫描数据的当前测程法[扫描,scanMsg] = getLaserScan (tbot);奥多姆= getOdometry (tbot);车= readCartesian (scanMsg);scanPts =[购物车(:1)+ odom.Position(1)车(:,2)+ odom.Position (2)];偏航= odom.Orientation (1);R = [cos(偏航)sin(偏航);罪(偏航)因为(偏航)];scanPts = (R * scanPts ') ';情节(scanPts (: 1) scanPts (:, 2),“k”)xlim ([5,5]) ylim([5,5])网格结束

结束turtlebot_UI函数。确保所有的示例代码都是在这之间结束和函数头。

结束

运行界面和控制机器人

调用turtlebot_UI运行功能。UI创建和连接到机器人。设置您的机器人在运行界面之前。

turtlebot_UI

使用按钮来移动机器人。点击得到奥多姆绘制一个新的测程法(蓝色)或点得到扫描绘制当前激光扫描数据(黑)。

gui_image.png

另请参阅

|||

相关的话题