Using Gazebo11 with ROS1 Melodic

Gazebo 11이 지난 달에 릴리즈 되었습니다. 이 버전이 Gazebo의 마지막 릴리즈 버전이고, 이후론 지원 기간까지 새로운 기능보단, 주로 버그 수정 등만 지원됩니다. 새로운 Ignition Gazebo가 나올 예정인데, 이는 Ignition Robotics라는 곳에서 업데이트 등을 지원할 예정입니다.

현재의 ROS의 최근 LTS 버전은 Melodic으로, 공식적으론 Gazebo 9만 지원합니다. 따라서 Gazebo 11을 사용하기 위해선 ROS와 연동하기 위한 패키지들을 새로 빌드해줘야 합니다.


ROS1 Melodic이 설치된 상태에서, Gazebo 11을 설치하려면 패키지의 의존성 등을 고려하여 다음과 같이 입력합니다.

$ sudo apt install gazebo11 libgazebo11 gazebo11-common libgazebo11-dev 

이러면, Gazebo 9은 자동으로 제거가 되고, Gazebo 11이 설치됩니다.

이제 ROS와 연동하기 위한 gazebo_ros_pkgs를 새로 받아 빌드합니다.

catkin workspace 내에서 작업해야 하므로,

$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git
$ cd gazebo_ros_pkgs
$ git checkout melodic-devel
$ catkin build 

빌드가 완료되면, 예전과 같이 정상적으로 ROS1과 연동하여 사용이 가능합니다. 플러그인도 사용 가능.

$ roslaunch gazebo_ros empty_world.launch

위와 같이 설치를 하게 되면, ros-melodic-desktop-full의 의존성이 깨지므로, apt를 사용할때 autoremove로 ROS 패키지들을 자동으로 지우게끔 유도하게 되는데 이를 해결하려면,

$ sudo apt install ros-melodic-perception ros-melodic-desktop ros-melodic-ros-control ros-melodic-ros-controllers

와 같이 각각의 패키지들을 설치하면 해결되고, 그 외의 패키지는 필요없는 것들이니 지워도 무방합니다.

끝.

Blockly 2019 Q4 Release

Blockly도 그동안 계속 버전 패치를 해왔는데, 이번 2019 Q4 릴리즈에선 약간 더 큰 변화를 가지고 릴리즈 되었습니다.

https://groups.google.com/forum/#!searchin/blockly/npm%7Csort:date/blockly/cOxLdS7vX-c/bq-KIyBXAAAJ

Zelos라는 렌더링 엔진을 사용하는 것인데, 기존 렌더링 엔진인 Geras를 보완하여 개발하였습니다. 블럭들의 모습이 Scratch의 그것들과 상당히 유사해졌고, 실시간으로 블럭을 그려서 사용하다보니 좀더 예쁜? 모습을 보여줍니다.

각 렌더링 엔진에 대한 설명은 다음의 슬라이드에서 참고.

https://docs.google.com/presentation/d/1nNk0DYT_aeMxKS7BVfAZxpQSOmwBu9XuG96oezrp_Ss/edit#slide=id.g40d1aecc4e_0_470

여하튼 기존 개발 환경 구축과 마찬가지로 소스를 가지고와 옵션을 살짝 건드려주면? 다음과 같은 모습을 보여줍니다.

렌더링 엔진을 선택하는 부분은 Blockly를 인젝션하는 부분에 옵션을 다음과 같이 추가해주면 됩니다.

    var workspacePlayground = Blockly.inject('blocklyDiv', {

      toolbox: BLOCKLY_TOOLBOX_XML['standard'],
      media: '/blockly/media/',
      trashcan: true,
      zoom: {
        controls: true,
        wheel: true,
        startScale: 0.7,
        maxScale: 3,
        minScale: 0.3,
        scaleSpeed: 1.2
      },
      renderer : "zelos"
    });

끝.

Realsense D400 시리즈 최적 사용 방법

