此示例显示如何生成Android™应用程序,以便使用用于Android设备的Simulink®支持包从ROS可视化(RVIZ)工具上的Android设备可视化实时传感器数据。金宝app金宝app在该示例中,可视化诸如设备的方向,角速度和加速度的传感器数据。您的计算机配置为ROS Master,Android设备配置为ROS客户端。该设备通过机器人操作系统(ROS)接口连接到计算机。使用计算机上运行的RVIZ工具可视化来自设备的传感器数据。
硬件要求
Android设备
USB电缆
软件需求
在您的计算机中安装这些产品:下载188bet金宝搏
MATLAB®(R2018A或更高版本)
金宝appSimulink (R2018a或更高版本)
机器人系统工具箱™
MathWorks®提供的虚拟机(VM)
使用使用配置Android设备androidhwsetup
.
完成Android™设备入门的例子。
机器人操作系统(ROS)是一种通信接口,使机器人系统的不同部分能够发现,发送和接收数据。使用ToApp.块从Simulink支持包fo金宝appr An金宝appdroid设备,您可以与启用ROS的物理机器人或机器人模拟器(如凉亭)交换数据。有关更多信息,请参阅罗斯和概念在ROS网站上的部分。
1.完成下载虚拟机迈出了开始凉亭和模拟的火炬(ROS工具箱)的例子。
2.在下载的虚拟机上打开ROS旋律端子。
3.要启用ROS节点之间的通信,请在ROS旋律终端中执行此命令。
r
本节介绍如何从Simulink模型生成Android项目。金宝app
打开Simulin金宝appk模型
1.通过USB数据线将Android设备连接到您的电脑上。
2.安装金宝app用于An金宝appdroid设备的Simulink支持包.如果已安装支持包,请跳过此步骤。金宝app
3.在Simulin金宝appk编辑器中,打开IMUControl
模型。此模型是预配置的,以在Android设备上运行。该模型具有这些块:
配置Simulink模型金宝app
1.在Simulin金宝appk编辑器中,选择模拟>模型配置参数.
2.在“配置参数”对话框中,选择硬件实现.
3.设置硬件板参数到Android设备
.此选择会自动填充参数硬件板设置使用Android的默认值。
一种。来自团体列表目标硬件资源, 选择设备选项.
湾来自设备列表,选择您的Android设备。如果您的设备不在列表中,请单击刷新.
笔记:即使在单击后仍未列出您的设备刷新按钮,确保您已经启用USB调试你的设备上的选项。要启用USB调试, 进入androidhwsetup
在MATLAB命令窗口,并按照屏幕上的说明。
4.点击申请.点击好的关闭对话框。
在Android设备上金宝app部署Simulink模型
在模型工具栏上,单击Deploy to Hardware按钮。当Simulink在硬件上准备、下载和部署模型时,模型窗口的左下角显示状态。金宝app成功部署模型后,在MATLAB的build文件夹中生成一个项目文件MATLAB_build_folder / modelName_ert_rtw / modelName.例如,l:/ workspace / imucontrol / imucontrol_ert_rtw / imucontrol
.
1.按照如上所述的步骤将生成的项目导入Android Studio将项目导入Google Android Studio.
2.选择项目来自文件资源管理器上方的左上级下拉菜单的选项。
3.打开build.gradle.项目文件并通过更改图像中标记为标记的位置的代码来更新文件。
位置1- 添加此行buildscript.部分。
应用:“https://github.com/rosjava/android_core/raw/keinetic/buildscript.gradle”
位置2- 添加这些行allprojects部分。
应用插件:“ros-android”
后遗症{项目 - >
安卓 {
//排除一些重复的文件,并防止打包Android应用程序。
包选项{
排除“meta-inf / license.txt”排除“meta-inf / depon.txt”
}
}
}
位置3.- 将这些ROS依赖项添加在列出的下方依赖关系.
实现“org.ros.rosjava_core: rosjava:(0.3.2, 0.4)”
实现“org.ros.rosjava_messages:diagnostic_msgs:[1.12,1.13)”
实现“org.ros.rosjava_messages:sensor_msgs:[1.12,1.13)”
实现“org.ros.rosjava_messages:geometry_msgs:[1.12,1.13)”
实现“org.ros.rosjava_core:rosjava_geometry:0.3.6”
实现'org.ros.rosjava_messages:Visualization_msgs:[1.12,1.13)'
实现“org.ros.rosjava_bootstrap:message_generation:[0.3,0.4)”
实现'org.ros.rosjava_messages:std_msgs:0.5.11'
4.打开androidmanifest.xml.xml.文件位于SRC.>主要的项目的文件夹。通过更改标记在图像中标记的位置的代码来更新文件。
位置1-将此代码添加到应用标签。
xmlns:工具= " http://schemas.android.com/tools "工具:取代=“android:图标”
位置2- 更换行动和类别部分。
<类别android: name = " android.intent.category.DEFAULT " / >
位置3.- 添加活动和服务紧接在活动部分。
Android:主题=“@ style / mwapptheme”android:configchanges =“方向|屏幕化”>
<类别android:name =“android.intent.category.launcher”/>
意图过滤器>
> < /活动
工具:忽视= " ExportedService " >
<行动android: name = " org.ros.android.NodeMainExecutorService " / >
意图过滤器>
< /服务>
第4位-在列出的使用权限下面添加这些ROS使用权限。
< uses-permission android: name = " android.permission.WRITE_EXTERNAL_STORAGE " / >
< uses-permission android: name = " android.permission.ACCESS_WIFI_STATE " / >
< uses-permission android: name = " android.permission.SYSTEM_ALERT_WINDOW " / >
5.在MATLAB命令窗口中使用以下命令改变MATLAB当前文件夹:
cd (fullfile (matlabshare金宝appd.supportpkg.getSupportPackageRoot,'工具箱'那'目标'那'金宝app支持包装'那'安卓'那'androidexamples'那'罗斯蒙德罗德'那'imucontrol')))
一种。复制这些文件并粘贴在其中SRC.>主要的>java.>com.example.IMUControl项目的文件夹。在这里,IMUControl是您项目的名称。
rosmainactivity.java.
PublishNode.java
mainactivity.java.
mwnodemainexecutorListener.java.
MWNodeMainExecutorService.java
mwnodemainexecutorservicelistener.java.
湾拯救main.xml.文件在SRC.>主要的>res.>布局项目的文件夹。
C。拯救mwstyle.xml.文件在SRC.>主要的>res.>值项目的文件夹。
6.打开imucontrol.java.文件位于SRC.>主要的>java.>com.example.IMUControl项目的文件夹。在这里,IMUControl是您项目的名称。通过更改标记在图像中标记的位置的代码来更新文件。
位置1—添加ROS导入语句。
导入org.ros.node.nodeConfiguration;
导入org.ros.node.nodemainexecutor;
位置2- 代替AppCompactactivity.和ROSMainActivity.
位置3.- 添加publishnode.在定义之前的声明倒计时器方法。
PublishNode PN;
第4位- 添加Rospulish.和在里面方法定义之前的naMain方法。
公共void rospublish(double []数据)
{
if(pn!= null)
pn.publishData(数据);
}
受保护的void init(nodemainexecentor nodemainexecutor){
pn =新的publishnode(“/ android / imu”,“sensor_msgs / imu”);
nodeConfiguration nodeConfiguration = nodeConfiguration.newpublic(getroshostname());
nodeConfiguration.setmasteruri(getmasteruri());
nodemainexecutor.execute(pn,nodeConfiguration);
}
这Rospulish.方法接受来自的数据方向那加速度计, 和陀螺仪模块的Simulink模型。金宝app然后该方法将数据发布到RViz (ROS主)。发布数据的数据类型取决于ROS主题的消息类型。在本例中,发布主题为/android/imu,消息类型为sensor_msg/ imu。您可以根据应用程序的需求使用不同的主题名称和消息类型。这在里面创建ROS客户端后调用方法。在此功能中,您可以指定应用程序所需的发布者和订阅者的数量。在此示例中,只需要一个发布者。
在Android Studio中,单击现在同步android Studio编辑器的右上角的按钮。
同步项目时,您可能会看到以下错误消息。要解决此问题,请单击错误消息中显示的链接。
笔记编译工具的版本号可能会根据安装在计算机上的Android gradle插件的版本而有所不同。
笔记:在继续之前,请确保您的电脑和Android设备连接到同一个Wi-Fi网络。
1.在Android Studio工具栏中,选择跑步>运行'imucontrol'.Android Studio在设备上安装应用程序。应用程序开始在设备上运行,并为您提供将设备配置为ROS Master或ROS客户端的选项。
2.选择ROS客户选项,指定IP地址和端口号。本例中,IP地址为192.255.88.128
并且端口号是11311.
.
3.要将设备连接到计算机,请单击连接.设备开始向计算机发送传感器数据。该应用程序显示信号,表示在一定时间内来自设备的传感器数据。这y-轴表示传感器数据,而X-axis表示时间。
1.在计算机上安装的VM上打开ROS旋律端子并执行此命令。RVIZ工具已启动。
rviz.
2.要添加显示屏,请单击“添加下面的按钮显示侧边栏。
3.在“创建可视化弹出窗口”中,滚动到Imu在下面rviz_plugin_tutorial类别,然后单击好的.一个Imu显示添加到展示侧边栏。
4.在显示侧边栏,单击Imu展示。与之关联的属性列表Imu被列出。
5.从属性列表中,设置话题至/ Android / IMU
.在可视化窗口中,您现在将看到表示设备的位置和方向的箭头。移动设备并在箭头改变其位置时观察。
该图示器显示设备在向上方向上时可视化窗口中的箭头。