andorid與ros互操作的關鍵點

如果想通過android設備與基於ROS的機器人互操作,通常可選擇rosjava庫

rosjava可以看做是ros的java client library,所以可以像rospy、roscpp那樣在Linux終端使用

對於安卓,rosjava提供了一些android補充包(在github上跟rosjava屬於同一group)android_core等

如果你想開發能操控ros機器人的android app,儘量在android_core裏面的android_tutorial_pubsub工程裏添加自己的代碼,因爲gradle太複雜了

使用場景,只考慮roscore運行在機器人上的情況:

對於ros topic,如果安卓發,機器人收,則沒問題;如果機器人發,安卓收,則收不到,logcat顯示xmlrpc超時


經過一番摸索,終於發現關鍵點:機器人的ROS_IP環境變量沒配,導致安卓拿到的pub節點ip地址不對,配置成本機局域網IP後,通信就正常了


解釋一下,ROS對於通信,有2個環境變量,一個是ROS_MASTER_URI,一個是ROS_IP,二者在單機上是有點冗餘的,但在分佈式網絡上卻各司其職

ROS_MASTER_URI配置roscore運行在哪臺機器上,很好理解

ROS_IP配置本機(可能運行roscore也可能沒運行)所有ros node共用哪個IP與外界ros node通信——因爲本機上可能有多個網口,每個網口的IP不一樣,分別對應不同網絡,所以一定要指定好自己選用的IP,如果不指定這個環境變量,則其他ros node與本機ros node通信時,名稱解析會出錯!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章