Reference

RGB-D 카메라 중, 최근 많이 사용되고 있는 인텔 리얼센스 D400 시리즈 중 D435 모델을 사용하고 있다. 대부분 ROS를 이용해서 사용하는만큼 그냥 기본 옵션을 주로 사용하고 있었는데, 최근 카메라 관련 자료를 찾아보다가 위의 링크의 문서를 보게 되었다.

결론부터 알아보면, 카메라의 스펙을 고려하여 그에 해당하는 옵션을 선택해서 사용하는 것이 가장 좋은 품질의 Depth 데이터를 얻을수 있다는 얘기다.


  1. Depth의 해상도는 848×480으로 한다. (D415의 경우 1280×720) 그 이외의 해상도를 선택하면 저 해상도를 기준으로 하여 스케일링한 후 출력을 내보내는 듯 하다. 만약 사용하려는 알고리즘의 성능을 고려하여 해상도를 낮춰야 한다면, 저 native 해상도로 받은 후, 후처리를 통해 해상도를 낮추는 것을 더 추천한다고 한다. (흐음~)
  2. 카메라를 사용하는 환경의 조명을 개선한다. (조명 조건이 좋을수록 Depth 데이터의 품질도 좋아진다.
  3. 사용하려는 물체의 위치를 카메라에 가능한 가깝게 하도록 노력한다. D400 시리즈 모델의 경우 IR 패턴광을 사용하여 Depth 정보를 계산하는만큼, 거리가 멀어지면 멀어질수록 오차는 기하급수적으로 심해진다.
  4. 여러 개의 카메라를 사용한다. (이건 좀 이해가 안가는데…) 암튼 FOV를 커버하기 위해서 여러 개의 카메라를 사용하는 것을 추천한다. D400 시리즈의 경우 여러개의 카메라를 사용해도 상관이 없고, 만약 하드웨어 동기화 기능을 사용할 경우, 카메라에 위치한 별도의 커넥터를 사용하여 연결하면, master-slave 관계를 설정하여 사용 가능하다.
  5. post-processing를 적극 활용한다.

대략 이 정도인듯.

realsense_ros (https://github.com/IntelRealSense/realsense-ros) 패키지를 사용하는 경우, 위 사항을 고려하여 사용한다면, 다음과 같이 사용하면 됨.

$ roslaunch realsense2_camera rs_camera.launch enable_pointcloud:=true color_width:=848 color_height:=480 color_fps:=60 depth_width:=848 depth_height:=480 depth_fps:=60 infra_width:=848 infra_height:=480 infra_fps:=60 align_depth:=true filters:="spatial

물론 roslaunch의 arguments를 사용하면 좀더 이쁘게 만들수도 있을듯.

덧:

현재 librealsense2 패키지의 최신 버전은 커널 5.0대에서 사용할 때, Pointcloud를 제대로 읽어오지 못함. 따라서 문제가 해결될때까지 2.30 버전을 사용하는 것을 권장.

Build and Install OpenCV 4.2.0 on Ubuntu with GPU support

Current OpenCV version only support CUDA 10.1.

Download sources

$ wget https://github.com/opencv/opencv/archive/4.2.0.tar.gz
$ wget https://github.com/opencv/opencv_contrib/archive/4.2.0.tar.gz

Extract the compressed files

$ tar zxf opencv-4.2.0.tar.gz
$ tar zxf opencv_contrib-4.2.0.tar.gz

CMake configuration

$ cd opencv-4.2.0
$ mkdir build
$ cd build
$ cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.2.0/modules -DWITH_CUDA=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release ..

Build

$ make -j8

It takes 15 ~ 20 minutes. And install,

$ sudo make install

Check installations

$ opencv_version 
4.2.0

$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2
<module 'cv2' from '/usr/local/lib/python3.6/dist-packages/cv2/python-3.6/cv2.cpython-36m-x86_64-linux-gnu.so'>
>>> 

Done.