クワマイでもできる

クワマイでもわかる

ROS

メタバースからお蕎麦を食べる

VRChat上にいるお友達にロボットアームを操作してもらい、現実の僕にお蕎麦を食べさせた。作ったものの仕組みとか思い出についてまとめる。 動いている様子 youtu.be クワマイもVtuberになって4年が経ちました今回はVRChatからロボットアームを操作してお蕎…

Rvizで同一形状のrobot modelを複数台表示する

ROS

マニピュレータをマスタースレーブ制御する際、Rvizでマスターとスレーブの2つのrobot modelを重ね合わせて表示したい。同一モデルを使用すると名前空間が衝突してしまうため、tf_prefixを用いて両方表示する方法を紹介する。 使用した環境 Ubuntu 18.04 ROS…

Windowsのroslibpyが遅いときの対処方法

ROS

Windowsでroslibpyを使うとpublishの実行頻度と比べて実際にpublishされる頻度が異常に遅かった。調べたところ解決策があったのでメモ。 使用した環境 OS: Windows 10 roslibpy 1.2.1 reactor.timeoutの設定 コードに下記の2行を付け足すだけで解決。簡単で…

社会人初仕事はJetson Nano MouseでスマホVR

ささやかなコンテンツですが就職して初めて表に出たお仕事です ブログは先輩に書いていただいて、僕はコード書きました。よかったらみんな見てねー。スマホVRといいつつ頭部運動を反映してないというVR元年の現代において大変素朴な仕上がりです。 https://t…

回転行列の右手系左手系変換

ROSの座標系は右手系、Unityの座標系は左手系と異なるためそれぞれ連携させるためには右手系左手系の変換が必要だった。要は対応する方向の要素を入れ替えればいいわけだけど、調べてもあまり出てこないのでメモ。 座標系について それぞれの座標系はこんな…

groupタグを使って複数のロボットを同じROSスクリプトで動かす

ROS

以前2台のマニピュレータをそれぞれ右手用、左手用に分担させて動かした。制御自体はほぼ同じだけど手先位置のtopic名だけ違う名前にする必要がある。topic名だけ異なるスクリプトを2つ書いてもいいけど、roslaunch実行時の引数で切り替えができるようにgrou…

joint_state_publisher_guiの使い方

ROS

以前joint_state_publisherのGUI機能(上記スクショの左側のやつ)がjoint_state_publisher_guiとして独立したという話をした。ROS melodic以前の場合はとりあえずjoint_state_publisher_guiをインストールすれば使えるようになるけど、ちゃんとした使い方もメ…

Rviz: Could not find the GUI, install the 'joint_state_publisher_gui' package

ROS

display.launchを実行してRvizでURDFを見ようと思ったら下記エラーが発生し、↑のスクショの通りモデルが真っ白で正常に表示されなくなった。 [ERROR]: Could not find the GUI, install the 'joint_state_publisher_gui' package Rvizの画面ではRobotModelに…

VRからロボットを操作する記事を書きました

ちょっと前の話だけど、HMDとコントローラで構成されたVR機器でロボットを操作した。簡単に言えば僕の手の位置と頭の向きをロボットが真似するやつ。その際趣味TECHオンラインというサイトにお誘いいただいたので、記事を書いた。 動いている様子 記事にも載…

自分の代わりに判子を押してくれるロボットを作る

クワマイの名の下に勝手に判子を押すロボットをお友達と作った。ハッシュタグ付けてTweetするとロボットが書類っぽく印刷して押印、写真にとってTweetで送り返してくれるもの。この記事はロボットの特徴と思い出の記録。 動いてる様子 珍しく動画内で色々解…

VSCodeでURDFをプレビューしながら書く

以前記事を書いたURDFとxacro(XML macro)はロボットのシミュレーションに必要な形状とか物理特性、センサーやアクチュエータなどを記述できる形式。確認のためにいちいちrvizを起動してたけど、Visual Studio CodeのROS向けExtensionsにURDFをプレビューする…

キーボードでロボット操作 - teleop_twist_keyboard

