내 머릿속

[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -2편- 본문

자율주행

[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -2편-

두구궁 2025. 1. 21. 18:44
728x90
반응형
SMALL

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을 지정해줍니다.

이제 환경 구축은 끝났고, 세번째 글에서 강화학습 코드를 실행하도록 하겠습니다.

728x90
반응형
LIST