在RViz中可视化Android设备的传感器数据
这个例子展示了如何使用Simulink®Android设备支持包在ROS可视化(RViz)工具上生成一个Android™应用程序来可视化来自Android设备的实时传感器数据。金宝app金宝app在这个例子中,传感器数据,如设备的方向,角速度和加速度是可视化的。您的计算机已配置为ROS master, Android设备已配置为ROS client。设备通过ROS (Robot Operating System)接口与计算机连接。来自设备的传感器数据使用运行在计算机上的RViz工具进行可视化。
需求
硬件需求
Android设备
USB电缆
软件需求
在你的电脑中安装以下产品:下载188bet金宝搏
MATLAB®(R2018a或更高版本)
金宝appSimulink (R2018a或更高版本)
机器人系统工具箱™
MathWorks®提供的虚拟机(VM)
的必备条件
通过使用配置Android设备
androidhwsetup
.完成Android设备入门的例子。
简介
机器人操作系统(ROS)是一个通信接口,使机器人系统的不同部分能够发现、发送和接收数据。使用ToAppblock从Simulink支金宝app持包为A金宝appndroid设备,您可以与ros支持的物理机器人或机器人模拟器,如Gazebo交换数据。有关更多信息,请参见ROS和概念的网页。
第一步:在电脑上运行凉亭模拟器
1.完成下载虚拟机从开始凉亭和模拟乌龟机器人(ROS工具箱)的例子。
2.在下载的虚拟机上打开ROS Melodic Terminal。
3.在ROS Melodic Terminal中执行该命令,可以使ROS节点之间通信。
roscore
步骤2:使用Simulink生成Android项目金宝app
本节解释如何从Simulink模型生成Android项目。金宝app
打开Simulin金宝appk模型
1.用USB线将Android设备连接到计算机。
2.安装金宝appAndr金宝appoid设备的Simulink支持包.如果已安装支持包,请跳过此步骤。金宝app
3.在Simuli金宝appnk编辑器中,打开IMUControl
模型。这个模型被预先配置为在Android设备上运行。模型有这些块:
配置Simulink模型金宝app
1.在Simuli金宝appnk编辑器中,选择模拟>型号配置参数.
2.在“配置参数”对话框中,选择硬件实现.
3.设置硬件板参数Android设备
.属性中的参数将自动填充硬件板设置Android的默认值。
a.从组列表下目标硬件资源中,选择设备的选择.
b.从设备列表,选择你的Android设备。如果您的设备不在列表中,请单击刷新.
请注意:如果您的设备在单击后仍未列出刷新按钮,确保已启用USB调试您的设备上的选项。要启用USB调试,输入androidhwsetup
在MATLAB命令窗口,并按照屏幕上的指示。
4.点击应用.点击好吧关闭对话框。
在Androi金宝appd设备上部署Simulink模型
在硬件选项卡中的Simuli金宝appnk模型模式部分中,选择在船上跑然后点击构建、部署和启动.模型窗口的左下角显示了Simulink在硬件上准备、下载和部署模型时的状态。金宝app成功部署模型后,在MATLAB build文件夹中生成一个项目文件MATLAB_build_folder / modelName_ert_rtw / modelName.例如,李:/ workspace / IMUControl / IMUControl_ert_rtw / IMUControl
.
步骤3:在Android Studio中导入项目并添加ROS依赖项
1.按照中所述的步骤将生成的项目导入到Android Studio将项目导入谷歌Android Studio.
2.选择项目从文件资源管理器上方的左上角下拉菜单中选择。
3.打开build.gradle文件,并通过更改图像中标记的位置的代码来更新文件。
位置1-将这一行添加到buildscript部分。
申请邮箱:“https://github.com/rosjava/android_core/raw/kinetic/buildscript.gradle”
位置2-将这些行添加到allprojects部分。
应用插件:'ros-android'
afterEvaluate{项目->
android {
//排除一些在依赖关系中重复的文件,防止打包Android应用程序。
packagingOptions {
排除“META-INF/LICENSE.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文件位于src>主要项目的文件夹。通过更改图像中标记位置的代码来更新文件。
位置1-将此代码添加在应用程序标签。
xmlns:工具= " http://schemas.android.com/tools "工具:取代=“android:图标”
位置2—更换行动而且类别部分。
<行动android: name = " com.android.ros金宝appupport.START_MODEL " / >
位置3-添加活动而且服务之后的部分活动部分。
android:主题= " @style / MWAppTheme " android: configChanges =“拉取向|”>
<意图过滤器>
<行动android: name = " android.intent.action.MAIN " / >
<类别android: name = " android.intent.category.LAUNCHER " / >
< /意图过滤器>
> < /活动
<服务android: name = "。MWNodeMainExecutorService”
工具:忽视= " ExportedService " >
<意图过滤器>
<行动android: name = " org.ros.android.NodeMainExecutorService " / >
< /意图过滤器>
< /服务>
位置4—将这些ROS users -permissions添加到列出的users -permission下面。
< uses-permission android: name = " android.permission.FOREGROUND_SERVICE " / >
< uses-permission android: name = " android.permission.WRITE_EXTERNAL_STORAGE " / >
< uses-permission android: name = " android.permission.ACCESS_WIFI_STATE " / >
< uses-permission android: name = " android.permission.CHANGE_WIFI_STATE " / >
< uses-permission android: name = " android.permission.WAKE_LOCK " / >
< uses-permission android: name = " android.permission.SYSTEM_ALERT_WINDOW " / >
5.在MATLAB命令窗口中使用以下命令更改MATLAB当前文件夹:
cd (fullfile (matlabshare金宝appd.supportpkg.getSupportPackageRoot,“工具箱”,“目标”,“金宝appsupportpackages”,“android”,“androidexamples”,“ROSonAndroid”,“IMUControl”))
a.复制这些文件并粘贴到src>主要>java>com.example.IMUControl项目的文件夹。在这里,IMUControl是项目的名称。
ROSMainActivity.java
PublishNode.java
MainActivity.java
MWNodeMainExecutorListener.java
MWNodeMainExecutorService.java
MWNodeMainExecutorServiceListener.java
b.保存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语句之前的定义CountDownTimer方法。
PublishNode pn;
位置4-添加ROSPublish而且初始化方法定义之前的naMain方法。
ROSPublish(double[] data)
{
If (pn != null)
pn.publishData(数据);
}
protected void init(NodeMainExecutor) {
pn = new PublishNode("/android/imu","sensor_msgs/ imu");
NodeConfiguration NodeConfiguration = nodeconfigure . newpublic (getRosHostname());
nodeConfiguration.setMasterUri (getMasterUri ());
nodeMainExecutor。execute (pn, nodeConfiguration);
}
的ROSPublish方法中的数据取向,加速度计,陀螺仪块的Simulink模型。金宝app然后,该方法将数据发布到RViz (ROS master)。发布数据的数据类型取决于ROS主题的消息类型。在本例中,发布主题为/android/imu,消息类型为sensor_msg/ imu。您可以根据应用程序的需求使用不同的主题名称和消息类型。的初始化方法在创建ROS客户端后调用。在此函数中,您可以指定应用程序所需的发布者和订阅者的数量。在本例中,只需要一个发布者。
步骤4:在Android Studio中同步项目文件
在Android Studio中,单击现在同步按钮在Android Studio编辑器的右上角。
在同步项目时,您可能会看到以下错误消息。若要解决此问题,请单击错误消息中出现的链接。
请注意:错误信息中指定的构建工具版本号可能与计算机中安装的Android gradle插件版本不同。
步骤5:配置并运行Android设备作为ROS客户端
请注意:在继续之前,请确保您的计算机和Android设备连接到相同的Wi-Fi网络。
1.在Android Studio工具栏中,选择运行>运行“IMUControl”.Android Studio将应用程序安装到您的设备上。应用程序开始在设备上运行,并为您提供将设备配置为ROS主设备或ROS客户端设备的选项。
2.选择ROS的客户选项,并指定IP地址和端口号。本例中IP地址为192.255.88.128
端口号为11311
.
3.单击,将设备连接到计算机连接.设备开始向计算机发送传感器数据。应用程序显示信号,这些信号表示来自设备的传感器数据在一定时间内。的y-轴表示传感器数据,而x-axis表示时间。
步骤6:在RViz中可视化传感器数据
1.在已安装的虚拟机中打开“ROS Melodic Terminal”,执行该命令。启动RViz工具。
rviz
2.要添加显示,单击添加按钮。显示侧边栏。
3.在“创建可视化”弹出窗口中,滚动到Imu下rviz_plugin_tutorial类别,然后单击好吧.一个Imu显示添加到显示侧边栏。
4.在显示侧边栏,单击Imu显示。相关联的属性列表Imu上市。
5.从属性列表中,设置主题来/ android / imu
.在Visualization窗口中,您现在将看到表示设备位置和方向的箭头。移动设备并观察箭头位置的变化。
此插图显示了当设备面向向上时可视化窗口中的箭头。