ROS

前回rostopicコマンドで速度指令値をPublishしてロボットを動かした。毎回コマンドを打つのは面倒なので、ゲームみたいにキーボードで動かせるteleop_twist_keyboardを使ってみる。 動作環境 Ubuntu16.04 ROS Kinetic Kame GAZEBO 7.0.0 今回動かすロボット…

xacroでロボットを書く[3] - ロボットをGAZEBOに置く

前回は動力と摩擦係数の設定をして、走らせる準備をした。 今回は動力へ速度指令を送るControl packageと、GAZEBOシミュレータを起動するGazebo packageを作成する。 動作環境 Ubuntu16.04 ROS Kinetic Kame GAZEBO 7.0.0 練習の記録 今回やってることはこち…

xacroでロボットを書く[2] - transmissionとgazebo

前回は対向二輪型ロボットのモデルをxacroで書いた。 今回はGAZEBOで走らせるために動力と摩擦係数の設定をする。具体的にはTransmission elementでホイールを速度制御できるように設定し、Gazebo elementでロボットの摩擦係数を設定する。 動作環境 Ubuntu1…

xacroでロボットを書く[1] - jointとlink

GAZEBOでロボットをシミュレーションさせるには、ロボットの形とか質量とか色々定義する必要がある。 以前URDF(Unified Robot Description Format)で三輪車みたいな対向二輪型ロボットを書いたけど、めちゃくちゃ長くて人間が書くものじゃない。 今回マクロ…

ROS#:カメラ映像をSubscribe

UnityとROSを通信させるのに便利なROS#(ros sharp)には、ROSでPublishしたカメラ映像をUnityでSubscribeするスクリプトが用意されている。ROS#v1.2c以前とv1.3ではちょっと使い方が違うのでメモ。 動作環境 Unity動作用PC Windows 10 ROS# v1.3 Unity 2018.2…

ROS#:Objectの位置姿勢をPublish

UnityとROSを通信させるのに便利なROS#(ros sharp)には、Unity上のGameObjectの位置姿勢を配信(Publish)するスクリプトが用意されている。ROS#v1.2c以前とv1.3ではちょっと使い方が違うのでメモ。 動作環境 Unity動作用PC Windows 10 ROS# v1.3 Unity 2018.2…

ROS#:Message typeの追加

UnityとROSを通信させるのにROS#(ros sharp)を使った。Message typeを追加する方法が公式Wikiにあったので、忘れないようにメモ。 動作環境 Unity動作用PC Windows 10 ROS# v1.3 Unity 2018.2.17f1 Visual studio 2017 ROS動作用PC Ubuntu16.04 ROS Kinetic …

ROS#:UnityとROSの接続

UnityでARやVRのインターフェースを作って、ROSで動作するロボットと通信したかった。今回はROS#(ros sharp)を使ってみる。 動作環境[1] - WindowsとUbuntu Unity動作用にWindows PC、ROS動作用にUbuntu PCを用いました。 Unity動作用PC Windows 10 ROS# v1.…

RViz:"No transform from [link_name] to [map]"

ROS

作成したURDFモデルをRVizで表示する際、上のスクショのようにエラーが出る。 RobotModelにStatus Errorが生じており、各linkにはNo transform from [link_name] to [map]と表示されている。 今回はcamera_linkからmapへの座標変換ができていないみたい。 基…

簡単なGAZEBOチュートリアルまとめ

ROS

GAZEBOでロボットを作って動かすまでの手順を一通り知りたくなった。とても多機能で奥が深いけど、初心者でもわかりやすい記事がいくつか見つかった。最終的にカメラの載った3輪ロボットができた。 GAZEBOについて GAZEBOはロボットのシミュレータとしてよく…

ROSのセットアップメモ

ROS

たまにしかやらないので毎回あちこち見てセットアップすることになる。 ここにざっくり書いてみたけど、思ってたより大した手順じゃなかった。 環境 Ubuntu 16.04 ROS Kinetic Kame セットアップ 自動でROS環境のセットアップをしてくれるスクリプトが公開さ…