最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Android & OringinBot (二)- 搖桿控制

2023-03-31 11:28 作者:古月居GYH  | 我要投稿

前提

在上一篇文章中已經(jīng)編譯好了ROS2的Android版本,并成功實現(xiàn)了一個發(fā)布訂閱的測試程序?,F(xiàn)在可以開始使用ROS2的Android版本開發(fā)APP來控制OriginBot的運動了。

搖桿控件

這里控件首選當然是搖桿,不過像這種控件一般都不是現(xiàn)成的,屬于自定義控件。當然肯定會有Android開發(fā)人員寫好的,為了節(jié)約時間就不搞重復開發(fā)了,直接在網(wǎng)上找到一個:github.com/simpafac/vir

控件就長下面這樣:

只需要將JoystickView.java添加到自己的項目中調(diào)用就可以了。首先在layout目錄下的xml文件中加入控件:


在上面的代碼中還可以調(diào)整搖桿控件的屬性,比如顏色、大小、排列等等。其調(diào)用方式也和Android上的控件調(diào)用方式一致,比如在MainAcitivity.java中調(diào)用:

消息與控制

ROS2中用于控制的消息依然是geometry_msgs/msg/Twist,包含兩個子消息:Vector3類型的linear和angular,分別表示線速度和角速度。OriginBot屬于差速小車,只需要控制X軸的線速度和Z軸的角速度即可。

同時搖桿擁有兩個控制變量,分別是推動角度和推動力度,我們假設(shè)小車的最大線速度為max_v,最大角速度為max_a,搖桿推動到某點時的角度為angle,力度為strength;則當前小車的線速度和角速度分別為:

這里strength除了個100是因為它做了一個小數(shù)點后兩位乘100取整數(shù)的操作,目的是為了方便直觀的調(diào)整參數(shù)。

將此關(guān)系式寫入搖桿推動的觸發(fā)函數(shù)里,然后傳遞給發(fā)布者,并用兩個TextView顯示當前的線速度和角速度:

由于在OriginBot小車上以攝像頭的安裝位置為前方,所以當前的線速度和角速度需要做一個方向上的調(diào)整;通過設(shè)定正負值即可調(diào)整方向。

這里我們單獨寫一個控制節(jié)點來發(fā)布Twist消息:

然后在mainActivity中添加節(jié)點,并設(shè)定與OriginBot中相同的話題名稱:

一般來說為了方便調(diào)節(jié)控制小車的速度,還需要有設(shè)置最大線速度和最大角速度的功能;這里使用兩個SeekBar控件來控制;我這里設(shè)置默認最大線速度為0.5m/s,最高1m/s;最大角速度為0.3rad/s,最高0.5rad/s;這幾個數(shù)值可以根據(jù)小車的具體情況進行更改設(shè)置。如下setMaxVelocity函數(shù)實現(xiàn):

在上面的代碼中我還添加了兩個Toast提示開始設(shè)置和完成設(shè)置,如果不需要可以忽略。

編譯過程

編譯過程中需要注意以下幾點:

  • 將上一篇文章中編譯好的ROS2相關(guān)的jar文件放入app/libs目錄,必須包括geometry_msgs_messages.jar文件。

  • 將編譯好的ROS2相關(guān)的庫文件放入app/src/main/jniLibs/arm64-v8a,必須包括geometry_msgs_messages相關(guān)庫文件。

  • 在app/build.gradle文件中加入:

結(jié)果展示

APP的運行界面如下:

推動搖桿后發(fā)布/cmd_vel話題,可以在同一網(wǎng)段下的PC端以及OriginBot的終端查看發(fā)布的消息:

同時啟動OriginBot的底層控制,上下推動搖桿可看到小車前后移動,左右推動搖桿可看到小車旋轉(zhuǎn),推動搖桿的距離變化可以放慢或加快小車的速度,設(shè)置最大線/角速度可以改變速度的調(diào)整范圍。

在測試過程中,直觀上看,手機和小車之間的控制是非常流暢的,和使用藍牙手柄控制相比沒有太大的區(qū)別,至此我的目的也達到了。


總結(jié)延伸

在這篇文章中,我實現(xiàn)了APP內(nèi)搖桿控制小車運動,但是那么大的手機界面只用來實現(xiàn)搖桿控制未免太過單調(diào);可以看到我將APP的界面設(shè)置為橫屏顯示,目的就是為了獲取OriginBot小車的一些數(shù)據(jù)顯示在空余界面上;那么下一篇文章就來聊聊如何實現(xiàn)這個功能。

Android & OringinBot (二)- 搖桿控制的評論 (共 條)

分享到微博請遵守國家法律
依兰县| 连州市| 石嘴山市| 威信县| 榆林市| 潜山县| 阿尔山市| 诸暨市| 绥滨县| 普陀区| 鹤壁市| 长寿区| 桃园市| 陈巴尔虎旗| 三都| 长子县| 娄烦县| 建始县| 黔南| 南汇区| 余干县| 四会市| 永春县| 湄潭县| 开阳县| 樟树市| 出国| 玉树县| 黔西县| 朝阳市| 哈尔滨市| 万载县| 玉田县| 郓城县| 宁化县| 普定县| 通道| 连平县| 靖西县| 偏关县| 华池县|