본문 바로가기

기계공학부 시절의 기록153

로봇 동작학습 참고할 연구들 https://www.youtube.com/watch?v=oS-9mCfKIeY https://www.youtube.com/watch?v=3wHbeq61Wn0&list=WL&index=41 2021. 12. 4.
[Temporal Difference method] Cliff example implementation 1. Intro 제레미 교수님의 Cliff 예제 구현 글 위 링크를 참고하였고 코드작성에 큰 도움을 받을 수 있었다. 위 링크에서처럼 클래스를 활용하여 코드를 작성하면 코드 가독성이 좋을 것 같다. 하지만 나는 아직 객체지향 문법에 익숙치 않아 그냥 몇 함수들을 만들어 구현하였고 이것이 지금은 더 간단하고 효율적으로 보인다. 2. 구현결과 깃허브링크 작성한 코드는 위 링크에 업로드하였다. play횟수는 1만번을 진행하였다. 500번, 1천번에 대해서도 진행하였지만 SARSA의 Optimal Policy가 정확히 원하는 결과로 나오지 않아 그냥 1만번으로 확 늘려 진행하였고 교재와 같은 결과를 얻을 수 있었다. 하지만 교재에서 아래처럼 Sum of rewards during episode를 볼 수 있는데 .. 2021. 11. 24.
while문 반복 주기 확인하기 ROS를 통해 로봇팔의 경로를 text파일로 저장하는 함수를 while문안에서 실행하였다. 이 때 얼마의 주기로 기록되는지를 파악하여야 할 일이 있었다. while문 들어가기 직전과 직후의 시간을 각각 구하여 차이를 구할 수 있었다. https://hijuworld.tistory.com/1 C, C++ 프로그램 실행 시간 측정 프로그래밍을 하다보면 딜레이가 발생하거나해서 어느 부분이 느린지 알아내야 하는 경우가 생길 수 있습니다. 또는 알고리즘을 공부하다보면 내가 구현한 알고리즘의 속도를 알고싶을 때가 hijuworld.tistory.com 블로그에서는 1clock이 1ms라고 나와있었는데 나의 경우 0.001 ms로 나타났다. 2021. 11. 18.
결과데이터 그래프화하기 텍스트 파일로 저장된 경로데이터를 그래프로 나타내기 위해서 파이썬을 활용할 수 있다. https://techreviewtips.blogspot.com/2017/11/04-05.html subplot에서 범례 추가하기 https://stackoverflow.com/questions/59346731/no-handles-with-labels-found-to-put-in-legend 코드 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 32 33 34 35 36 37 38 import matplotlib.pyplot as plt import numpy as np data = np.loadtxt('make_gra.. 2021. 11. 17.
11 week HW (3) Command line argument $ ros2 run $ ros2 run 1. revise action client node to command argument in code 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 # add modul.. 2021. 11. 16.
11 week HW (2) Parameter programming review https://needs-searcher.tistory.com/181 6 week HW Parameter control using turtlesim node Experiment of ROS2 parameter, RQt, and ROS2 package installation 1. parameter 2. ROS2 tools - Command Line Tools https://github.com/ubuntu-robotics/ros2_cheats_sheet/blob/master/cli/cli_cheats_shee.. needs-searcher.tistory.com command list see a list of parma $ ros2 param list get value of a param $ ro.. 2021. 11. 16.
11 week HW (1) action programming : action client node 1. write "fibonacci_action_client.py" code 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 import rclpy # import ActionClient class to make actionclient from rclpy.action import ActionClient from rclpy.node import Node # import Fibonacci interface type from my_interface_example.action i.. 2021. 11. 14.
Operating OpenManipulator-X using Myo-armband in ROS1(melodic) 최종정리 로봇 학습에 쓰일 데이터 생성, 그리고 실질적인 로봇의 구동을 위해서 ROS기반 로봇제어를 수행하였다. 지금까지 일기형식으로 개발상황을 쭉 써내려왔는데 이를 가독성있게 정리해보려고 한다. Objective 1. 팔의 움직임으로 로봇팔 실시간 원격조종 2. 팔의 현재 위치를 기준으로 로봇 위치 초기화(Calibration) 3. 원격조종으로 수행한 task의 경로를 저장하여 로봇으로 반복 수행 PC Enviroment ( Labtop ) OS : Ubuntu 18.04 ROS : melodic CPU : i5 Graphic Card : 내장그래픽카드 Hardware OpenManipulator-X(ROBOTIS) OpenCR Interface 개발에 활용한 Original Packages(이들을 수정하여 .. 2021. 11. 13.
vector error : out of range robot의 trajectory값이 저장된 txt파일에서 각 열의 데이터를 vector로 저장하고 해당 벡터를 main()에서 while구문으로 불러와 controller에 해당 joint값을 넘겨주는 코드를 만들고 있다. 해당 에러는 vector에서의 값을 순서대로 joint로 할당할 때, 해당 vector의 마지막 원소를 넘었거나, txt파일이 비어있어 joint로 넘겨줄 데이터가 없을 때 발생하였다. 본 에러가 발생하는 이유는 벡터에서 특정 값을 호출할 때, 호출된 벡터가 끝났거나 비어 있어 호출할 수 있는 값이 없기 때문이다. (참고글) if 구문과 vector.size()함수를 활용해 벡터의 size보다 더 큰 수로 벡터를 호출하면 함수를 return시키는 방법으로 해결할 수 있었다. 2021. 11. 13.
[MC BlackJack] 오류 수정 및 결과도출 pi_table. action 초기화가 모두 0인지 확인하고 랜덤으로 바꾸기 왜 pi_table에 playersum이 11이 나오는지 확인하기 그런데 교재를 확인하니 Optimal policy 부분에 playerCardSum이 11부터 시작한다?! policy improvement에서 코드오류발견 - 제대로 improve되지 않는 것 수정 playerSum이 12보다 작을 때도 그대로 state로 전달하는 오류 발견. 12보다 작으면 카드를 한 장 더 뽑았을 때 무조건 21보다 작으므로 hit을 자동으로 하여 12이상의 상황에서 시작해야함. 이를 반영하여 코드 수정. not natural 상황, stack을 했을 때 비기는 상황을 만들어 놓지 않은 것 발견 - 수정 episode 5000000회 진행. .. 2021. 11. 13.
RL 개념 흐름 정리 DP, MC, TD, Sarsa, Q-learning, n-step TD, TD(lamda), Forward, Backward, Eligibility 흐름으로 왜 해당개념이 나왔는지 생각하며 정리. 2021. 11. 11.
[MC BlackJack 결과 시각화] 학습결과 그래프로 나타내기 1. 3D plot 아래 사진과 같이 모든 state(playerCardSum, DealerShowing, usableAce)에 대한 Optimal Value를 나타내려고 하였다. 아직 오류가 있어 playerCardSum이 11인 값도 나타나고 있다. 원래 12 미만의 값은 없어야 한다. 현재 이를 해결하고 있다. 아무튼 아래와 같은 3D plot자체를 만들기 위해서 꽤나 어려움을 겪었다. 아래의 소스코드 맨아래를 참고하였다. 조르디교수님코드 코드를 보면 먼저 x와 y의 범위를 지정한다. 그리고 이를 통해 meshgrid를 만든다. 똑같은 x 배열을 y길이방향으로 쭉 복사한다. 마찬가지로 y배열을 x길이방향으로 쭉 복사한다. 이렇게 만든 각각의 장판을 겹쳐서 보면 2차원상에 (x,y)쌍이 만들어진다. .. 2021. 11. 10.