[作品] 42“万里”树莓派小车——ROS学习(Android使用ROSBridge控制小乌龟)

lb8820265   2022-11-8 23:14 楼主

    前面通过网页使用ROSBridge控制小乌龟,这里介绍使用Android手机来控制小乌龟。

一、从零开始新建ROSBridge工程

    从Android源码开始学习并不是最好的方法,由于环境不一样,直接编译不一定能通过,移植到自己工程也不一定能成功,所有这里介绍从零开始新建ROSBridge工程。

0. 下载源码

    下载链接在帖子最后。

1. 新建AS工程

    本帖采用Android Studio 4.1,新建一个空白工程,包名为“Lb_ROSBridge_Turtle”。

 

  2. 复制例程文件到新工程

 

     复制“libs”文件夹内的文件到新工程对应位置。

 

 

    复制“jilk”文件夹到新工程对应位置。

 

      替换“activity_main.xml”布局文件到新工程对应位置。如果包名不同,记得修改文件中tools:context的包路径。

 

 

      替换“MainActivity.java”与复制“RCApplication.java”文件到新工程对应位置,如果包名不同,记得要修改文件首行的包名。

 

 

 

    3. 修改“AndroidManifest.xml”文件

 

     添加权限

 

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    关联Application

android:name="com.example.lb_rosbridge_turtle.RCApplication"

    允许让外部组件启动(在Android 12版本以上手机上需要)

android:exported="true"

4. 修改“build.gradle”文件

添加libs文件夹库路径

 

 

implementation fileTree(include: ['*.jar'], dir: 'libs')

二、ROSBridge工作流程

     所有编写均在“MainActivity.java”文件中。

1. 注册EventBus,用于接收消息

EventBus.getDefault().register(this);

2. 调用connect,用于连接树莓派服务器

connect(String ip, String port)

3. 获取已经连接的Rosbridgeclient类的实例

client = ((RCApplication)getApplication()).getRosClient();

4. 发送数据给服务端

client.send(msg);

     订阅和发布信息都是同一指令。

5. 获取服务端数据

onEvent(final PublishEvent event)

    上面只是主要的流程,详细的代码查看源代码。

三、操作与演示

树莓派服务端操作

1. 启动内核

roscore

2. 启动小乌龟

rosrun turtlesim turtlesim_node

3. 开启rosbridgea服务

roslaunch rosbridge_server rosbridge_websocket.launch

 

手机端操作

 

0. 运行APP

    可以通过在线仿真或者直接安装APP。

1. 输入树莓派IP

    需要手机和树莓派在同一个局域网中。

2. 点击“连接”

    连接正常,连接状态会显示“已连接”

3. 点击“订阅位置”

    也就是发送订阅指令,随后树莓派会不停的发送位置信息给手机

4. 输入控制参数

    滑动拖动条来选择控制参数,控制参数有:直行速度、横向速度和转向速度。

5. 点击“发布”

    将控制参数发布出去,树莓派小乌龟就会根据运动参数开始运动。

 

 四、源码

 

提示词:如果您需要查看本帖隐藏内容,请登录或者注册
QQ:252669569

回复评论 (3)

先新建ROSBridge工程文件,进行ROS学习学习是个好习惯

点赞  2022-11-10 08:13

先新建ROSBridge工程文件,进行ROS学习学习是个好习惯

点赞  2023-2-22 15:36
买了一个树莓派4B 2G版的,可惜忙的要死,买回来就接灰了。而且后面还降价了一多半
点赞  2023-11-25 01:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复