이번 포스팅에서는 Abaqus에서 할 수 있는 다물체 동역학(Multi body Dynamics) 해석에 대해 알아보도록 하겠습니다. 다물체 동역학(Multi body Dynamics)은 보통은 다수의 물체들이 서로 관절이나 링크, 슬라이딩과 같은 기구물 등에 의해 기구학적 운동이 가능한 상태로 연결되어 있는 상태에서 회전(rotational)이나 병진(translational)운동을 하게 될 때 동역학적 거동을 분석하기 위한 해석 분야입니다. 다물체 동역학 소프트웨어에 대해 잠시 리뷰를 해보면 해석 분야에서는 보통 강체(Rigid body)를 기반으로 강체 다물체 동역학 해석을 할 수 있는 시뮬레이션 소프트웨어가 많이 개발되어 사용되고 있습니다. 강체를 기반으로 하여 회전 관절이나 병진 관절 등을 사용하여 산업용 로봇, 자동차의 서스펜션, 캠과 같은 기구물의 해석에 많이 사용되었습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_1.jpg)
Rigid MBD (Abaqus)
시간이 지나고 해석 수준이 높아짐에 따라 점차 유연체 동역학 해석에 대한 요구 역시 점차 높아지면서, 이미 오래 전부터 강체 다물체 동역학 해석 프로그램에서도 모달 다이나믹을 사용한 유연체 동역학 해석이 가능하게 되었습니다. 나아가 얼마 전부터 모달 기반보다 노달 기반의 유연체 해석을 통해 더 정확한 해를 제공하려고 하는 소프트웨어도 많이 늘어나고 있습니다. 다만, 전용 다물체 동역학 소프트웨어이다 보니 사용 가능한 자유도의 한계나 계산 시간이 많이 소요되는 점들이 한계로 지적되어 왔습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_2.jpg)
Rigid + Flexible MBD (Abaqus)
본 블로그에서 소개하는 Abaqus 에서 다물체 동역학 해석 기능을 사용하면 이러한 한계를 극복할 수 있다고 생각됩니다. Abaqus 에서 다물체 동역학 해석을 하는 장점은 자유도의 제한 없이, 강체와 유연체등을 사용자가 원하는 대로 선택하면서, 노드 기반의 유연체 다물체 동역학 해석을 정확하고 빠르게 할 수 있다는 점입니다. Abaqus 에서는 다물체 동역학의 핵심인 관절 역할을 하는 요소를 커넥터(Connector) 요소라고 합니다. 상당히 다양한 자유도와 기능을 가진 커넥터를 지원하고 있어서 다물체 동역학은 물론이고 다양한 분야에서 사용이 가능해 편리하게 사용할 수 있습니다. 커넥터에 대해서는 다음 기회에 알아보도록 하겠습니다. 이번 블로그에서는 기구학에서 가장 기본적으로 사용하는 예제인 간단하게 4개의 관절을 가지고 3개의 링크를 가진 4절 링크를 Abaqus/CAE 에서 모델링 하고 해석 하는 방법을 알아보도록 하겠습니다.
모델 준비하기
4절 링크의 다물체 동역학 해석을 하기전에 모델을 준비하도록 하겠습니다. Grashof’s law 에 따라 4절 링크에서는 가장 짧은 링크와 가장 긴 링크의 길이의 합이 나머지 2링크의 길이보다 짧아야 합니다. 본 블로그 에서는 Mild 한 Over constraint 상태를 재현하기 위해 일부러 Link 1과 Link3 의 길이를 같게 하고, Link2와 Link4 의 길이를 같게 해서 해석 결과를 살펴보도록 하겠습니다. 다음과 같이 링크 2개를 만듭니다. 3번재 링크는 1번째 링크와 같은 사이즈로 만들 것이고, 4번째 링크는 바닥에 고정되는 형태 별도로 모델링은 하지 않도록 하겠습니다. 회전을 시킬 중심 원형태로 Cut extrude 를 합니다. Link 1 : 길이 100 (회전을 시킬 중심 기준). 높이 10, 폭 5
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_3.jpg)
Link1 / Link 3
Link 2 : 길이 300 높이 10 폭 5
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_4.jpg)
Link 2
각 Link 에 구조강의 Property 를 Assign 하고 나서, Assembly 모듈에서 Link 1 을 2번 instance create (apply 를 2번 클릭) 하고, Link 2를 1번만 create 한 후에 아래 그림을 참조하여 Assembly 합니다. Link1 과 Link3 은 평행하게 하고, Link2 는 Link1 과 Link3 의 끝단의 원형이 일치(coaxial)하게 합니다. Link1과 Link3의 나머지 끝단은 거리가 300mm 가 되도록 합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_5.jpg)
Assembly 모듈에서 링크를 조립
Step 모듈에서 새로 Step 을 만듭니다. Step 은 Dynamic, Implicit를 선택하고 해석 시간은 1초로 하고 nlgeom 옵션을 클릭하여 on 으로 합니다. Incrmentation 탭 에서 Max number of increment 는 1000, initial increment size 는 0.001초, Minimum Increment size 는 1e-7, 으로 수정합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_6.png)
Step 설정
Mesh 모듈에서 Mesh를 하고 Interaction 모듈에서 다음과 같이 커넥터를 만들어줄 위치에 다음과 같이 MPC constraint 를 만듭니다. Link 1과 Link2 가 맞닿게 되는 위치에서 Link 1 과 Link 2의 MPC 의 중심 노드의 위치가 완전히 일치하면 커넥터 를 만들기 어려우므로 Abaqus 에서 Mesh edit 를 통해 약간 위치가 떨어질 수 있게 편집하는 것이 좋습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_7.png)
커넥터 만들기
커넥터로 연결할 준비를 다 마쳤으니 본격적으로 회전 커넥터(Rotational 혹은 Hinge Connector)를 이용하여 각 Link 를 연결하도록 하겠습니다. Menu-connector-section-crate 혹은 아래 그림처럼 Create connector section 을 클릭하여 Create 창을 엽니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_8.png)
Connector Section 설정 아이콘
창에서 이름은 Hinge 로, Connection Category 는 Assembled/complex 로, Connection Type 은 Hinge 로 선택합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_9.png)
Hing 섹션 설정
Connection Type diagram 의 전구 아이콘을 클릭하면 Hinge connector 이 어떤 타입이고, 어떤 자유도를 가지고 있는지, 좌표축을 어떻게 설정해야 하는지 확인할 수 있습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_10.png)
전구 아이콘을 클릭하면 위의 그림처럼 Hinge Connector 의 다이어그램이 나타납니다. Hinge Connector 는 a,b 노드 사이에 연결되면 a,b 의 다른 모든 자유도는 서로 고정된 것처럼 동일하게 움직이되 1번 자유도 방향으로만 회전될 수 있는 Connector 요소입니다. 4절 링크 모델은 회전 커넥터만 있으면 되므로 Hinge Connector section 만 정의하겠습니다. 커넥터를 assign 하기에 앞서, 커넥터 의 정의되기 위해서 로컬 좌표계가 반드시 필요합니다. 모델에서 커넥터의 회전 방향을 정의하기 위해 로컬 좌표계를 설정합니다. 다행히 모두 동일한 방향으로 회전하므로 1개의 로컬 좌표계만 만들고 모두 새로 만든 로컬 좌표계를 참고하게 하면 됩니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_11.jpg)
로컬 좌표계
정의된 Hinge connector 를 다음 그림의 4곳의 위치에 정의하겠습니다. 위치 1과 위치 4에서는 링크와 Ground 를 Hinge connector 로 연결합니다. Ground 에 있는 가장의 커넥터에 연결한다고 생각하시면 됩니다. 위치2와 위치3 에서는 서로 다른 링크 2개를 Hinge connector 로 연결합니다. .
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_12.jpg)
커넥터를 연결할 위치
위치 1과 위치 4에서는 링크와 Ground 를 Hinge connector 로 먼저 연결해 보겠습니다. Abaqus/CAE 에서 Menu-Connector-Connector Builder 혹은 아래 그림과 같이 Connector Builder 아이콘을 클릭합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_13.png)
Prompt Bar 에 나온 메시지를 따라 Link1 의 위치 1의 가운데 노드를 선택합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_14.png)
2번째 Connector point 를 선택하라는 메시지가 Prompt Bar 에 나타나면 connect to Ground 클릭합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_15.jpg)
이어지는 Connector Builder 창에서 아래와 같이 설정합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_16.jpg)
1. wire feature 는 커넥터를 부여하기 위해 자동으로 생성 되어진 기하학적 요소입니다. 2. section 은 이미 만들어진 Hinge 섹션을 Drop down 버튼을 통해 선택하면 됩니다. 3.의 화살표 아이콘을 클릭하여 이미 만들어 놓은 로컬 좌표계를 선택합니다. 4. 는 3에서 선택한 로컬 좌표계와 같은 로컬 좌표계를 사용한다는 의미입니다. Default 인 Use CSYS 1 을 선택하면 됩니다. OK 를 클릭하면 아래 그림과 같이 Link 1 의 위치 1에 로컬 좌표계가 자동으로 나타납니다. 링크의 회전축으로 X axis 가 향하고 있는지 확인합니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_17.png)
Link 3의 위치 4에도 같은 작업을 반복합니다. Link1과 Link2 사이, Link2 와 Link 3 사이에도 마찬가지로 Hinge Connector 를 Assign 합니다. 차이점은 2개의 노드를 선택할 때 Prompt bar 에서 Ground to connect 를 선택하지 않고, 커넥터로 연결한 2개의 노드를 차례로 선택하는 것입니다. 위와 같이 2개의 노드를 커넥터 로 연결하면 Wire 가 생성되고 각 노드에 로컬 좌표계가 생성되어 어떻게 움직일 수 있는지 사용자가 쉽게 인지할 수 있게 됩니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_18.png)
2개의 링크간에 연결된 커넥터
경계조건 부여하기
연결된 커넥터 에는 거리/속도/가속도 등의 경계조건을 부여하거나 토크나 하중으로 모션을 부여할 수 있습니다.
실제 4절 링크가 회전을 할 때에는 가속을 하여야 하기 때문에 다음과 같이 smooth 라는 amplitude Curve 를 하나 만들어 Amplitude 에 따라 거동하도록 해 보겠습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_19.png)
smooth amplitude
경계 조건은 다음과 같이 커넥터 에 관련된 경계조건 타입을 선택하면 변위, 속도, 가속도등 사용자가 원하는 타입의 모션을 부여할 수 있습니다. Load 를 선택하면 토크나 하중도 커넥터에 부여하여서 커넥터를 모터처럼 사용할 수 도 있습니다.
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_20.png)
Continue 를 클릭하고, Set 에서 커넥터 가 assign된 Wire 를 선택하거나 select in viewport 를 클릭하고 화면상에서 직접 Wire 를 선택할 수도 있습니다. Hinge Connector 가 Assign된 Wire 를 선택했기 때문에 설정할 수 있는 자유도는 아래 그림과 같이 1번 자유도의 회전각만 설정 가능하도록 자동적으로 제한됩니다. 1회전을 위해서 6.28 (2X pi)을 입력하였습니다. Amplitude 는 이미 만들어 놓은 smooth 를 선택합니다. .
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_21.png)
설정을 다 마쳤다면 해석을 수행하여 다음 동영상과 같이 결과를 얻을 수 있습니다.
4절 링크 FMBD 해석 결과
해석 결과에 대하여 잠시 생각해 보겠습니다. Smooth Amplitude 가 없었다면 해석 결과를 보면 갑자기 거동이 시작되므로 급격한 가속도 변화로 저크(Jerk)가 심하게 발생하기도 합니다. 이 경우 해석은 가능합니다, 다만 각변위 대신 각속도를 입력하고 0에서 시작하지 않으면 해석이 수렴되지 않는 경우가 많습니다. 무한 Jerk에 가깝기 때문입니다. 또, Grashof’s law에 따르지 않고, Link1,4 의 길이의 합이 Link2,3 의 길이의 합과 일치하게 모델링을 하여서 Link 들이 수평하게 되는 근처에서는 스트레스가 많이 걸리게 됩니다. 이때 Jerk 도 많이 발생하지만, Abaqus 에서 이러한 상황까지 잘 해석을 수행하였습니다
![](https://blog-assets.3ds.com/uploads/2023/09/220820988150_22.png)
이것으로 이번 글을 마무리 짓도록 하겠습니다. 조만간 이어지는 블로그에는 시뮬리아의 강력하고 빠른 “본격” MBD 전문 해석툴인 Simpack 의 소개도 기획되어 있으니 조만간 만나보실 수 있을 것으로 생각됩니다. 시뮬리아 아바쿠스 SIMULIA ABAQUS