| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ros2humble
- Python
- ROS2
- 경로계획
- lateral dynamics
- 오류
- 강화학습
- 궤환선형화
- humble
- FL
- 러닝 #운동 #동기부여
- 터미널 오류
- 나이퀴스트
- Isaac Sim
- control
- 횡방향 동역학
- 차량 동역학
- 2024적금
- RL
- 백스테핑
- #! /usr/bin/env python
- Backstepping
- 나이퀴스트선도
- 궤환 선형화
- 비선형제어
- 보드선도
- feedback linearization
- 우분투
- 제어공학
- 자동제어
- Today
- Total
목록분류 전체보기 (49)
내 머릿속
1. python 노드import rclpyfrom rclpy.node import Nodefrom std_msgs.msg import Stringclass PubSubNode(Node): def __init__(self): super().__init__('pub_sub_node') self.publisher_ = self.create_publisher(String, 'topic', 10) self.subscription = self.create_subscription(String, 'topic', self.listener_callback, 10) self.timer = self.create_timer(1.0, self.timer_callback) ..
1. workspace 생성mkdir -p colcon_ws/src 2. 파이썬 패키지 생성ros2에서는 패키지의 build_type을 설정함으로써 setup.py형태로 패키지 관리를 할것인지 package.xml 형태로 할것인지 결정.ros2 pkg create --build-type ament_cmake test_pkg 3. 빌드colcon build --symlink-install 4. 패키지 sourcesource install/local_setup.bash
소개차량의 횡방향 동역학은 횡방향 제어기 설계시 가장 중요한 부분이다. 종방향 제어의 경우 비교적 단순한 반면, 횡방향 제어는 살짝 복잡해진다. 운동방정식동역학은 다음과 같은 두 가지 운동방정식으로 표현이 가능하다.차량의 횡방향 움직임은 병진(translation)과 회전(rotation)이 모두 있기 때문에 다음과 같이 표현된다.[1] $F = ma_y$ [2] $M = I_z \alpha$ 위의 그림에서 $\beta = \psi$이고, $\delta_f = \delta$라고 하겠다. 운동방정식을 확장하면[1]번 식은 [1-1]$F_yf + F_yr = m (\ddot y + V_x \dot \psi)$ 으로 표현되고,[2]번 식은 [2-1]$F_{yf} l_f - F_{yr} l_r = I_z \dd..
Backstepping 관련 마지막 포스팅이다. 일반적인 형태에 대해서 정리해보도록 하자. 시스템$\dot \eta = f(\eta) + g(\eta)\epsilon$$\dot \epsilon = f_a(\eta,\epsilon) + g_a(\eta,\epsilon)u$ 이제 $\epsilon$을 보조 제어입력처럼 간주해서$\epsilon = g^{-1}(\eta)(-f(\eta) -\eta)$와 같은 형태로 만들어 주는$\phi = g^{-1}(\eta)(-f(\eta)-\eta)$를 이용하고 그러면 다시 시스템은$\dot \eta = f(\eta) + g(\eta)(\epsilon + \phi(\eta) - \phi(\eta))$$\dot \eta = -\eta + z_2$$z_2 = g(\eta)(..
이제 백스테핑 관련 두번째 포스트다. Backstepping 의 메인 아이디어는 수렴하게 하고싶은 변수에 관련된 변수를 보조제어입력으로 삼아 우선 수렴하게 만들고그 보조 제어입력을 다시 다른 변수로 만들어 그 변수를 0으로 수렴하게 만드는 과정을 반복한다. 이번에도 예제와 함께 해보자.예제$\dot x_1 = x_1^2 - x_1^3 + x_2$$\dot x_2 = x_3$$\dot x_3 = u$ 이제는 감이 올지 모르겠지만 동일하게 $x_2=-x_1^2-x_1$와 같이 사용할 것이다. 그러면 $phi(x_1) = -x_1^2-x_1$이고$\dot x_1 = x_1^2 -x_1^3 +x_2 +\phi(x_1) - \phi(x_1)$ 이 되니까 $z_2 = x_2 - \phi(x_1)$이라고 둘 수 있고..
이번에는 Backstepping control에 대해 소개해보겠다. 이전 FL과 유사하게 예제와 함께 해보자 예제$\dot x_1 = x_1^2 - x_1^3 + x_2$$\dot x_2 = u$ 이런 시스템이 존재할 때, FL의 경우$z_1 = x_1$$z_2 = \dot z_1$으로 정의해서 $\dot z_2 = 2 x_1 \dot x_1 - 3 x_1^2 \dot x_1 + \dot x_2$와 같이 정의하고 다시 $\dot x_1$ , $\dot x_2$를 대입해서 $\dot z_2 = (2 x_1- 3x_1^2)(x_1^2 - x_1^3 + x_2) + u $와 같이 만들고 우변을 보조 제어입력 v로 보면, $v = (2 x_1 - 3x_1^2)(x_1^2 - x_1^3 + x_2) + u$$u ..
이번에도 FL의 예제와 함께하는 설명입니다. 예제$\dot x_1 = sin(x_2)+(x_2+1)x_3$$\dot x_2 = x_1^5 + x_3$$\dot x_3 = x_1^2 + u$$y = x_1$ 이번에는 모든 상태를 피드백 받는것이 아닌 $y$을 피드백 받아 $y_d$를 추종하는 제어입력을 설계해야 합니다. 현재 제어입력 $u$는 $x_1$과 직접 연결되어 있지 않으니, $y$를 한번 미분해보겠습니다. $\dot y = \dot x_1$ 이므로$\dot y = sin(x_2) + (x_2+1)x_3$ 입니다. 만약 여기서 제어입력이 나왔다면 이전과 같이 우변을 모두 보조제어입력 $v$로 보고, u를 설계하면 됩니다.하지만 제어입력이 없기 때문에 한번 더 미분해주겠습니다. $\ddot y = c..
이번에는 지난 포스트에 이어 비선형 제어기 중 하나인 Feedback Linearization에 대해 더 소개해보겠습니다. 2차 비선형 시스템저번에는 단순한 1차 비선형 시스템이여서 FL의 제어입력 식이 단순하게 설계 될 수 있었습니다. 1차 비선형 시스템의 경우 $\dot x = v$ 와 같은 꼴로 만들어지는 제어입력 $u$를 설계하고,$v$가 어떤 에러에 비례한 제어입력꼴을 갖도록 하는 최종 제어입력을 설계하면 됐었습니다. 2차 시스템의 경우는 우선$ \dot x_1 = x_2$$ \dot x_2 = v$ 와 같은 꼴을 가지도록 하는 u를 설계하는게 먼저고, 이후에 $v=-K_1 x_1 - K_2 x_2$와 같이 두게 되면 시스템의 상태를 안정화시키는 제어입력이 완성됩니다. 예제$\dot x_1 = ..