Ros_control와 gazebo를 활용한 pan/tilt control

in wordpress •  8 months ago  (edited)

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

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

사과를 잡기 위해, 로봇 팔의 손가락 (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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

재미있을 것 같은데 확실히 기본이 되 있어야 겠네요.
이해하기 너무 힘들어요^^

봐주셔서 감사해요 ㅎㅎ.
간단히 설명하면, 사람이 원하는 곳을 보기 위해 머리를 움직이는데
그것을 로봇에서 구현을 한 것입니다 ㅎㅎ
감사합니다

Congratulations @jacobyu! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 200 replies. Your next target is to reach 300 replies.

Click here to view your Board of Honor
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

The Meet the Steemians Contest is over - Results are coming soon ...

Support SteemitBoard's project! Vote for its witness and get one more award!

짱짱맨 호출에 응답하여 보팅하였습니다.

Hi @jacobyu!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 2.471 which ranks you at #16690 across all Steem accounts.
Your rank has improved 515 places in the last three days (old rank 17205).

In our last Algorithmic Curation Round, consisting of 370 contributions, your post is ranked at #267.

Evaluation of your UA score:
  • Only a few people are following you, try to convince more people with good work.
  • The readers like your work!
  • Try to improve on your user engagement! The more interesting interaction in the comments of your post, the better!

Feel free to join our @steem-ua Discord server

박사님이세요.

감사합니다 ㅎㅎ