Ros_control와 gazebo를 활용한 pan/tilt control

로봇팔이나 머리 등 엑츄에이터를 원하는 곳으로 제어하는 것은 어려운 일이다.


예를 들어, 로봇 팔로 사과를 잡는다고 한다.


사과를 잡기 위해, 로봇 팔의 손가락 (End effector)이 목표하는 위치로 가기 위해서는 팔의 관절 (Joint)들이 각도를 적절히 설정되야한다.


음.. 사람은 자연스럽게 되지만 로봇이 사과를 잡기 위해 관절들의 각도를 계산해야한다. 이것을 역기구학이라고 한다.


하지만 역기구학을 공부를 했다고 하더라도 코드로 작성하는 것은 어려우며, 자유도가 높아질 수록 더 어렵다.


코드를 잘 짠다고 하더라도 수식도 어렵다. 이럴 때는.. 기초적인 것을 이해하고 잘 만들어 논 것을 활용하면 된다.


바로 ros_control..



위의 사진은 공부를 하면서 만든 로봇 머리이다.


이미지에서 좌표를 선택하면, 로봇은 그 좌표를 중심이 되도록 로봇 머리를 움직인다.



공부한 것


1.모터 포지션 컨트롤


모터를 원하는 각도 (위치)로 제어하는 것을 의미한다.


그리고 실제 움직이는 로봇과 시각화 툴에서 그대로 보일수 있도록 한다.


아래 동영상은 joint angle을 수동으로 조작해보는 영상이다.





다음으로는 position control을 해야하는데..


여러 joint의 각도를 설정하여, 모터를 조작하는..


업데이트 예정





2.실제 모터컨트롤러 (micro controller)를 ros_control 모듈과 연동시켜, 상위레벨에서 제어하고자 한다.


Pal robotics


스페인 회사이다.


내가 하고자 하는 것을 제대로 구현을 해놨다.


코드를 보면서 많은 공부가 됐다.



동영상 위치 http://wiki.ros.org/Robots/TIAGo/Tutorials/motions/head_action



  • roslaunch tiago_gazebo tiago_gazebo.launch robot:=titanium public_sim:=true world:=look_to_point

  • rosrun look_to_point look_to_point


이미지에서 좌표 찍은 곳을 바라본다.




카메라 z축이 초록색 직선 A와 일치하게 만든다.


Controller에서는 좌표를 받고, 직선을 만든 후, 직선과 카메라 z축이 일치하게 한다.


Controller는 카메라 z축과 직선 A를 일치시키기 위해, 역기구학 문제를 풀고 pan 과 tilt의 각도를 계산한다.


그리고 joint trajectory를 생성하여 모터를 제어한다.


최종적으로 아래와 같은 결과가 된다.





Perception에서는 좌표를 넘기는 역할을 한다.


예를 들어 음료수에서 감자칩을 볼 수 있도록 x,y 좌표를 넘겨준다.


컨트롤러에서는 좌표를 카메라 축이 보게될 방향으로 변환, 그리고 제어를 한다.




하드웨어


실제 모터 컨트롤러는 아래와 같은 출력과 입력이 필요하다.


출력 : curr_vel, curr_effort, curr_pos


현재 속도, 파워, 위치를 업데이트한다.


입력 : cmd_pos


목표하는 위치(각도)를 입력 받는다.




ROS Control에 연결


추후 정리 예정




참고링크


https://pinkwink.kr/1007


https://pinkwink.kr/1013


Ros control



Head action



실험을 하면서 계속 업데이트할 예정이다.


This page is synchronized from the post: ‘Ros_control와 gazebo를 활용한 pan/tilt control’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×