以下のサイトの手順に従ってRos4WinをUSBメモリにインストールしてください。
※リポジトリのURLが変わった関係でrptが正常に動作しない場合があります。修正済みでない場合はまずsrc\rpt\ros4win.pyのファイルを修正してください。
#PKG_REPO_BASE="http://hara.jpn.com/cgi/" #修正前 PKG_REPO_BASE="http://hara-jp.com/cgi/" #修正後
以下のコマンドでRos4Winをインストールしてください。
git clone https://github.com/haraisao/rpt cd rqt python src\rpt\rpt.py update python src\rpt\rpt.py install ros_base python src\rpt\rpt.py install ros_setup
最初に以下のコマンドでCMAKE_PREFIX_PATH、ROS_HOME_DRIVEの環境変数を設定します。 ここではドライブ"D:"にインストールしたUSBドライブが刺さっている前提でコマンドを示していますが、違うドライブに刺さっている場合は"D:"の部分をそのドライブ名に変更してください。
set ROS_HOME_DRIVE=D: set CMAKE_PREFIX_PATH=%CMAKE_PREFIX_PATH%;%ROS_HOME_DRIVE%/opt/ros/melodic/share
以降の作業の前に以下のコマンドでROSの環境を設定します。
D:\opt\ros\melodic\ros_setup.bat
CMake実行時にROS_ENABLEのオプションをONにします。
cmake -DORB_ROOT=C:/workspace/omniORB-4.2.3-win64-vc14 -DCORBA=omniORB -G "Visual Studio 16 2019" -A x64 -DROS_ENABLE=ON ..
その他の手順は通常と同じです。
ビルド後にインストールしてください。
cmake --build . --config Release --target install
以下のrtc.confを作成します。
manager.modules.load_path: C:\\workspace\\openrtm\\build_omni\\devel\\bin\\Release manager.modules.preload: ROSTransport.dll manager.components.preconnect: ConsoleOut0.in?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleOut0, ConsoleIn0.out?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleIn0 manager.components.preactivation: ConsoleOut0, ConsoleIn0
OpenRTM-aistのシリアライザーモジュール(ROSTransport.dll)が対応しているメッセージ型は以下のようになります。
RTCを起動して動作確認します。 以下のコマンドでClinkを起動してください。
D:\opt\start_ros.bat
以降の作業はClink上で実行します。
以下のファイルを実行します。この時上記の変更をしたrtc.confは、VC14等のOpenRTM-aistをインストール時に指定したVisual Studioのバージョンに関連したのフォルダー(デフォルトではExamplesの下のVC14)に実行するexeファイルがありますので、そこと同じディレクトリに置くようにしてください。
${OpenRTM_INSTALL_DIR}\2.0\Components\C++\Examples\ConsoleInComp.exe ${OpenRTM_INSTALL_DIR}\2.0\Components\C++\Examples\ConsoleOutComp.exe
以下のコマンドでインストールしてください。
$ export ROS_DISTRO=melodic $ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' $ sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 $ sudo apt-get -y update $ sudo apt-get -y install ros-${ROS_DISTRO}-ros-base $ sudo rosdep init $ rosdep update
ROS用にbashの設定を以下のように行います。(次回以降のbash起動時の設定と、現在実行中のbashの設定を行います。)
$ echo "source /opt/ros/${ROS_DISTRO}/setup.bash" >> ~/.bashrc $ source ~/.bashrc
CMake実行時にROS_ENABLEのオプションをONにします。
$ cmake -DCORBA=omniORB -DCMAKE_BUILD_TYPE=Release -DROS_ENABLE=ON ..
その他の手順は通常と同じです。
ビルド後にインストールしてください。
$ cmake --build . --target install
以下のrtc.confを作成します。このファイルは下記のRTCコンポーネントを起動する時に使うカレントワーキングディレクトリにおいてください。
manager.modules.load_path: /usr/local/lib/openrtm-2.0/transport/ manager.modules.preload: ROSTransport.so manager.components.preconnect: ConsoleOut0.in?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleOut0, ConsoleIn0.out?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleIn0 manager.components.preactivation: ConsoleOut0, ConsoleIn0
OpenRTM-aistのシリアライザーモジュール(ROSTransport.so)が対応しているメッセージ型は以下のようになります。
ConsoleInComp、ConsoleOutCompを起動して動作確認します。
それぞれ別のターミナルから起動してください。
$ /usr/local/share/openrtm-2.0/components/c++/examples/ConsoleInComp
$ /usr/local/share/openrtm-2.0/components/c++/examples/ConsoleOutComp
以下のページに従ってROSをUSBメモリにインストールしてください。
OpenRTM-aist 1.2等をインストーラーでインストールしておいてください。 OpenRTM-aist Python版のソースコードを入手してください。
以下のコマンドでOpenRTM-aist Python版をインストールしてください。
python setup.py build python setup.py install
start_ros.batを2回実行して、ROSの環境設定をしたウインドウを2つ開いてください。
D:\opt\start_ros.bat
片方のウインドウでroscoreを起動します。
roscore
もう片方のウインドウでOpenRTM-aistをインストールしたディレクトリをPYTHONPATHに設定します。
set PYTHONPATH=%PYTHONPATH%;C:\Python37\Lib\site-packages;C:\Python37\Lib\site-packages\OpenRTM_aist;C:\Python37\Lib\site-packages\OpenRTM_aist\utils;C:\Python37\Lib\site-packages\OpenRTM_aist\RTM_IDL
以下のrtc.confを作成します。(rtc.confはRTCのexeファイルが実行される時のディレクトリに作成してください。サンプルバッチファイルを使う場合は、バッチファイルから起動されるexeファイルが置かれているディレクトリになります。)
manager.modules.load_path: C:\\Python37\\Lib\\site-packages\\OpenRTM_aist\\ext\\transport\\ROSTransport manager.modules.preload: ROSTransport.py manager.components.preconnect: ConsoleOut0.in?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleOut0, ConsoleIn0.out?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleIn0 manager.components.preactivation: ConsoleOut0, ConsoleIn0
OpenRTM-aistのシリアライザーモジュール(ROSTransport.py)が対応しているメッセージ型は以下のようになります。
上記のrtc.confを用いてRTCを起動して動作確認してください。
C++版と同じ手順でROSをインストールしてください。
以下のパッケージをインストールしてください。
$ sudo apt-get install python-omniorb-omg omniidl-python doxygen
以下のコマンドでOpenRTM-aist Python版をインストールします。
$ git clone https://github.com/OpenRTM/OpenRTM-aist-Python $ cd OpenRTM-aist-Python $ python setup.py build $ sudo python setup.py install
以下のrtc.confを作成します。(rtc.confはRTCを実行する時のカレントワーキングディレクトリに作成してください。)
manager.modules.load_path: /usr/local/lib/python2.7/dist-packages/OpenRTM_aist/ext/transport/ROSTransport/ manager.modules.preload: ROSTransport.py manager.components.preconnect: ConsoleOut0.in?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleOut0, ConsoleIn0.out?interface_type=ros&marshaling_type=ros:std_msgs/Float32&ros.topic=chatter&ros.node.name=ConsoleIn0 manager.components.preactivation: ConsoleOut0, ConsoleIn0
OpenRTM-aistのシリアライザーモジュール(ROSTransport.py)が対応しているメッセージ型は以下のようになります。
以下のコマンドでRTCを起動して動作確認してください。
$ python /usr/local/share/openrtm-2.0/components/python/SimpleIO/ConsoleIn.py
$ python /usr/local/share/openrtm-2.0/components/python/SimpleIO/ConsoleOut.py
データポート接続時のコネクタプロファイルに設定できるオプションは以下の通りです。
オプション名 | デフォルト値 | オプション | 内容 |
marshaling_type | シリアライザの種類。ros:std_msgs/Float32などが設定できる。 | ||
ros.topic | chatter | トピック名 | |
ros.roscore.host | localhost | ROS Masterのホスト名 | |
ros.roscore.port | 11311 | ROS Masterのポート番号 | |
ros.node.name | ROSノードの名前 | ||
ros.node.anonymous | NO | YES,NO | |
ros.so_keepalive | YES | YES,NO | |
ros.tcp_nodelay | YES | YES,NO | YES:ROSノード名をUUIDで設定、NO:ROSノードをrtcompに設定 |
ros.tcp_keepcnt | 9 | ||
ros.tcp_keepidle | 60 | ||
ros.tcp_keepintvl | 10 |
データポート接続時のコネクタプロファイルに設定できるオプションは以下の通りです。
オプション名 | デフォルト値 | オプション | 内容 |
marshaling_type | シリアライザの種類。ros:std_msgs/Float32などが設定できる。 | ||
ros.topic | chatter | トピック名 | |
ros.roscore.host | localhost | ROS Masterのホスト名 | |
ros.roscore.port | 11311 | ROS Masterのポート番号 | |
ros.node.name | ROSノードの名前 | ||
ros.node.anonymous | NO | YES,NO | |
ros.so_reuseaddr | YES | YES,NO | |
ros.so_keepalive | YES | YES,NO | |
ros.tcp_nodelay | YES | YES,NO | YES:ROSノード名をUUIDで設定、NO:ROSノードをrtcompに設定 |
ros.tcp_keepcnt | 9 | ||
ros.tcp_keepidle | 60 | ||
ros.tcp_keepintvl | 10 | ||
ros.sock.timeout | 60 |
OpenRTM-aistをビルド、インストールすると、ROSTransportの簡単な動作確認用の設定ファイルがインストールされます。
D:\opt\ros\melodic\ros_setup.bat roscore
D:\opt\ros\melodic\ros_setup.bat %RTM_ROOT%\ext\environment-setup.omniorb.vc16.bat %RTM_ROOT%\Components\C++\Examples\vc16\ConsoleOutComp.exe -f %RTM_ROOT%\ext\transport\rtc.ros.conf
source /opt/ros/melodic/setup.bash roscore
source /opt/ros/melodic/setup.bash source ${OPENRTM_INSTALL_DIR}/etc/environment-setup.sh ${OPENRTM_INSTALL_DIR}/share/openrtm-2.0/components/c++/examples/ConsoleOutComp -f ${OPENRTM_INSTALL_DIR}/etc/transport/rtc.ros.conf
ROS,ROS2通信機能を使用する場合、以下のROS/ROS2メッセージ型に対応のシリアライザをOpenRTM-aistは備えています。以下のメッセージ型以外が必要な場合は、そのメッセージ型に変換するシリアライザを独自に実装してください。
シリアライザ名 | RTMデータ型 | ROS,ROS2メッセージ型 |
ros:std_msgs/Float32, ros2:std_msgs/Float32 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/Float32 |
ros:std_msgs/Float64, ros2:std_msgs/Float64 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/Float64 |
ros:std_msgs/Int8, ros2:std_msgs/Int8 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/Int8 |
ros:std_msgs/Int16, ros2:std_msgs/Int16 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/Int16 |
ros:std_msgs/Int32, ros2:std_msgs/Int32 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/UInt8 |
ros:std_msgs/Int64, ros2:std_msgs/Int64 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/UInt16 |
ros:std_msgs/UInt32, ros2:std_msgs/UInt32 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/UInt32 |
ros:std_msgs/UInt64, ros2:std_msgs/UInt64 |
TimedState,TimedShort, TimedLong,TimedUShort, TimedULong,TimedFloat, TimedDouble |
std_msgs/UInt64 |
ros:std_msgs/Float32MultiArray, ros2:std_msgs/Float32MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Float32MultiArray |
ros:std_msgs/Float32MultiArray, ros2:std_msgs/Float32MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Float32MultiArray |
ros:std_msgs/Float64MultiArray, ros2:std_msgs/Float64MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq, TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Float64MultiArray |
ros:std_msgs/Int8MultiArray, ros2:std_msgs/Int8MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Int8MultiArray |
ros:std_msgs/Int16MultiArray, ros2:std_msgs/nt16MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Int16MultiArray |
ros:std_msgs/Int32MultiArray, ros2:std_msgs/Int32MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Int32MultiArray |
ros:std_msgs/Int64MultiArray, ros2:std_msgs/Int64MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/Int64MultiArray |
ros:std_msgs/UInt8MultiArray, ros2:std_msgs/UInt8MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/UInt8MultiArray |
ros:std_msgs/UInt16MultiArray, ros2:std_msgs/UInt16MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/UInt16MultiArray |
ros:std_msgs/UInt32MultiArray, ros2:std_msgs/UInt32MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/UInt32MultiArray |
ros:std_msgs/UInt64MultiArray, ros2:std_msgs/UInt64MultiArray |
TimedShortSeq,TimedLongSeq, TimedUShortSeq,TimedULongSeq, TimedFloatSeq,TimedDoubleSeq |
std_msgs/UInt64MultiArray |
ros:std_msgs/String, ros2:std_msgs/String |
TimedString | std_msgs/String |
ros:geometry_msgs/PointStamped, ros2:geometry_msgs/PointStamped |
TimedPoint3D | geometry_msgs/PointStamped |
ros:geometry_msgs/QuaternionStamped, ros2:geometry_msgs/QuaternionStamped |
TimedQuaternion | geometry_msgs/QuaternionStamped |
ros:geometry_msgs/Vector3Stamped, ros2:geometry_msgs/Vector3Stamped |
TimedVector3D | geometry_msgs/Vector3Stamped |
ros:sensor_msgs/Image, ros2:sensor_msgs/Image |
CameraImage | sensor_msgs/Image |