这个例子展示了如何生成一个Android™应用程序来设置Parrot®Bebop无人机在Gazebo®模拟器上的位置,使用Simulink®Android设备支持包。金宝app金宝app在本例中,您的计算机被配置为ROS主机,Android设备被配置为ROS客户端。设备通过ROS (Robot Operating System)接口与计算机连接。通过运行在计算机上的模拟器显示从设备接收到的数据。
硬件需求
Android设备
USB电缆
软件需求
在你的电脑上安装以下产品:下载188bet金宝搏
MATLAB®(R2018a或更高版本)
金宝appSimulink (R2018a或更高版本)
MathWorks®提供的虚拟机(VM)
通过使用配置Android设备androidhwsetup
.
完成Android™设备入门的例子。
ROS是一个通信接口,使机器人系统的不同部分能够发现、发送和接收数据。使用ToAppblock从Simulink支金宝app持包为A金宝appndroid设备,您可以与ros支持的物理机器人或机器人模拟器,如Gazebo交换数据。有关更多信息,请参见机器人操作系统(ROS)和概念的网页。
1.安装MathWorks-provided VM在你的电脑上。如果您已安装该虚拟机或选择使用自己的虚拟机,请跳过此步骤。
2.在您的计算机上安装的虚拟机上打开一个新的终端。
3.在终端窗口中,键入ifconfig
.该命令用来查看虚拟机网络接口的配置信息。下eth0
,inet地址
显示虚拟机的IP地址。请注意IP地址,以备后续使用。
4.设置标准ROS环境变量值,ROS_MASTER_URI
而且ROS_HOSTNAME
,通过在终端中执行这些命令。取代IP_OF_VM输入上一步记录的虚拟机IP地址。
回声出口ROS_MASTER_URI = http://IP_OF_VM: 11311>>~ / . bashrc回声出口ROS_HOSTNAME = IP_OF_VM>>~ / . bashrc
5.执行这些步骤来运行installRotorS.sh文件。的installRotorS.sh文件包含一个脚本,用于下载启动Gazebo模拟器和在模拟器上运行Bebop无人机所需的所有包。
a.在MATLAB命令窗口中使用以下命令更改MATLAB当前文件夹:
cd (fullfile (matlabshare金宝appd.supportpkg.getSupportPackageRoot,“工具箱”,“目标”,“金宝appsupportpackages”,“android”,“androidexamples”,“ROSonAndroid”))
b.复制installRotorS.sh文件到它会
虚拟机路径。
c.在终端窗口执行如下命令。
修改文件权限+ xinstallRotorS.sh。/ installRotorS.sh
d.关闭终端并重新打开。
6.通过执行此命令启动Gazebo模拟器。你会在模拟器的渲染窗口中看到Bebop无人机。
roslaunchrotors_gazebobebop_hover.launch
本节解释如何从Simulink模型生成Android项目。金宝app
打开Simulin金宝appk模型
1.用USB线将Android设备连接到计算机。
2.安装金宝appAndr金宝appoid设备的Simulink支持包.如果已安装支持包,请跳过此步骤。金宝app
3.在Simuli金宝appnk编辑器中,打开ControlDronePosition
模型。这个模型被预先配置为在Android设备上运行。模型有这些块:
数据输入:使用Position_X,Position_Y,Position_Z块,你可以改变x-,y- - - - - -,z- Bebop无人机在模拟器上的坐标。
ToApp:块接收无人机的位置数据,并将数据发送给ROS发布
方法。的ROS发布
方法将数据发布到计算机。
配置Simulink模型金宝app
1.在Simuli金宝appnk编辑器中,选择模拟>型号配置参数.
2.在“配置参数”对话框中,选择硬件实现.
3.设置硬件板参数Android设备
.属性中的参数将自动填充硬件板设置Android的默认值。
a.从组列表下目标硬件资源中,选择设备的选择.
b.从设备列表,选择你的Android设备。如果您的设备不在列表中,请单击刷新.
请注意:如果您的设备在单击后仍未列出刷新按钮,确保已启用USB调试您的设备上的选项。要启用USB调试,输入androidhwsetup
在MATLAB命令窗口,并按照屏幕上的指示。
4.点击应用.点击好吧关闭对话框。
在Android设备上金宝app部署Simulink模型
在模型工具栏上,单击“部署到硬件”按钮。当Simulink在计算机上构建模型时,模型窗口的左下角显示状态。金宝app成功构建模型后,在MATLAB build文件夹中生成项目文件MATLAB_build_folder / modelName_ert_rtw / modelName.例如,李:/ workspace / ControlDrone / ControlDronePosition_ert_rtw / ControlDronePosition
.
1.按照中所述的步骤将生成的项目导入到Android Studio将项目导入谷歌Android Studio.
2.在Android Studio中,选择项目从文件资源管理器上方的左上角下拉菜单中选择。
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”
排除“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_GAZEBO " / >
位置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使用权限添加到列表下面uses-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”,“ControlDronePosition”))
a.复制这些文件并粘贴到src>主要>java>com.example.ControlDronePosition项目的文件夹。在这里,ControlDronePosition是项目的名称。
ROSMainActivity.java
PublishNode.java
MainActivity.java
MWNodeMainExecutorListener.java
MWNodeMainExecutorService.java
MWNodeMainExecutorServiceListener.java
b.保存main。xml在src>主要>res>布局项目的文件夹。
c.保存mwstyle.xml在src>主要>res>值项目的文件夹。
6.打开ControlDronePosition.java文件位于src>主要>java>com.example.ControlDronePosition项目的文件夹。在这里,ControlDronePosition是项目的名称。通过更改图像中标记位置的代码来更新文件。
位置1—添加ROS导入语句。
进口org.ros.node.NodeConfiguration;
进口org.ros.node.NodeMainExecutor;
位置2——取代AppCompactActivity与ROSMainActivity.
位置3-添加PublishNode语句之前的定义onCreate方法。
PublishNode pn;
位置4-添加ROSPublish而且初始化方法定义之前的naMain方法。
ROSPublish(double[] data)
{
If (pn != null)
pn.publishData(数据);
}
protected void init(NodeMainExecutor) {
pn = new PublishNode("bebop2/command/pose","geometry_msgs/PoseStamped");
NodeConfiguration NodeConfiguration = nodeconfigure . newpublic (getRosHostname());
nodeConfiguration.setMasterUri (getMasterUri ());
nodeMainExecutor。execute (pn, nodeConfiguration);
}
的ROSPublish方法输入的位置数据数据输入块的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主设备或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设备屏幕上的方框。观察无人机的位置变化到这些方框中指定的位置。