본문 바로가기

팀 프로젝트

C-2345 자세 제어 4족보행 로봇 #4 (ROS 5,6강-Rviz, RQT, Gazebo)

반응형

●5강

https://www.youtube.com/watch?v=5RBqGt1hvpM&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=5 

자세히 설명하진 않고 이런 명령어들이 있다만 하고 넘어가셨다. 추후에 써야 하는 상황에서 알려주는 게 더 효과적이라고 하셨다.

 

 

 

 

●6강

https://www.youtube.com/watch?v=fB2YINZOIng&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=6 

본격적으로 ROS를 시작하는 강의였다.

 

 

●Keyword

-Rviz, RQT, Gazebo, pointcloud, RGB-D, IMU센서, navigation, manipulation

-usb_cam, image_view, rostopic, rosnode

-apt-get install/purge

 

 

 

 

●Study

Rviz, RQT 같은 ROS의 툴의 사용 예를 먼저 알려주셨다. 그 과정에서 pointcloud, RGB-D, IMU센서 같은 것이 있다고 알려주셨고 각각에 대한 설명은 내가 찾아봤다.

 

 

Pointcloud

https://23min.tistory.com/8

 

포인트 클라우드(Point Cloud)란?

Point Cloud Lidar 센서, RGB-D센서 등으로 수집되는 데이터를 의미한다. 이러한 센서들은 아래 그림처럼 물체에 빛/신호를 보내서 돌아오는 시간을 기록하여 각 빛/신호 당 거리 정보를 계산하고, 하

23min.tistory.com

LiDAR나 RGB-D 등을 이용해 받은 거리 데이터(점)를 점묘법 같이 표현하는 3d 스캔 기술이다.

 

 

 

 

IMU센서

이전 회의 때 언급돼서 조사한게 있다.

https://istein.tistory.com/11?category=881417 

 

 

 

 

Rviz

ROS의 데이터 시각화 툴로 각종 센서 데이터, cloudpoint, 영상 데이터 등을 처리할 수 있는 툴이다.

 

 

이뿐만 아니라 URDF로 로봇의 3D모델, 움직임의 궤적, 이동 경로 등을 보기 쉽게 그래픽으로 표현할 수도 있다. 

 

 

물론 이외에도 다른 시각화 툴은 많지만 Rviz만큼 로봇에 특화된 툴은 없다고 하셨다.

 

 

이번 강의에선 그냥 실행시켜보고 화면구성에 대한 설명만 하고 실습이 끝났다. 

 

 

 

 

RQT

ROS의 종합 GUI툴로 유저들이 제작한 플러그인을 중심으로 사용된다고 한다. ROS의 만능 툴이다.

 

 

RQT는 실습위주로 진행했는데 막히는 부분이 좀 있었다.

 

 

예전 강의여서 ROS버전도 달랐고 한 줄 설치를 안 했기에 패키지도 내가 찾아서 깔아야 했다. 또 강의에서 사용한 uvc_camera 패키지가 지원이 끝나 ROS noetic 기준 다운은 물론 사용할 수 없어서 다른 방법을 찾아야 했다. 내가 시도했던 방법들을 적었다.

 

 

1. uvc_camera ROS wiki에 libuvc_camera 패키지로 사용하라고 나와 있어서 시도해봤다.

http://wiki.ros.org/libuvc_camera

 

libuvc_camera - ROS Wiki

kinetic melodic noetic   Show EOL distros:  EOL distros:   groovy hydro indigo jade lunar groovy: Documentation generated on October 06, 2014 at 01:51 AMhydro: Documentation generated on August 27, 2015 at 01:51 PM (doc job).indigo: Documentation gene

wiki.ros.org

 

실패했다.

 

 

설치 후 아무리 rosrun으로 실행해도 도저히 카메라 모듈이 실행이 안됐다.

 

 

그래도 얘를 찾고 설치 하는 과정에서 apt install, apt-get purge의 대충의 사용법을 알게 되었다.

 

 

아무래도 못쓰는 패키지는 삭제하는게 마음이 편해서 삭제하는 법을 찾다가 설치할 때의 코드와 비슷해서 알 게 된 것이다. 

 

https://www.google.com/search?q=ros+%ED%8C%A8%ED%82%A4%EC%A7%80+%EC%82%AD%EC%A0%9C&oq=ros+%ED%8C%A8%ED%82%A4%EC%A7%80+%EC%82%AD%EC%A0%9C&aqs=chrome..69i57.6020j0j7&sourceid=chrome&ie=UTF-8 

 

ros 패키지 삭제 - Google 검색

2020. 8. 13. · roscd [패키지 명], ***, 지정한 ROS 패키지의 디렉터리로 이동 ... rosclean [옵션], **, ROS 로그 파일 검사 및 삭제 ...

www.google.com

 

 

 

 

2. usb_cam 패키지 사용

https://m.blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=angelkim88&logNo=221631642641 

 

[ROS Melodic] USB-CAM & UVC CAMERA

#[rospack] Error: package 'uvb_camera' not found [rospack] Error: package 'uvb_came...

blog.naver.com

다른 방법을 찾다가 위의 블로그를 보게 되었다.

 

 

딱 내 문제랑 똑같은 상황이었다.

 

 

여기는 해결책으로 usb_cam이라는 패키지를 사용하는 방법을 제시했는데 일단 여기는 melodic버전을 기준으로 설명하셨기에 wiki에서 noetic도 가능한가 확인을 해야 했다.

 

