- Ubuntu 16.04
- CUDA 8.0
- Intel Core i7-8700
- GeForce GTX 1080
- RAM 32GB
$ cd hitachi_ipc/ros
$ rosdep update
$ rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
$ catkin_make -DCMAKE_BUILD_TYPE=Release
- ターミナルを3つ起動する
- 全ての端末で
hitachi_ipc/ros/devel/setup.bash
をsource
で読み込む
$ source /path/to/hitachi_ipc/ros/devel/setup.bash
- 1つ目の端末(端末1)で
gpu_manager
を起動する。生点群をGPUに転送し、生点群を必要とするノードと共有する
$ rosrun ipc gpu_manager
- 2つ目の端末(端末2)で
voxelgridfilter
を起動する。GPU上の生点群をダウンサンプルし、ダウンサンプルされた点群を必要とするノードと共有する
$ rosrun ipc voxelgridfilter
- この段階で
gpu_manager
とvoxelgridfilter
が通信を行いGPUメモリを共有する。端末1ではRecieved ready
、端末2ではPublished ready
と表示されていれば成功 - 3つ目の端末(端末3)で
ndt_node
を起動する。GPU上のダウンサンプルされた点群をCPUに転送しsensor_msgs::PointCloud2
型のトピック/filtered_points
としてPublishする - 端末2では
Recieved ready
、端末3ではPublished ready
と出力されていれば成功
手順5までは同様
6. distributed-autowareのfeature/cuda_ipc
ブランチをビルドする
$ git clone https://github.com/pflab-ut/distributed-autoware
$ cd distributed-autoware
$ git checkout feature/cuda_ipc
$ cd ros
$ rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
$ ./catkin_make_release
- distributed-autowareを起動する
$ ./run
- voxelgridfilterを除いて通常のndt_matchingを行う際と同様にノードを起動する。ndt_matchingの
app
でpcl_anh_gpu
を選択する。 - ndt_matchingを起動した段階で端末2に
Recieved ready
、runtime_managerの出力端末にPublished ready
と出力されていれば成功 - 以降は通常のndt_matchingを実行する際と同様