此示例显示如何生成Android™应用程序,以使用Simulink®Simulator为Android设备设置普泽波®模拟器上的Parrot®Bebop驱动器的位置。金宝app金宝app在此示例中,您的计算机配置为ROS Master,Android设备配置为ROS客户端。该设备通过机器人操作系统(ROS)接口连接到计算机。使用计算机上运行的模拟器显示从设备接收的数据。
硬件要求
Android设备
USB电缆
软件需求
在计算机上安装这些产品:下载188bet金宝搏
MATLAB®(R2018A或更高版本)
金宝appSimulink (R2018a或更高版本)
MathWorks®提供的虚拟机(VM)
使用使用配置Android设备androidhwsetup
.
完成Android™设备入门的例子。
ROS是一个通信接口,使机器人系统的不同部分能够发现,发送和接收数据。使用ToApp.块从Simulink支持包fo金宝appr An金宝appdroid设备,您可以与启用ROS的物理机器人或机器人模拟器(如凉亭)交换数据。有关更多信息,请参阅机器人操作系统(ROS)和概念在ROS网站上的部分。
1.安装MathWorks提供的VM在你的电脑。如果您已安装此VM或选择使用自己的VM,请跳过此步骤。
2.在计算机上安装的VM上打开新终端。
3.在终端窗口中,键入ifconfig.
.此命令显示VM的网络接口的配置。在下面eth0.
, 这inet地址
显示虚拟机的IP地址。请注意IP地址,以便后续使用。
4.设置标准ROS环境变量的值,ros_master_uri.
和ROS_HOSTNAME
,通过在终端中执行这些命令。代替ip_of_vm.使用上一步中的VM的IP地址。
回声出口ROS_MASTER_URI = http://IP_OF_VM: 11311>>~ / . bashrc回声出口ros_hostname = ip_of_vm.>>~ / . bashrc
5.执行这些步骤以运行installRotorS.sh文件。这installRotorS.sh文件包含一个脚本,用于下载启动凉亭模拟器并在模拟器上运行Bebop驱动器所需的所有包。
一种。在MATLAB命令窗口中使用此命令更改MATLAB当前文件夹:
cd (fullfile (matlabshare金宝appd.supportpkg.getSupportPackageRoot,'工具箱'那'目标'那'金宝app支持包装'那'安卓'那'androidexamples'那'罗斯蒙德罗德')))
湾复制installRotorS.sh文件到/主页/用户
VM的路径。
C。在终端窗口中,执行以下命令:
chmod.A + X.installRotorS.sh./installrotors.sh.
天。关闭终端并重新打开它。
6.通过执行此命令启动凉亭模拟器。您将在模拟器的渲染窗口中看到一只Bebop驱动器。
roslaunchrotors_gazebobebop_hover.launch
本节介绍如何从Simulink模型生成Android项目。金宝app
打开Simulin金宝appk模型
1.通过USB数据线将Android设备连接到您的电脑上。
2.安装金宝app用于An金宝appdroid设备的Simulink支持包.如果已安装支持包,请跳过此步骤。金宝app
3.在Simulin金宝appk编辑器中,打开ControlyronePosition.
模型。此模型是预配置的,以在Android设备上运行。该模型具有这些块:
数据输入:使用Position_X那Position_Y, 和Position_Z块,你可以改变X- ,y-, 和Z.- 模拟器上Bebop无人机的坐标。
ToApp.:块接受无人机的位置数据,并将数据发送给ROS发布
方法。这ROS发布
方法将数据发布到计算机。
配置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 / controlyrone / controlyroneposition_ert_rtw / controlyroneposition
.
1.按照如上所述的步骤将生成的项目导入Android Studio将项目导入Google Android Studio.
2.在Android Studio中,选择项目来自文件资源管理器上方的左上级下拉菜单的选项。
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 / depont.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:Tools =“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'那'罗斯蒙德罗德'那'controdroneposition')))
一种。复制这些文件并粘贴在其中SRC.>主要的>java.>com.example.ControlDronePosition项目的文件夹。在这里,ControlyronePosition.是您项目的名称。
ROSMainActivity.java
PublishNode.java
mainactivity.java.
mwnodemainexecutorListener.java.
MWNodeMainExecutorService.java
mwnodemainexecutorservicelistener.java.
湾拯救main.xml.文件在SRC.>主要的>res.>布局项目的文件夹。
C。拯救mwstyle.xml.文件在SRC.>主要的>res.>值项目的文件夹。
6.打开ControlDronePosition.java文件位于SRC.>主要的>java.>com.example.ControlDronePosition项目的文件夹。在这里,ControlyronePosition.是您项目的名称。通过更改标记在图像中标记的位置的代码来更新文件。
位置1—添加ROS导入语句。
导入org.ros.node.nodeConfiguration;
导入org.ros.node.nodemainexecutor;
位置2- 代替AppCompactactivity.和ROSMainActivity.
位置3.- 添加PublishNode.在定义之前的声明oncreate.方法。
PublishNode PN;
第4位- 添加Rospulish.和在里面方法定义之前的naMain方法。
公共void rospublish(double []数据)
{
if(pn!= null)
pn.publishData(数据);
}
受保护的void init(nodemainexecentor nodemainexecutor){
pn = new publishnode(“bebop2 / command / pose”,“geometry_msgs / posestamped”);
nodeConfiguration nodeConfiguration = nodeConfiguration.newpublic(getroshostname());
nodeConfiguration.setmasteruri(getmasteruri());
nodemainexecutor.execute(pn,nodeConfiguration);
}
这Rospulish.方法接受使用数据输入模块的Simulink模型金宝app。然后该方法将数据发布到Gazebo模拟器(ROS主)。发布数据的数据类型取决于ROS主题的消息类型。在本例中,发布主题是bebop2/command/pose,消息类型是geometry_msgs/PoseStamped。您可以根据应用程序的需求使用不同的主题名称和消息类型。这在里面创建ROS客户端后调用方法。在此功能中,您可以指定应用程序所需的发布者和订阅者的数量。在此示例中,只需要一个发布者。
在Android Studio中,单击现在同步android Studio编辑器的右上角的按钮。
同步项目时,您可能会看到以下错误消息。要解决此问题,请单击错误消息中显示的链接。
笔记编译工具的版本号可能会根据安装在计算机上的Android gradle插件的版本而有所不同。
笔记:在继续之前,请确保您的电脑和Android设备连接到同一个Wi-Fi网络。
1.在Android Studio工具栏中,选择跑步>运行“ControlDronePosition”.Android Studio在设备上安装应用程序。应用程序开始在设备上运行,并为您提供将设备配置为ROS Master或ROS客户端的选项。
2.选择ROS客户选项指定计算机的IP地址和端口号。在此示例中,IP地址是192.255.88.128
并且端口号是11311.
.
3.要将设备连接到计算机,请单击连接.设备开始发送指定的位置数据数据输入挡到电脑。在本例中,指定的位置为1
那1
, 和1
.Bebop无人机在模拟器中的位置变为1
那1
, 和1
.
4.改变X- ,y-, 和Z.-在Position_X那Position_Y, 和Position_Z设备屏幕上的框。观察到无人机的位置会更改为这些框中指定的位置。