主要内容

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

这个例子展示了如何生成一个Android™应用程序来设置Parrot®Bebop无人机在Gazebo®模拟器上的位置,使用Simulink®Android设备支持包。金宝app金宝app在本例中,您的计算机被配置为ROS主机,Android设备被配置为ROS客户端。设备通过ROS (Robot Operating System)接口与计算机连接。通过运行在计算机上的模拟器显示从设备接收到的数据。

需求

硬件需求

  • Android设备

  • USB电缆

软件需求

在你的电脑上安装以下产品:下载188bet金宝搏

的必备条件

简介

ROS是一个通信接口,使机器人系统的不同部分能够发现、发送和接收数据。使用ToAppblock从Simulink支金宝app持包为A金宝appndroid设备,您可以与ros支持的物理机器人或机器人模拟器,如Gazebo交换数据。有关更多信息,请参见机器人操作系统(ROS)概念的网页。

步骤1:在电脑上运行凉亭模拟器

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

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

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

打开Simulin金宝appk模型

1.用USB线将Android设备连接到计算机。

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

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

  • 数据输入:使用Position_XPosition_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

步骤3:在Android Studio中导入项目并添加ROS依赖项

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。xmlsrc>主要>res>布局项目的文件夹。

c.保存mwstyle.xmlsrc>主要>res>项目的文件夹。

6.打开ControlDronePosition.java文件位于src>主要>java>com.example.ControlDronePosition项目的文件夹。在这里,ControlDronePosition是项目的名称。通过更改图像中标记位置的代码来更新文件。

  • 位置1—添加ROS导入语句。

进口org.ros.node.NodeConfiguration;
进口org.ros.node.NodeMainExecutor;
  • 位置2——取代AppCompactActivityROSMainActivity

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

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

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

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

请注意:错误信息中指定的构建工具版本号可能与计算机中安装的Android gradle插件版本不同。

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

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

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

2.选择ROS的客户选项指定计算机的IP地址和端口号。本例中IP地址为192.255.88.128端口号为11311

3.单击,将设备连接到计算机连接.中指定的位置数据开始发送数据输入块到计算机。在本例中,指定的位置为11,1.Bebop无人机在模拟器中的位置变为11,1

4.改变x-,y- - - - - -,z-Position_XPosition_Y,Position_Z设备屏幕上的方框。观察无人机的位置变化到这些方框中指定的位置。

另请参阅

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