일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 우분투
- 궤환 선형화
- RL
- 오류
- 횡방향 동역학
- 백스테핑
- 차량 동역학
- 궤환선형화
- 2024적금
- 비선형제어
- 나이퀴스트
- ros2humble
- Isaac Sim
- 터미널 오류
- lateral dynamics
- 제어공학
- 자동제어
- feedback linearization
- 나이퀴스트선도
- Python
- 경로계획
- control
- #! /usr/bin/env python
- ROS2
- 보드선도
- 러닝 #운동 #동기부여
- Backstepping
- FL
- 강화학습
- humble
- Today
- Total
내 머릿속
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -1편- 본문
https://www.youtube.com/watch?v=rVCHgXl9E6o
본 예제는 다음 영상을 보고 한국인을 위해 제작된 예제입니다.
사실 저도 강화학습에 대해 1도 모르지만, 이론은 나중에 공부하더라도 써먹을 수 있는 수준이 되기 위한 글입니다.
예제에서 사용하는 환경은 다음과 같습니다.
Ubuntu 22.04
ROS2 Humble
Issac sim 바이너리 설치 방법( Nvidia Omniverse )
https://challenge-sam.tistory.com/entry/NVIDIA-Omniverse-Isaac-Sim-%EC%84%A4%EC%B9%98
[NVIDIA Omniverse] Isaac Sim 설치
💡아이작 심(Isaac Sim) NVIDIA Omniverse Platform의 로봇 시뮬레이션 툴킷이다. 주로 로봇 개발 및 테스트를 위해 사용한다. 아이작 심의 시뮬레이션 환경을 활용하여 인공지능의 테스트 및 합성 데이터
challenge-sam.tistory.com
이 블로그에 자세히 나와있으며, 주의해야할 사항은 다음과 같습니다.
1. 그래픽 카드 드라이버 510 이상으로 세팅해주기 ( 470등은 불가능 )
2. 실행할 때 이런 화면을 보게 될 건데, ROS Bridge Extension은 ros2로, 그리고 그 아래 버전을 humble로 세팅.
Issac Python 환경 설치
https://howtobemechanic.tistory.com/37
[Ubuntu 22.04] ROS humble환경 Issac sim 설치
https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_python.html Python Environment Installation — Omniverse IsaacSimThe first time isaacsim is imported, a prompt will ask about accepting the EULA at runtime. Once the EULA is accepted,
howtobemechanic.tistory.com
이전에 쓴 글에 나와있으며, Extension 설치를 빼먹으면 예제를 실행할 수 없음.
예제 파일 다운 받기. ( 출처는 동일하게 유튜브에서 가져왔으며, 이후 영상이 내려가는것을 대비해 파일을 첨부합니다)
URDF 불러오기
URDF는 로봇공학에서 링크, 조인트 간의 관계를 다룬 하나의 xml문서로써, 단순히 생각하면 로봇 껍데기라고 보면 된다.
상단 메뉴에 Isaac Utils -> Workflows -> URDF Importer를 눌러준다.
평면 설정
이 상태에서는 로봇이 바닥으로 떨어지고 만다, 그래서 바닥면을 설정해주는데 Create->Physics->Ground Plane 순이다.
라이다 설정
현재 urdf의 lrf_link가 라이다에 해당하는데 urdf만 불러와서 껍데기만 존재한다.
이제 그 껍데기에 라이다가 시뮬레이션 상에서 나오게 하고, 이후에 ROS연동으로 토픽을 받아주면 된다.
우선 시뮬레이션에서 라이다 데이터를 나오게 하는 과정은 다음과 같다.
우측 Stage 메뉴에서 omni_robot->lrf_link를 클릭한 상태로,
Create->Isaac->Sensors->RTX Lidar->Rotating 을 지정해준다.
그러면 이제 lfr_link에 Camera type의 Rotating 이라는 라이다가 생기게 된다.
왜 타입이 카메라냐면 Isaac sim자체가 라이다 타입이 없고 카메라로 라이다를 구현한 느낌이다.(추측)
ROS Interface
이제 ROS로 데이터를 받을 수 있으면 되는데, 아이작 시뮬레이터는 모든 데이터를 Action Graph로 관리하기 때문에 ROS 인터페이스도 이를 통해 만들어주면 된다.
Isaac Utils -> Common Omnigraphs-> ROS2 RTX Lidar를 선택해준다.
그리고 Lidar Prim에 Rotating을 찾아서 선택해주고 OK로 넘어간다.
그러면 그림과 같이 ROS_LidarRTX가 생기게 되는데, 이를 우클릭해서 Open Graph로 진입하자.
그러면 그림과 같이 아래 화면이 바뀌는데,
제일 오른쪽 노드인 ROS2 RTX Lidar Helper에서 frameId를 sim_lidar에서 lrf_link로 변경해준다.
다음은 TF다.
TF는 로봇공학에서 맵 좌표계에서 로봇으로, 혹은 각 로봇끼리, 로봇 내의 링크와 조인트 간의 관계를 정의해주는 좌표계라고 보면된다. 이걸 설정해줘야 맵에서 라이다의 포인트가 어디를 찍고 있는지 등의 관계가 설정된다.
Isaac Utils -> Common Omnigraphs -> ROS2 TF Publisher
그리고, Target Prim을 omni_robot으로 지정해준다. 그러면 이번에는 ROS_TF 라는 Action Graph가 Stage메뉴에 추가되고, 이를 Open graph를 통해서 열어주자.
이번에도 제일 우측의 ROS2 Publish Transform Tree 노드를 선택해주고,
우측 메뉴에서 TragetPrims아래의 Add Target을 눌러준다.
그리고 omni_robot의 lrf_link를 지정해주면 이와 같이 설정되는데.
이제 로봇에서 라이다의 위치관계를 지정해 주게 된것이다.
이제 Create->Mesh->Cube 로 큐브 하나를 스폰하고 차 앞에 두자.
그리고 좌측의 Play를 누른 상태에서 rviz2로 시각화 툴을 키면
Add -> By topic 했을때 /laser_scan 토픽이 보일것이다.
이를 추가해주고, 좌측의 Global Options의 Fixed Frame을 omni_robot으로 바꿔주면
이렇게 라이다 데이터를 ROS로 받아볼 수 있다.
'자율주행' 카테고리의 다른 글
[차량동역학]차량 횡방향 동역학 Vehicle lateral dynamics -1- (1) | 2025.03.04 |
---|---|
[Ubuntu 22.04] Isaac sim 4륜 모바일 로봇 ROS토픽 연동하기 (0) | 2025.01.31 |
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -3편- (0) | 2025.01.21 |
[강화학습] 실제 예제로 배우는 아이작 심 기반 강화학습 -2편- (0) | 2025.01.21 |