ラベル ROS の投稿を表示しています。 すべての投稿を表示
ラベル ROS の投稿を表示しています。 すべての投稿を表示

2021年6月10日木曜日

モーションキャプチャFlex13で取得した剛体の位置姿勢をROSで扱いたい

OptiTrackのモーションキャプチャ(MC)「Flex 13」で取得したデータをROSでTopic,TFとして扱いたい.これはFlexシリーズだけではなくPrimeシリーズでも,Motiveを使用している場合は同じ処理を行えば良い.

環境をざっくり.
Windows10 PC(Motive要求スペック)
Ubuntu 18.04 PC (ROS 1 Melodic)

WinでMotiveを使用してMCのデータを取得し,剛体設定している剛体の座標をUbuntuで受け取りROSで扱うことが目標です.と言っても公式が出している情報通りで英語が読めればOK.

今回は
OptiTrack (NatNet) streaming engine with mocap_optitrack ROS package
すなわち,Motiveにデフォルトで用意されている機能を使用して目標を達成する.

WinとUbuntuは同じネットワークに接続する.
通常通りMotiveで撮影環境のキャリブレーションと剛体設定を行う.
View > Assets Pane をクリックし表示されるAssets Paneで剛体の名称を設定する(ここでは1).
View > DataStreaming Pane をクリックし表示されるStreaming Paneでストリーミング情報を設定する.まずはPaneの3点リーダをクリックし,Show Advancedをクリックする.
  • Broadcast Frame Data: On
  • Local Interfaces: Win PCのIPアドレス
  • Labeled Markers: 必要に応じて
  • Unlabeled Markers: 必要に応じて
  • Asset Markers: 必要に応じて
  • Rigid Bodies: On(剛体の情報をストリームする)
  • Skeletons: 必要に応じて
  • Skeleton Coordinates: 必要に応じて
  • Skeleton As Rigid Bodies: 必要に応じて
  • Bone Naming Convention: 必要に応じて
  • Up Axis: Y Up(デフォルトのY UpでROS上ではZ Upで表示される)
  • Remote Trigger: 必要に応じて
  • Transmission Type: Multicast
  • Subject Prefix: 必要に応じて
  • Visual3D Compatible: 必要に応じて
  • Scale: 1
  • Command Port: 1510
  • Data Port: 1511(mocap_optitrackのデフォルトに合わせる)
  • Multicast Interface: 244.0.0.1(mocap_optitrackのデフォルトに合わせる)
  • Multicast as Broadcast: On
  • Soket Size: 1000000
  • VRPN Streaming Engine: Off
  • Trackd Streaming Engine: Off
この設定でLive録画を開始する,またはEDITで再生するとローカルネットワーク上に剛体の位置姿勢がストリーミングされる.

次にROS側の設定を行う.
適当なワークスペースのsrcにで
git clone git@github.com:ros-drivers/mocap_optitrack.git
して,ワークスペースをcatkin_makeする.
ワークスペース/src/mocap_optitrack/config/mocap.yamlを編集する.

rigid_bodies: '1': pose: Robot_1/pose pose2d: Robot_1/ground_pose
        odom: Robot_1/Odom
        tf: tf child_frame_id: Robot_1/base_link parent_frame_id: map optitrack_config: multicast_address: 224.0.0.1
        command_port: 1510
        data_port: 1511
        enable_optitrack: true

以上の設定で
$ roslaunch mocap_optitrack mocap.launch
すると.ymalで設定したトピックにそれぞれの情報がPublishされ,
RvizでRobot_1のbase_linkが表示可能になる.

以上.

追記:
MotiveのPropaties->General Settings->Streaming IDが1になっていることを確認する.

2019年9月9日月曜日

ROSでRealsenseを使ってPointCloud型でメッセージを発行する

ROSでRealsenseを使うときに使用するパッケージ,launchファイルをオプションなしで実行するとPointCloud型のtopicが発行されない.
PointCloud型を発行したい場合は

$ roslaunch realsense2_camera rs_camera.launch filters:=pointcloud

これでsensor_msgs/PointCloud2型で
/camera/depth/color/points
が発行される.

…何か処理が重くなった

2019年6月17日月曜日

RealSenseのパッケージをWSでcatkin_makeしようとしたパッケージが無いと怒られた

