본문 바로가기

전체 글71

[강화학습] TD방법으로 Cliff walking 문제 풀기 (C++) 저번 학기에 배운 수업 내용과 과제를 정리 강화학습이란 문제를 해결하는데에 있어서 최적의 방법을 찾는데, 그 시스템 안에서 주어진 상태(State, s) 에서 어떻게 행동(Action, a)하니까 보상(Reward, r)이 얼만큼 나왔다라는 흐름으로 구조를 만들어 보상의 합인 가치값이 가능 크게 만드는 행동을 최적의 해결책으로 선정하는 학습 방법입니다. 강화학습은 크게 3가지 방법으로 나뉩니다. 1. Dynamic Programming (DP) 2. Monte Carlo (MC) 3. Temporal Differnece (TD) DP방법은 환경모델과 벨만 방정식을 이용해서 모든 경우에 대한 가치를 계산하여 상태 별 가치를 구하고, 그 중에서 가장 높은 가치를 가진 만들어내는 행동을 찾는 방식이다. 모든 .. 2022. 3. 5.
[ROS] Gazebo상에서 joint_position rosservice값으로 로봇 PID제어하기 이전 게시물에서는 rosservice로 로봇 조인트의 position값을 받는 부분까지 알아보았다. 이번에는 subscribe한 값을 이용해서 링크가 넘어지지 않고 계속 서있을 수 있도록 로봇을 제어(PID)하는 방법을 다뤄보도록 하겠다. teleop_twist_keyboard.cpp 파일을 다음과 같이 수정한다. #include #include #include #include #include #include #include #include // Init variables float Kp(50), Ki(1.2), Kd(1.5); float P_control(0), I_control(0), D_control(0), PID_control(0); float goal_position(0); float error.. 2022. 3. 5.
[ROS] Gazebo상에서 rosservice를 이용해서 joint position값 받기 1. rqt를 이용하여 rosservice 값 받기 앞서 포스트한 글을 통해 Gazebo에서 매니퓰레이터가 달린 이동로봇을 불러온 뒤 rqt 를 실행한 뒤 화면 좌상단에 Plugins/services/Service Caller를 클릭하면 Gazebo에서 주고 받을 수 있는 Request와 Response를 확인할 수 있다. 우리는 조인트 값을 받는게 목표이므로 Service에서 /gazebo/get_joint_properties를 선택하고 Call을 누르면 이 서비스에서 주고 받을 수 있는 Request와 Response를 알 수 있다. Request에 있는 Joint name에 Expression에 본인이 값을 받고 싶은 조인트의 이름을 입력해준다. 필자는 조인트 이름이 Body이므로 '' --> 'B.. 2022. 2. 10.
랩뷰 설치, 다운로드 오류 랩뷰를 지웠다가 다시 까는데 도중에 문제가 생겼다. 랩뷰를 설치하려고 하면 Package manager가 필요하다고 하고, Packge manager를 설치하려고 하면 패키지 매니저가 이미 설치되었다고 한다. 원인은 이전에 랩뷰를 지울 때 제대로 안 지워서 발생한 문제이다. 패키지 매니저로 삭제하고, 제어판에서 프로그램 지우고 C 드라이브에 직접 들어가서 지워도 덜 지운거다. 내 컴퓨터를 실행한다. C:\Users\사용자\ 경로로 가서 위에 경로를 입력하는 곳에 C:\Users\사용자\\Appdata\Roaming C:\Users\사용자\\Appdata\Local 를 직접 입력해서 이동한 뒤 (숨겨진 파일이라서 클릭으로 이동할 수 X) National Instrument 파일을 삭제한다. 그리고 C드라이.. 2022. 2. 8.