ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • webot tutorial 02 (mac)
    카테고리 없음 2020. 2. 17. 23:13

     

    https://cyberbotics.com/doc/guide/tutorial-2-modification-of-the-environment?tab-language=python

     

    Webots: tutorial-2-modification-of-the-

     

    cyberbotics.com

     

    Tutorial 2: Modification of the Environment (30 Minutes) /  환경 설정

    In this tutorial, we will teach you how to create simple objects in the environment.

    The first step will be to create a ball which will interact with the environment. We will tackle several concepts related to the nodes: what is their meaning, how to create them, how they have to be affiliated, etc. Moreover we will see how to set up physics.Several kinds of nodes will be introduced. Their detailed definition can be found in Reference Manual. Having the nodes chart diagram in front of you, will also help understanding the nodes inheritance relationship.

     

    이 학습서에서는 환경에서 간단한 오브젝트를 작성하는 방법을 알려줍니다. 첫 번째 단계는 환경과 상호 작용할 공을 만드는 것입니다. 노드와 관련된 몇 가지 개념, 즉 의미, 생성 방법, 제휴 방법 등을 다룰 것입니다. 또한 물리를 설정하는 방법도 살펴 봅니다. 여러 종류의 노드가 소개됩니다. 자세한 정의는 참조 설명서에서 찾을 수 있습니다. 노드 차트 다이어그램을 앞에두면 노드 상속 관계를 이해하는 데 도움이됩니다.

     

    INDEX

    1. A new simulation 

    2. Modifying the Floor 

    3. The Solid Node 

    4. Create a Ball 

    5. Geometries 

    6. DEF-USE Mechanism 

    7. Add walls 

    8. Solution : World File 

    9. Efficiency 

    10. Conclusion 

     

    1. A New Simulation 

    실습 # 1 : my_first_simulation.wbt 월드 파일을 열고, 시뮬레이션을 일시중지하고. 가상 시간이 0인지 확인하십시오.

    [File / Save World As ... ]메뉴를 사용하여 현재 시뮬레이션을 [obstacles.wbt]로 저장하세요. 

     

    2. Modifying the Floor

    [RectangleArena] PROTO의 기본값은 -  정적 환경, 즉 물리 노드가없고 벽으로 둘러싸인 간단한 바닥을 정의합니다.

    Webots 객체 라이브러리에서 다른 pre-built floor을 사용할 수 있습니다.

    이제 [RectangleArena] 노드를 삭제하고이 튜토리얼의 뒷부분에서 벽으로 수동으로 둘러싸는 간단한 바닥을 추가합니다.


    Hands-on # 2 :

    [RectangleArena]를 제거하려면, 왼쪽 클릭으로 3D 뷰를 선택하거나 또는 scene 트리 뷰에서 [Delete]를 누릅니다. 또는 3D 뷰에서 마우스 오른쪽 버튼을 클릭하고 상황에 맞는 메뉴에서 삭제를 선택할 수 있습니다 (장면 트리 뷰에서 직접 상황에 맞는 메뉴를 사용할 수도 있음). [TexturedBackroundLight] 노드를 선택하고 [Add]버튼을 클릭하십시오. open dialog box에서 [PROTO nodes (Webots Projects) / objects / floors / Floor (Solid)를 선택합니다.

     

    새로 추가 된 [Floor] PROTO의 기본 크기는 10mx10m이지만 해당 필드를 변경하여 크기, 위치 및 질감을 조정할 수 있습니다.

     

    Hands-on # 3 :

    Scene tree view에서 [Floor]을 선택하고 확장합니다.

    크기 필드를 수정하고 {1, 1}로 설정하여 크기를 1mx1m으로 조정하십시오.

     

    3. The Solid Node

    이 섹션에서는 Webots에서 가장 중요한 기본 노드인 Solid node를 소개합니다.이 노드는 다른 많은 노드에서 파생됩니다.
    Solid node는 [rigid body], 즉 변형을 무시할 수있는 바디를 나타냅니다. 강체의 주어진 두 지점 사이의 거리는 그에 가해지는 외부 힘에 관계없이 일정하게 유지됩니다. 예를 들어 테이블, 로봇 핑거 지골 또는 휠은 강체입니다. 연체 및 관절형 물체는 강체가 아닙니다. 예를 들어, 로프, 타이어, 스펀지 또는 관절 형 로봇 암은 강체가 아닙니다. 그러나 관절식 개체는 여러 강체로 나눌 수 있습니다.

     

    Webots의 physics engine 강체만 시뮬레이션하도록 설계되었습니다. 시뮬레이션을 설계 할 때 중요한 단계는 다양한 엔티티를 별도의 강체로 분할하는 것입니다.


    rigid body를 정의하려면 솔리드 노드를 작성해야합니다. 이 노드 안에는 강체의 특성에 따라 다른 하위 노드를 설정합니다. 다음 그림은 강체와 하위 노드를 보여줍니다. 솔리드 노드의 그래픽 표현은 해당 [children list]을 채우는 모양 노드에 의해 정의됩니다.

    충돌 경계는 [boundingObject] 필드에 정의됩니다. 그래픽 표현과 충돌 모양은 종종 동일하지만 반드시 동일하지는 않습니다.

    마지막으로 [physics] 필드는 객체가 동적 환경 또는 정적 환경에 속하는지를 정의합니다. 이러한 모든 하위 노드는 선택 사항이지만 [physics] 필드에는 [boundingObject]를 정의해야합니다

     

     Create a Ball 

     

    Hands-on # 4 : 

    장면 트리 뷰에서 마지막 노드를 선택하고 [Add] 버튼을 누릅니다. 대화 상자에서 [Bases nodes] 섹션을 열고 Solid node를 선택합니다. 장면 트리 뷰에서 Solid node를 확장하고 [children] 필드를 선택합니다. [Add] 버튼을 사용하여 [Shape] node를 추가하십시오. [appearance] 노드의 [Shape] 필드를 선택하고 [Add] 버튼을 사용하여 [PBRAppearance] 노드를 추가하십시오.
    1. [Sphere] 노드를 >> 새로 만든 [Shape] 노드의 [geometry] 필드로 추가하십시오.
    2. [PBRAppearance] 노드를 확장하고 [metalness] 필드를 0으로 변경하고 [roughness] 필드를 1로 변경하십시오.
    3. 솔리드의 [boundingObject] 필드에 다른 [Sphere] 노드를 추가하십시오.
    4. 마지막으로 [Physics] 노드를 솔리드의 [Physics] 필드에 추가하십시오.
    5. 솔리드 노드의 [translation] 필드를 수정하여, 공을 로봇 앞에 배치합니다 (예 : {0, 0.2, -0.2}).
    6. 시뮬레이션을 저장하십시오.
    7. 결과는이 그림에 나와 있습니다.

     

    시뮬레이션이 시작되면 공이 바닥에 닿습니다. 볼에 힘을 가하여 볼을 이동할 수 있습니다 (Ctrl + Alt + 왼쪽 클릭 + 드래그). 볼과 바닥 사이의 접촉점은 [View / Optional Rendering / Show Contact Points]. 

     

     

     

    공을 정의하기 위해,  [Sphere] 노드를 2가지 컨텍스트로 사용 :

    그래픽 표현 (children)과 물리적 경계 (boundingObject)의 두 가지

    [Sphere] 노드와 같은 모든 Geometry 노드는 그래픽 컨텍스트에서 사용할 수 있습니다. 그러나 실제 컨텍스트에서는 subset만 사용할 수 있습니다. [nodes chart diagram]은 각 컨텍스트에서 지원되는 노드를 나타냅니다.
    이제 Sphere의 크기를 줄이고이를 나타내는 데 사용되는 삼각형 수를 늘려 그래픽 품질을 향상시킬 것입니다.

     

    Hands-on # 5 :

    볼을 정의하는 각 [Sphere] 노드에 대해 [radius] 필드를 0.05로, [subdivision] 필드를 2로 설정합니다.

    [subdivision] 필드의 의미를 이해하려면 [Reference Manual]를 참조하십시오.

     

     

     

     

     

     

     

    DEF-USE 메커니즘을 사용하면, 한 곳에서 노드를 정의한 것을 트리의 다른 곳에서 재사용 할 수 있습니다.

    world file에서 동일한 노드의 복제를 피하는 데 유용합니다. 또한 사용자가 여러 개체를 동시에 수정할 수도 있습니다. 작동 방식은 다음과 같습니다.

    1) 먼저 노드에 DEF string이 표시됩니다.

    2) 그런 다음 USE 키워드를 사용하여 이 노드의 copy를 다른 곳에서 재사용 할 수 있습니다.

    3) DEF 노드의 필드만 편집 할 수 있으며, USE 필드는 DEF 노드에서 상속되는 것만 받습니다. (고로 변경할 수 없습니다.) 이 메커니즘은 월드 파일의 노드 순서에 따라 다릅니다. DEF 노드는 해당 USE 노드보다 먼저 정의되어야 합니다.
    4) 공을 정의하기 위해 이전에 사용한 두 개의 Sphere 정의는 중복됩니다. DEF-USE 메커니즘을 사용하여이 두 Sphere를 하나로 병합합니다.


    Hands-on # 6 :

    장면 트리 뷰에서 첫 번째 Sphere 노드 (Shape의 자식)를 선택하십시오.

    장면 트리 뷰의 [field editor]에서 DEF 문자열을 입력 할 수 있습니다.

     

    1. 이 필드에 [BALL_GEOMETRY]를 입력하십시오.
    2. [boundingObject] 필드 (두 번째 Sphere 노드 포함)를 선택하고 장면 트리에서 필드를 마우스 오른쪽 버튼으로 클릭하고 팝업되는 컨텍스트 메뉴에서 [Delete] 항목을 선택하여 비웁니다.
    3. [boundingObject] 필드를 선택하고 [Add] 버튼을 클릭 한 다음 대화 상자에서 [USE / BALL_GEOMETRY]를 선택하십시오.
    4. 결과는이 그림에 나와 있습니다.


    이제 첫 번째 Sphere 노드의 [radious] 필드를 변경하면 [boundingObject]도 수정됩니다.
    편의상 [boundingObject] 필드는 Sphere 노드가 아닌 Shape 노드도 허용합니다. 이 그림과 같이 모양 수준에서 동일한 DEF-USE 메커니즘을 사용할 수도 있습니다. 현재 가장 큰 이점은이 Shape를 그래픽 목적으로 직접 사용할 수도 있다는 것입니다. 나중에 이 메커니즘은 일부 센서에 매우 유용한 것으로 판명되었습니다.

     

    Hands-on # 7 : 

    DEF-USE 메커니즘에 대해 Sphere 노드가 아닌 Shape 노드를 사용하여 동일한 매개 변수로 두 번째 볼을 만듭니다.

    Hands-on # 8 : 네 개의 벽을 추가합니다. (물리가없고 모양 노드의 Shape 정의만 사용)

     

    4

    Solution : World file 
    본인의 world와 솔루션을 비교하려면, file로 이동하여 학습서 1에서 작성된 "my_first_simulation"폴더를 찾은 다음 "worlds"폴더로 이동하여 텍스트 편집기로 올바른 world을 여십시오. 다른 솔루션은 솔루션 디렉토리에 있습니다.

     

    Efficiency

    rigid body simulation은 계산 비용이 많이 듭니다. 경계 객체 수를 최소화하고 객체 간 제약을 최소화하고 (다음 자습서의 제약에 대한 자세한 정보) [WorldInfo.basicTimeStep] 필드를 최대화하여 시뮬레이션 속도를 높일 수 있습니다. 각 시뮬레이션에서 시뮬레이션 속도와 사실감 사이의 [trade-off]을 찾아야합니다.

    rigid bodies를 기반으로 간단한 환경을 만들 수 있습니다.

    장면 트리 뷰에서 노드를 추가하고 해당 필드를 수정할 수 있습니다. [Solid, Physics, Shape, Sphere] 에 익숙해졌습니다.

    장면 트리의 노드 중복(node redundancy)을 줄일 수있는 DEF-USE 메커니즘을 보았습니다.

    애드센스 -
Designed by Tistory.