ROS KineticでRealSenseを使えるようにする.
まずはRealSenseのSDKをインストールする.
https://github.com/IntelRealSense/librealsense/blob/master/doc/distribution_linux.md
次にROS Wrapperを入れる.
https://github.com/IntelRealSense/realsense-ros

ここでcatkin_makeしようとしたら,
could not find a package configuration file provided by ddynamic_reconfigure
と怒られた.
必要なパッケージがインストールされていないようなので自動でインストールする.
$ cd catkin_ws
$ rosdep install -r --from-path src --ignore-src
するとcatkin_makeが通った.
RVizでも無事にDepthCloudで表示できることを確認.

2019年6月13日木曜日

apt updateで公開鍵がないですよと怒られた

Ubuntu16.04にROS Kineticをインストールしているが,apt updateしようとしたら以下のエラーが出た.

the following signatures couldn't be verified because the public key is not available: NO_PUBKEY F42ED6FBAB17C654

公開鍵が悪さをしているようなので一旦公開鍵を削除して
$ sudo apt-key del F42ED6FBAB17C654
改めて公開鍵を登録した.
$ sudo apt-key adv --keyserver 'hkp://ha.pool.sks-keyservers.net:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

これでapt updateが通った.

2019年6月12日水曜日

【実行途中】ROS@UbuntuとWindowsで通信する

まずは下調べ.
こんな質問を発見
RosSharpでwindowsとlinuxのRos通信を行いたい
RosSharp?それは知らなかった.ということで
RosSharp Documentation (Japanese)
やりたいことはTopicのPublishとSubscribeだけなのでこれでなんとかなりそう?
問題はWindowsがXPだということ(ソフトの問題).
ならばシリアル通信で解決してみる?幸いROSにはシリアル通信のパッケージがあるし.

TCP通信というパターンも
Windows-Linux間をTCPで通信する

ソケット通信
【開発メモ~C言語でLinuxサーバーとWindowsクライアントでソケット通信してみた~】

【実行途中】RealSense D415をROS2 Crystal @ Ubuntu18.04で動かしたい

まずはROS2関係なしにRealSenseの映像をViewerで見れるようにする.
https://github.com/IntelRealSense/librealsense/blob/ros2debian/doc/distriution_linux.md
に書いてある通りに進める.こっちを先にやっておかないと-lrealsense2が無いと喚かれる.

次にhttps://github.com/intel/ros2_intel_realsense
の通りに進める.

ros2 run realsense_ros2_camera realsense_ros2_camera
を実行したところ
An exception has been thrown: API version mismatch: librealsense.so was compiled with API version 2.21.0 but the application was compiled with 2.16.5! Makesure correct version of the library is installed.
と怒られた.

2019年1月29日火曜日

ROSでTF_OLD_DATAのエラーが出た

ROSでTF_OLD_DATAのエラーが出た.見てるとROS::TIMEが更新されていないように見える.まず原因として考えられるのはuse_sim_timeがtrueになっていること.しかし,そんなの一旦全部殺せば解決する.

今回の原因はubuntuをapt upgradeしたときにROS関連が更新されて,make済みのプログラム中の時間読み取りができなくなっていたようだ.すべてのワークスペースをcatkin_makeで解決.

2017年6月23日金曜日

ROSのtopicを他のPCからRVizで確認したくて2台のPCでを接続する

表題の通りROSを2台のPCで走らせてトピックをやり取りします(正しくは1台のPC上で走っているroscoreに他が接続する).何故やろうと思ったかというとロボットに組み込んだPCでSLAMを走らせているのだけれどリアルタイムでMAPの様子を確認したいから(ssh -Xでやっても良いのだけれどいかんせん重たくなる).ですのでロボット側がマスターとします.

ロボットPC
$ export ROS_HOSTNAME=robot_ip_adress
$ export ROS_MASTER_URI=http://robot_ip_adress:11311
$ roscore
これどうやら全てのターミナルでやる必要があるので~/.bashrcに
$ export ROS_HOSTNAME=robot_ip_adress
$ export ROS_MASTER_URI=http://robot_ip_adress:11311
の二行を最下部に書いてしまいましょう.

次に観測用のPC
$ export ROS_HOSTNAME=observer_ip_adress
$ export ROS_MASTER_URI=http://robot_ip_adress:11311
$ rosrun rviz rviz

これでO.K.