본문 바로가기

정나우69

[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.
ROS URDF로 이동로봇 위에 매니퓰레이터 만들기 + imu센서 달기 우리의 목적은 이동로봇이 앞뒤로 왔다갔다 하면서 봉이 안 넘어지게 유지하는 것이므로 앞 게시물에 이어서 이동로봇 위에 매니퓰레이터를 달아보겠다. xacro 파일을 열어서 wheel 내용 다음에 아래 내용을 추가한다. 지금은 매니퓰레이터가 하나밖에 없지만 추가로 더 만들고 싶다면 다음과 같은 방식으로 계속해서 추가해 나가면 된다. 처음에는 fixed 타입의 링크와 continuous타입의 링크를 사용해서 흔들리는 모습을 구현했지만, 나중에는 revolute타입의 링크 하나로 구현했다. 그리고 링크가 똑바로 서있게 제어를 할 수 있도록 링크의 끝에 imu센서를 부착한다. 아래 내용을 링크내용 밑에 추가한다. 그리고 gazebo 밑에 imu 플러그 인을 추가한다. 이때 reference, bodyname 등 .. 2022. 1. 22.