こんにちは、PCライフが快適になりハッピーなnishishiです。

自宅PCはすでに10年選手でさすがに遅すぎてストレスが溜まっていたので、思い切って8インチのUMPC買ってみましたが、いやあいい買い物でした。

お値段そこそこだったので我が家の大蔵省の視線が痛いのが玉にキズ。

さて、ROSって使ったことないんですが、とても便利そうですね。

ROSを使えば異なる端末同士での通信も意外と簡単だよーと技術の方が言ってたのでじゃあ何かお願いしますと。

したら、ROSでRobovie-Z 2台が連携して動くとか、ステキなものがチャチャッとできたようです。

2台のRobovie-ZをROSで連携させて動かしてみました!ROSを使えば異なる端末同士での通信も意外と簡単(技術者談)との事でやっていただきましたが、ホントにサクッとできてビックリです。Robovie-Zなら全身のサーボを連携させられるそうですが、支えておかないと転倒の危険があるので、今回は上半身だけでやってみました。#連携 #ROS #RobovieZ #テレプレゼンス #二足歩行 #ロボット #RaspberryPI #やってみた #開発

ロボットショップ RobotShopさんの投稿 2020年8月25日火曜日

詳細についてはこんな感じだそうです。

異なる端末間のROS連携は下記URLなどを参照
https://asukiaaa.blogspot.com/2018/06/rospcros.html

構成としては、マスター側が配信するサーボ角度をスレーブ側で受け取り、メモリマップのモータオーバーライドに値を書き込んで操作している。

Robovie-Zには、モータの角度を配信したりメモリマップへの書き込み指示を購読するROSノード(roboviez_ros_controller.py)が備わっている。

マスター側は、roscoreとrosrun roboviez_ros_samples roboviez_ros_controller.pyを実行する。
ただし、デフォルトではroboviez_ros_controller.pyの周期が10Hzと荒いので、30Hzに差し替えている(rospy.Rate)。

スレーブ側では、同じく周期を細かくしたroboviez_ros_controller.py、及びマスターからのサーボ位置をdescribeしスレーブのroboviez_ros_controller.pyにpublishする専用ノードを自作。

Robovie-ZのCPUボードには、VS-RC003時代から引き続きサーボのオーバーライド機能(モータへの角度直接指定)がある。アドレスは0x0d00から1サーボ2byteで64個分(128byte)備わっているが、Robovie-ZのMotionWorksでの最大IDは25なので、ここでは多くても25個分まで書き換えればよい。
動画ではとりあえず上半身だけ制御しているので、0x0d1aから13軸分(ID13~26)の範囲を書き換えている。

※サーボのオーバーライド機能でモータを動かす場合、補間がかからないため動かし方によってはモータロックが頻発したりギアに著しいダメージを与える危険性もあるため、それを承知の上で利用すること
Robovie-ZのCPUで採用された数値の平滑化を用いるともう少しなだらかな変化ができるかもしれない。角度をオーバーライドではなくユーザ変数に書き出し、ジャイロゲインなどのようにモータ出力への係数として組み込む形式。

マスターからのサーボ角度はラジアンだが、オーバーライドの方はサーボへの生値=0.1度単位なので、ラジアンを360度法に変換→10倍して整数型にしている。

なるほどー(棒読み)

皆さんも気が向いたら試してみてくださいね!

とはいったものの

Robovie-Z 2台無いと無理ですね・・・

UMPC買ってる場合じゃなかったかっ

ではまたノシ