RobotinoでROS

RobotinoとROSで真面目につなげる方法を考えたけど,適切なRobotino-api2を得るのが難しいので,View2のUDP経由でROSをつなげてみました.

まず,ものは,BabyTigers/python/にて公開しています.

Robotino <=> RobView <=> UDPでpython <=> ROS
という感じでつなげます.

まず,Robotino の部分ですが,実機を用意しても良いですし,RobotinoSim でも大丈夫です.
シミュレータは,openRobotinoのページからダウンロードしましょう.
なお,Ubuntu にインストールするにはwine が必要です.
Wineを入れてRobView2を使う方法に関しては,Robotino2をUbuntu 18.04から制御を参考にして下さい.
この方法で,robotinoSim Demoも同様にインストールできます.
同一ネットワークにつながっている別のWindowsマシンにインストールして,そちらで実行しても大丈夫です.
ぼちぼち負荷がかかるシミュレータですので,余裕のあるマシンで動かす方が良いでしょう.
余裕のないマシンで動かした場合,画面の更新がされない場合があります(UbuntuのWineの場合も同様).
そのときは,マウスで画面を掴んで動かしてやると,更新されます….

次に,Robotino <=> Robview の部分です.
RobView のプログラムは,ros.rvw2です.
なんと,Robotino 2にも対応しています!

Robotino のIPアドレスは,36行目を変更して下さい.

        <md:varExpr md:value="127.0.0.1:8080" md:varname="ipAddress"/>

シミュレータの場合は,それを動かしているパソコンのIPアドレスに変更して下さい.
ファイアウォールが通信を止めている場合があるかもしれませんので要注意.
Robotino 3の場合は,ポート番号を12080にしましょう.

Ubuntu 18.04でRobview2 を使う場合は,wine同様,Robotino2をUbuntu 18.04から制御を参考にして下さい.
Ubuntu 18.04でRobview3 を使う場合は,パッケージがありますので,aptのsource.listを変更(というかsource.list.dにファイルを追加)して,インストールして下さい.
GUIで動かしても良いですし,robview_interpreter を使ってCUI で動かすことも可能です.

RobView <=> ROS の部分は,udp_comm.pyを使って下さい.
RobView からRobotino の情報(オドメトリー,速度)を受け取り,ROSの方でPublish しています.
今のところ,以下の形でPublish していますが,今後変更する可能性は大いにあります.

 pub01 = rospy.Publisher('robotino/odometry', Pose, queue_size = 10)
 pub02 = rospy.Publisher('robotino/bumper', Bool, queue_size = 10)
 pub03 = rospy.Publisher('robotino/getVelocity', Float32MultiArray, queue_size = 10)

また,ROS経由で指示を受け取って,RobView の方でRobotino を動かすこともしています.
今の段階では,ロボットの速度(x, y, phi)を扱っています.

 rospy.Subscriber('robotino/velocity', Float32MultiArray, setVelocity)

これはそのうち,モード情報も加えて,別の指示も出せるようにしていくつもりです.
例えば,「指定された座標まで走る」(= Position Driver)とか,「相対的な座標(例:前方1m)まで走る」とか,「経路(=複数の点)を走る」(= Path Driver)とかです.

指示だしのサンプルプログラムは,sin02.pyです.

あと,Robotino 搭載の赤外線距離センサ(IR1 – IR9)に関しては,今のところ利用していません.
必要ならつなげようと思います.

LRF やカメラに関しては,RobView で扱うのではなく,ROS経由というかpythonやC側で扱った方が楽そうなので,このプログラムでは触っていません.
これ以外に,何が必要かなぁ.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*