일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- control
- 러닝 #운동 #동기부여
- feedback linearization
- 2024적금
- Backstepping
- ROS2
- 나이퀴스트
- 보드선도
- #! /usr/bin/env python
- 오류
- Python
- 비선형제어
- FL
- 궤환선형화
- lateral dynamics
- humble
- RL
- 터미널 오류
- 나이퀴스트선도
- 강화학습
- 궤환 선형화
- Isaac Sim
- ros2humble
- 백스테핑
- 제어공학
- 횡방향 동역학
- 차량 동역학
- 우분투
- 경로계획
- 자동제어
- Today
- Total
내 머릿속
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -2편- 본문
https://howtobemechanic.tistory.com/38
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -1편-
https://www.youtube.com/watch?v=rVCHgXl9E6o 본 예제는 다음 영상을 보고 한국인을 위해 제작된 예제입니다. 사실 저도 강화학습에 대해 1도 모르지만, 이론은 나중에 공부하더라도 써먹을 수 있는 수준이
howtobemechanic.tistory.com
이 글은 이전 1편에서 이어지는 글이다.
제어입력 ROS Interface 설정
이전 과정에서 라이다 데이터의 ROS연동까지 했었는데 이번엔 제어입력 연동을 해볼 차례입니다.
이번에 만들 Action graph는 Isaac Utils-> Articulation Position Controller 입니다.
Robot Prim을 omni_robot으로 세팅해주면 됩니다.
이번에는 Position_Controller 를 Open Graph해주고,
맨 아래 분홍색 Maker Array라는 노드에 원래 Inputs이 여러개 존재할건데, 우측 아래에 있는 -버튼으로 input0, input1만 남겨줍니다.
그리고 위에 있는 초록색 Make Array는 삭제해 주고,
왼쪽 검색창에 ROS2 Subscriber와 ROS2 Context 를 검색해서 추가해줍니다.
그리고 그림과 같이 Tick 을 Exec In으로, Context를 Context에 맞게 연결 해준 뒤,
ROS2 Subscriber노드의 Property 설정을 다음과 같이 해줍니다.
messageName : Float64MultiArray
messagePackage : std_msgs
topicName : /forward_position_controller/commands
마지막으로 Data를 Position Command에 넣어줍니다.
다음은, Isaac Utils -> Common Omnigraphs -> Articulation Velocity Controller에서
Robot Prim을 동일하게 omni_robot으로 설정해줍니다.
그 다음, 동일하게 초록 Make Array는 삭제하고 핑크색 Make Array의 Inputs들을 2개만 남기고,
남은 두개 중 Input0을 rl_wheel_joint로, Input1을 rr_wheel_joint로 변경해줍니다.
나머지도 아까처럼 Context는 Context로, Tick은 Exec In으로 세팅해주고,
이번에도 ROS2 Subscriber의 Parameters를 다음과 같이 채워줍니다.
그리고 마지막으로, Data를 Velocity Command에 연결해줍니다.
제어입력 urdf 설정
우선 rl_wheel_joint, rr_wheel_joint의 Drive, Damping을 1로, Stiffness를 0으로 각각 지정해줍니다.
다음으로 front_left_knuckle_link, front_right_knuckle_link 의 Drive를 아예 제거해 줍니다.
맵 불러오기
맵은 File-> Import 에서 Isaac_SAC->stl_files의 Isaac_stage.stl를 불러옵니다.
그리고 방금 불러온 Isaac_stage의 Transform에서 Orient X를 -90 돌려줍니다.
다음으로 Looks - > DefaultMaterial -> DefaultMaterial에서 Shader -> Inputs - > Albedo -> Base Color를 RGB 0,0,0으로 세팅해줍니다.
이번엔 start_goal.stl을 불러와서 Isaac_stage.stl의 빈 구멍에 하나씩 넣고, 시작점을 DefaultMaterial RGB 0,0,1
도착점을 DefaultMaterial RGB 1,0,0으로 세팅해줍니다.
제가 해보니까 Transform- > Translate에서 z는 0.1로, Orient는 90을 해주면 평면에 붙습니다.
그럼 다음 그림처럼 되는데, 이제 거의 다 왔습니다.
Isaac_stage->node_를 우클릭하고 Add -> Physics -> Colliders Preset을 지정해줍니다.
이제 환경 구축은 끝났고, 세번째 글에서 강화학습 코드를 실행하도록 하겠습니다.
'자율주행' 카테고리의 다른 글
[차량동역학]차량 횡방향 동역학 Vehicle lateral dynamics -1- (1) | 2025.03.04 |
---|---|
[Ubuntu 22.04] Isaac sim 4륜 모바일 로봇 ROS토픽 연동하기 (0) | 2025.01.31 |
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -3편- (0) | 2025.01.21 |
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -1편- (0) | 2025.01.21 |