http://wiki.ros.org/usb_cam

 

usb_cam - ROS Wiki

kinetic melodic noetic   Show EOL distros:  EOL distros:   electric fuerte groovy hydro indigo jade lunar diamondback: Only showing information from the released package extracted on Unknown. No API documentation available. Please see this page for in

wiki.ros.org

noetic도 지원한다!

 

$sudo apt install ros-noetic-usb-cam
$sudo apt-get update

를 이용해 바로 설치했다.

 

 

$rosrun usb_cam usb_cam_node

성공적으로 실행시켰다.

 

 

그 다음은 강의에서 시키는 대로 하니까 됐다.

강의 RQT실습 #1 화면

 

 

 

 

2번째 실습 같은 경우는 다른 건 다 똑같이 해주고 image_view 부분만

&rosrun image_view image_view image:=/usb_cam/image_raw

이렇게 topic명을 바꿔서 실행하면 된다.

 

 

 

 

+) 강의 중간에 알려주신 유용한 명령어

&rostopic list    : 현재 ros에서 발생한 모든 topic의 list를 보여준다.

 

&rostopic echo /topic명    : 해당 topic의 메시지를 보여줌

 

&rosnode list    : 현재 ros에서 실행 중인 모든 node의 list를 보여준다.

 

 

 

 

실습 #1은 RQT의 카메라 visualization 플러그인으로 카메라의 topic을 읽은 것이고 실습 #2는 image_view라는 패키지의 노드로 읽은 것이다.

강의 RQT실습 #2 화면

우측의 그림은 rqt_graph로 현재 ros에서 실행되는 node들의 관계와 메시지 방향을 그래픽으로 보여주는 RQT플러그인이다.

 

 

그림에 따르면 현재

 

 

usb_cam node에서 image_view node로 usb_cam/image_raw라는 topic을(단방향 화살표),

 

 

teleop_turtle node에서 turtlesim node로 turtle1/cmd_vel이라는 topic을 보내고 있는 것이다.

 

 

 

 

실습 #3도 그냥 시키는대로 하면 된다.

강의 RQT실습 #3 화면

다만 &rqt_plot /turtle1/pose가 아닌 &rqt로 들어가 플러그인을 실행시키는 방법으로 했다면 실행화면의 topic칸에 /turtle1/pose를 넣어줘야 한다.

 

 

plot같은 경우는 나중에 IMU나 다른 센서 간단하게 작동 여부 확인용으로 쓸 수 있겠다.

 

 

 

 

실습#4도 시키는 대로 하면 되는데 ppt에는 일부만 적혀 있었다.

 

 

내가 한 방법은

 

1. 

$rosrun usb_cam usb_cam_node     카메라 노드 실행

 

 

2.

$rosbag record /usb_cam/image_raw   ros내장 명령어로 이미지 토픽을 bag확장자로 녹화함

강의 RQT 실습 #4 화면1

 

3. 카메라 노드와 녹화 노드를 종료

 

 

4.

$rqt_bag

실행 후 불러오기로 bag확장자의 녹화 파일을 불러옴. 이후 불러온 파일의 타임라인을 우클릭해서 thumbnail을 체크해 불러온 녹화 파일이 맞는지를 확인

 

 

5. 다시 우클릭 후 publish를 체크해 rqt_bag노드가 읽은 bag파일을 topic으로 publish함

 

 

6.

&rqt image_view

실행 후 topic을 rqt_bag이 발행한 것으로 실행 (이때 topic이름은 카메라 노드의 이름과 똑같을 것이다)

 

 

7. rqt_bag에서 재생 버튼을 누르면 재생 중인 영상을 image_view로 publish 해서 결국 image_view에 녹화된 영상을 재생된다

강의 RQT 실습 #5 화면2

 

 

나는 저 rqt_bag에서 publish 한 topic이름이 usb_cam과 같을 거라는 생각을 못해서 좀 헤매었었다.

 

 

 

 

+) 강의 중간에 알려주신 것

강의에서 교수님은 터미널 창이 여러 개가 뜨는 것을 사용 중이셨는데 이는 Terminator라는 프로그램을 사용하는 거라 알려주셨다.

 

 

설치는 https://harryp.tistory.com/630 여기를 참고했다.

 

[Linux] 우분투 터미널 다중 창, 창분할 - 터미네이터 (Terminator)

안녕하세요. 우분투를 개발 용도로 쓰다 보니 터미널이 분할이 되면 편할것 같아 다중 창 (창 분할)이 가능한 터미널을 찾다 발견한 프로그램을 소개합니다. 바로 터미네이터 (Terminator) 입니다.

harryp.tistory.com

&sudo apt-get install terminator

 

 

 

 

Gazebo

Gazebo는 이후 강의에서 자세히 다룬다고 하시고 기능 소개와 간단한 영상 시청으로 넘겼다. 

 

 

내가 앞으로 로봇을 만들면서 가장 많이 쓸 거 같다.

 

 

 

 

 

 

이후 이기종 디바이스 간의 통신 부분도 실습을 하셨는데 예제 1은 컴퓨터가 2대 필요해서 못하고 예제 2,3은 사용하신 어플이 더 이상 지원을 하지 않아 할 수 없다. 

 

 

하튼 이렇게 ROS의 가장 유용한 툴 3가지를 간단하게 배우고 실습해봤다.

 

 

 

 

 

 

 

 

===============================================================================

정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.

틀린 내용이 있을 수 있습니다.

틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다.   : )

===============================================================================

반응형