본문 바로가기

전체 글294

[MC Blackjack-최종] 코드작성과 결과코드 및 실행영상 ** 코드 GitHub - needs-searcher/RL_Example: This is my RL Example codes This is my RL Example codes. Contribute to needs-searcher/RL_Example development by creating an account on GitHub. github.com ** 실행영상 # 기본적인 몇가지 함수는 gym 코드 참고하였다. # gym을 이용하지 않고 게임진행(episode_generate) 코드를 짜기 위해서 새롭게 코드를 작성하였다. 이에 필요한 딜러턴에서 딜러카드 score계산 함수, 학습에 필요한 pair(s,a) 중복 확인 함수, policy_improvement함수를 만들었다. # 중요하고 어려웠던 점은 .. 2021. 11. 4.
캘리브레이션(Calibartion) 기능 추가 지난 글에서 myo를 착용한 팔의 움직임을 추종하는 작업을 완료하였다. 또, 주먹을 쥠에 따라 그리퍼가 닫히고 손가락을 모두 폄에 따라 그리퍼가 열리는 기능도 추가하였다. Myo로 OpenManipulator 동작시키기 성공!!! 구동영상 최대한 단순하게 코드를 작성하였다. myo_raw/myo_ori 토픽에서 생성되는 데이터를 봤을 때, (https://needs-searcher.tistory.com/196?category=885778참고) 먼저 로봇컨트롤러에서 모든 모터각 = 0으로.. needs-searcher.tistory.com 한 가지 문제점은 센서를 착용할 때마다 센서가 인식하는 roll=pitch=yaw=0의 초기위치가 다르다는 점이다. myo를 다시 착용했을 때 똑같이 정면으로 팔을 뻗어.. 2021. 11. 3.
[MC-blackjack]MC에서 Q-table 어떻게 만들어? (2) Dictionary 자료형 지난글 : 에피소드 리스트 생성 지난 글에서 여러 states들을 하나의 튜플로 묶어 저장하고 스텝에 따른 state 시퀀스를 episode list [] 에 append하여 차곡차곡 쌓아 나가는 것을 공부하였다. (에피소드 리스트 생성) [MC-블랙잭] Monte Carlo에서 Q-table 어떻게 만들어? (1) 튜플 참고하기 위한 코드와 글들을 찾으며 공부한 내용을 기록하였다. 클래스를 활용한 코드들도 있고 그렇지 않은 코드들도 있었다. 코드진행을 이해하기 위해서 파이썬에서의 클래스 문법을 공부 needs-searcher.tistory.com Q-table 만들기 [문제점] 가장 중요한 것은 Q-table만들기였는데 아래와 같은 문제점이 있었다. [해결방법 : dictionary 자료형] 즉, 수많.. 2021. 11. 3.
[MC-블랙잭] Monte Carlo에서 Q-table 어떻게 만들어? (1) 튜플 참고하기 위한 코드와 글들을 찾으며 공부한 내용을 기록하였다. 클래스를 활용한 코드들도 있고 그렇지 않은 코드들도 있었다. 코드진행을 이해하기 위해서 파이썬에서의 클래스 문법을 공부하였고 블랙잭게임에서의 state 데이터를 나타내고 처리하기 위해서 튜플을 활용함을 발견하여 튜플에 대해서 공부하였다. 파이썬도 클래스 몬테카를로 방법으로 BlackJack 예제를 풀고 있다. 이전 Gambler's Problem과 같이 간단한 예제는 함수로만 진행했는데 게임룰이 조금 복잡해지고 다른 사람들의 코드들을 보다보니 클래스를 많이 쓰는 것을 볼 수 있었다. 파이썬은 절차형, cpp은 객체형 언어로 알고 있었는데 파이썬에서도 객체를 쓰나보다. '아무튼 워라벨'님의 블로그. 파이썬에서의 클래스 설명 monte carlo.. 2021. 11. 2.
하고싶은 것 할 수 있게 한 분야 전문가가 되려면 오래도록 능력을 갈고닦고 경험을 쌓아야한다. 어렵고 힘든 것을 꾸준히 해야한다. 이를 해내려면 그 일을 먼저 좋아해야 한다. 송길영, 조광일 모두 좋아하는 일을 하라고 한다. 좋아해야지만 노력을 계속 쏟아부을 수 있고 그래야지 건강한 수련을 할 수 있다. 송길영은 보다 현실적으로 생존을 위해서는 사회의 니즈에 맞추어 선택하라고 조언한다. 지금 내가 좋아서 하는 일을 더욱 깊게 파고들고 유니크함으로 혁신을 꾀하라. https://www.youtube.com/watch?v=AJ7j3Pyg3J0 3:44 혼재된, 어질러진, 정해진 답이 없는 세상 속에서 Core를 찾아내고 우선순위를 정하는 것이 필요하다. 6:42 일이 공부고, 공부가 일이고, 그것이 수련이고 9:38.. needs-.. 2021. 11. 2.
Myo로 OpenManipulator 동작시키기 성공!!! 구동영상 최대한 단순하게 코드를 작성하였다. myo_raw/myo_ori 토픽에서 생성되는 데이터를 봤을 때, (https://needs-searcher.tistory.com/196?category=885778참고) 먼저 로봇컨트롤러에서 모든 모터각 = 0으로 초기자세를 잡은 뒤 myo에서 생성되는 roll, pitch, yaw값을 그대로 모터각으로 전달하면 쉽게 구현할 수 있겠다고 생각하였다. 하지만 센서장착 후 팔을 정면으로 뻗었을 때, 장착할 때마다 roll, pitch, yaw값이 조금씩 다르다는 단점이 있다. (대부분의 경우 정면으로 팔을 뻗었을 때 roll = pitch = yaw = 0가 된다.) 그래서 1. teleop노드를 실행했을 때, 즉시 로봇이 초기자세(모든 모터각 = 0)를 잡게 .. 2021. 10. 28.
지금 내가 좋아서 하는 일을 더욱 깊게 파고들고 유니크함으로 혁신을 꾀하라. https://www.youtube.com/watch?v=AJ7j3Pyg3J0 3:44 혼재된, 어질러진, 정해진 답이 없는 세상 속에서 Core를 찾아내고 우선순위를 정하는 것이 필요하다. 6:42 일이 공부고, 공부가 일이고, 그것이 수련이고 9:38 문제는 어렵기 때문에 문제다. 풀기 쉽다면 이미 문제가 아니다. 문제가 있기 때문에 또 내가 필요하다. "일이 힘들어요." "당연하네요! 당신이 (회사에서) 소중하니까요." 문제가 어렵고, 일이 힘들어야 (그 일을 할 수 있는 사람이 적고) 보상이 커진다. 그것을 해낼 수 있는 사람이 별로 없기 때문에. 10:22 힘든 것은 공력이 들어가는 것이고, 괴로운 것은 내가 상처를 받는 것. 힘든 것은 나의 숙련, 숙고를 통해 더 나아질 수 있다. 하지만 고통.. 2021. 10. 27.
또다시 포트연결문제 발생 : ttyACM0 -> ttyACM1 문제원인 myo 센서 블루투스 usb동글과 OpenManipulator의 컨트롤러가 같은 포트(/dev/ttyACM0)에 연결시도를 함에 따라 모두 연결실패메시지 발생. 해결방법 다행히 내가 사용하는 노트북에 두개의 usb포트가 존재한다. OpenManipulator컨트롤러의 연결 포트를 /dev/ttyACM1으로 변경. 변경방법 총 2개의 파일에 포트명지정 구문이 존재하며 터미널창에서 포트명지정이 수행된다. 따라서 이 3가지에 대해 포트명을 수정하면 된다. 또, OpenCR을 arduino프로그램으로 펌웨어 업데이트가 가능한데 이 때 포트 선택을 /dev/ttyACM1으로 수행한다. 즉, 총 4가지를 수행하여야 한다. 1. open_manipulator_controller.cpp 파일에서 포트명 수정 .. 2021. 10. 27.
Myo센서에서 Orientation의 의미 코드상에서는 roll, pitch, yaw값을 의미한다고 되어있다. 축의 회전값? 회전된 값을 어떻게 나타낸 것일까. 더 자세히 실험을 통해 어떤 데이터인지 확인해보았다. 그 결과 특정 위치에서의 myo 기준축(roll = 0, pitch = 0, yaw = 0)으로 두고 회전각을 나타내었다. 또, 이 기준축은 센서를 새롭게 킬 때마다 조금씩 달라짐을 확인하였다. 따라서 똑같은 동작을 하고 있더라도 myo를 킬 때마다 myo에서 보내는 orientation값은 달라진다. [팔 정면방향으로 뻗음] x = y = z = 0 [오른쪽으로] x (roll값)가증가 [왼쪽으로] x(roll값) 감소 [아래쪽으로] y(pitch값) 증가 이를 바탕으로 myo의 어떤 움직임에 myo_ori값이 어떻게 변하는지 정리하.. 2021. 10. 27.
명령어모음 및 1차 수정코드(open_manipulator_teleop_keyboard) 백업 차원으로 현재까지 수정한 코드를 백업하고 노드실행에 필요한 명령어들을 기록해 편리하게 이용하기 위해서 수정진행중인 코드와 필요한 명령어들을 기록하였다. 그리고 아직 수정된 코드들은 동작하지 않는다. 이에 대해서는 앞으로 찾아보고 수정해 나가야 한다. 이에 대해 앞으로 포스팅할 것이다. 수정된 코드 실행 후 내용 추가) 포트명을 수정하고 모든 노드들을 실행시켰을 때, 뭔가 팔의 움직임에 따라 로봇팔의 움직임도 변화함을 확인하였다. 하지만 좀 랜덤한 방향으로 움직인다. 그리고 open_manipulator_teleop_keyboard 터미널에서 1 or 2 숫자키를 눌렀을 때만 로봇팔이 동작하였다. 코드를 더욱 정교하게 수정하여야 한다. 명령어들 1. myo launch roslaunch ros_myo.. 2021. 10. 27.
open_manipulator_teleop.cpp 코드수정을 위한 코드공부(ros::spin, 클래스 접근지정, vector, 포인터) 어제 myo센서에서 생성되는 토픽을 오픈매니퓰레이터의 teleop노드에서 subscribe하도록 코드를 만들었다. teleop노드가 헤더파일과 cpp파일로 나뉘어있고 나는 c++언어를 잘 모르기에 어려움이 있었다. 다하고보니 별거 없었다. myo데이터 수신하는 subscriber open_manipulator_teleop.cpp에 만들기 https://needs-searcher.tistory.com/192?category=885778 myo로 publish, teleop로 subscribe 확인 도움이 된 글 https://cafe.naver.com/openrt/18408 ros에서 pub되는 msg가 배열인데 이거 통째로 어떻게 sub받나요??? 질문양식[개발환경] (옵션)1) 운영체제 :우분투 16,.. 2021. 10. 27.
8week ROS homework : Simple node code explain #1 Create Topic msg 1. Write code [helloworld_publisher.py] 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 import rclpy # Node class import. In Node classm, there are create_publisher(), create_timer(), get_logger() and so on. from rclpy.node i.. 2021. 10. 25.