主要内容

可视化传感器数据从Android设备在RViz

这个例子展示了如何使用Simulink®Android设备支持包在ROS可视化(RViz)工具上生成一个Android™应用程序来可视化来自Android设备的实时传感器数据。金宝app金宝app在本例中,设备的方向、角速度和加速度等传感器数据是可视化的。您的计算机配置为ROS master, Android设备配置为ROS client。设备通过ROS (Robot Operating System)接口与计算机连接。通过在计算机上运行的RViz工具,可以可视化设备的传感器数据。

需求

硬件需求

  • Android设备

  • USB电缆

软件需求

在您的计算机中安装这些产品:下载188bet金宝搏

的必备条件

介绍

ROS (Robot Operating System)是一个通信接口,使机器人系统的不同部分能够发现、发送和接收数据。使用ToApp您可以与支持ros的物理机器人金宝app或机器人金宝app模拟器(如Gazebo)交换数据。有关更多信息,请参见ROS概念部分在ROS网站上。

步骤1:在计算机上运行凉亭模拟器

1.完成下载虚拟机一步的开始使用凉亭和模拟乌龟机器人(ROS工具箱)的例子。

2.在下载的虚拟机上打开ROS Melodic Terminal。

3.若要开启ROS节点间的通信,请在ROS Melodic Terminal中执行此命令。

roscore

步骤2:使用Simulink生成一个Android项目金宝app

本节解释如何从Simulink模型生成一个Android项目。金宝app

打开Simulin金宝appk模型

1.用USB数据线将Android设备连接到你的电脑上。

2.安装金宝appAndr金宝appoid设备的Simulink支持包.如果已经安装支持包,请跳过此步骤。金宝app

3.在Simuli金宝appnk编辑器中,打开IMUControl模型。该模型预先配置为在Android设备上运行。模型有这些块:

  • 取向:该块使用三个角度量读取设备的旋转:pitch (around)x-轴),滚(绕)y-轴)和方位角(绕)z-轴)。

  • 加速度计:块沿着x-,y- - - - - -,z-设备的方向。

  • 陀螺仪:块读取沿轴的旋转速率x-,y- - - - - -,z-设备的方向。

  • MATLAB函数: MATLAB函数块转换的输出取向块到四元数角度。

  • ToApp:块接收来自设备的传感器数据并将数据发送给ROS发布方法。的ROS发布方法将数据发布到RViz。

  • 范围:显示模拟过程中产生的信号。

配置Simulink模型金宝app

1.在Simuli金宝appnk编辑器中,选择模拟>模型配置参数

2.在“配置参数”对话框中,选择硬件实现

3.设置硬件板参数Android设备.属性中的参数将自动填充硬件板设置Android的默认值。

的。列表下目标硬件资源中,选择设备的选择

的b。设备列表,选择您的Android设备。如果您的设备不在列表中,单击刷新

请注意:如果您的设备没有列出,即使点击刷新按钮,确保您已启用USB调试选择您的设备。要启用USB调试,输入androidhwsetup,并按照屏幕上的说明操作。

4.点击应用.点击好吧关闭对话框。

在Androi金宝appd设备上部署Simulink模型

硬件选项卡中的金宝app模式部分中,选择机上运行然后点击构建、部署和启动.模型窗口的左下角显示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”
在评估{项目->
android {
//排除一些在依赖项之间重复的文件,并防止打包Android应用程序。
packagingOptions {
exclude“META-INF/LICENSE.txt”exclude“META-INF/NOTICE.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 " / >
<类别android: name = " android.intent.category.DEFAULT " / >
  • 位置3——添加活动服务章节紧接在活动部分。

<活动android: label = " @string / app_name”android: name = "。MainActivity”
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—在列出的use -permission下面添加这些ROS use -permissions。

< 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”))

复制这些文件并粘贴到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——取代AppCompactActivityROSMainActivity

  • 位置3——添加PublishNode语句前的定义CountDownTimer方法。

PublishNode pn;
  • 位置4——添加ROSPublish初始化方法定义之前的定义naMain方法。

public void ROSPublish(double[] data)
如果(pn ! = null)
pn.publishData(数据);
protected void init(NodeMainExecutor NodeMainExecutor) {
pn = new PublishNode("/android/imu","sensor_msgs/ imu");
nodeconconfiguration nodeconconfiguration = nodeconconfiguration . 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 Client

请注意:继续操作前,请确保您的计算机和Android设备连接到同一个Wi-Fi网络。

1.在Android Studio工具栏中,选择运行>运行“IMUControl”.Android Studio会在你的设备上安装应用程序。应用程序开始在设备上运行,并提供选项将设备配置为ROS主设备或ROS客户端。

2.选择ROS的客户选项,指定IP地址和端口号。在此例中,IP地址为192.255.88.128端口号是11311

3.要将设备连接到计算机,请单击连接.设备开始向计算机发送传感器数据。该应用程序显示在一定时间内代表来自设备的传感器数据的信号。的y-轴表示传感器数据,而x设在代表时间。

步骤6:在RViz中可视化传感器数据

1.在您的计算机上安装的虚拟机上打开ROS Melodic Terminal并执行此命令。启动RViz工具。

rviz

2.要添加显示,请单击添加按钮下显示侧边栏。

3.在“创建可视化”弹出窗口中,滚动到Imurviz_plugin_tutorial类别,然后单击好吧.一个Imu显示添加到显示侧边栏。

4.在显示侧边栏,单击Imu显示。关联的属性列表Imu上市。

5.从属性列表中,设置主题/ android / imu.在可视化窗口中,您现在将看到一个箭头,表示设备的位置和方向。移动设备并观察箭头位置的变化。

下图显示了当设备面向上方向时可视化窗口中的箭头。

另请参阅

使用ROS从Android设备设置Bebop无人机在凉亭模拟器上的位置