主要内容

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

此示例显示如何生成Android™应用程序,以便使用用于Android设备的Simulink®支持包从ROS可视化(RVIZ)工具上的Android设备可视化实时传感器数据。金宝app金宝app在该示例中,可视化诸如设备的方向,角速度和加速度的传感器数据。您的计算机配置为ROS Master,Android设备配置为ROS客户端。该设备通过机器人操作系统(ROS)接口连接到计算机。使用计算机上运行的RVIZ工具可视化来自设备的传感器数据。

要求

硬件要求

  • Android设备

  • USB电缆

软件需求

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

的必备条件

介绍

机器人操作系统(ROS)是一种通信接口,使机器人系统的不同部分能够发现,发送和接收数据。使用ToApp.块从Simulink支持包fo金宝appr An金宝appdroid设备,您可以与启用ROS的物理机器人或机器人模拟器(如凉亭)交换数据。有关更多信息,请参阅罗斯概念在ROS网站上的部分。

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

1.完成下载虚拟机迈出了开始凉亭和模拟的火炬(ROS工具箱)的例子。

2.在下载的虚拟机上打开ROS旋律端子。

3.要启用ROS节点之间的通信,请在ROS旋律终端中执行此命令。

r

第2步:使用Simulink生成Android项目金宝app

本节介绍如何从Simulink模型生成Android项目。金宝app

打开Simulin金宝appk模型

1.通过USB数据线将Android设备连接到您的电脑上。

2.安装金宝app用于An金宝appdroid设备的Simulink支持包.如果已安装支持包,请跳过此步骤。金宝app

3.在Simulin金宝appk编辑器中,打开IMUControl模型。此模型是预配置的,以在Android设备上运行。该模型具有这些块:

  • 方向:块使用三个角度读取装置的旋转:间距(周围)X-轴),滚(周围y-轴)和方位角(周围Z.- 轴)。

  • 加速度计:块沿着读取加速度X- ,y-, 和Z.- 设备的方向。

  • 陀螺仪:块读取沿着旋转速度X- ,y-, 和Z.- 设备的方向。

  • Matlab功能: MATLAB函数块转换输出方向块到四元数角度。

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

  • 范围:块显示模拟期间生成的信号。

配置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

步骤3:在Android Studio中导入Project和Add ROS Dependencies

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客户端后调用方法。在此功能中,您可以指定应用程序所需的发布者和订阅者的数量。在此示例中,只需要一个发布者。

第4步:在Android Studio中同步项目文件

在Android Studio中,单击现在同步android Studio编辑器的右上角的按钮。

同步项目时,您可能会看到以下错误消息。要解决此问题,请单击错误消息中显示的链接。

笔记编译工具的版本号可能会根据安装在计算机上的Android gradle插件的版本而有所不同。

步骤5:配置和运行Android设备作为ROS客户端

笔记:在继续之前,请确保您的电脑和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表示时间。

第6步:在RVIZ中可视化传感器数据

1.在计算机上安装的VM上打开ROS旋律端子并执行此命令。RVIZ工具已启动。

rviz.

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

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

4.在显示侧边栏,单击Imu展示。与之关联的属性列表Imu被列出。

5.从属性列表中,设置话题/ Android / IMU.在可视化窗口中,您现在将看到表示设备的位置和方向的箭头。移动设备并在箭头改变其位置时观察。

该图示器显示设备在向上方向上时可视化窗口中的箭头。

也可以看看

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