主要内容

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

此示例显示如何生成Android™应用程序,以使用Simulink®Simulator为Android设备设置普泽波®模拟器上的Parrot®Bebop驱动器的位置。金宝app金宝app在此示例中,您的计算机配置为ROS Master,Android设备配置为ROS客户端。该设备通过机器人操作系统(ROS)接口连接到计算机。使用计算机上运行的模拟器显示从设备接收的数据。

要求

硬件要求

  • Android设备

  • USB电缆

软件需求

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

的必备条件

介绍

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

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

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

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

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

打开Simulin金宝appk模型

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

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

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

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

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

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

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

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

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

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

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

笔记:在继续之前,请确保您的电脑和Android设备连接到同一个Wi-Fi网络。

1.在Android Studio工具栏中,选择跑步>运行“ControlDronePosition”.Android Studio在设备上安装应用程序。应用程序开始在设备上运行,并为您提供将设备配置为ROS Master或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设备可视化传感器数据