ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

Ubuntu18.04でROSとPCLとKinectを試す

PCLを使ってみたかったので、とりあえずROSというミドルウェアから
試してみる。
以下、チュートリアルやネットにあるサンプルを試してみたときのログ。

環境構築

環境

Ubuntu18.04
ROS Melodic
kinect for windows

Instlation

melodic/Installation/Ubuntu - ROS Wiki

ROSインストール

$ 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 update
$ sudo apt install ros-melodic-desktop-full
$ sudo rosdep init
$ rosdep update
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

libfreenectインストール

$ wget https://github.com/ros-drivers/libfreenect/archive/ros-devel.zip
$ unzip ros-devel.zip
$ cd libfreenect-ros-devel
$ mkdir build
$ cd build
$ cmake -L ..
$ make
$ sudo make install

#$ cd ../platform/linux/udev/
#$ sudo cp 51-kinect.rules /etc/udev/rules.d
#$ sudo udevadm trigger

rbgd_launchとfreenect_stackをインストール

$ cd ~
$ mkdir -p ~/catkin_ws/src
$ cd catkin_ws/src
$ git clone https://github.com/ros-drivers/rgbd_launch
$ git clone https://github.com/ros-drivers/freenect_stack.git
$ cd ..
$ catkin_make
$ source devel/setup.bash

実行

別端末でtopicをpublishする。

$ source ~/catkin_ws/devel/setup.bash
$ roslaunch freenect_launch freenect.launch

可視化する

rqt_image_viewで可視化する場合

$ source ~/catkin_ws/devel/setup.bash
$ rosrun rqt_image_view rqt_image_view

rvizで可視化する場合

$rosrun rviz rviz

1.左上のFixed Frameをcamera_depth_frameにする。
2.左下のAddボタンからPointCloud2を選択する。
3.PointCloud2->Topicを/camera/depth_registered/pointsにする。
4.PointCloud2->StyleをPointsにする。

チュートリアルを試す(catkin編)

http://wiki.ros.org/pcl/Tutorials#pcl.2BAC8-Tutorials.2BAC8-hydro.pcl.2BAC8-PointCloud.3CT.3E

公式にはcatkinとrosbuildの両方あるがcatkinが後発らしい。

ROSパッケージを作成する

$ cd ~/catkin_ws/src
$ catkin_create_pkg my_pcl_tutorial pcl_conversions pcl_ros roscpp sensor_msgs 

package.xmlに下記を追加する($ gedit my_pcl_tutorial/package.xml )

 <build_depend>libpcl-all-dev</build_depend>
 <exec_depend>libpcl-all</exec_depend>

example.cppを作成する(公式チュートリアル2番目)

$  gedit my_pcl_tutorial/src/example.cpp

CMakeLists.txtに下記を追加する($ gedit my_pcl_tutorial/CMakeLists.txt )

add_executable(example src/example.cpp)
target_link_libraries(example ${catkin_LIBRARIES})

ビルドする

$ ~/catkin_ws
$ catkin_make

別端末でマスターを実行しておく

$ roslaunch freenect_launch freenect.launch

my_pcl_tutorialを実行する

rosrun my_pcl_tutorial example input:=/narrow_stereo_textured/points2

さらに別端末からrvizを実行する

$ rosrun rviz rviz

その他の例

https://staff.aist.go.jp/kanezaki.asako/pdf/SSII2016_AsakoKanezaki.pdf

$ cd ~/catkin_ws/src
$ catkin_create_pkg save_pcd pcl_ros cv_bridge roscpp sensor_msgs 

package.xmlに下記を追加する($ gedit save_pcd/package.xml )

<build_depend>opencv2</build_depend>
<exec_depend>opencv2</exec_depend>

CMakeLists.txtに下記を追加する($ gedit save_pcd/CMakeLists.txt )

add_executable(save_pcd src/save_pcd.cpp)

find_package(OpenCV REQUIRED)
include_directories(/usr/local/include ${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
target_link_libraries(dfollow ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})

save_pcd.cppを作成する(https://github.com/kanezaki/ssii2016_tutorial/blob/master/save_pcd.cpp)

$ gedit save_pcd/src/save_pcd.cpp

ビルドする

$ ~/catkin_ws
$ catkin_make ※1

別端末でマスターを実行しておく

$ roslaunch freenect_launch freenect.launch

my_pcl_tutorialを実行する

$ rosrun save_pcd save_pcd

pcdが保存されていく。Ctrl+cで止める。
pclviewerで保存された0.pcdを表示する。

$ sudo apt install pcl-tools
$ pcl_viewer 0.pcd