ROS Gazebo(classic)에 다른 physics engine 적용하기

The CoordConv layer

ROS Gazebo에서 DART physics engine을 적용하는 방법

  아직 완벽하게 적용하진 못 하여 roslaunch 를 실행시켰을 때 터미널에 오류가 나긴 하지만('문제점' 참고) 어쨌든 DART가 적용되어 내가 시도했던 방법을 기록해 보았다.
 

CMakeLists.txt 파일 수정

  • ROS integration overview에서 CMakeLists.txt부분을 참고하여 내가 생성했던 패키지 CMakeLists.txt에서 빠진 부분을 추가했다.(ROS 패키지 생성은 여기를 참고했다.) 다만, 링크에 있는 것들을 다 넣어주었을 때는 catkin_make실행 씨 빌드가 안 되는 오류가 발생했다. 아래 부분을 제외하고 반영했더니 catkin_make가 제대로 실행되었다.
                            # Depend on system install of Gazebo
                            find_package(gazebo REQUIRED)
                        
  • 내가 반영한 부분
                            find_package(catkin REQUIRED COMPONENTS
                                gazebo_ros
                            )
    
                            include_directories(include ${catkin_INCLUDE_DIRS} ${GAZEBO_INCLUDE_DIRS} $SDFormat_INCLUDE_DIRS})
    
                            catkin_package(
                                DEPENDS
                                gazebo_ros
                                CATKIN_DEPENDS
                                INCLUDE_DIRS
                                LIBRARIES
                            )
                        

CUSTOM월드.world 파일 수정

  • physics type을 'dart'로 명명하여 추가한다.
                            
                                <physics type='dart' default="True" >
                                    <dart>
                                    <solver>
                                        <solver_type>"dantzig"</solver_type >
                                    </solver>
                                    </dart>
                                    <max_step_size>0.001</max_step_size>
                                    <real_time_factor>1</real_time_factor>
                                    <real_time_update_rate>1000</real_time_update_rate>
                                    <max_contacts>20</max_contacts>
                                </physics>
                            
                        
  • roslaunch를 실행하기 전에 . ~/catkin_ws/devel/setup.bash를 입력해 주어야 내가 .world파일에서 수정했던 부분이 반영되는 거 같다.

문제점

  • [gazebo-2] process has died [pid 99441, exit code 255, cmd /home/bak/catkin_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts/gzserver -u -e ode /home/bak/catkin_ws/src/myrobot_gazebo/worlds/myrobot.world __name:=gazebo __log:=/home/bak/.ros/log/33e9216c-2771-11ed-8649-31c30882ee00/gazebo-2.log].
    log file: /home/bak/.ros/log/33e9216c-2771-11ed-8649-31c30882ee00/gazebo-2*.log
    와 같은 에러가 발생한다. (시뮬레이션 작동은 됨)
  • 분명히 launch 파일에서 name="paused" default="True"를 적용해줬음 에도 DART로 physics engine이 바뀌면 설정한 것과 상관 없이 실행과 동시에 simulation이 시작한다.

댓글

이 블로그의 인기 게시물

로봇의 작업영역(Workspace)

yes24 [뷰어 서버의 기본정보가 존재하지 않습니다.] 오류 해결

Semicolon ; 이 함수 정의에서 나타내는 의미