본문 바로가기

공부/ROS

[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 원더 봇 #2

반응형

109p)

●그림 7-3과 같이 gazebo에서 보낸 /scan topic을 rviz로 보려고 turtlebot3_world를 실행시키고 rviz를 실행시켜 LaserScan과 RobotModel을 display에 추가해서 각각 /scan과 robotdescription을 받도록 해봤다.

실패했다.

 

검색해보니 turtlebot3_gazebo 패키지만으로는 robot_description에서 모든 부품의 tf가 정의되지 않아서 이런 오류가 난다는 것 같았다.

https://answers.ros.org/question/365391/rviz-status-error-no-transform/

 

rviz Status Error: No Transform - ROS Answers: Open Source Q&A Forum

rviz Status Error: No Transform edit For some reason, rviz isn't recognizing any transforms from the turtlebot3_model. For every component of the robot, listed under "Robot Model," I'm getting rviz errors such as: No transform from [base_link] to [odom] No

answers.ros.org

 

그래서 skpro19님이 여기서 시키는 대로 turtlebot3_bringup 패키지를 추가로 설치해서 launch파일을 실행하니 모든 setting이 되어 있는 rviz가 실행됐다. (launch 파일을 따라가 보니 그냥 tf가 전부 정의되어 있는 urdf를 불러오는 내용인 거 같았다. (정확 X))

 

 

gazebo의 turtlebot3_world

이 챕터에서 중요한 부분은 아니었지만 그래도 해결하니 재밌었다 ㅎ

 

 

 

 

110p)

●예제 코드 7-2에서 아래 부분을 바꿔줬다.

range_ahead = msg.ranges[len(msg.ranges)/2]  →  range_ahead = msg.ranges[int(len(msg.ranges)/2)]

인덱스에는 int형만 들어갈 수 있는데 왜인지 len으로 나온 값이 flaot형이라 에러가 발생했다. 직접 값을 확인하니 실수형이 나오지는 않고 360/2 = 180이 나와서 값이 바뀌는 것은 아니었다.

 

 

예제 코드 7-2에서 print부분을 %를 쓰지 않고 format 메서드를 사용했다.

(+최대한 메서드를 활용하는 게 pythontic하다고 배웠다 ㅋㅋ)

print('range ahead: {:01.1f}'.format(range_ahead))

 

아래는 format 메서드에서 소수점을 표현하는 방법이다.https://animoto1.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%ACPython-%EC%86%8C%EC%88%98%EC%A0%90-%EC%9E%90%EB%A6%AC-%EC%A0%9C%ED%95%9C%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95 

 

파이썬(Python) 소수점 자리 제한하는 방법

-목차- 1. round함수로 소수점 관리하기 2. 파이썬 format 서식 지정으로 소수점 관리하기 3. 파이썬 f-string에서 소수점 관리하기 4. '%.?f'로 소수점 관리하기 round함수로 소수점 관리하기 round(반올림하

animoto1.tistory.com

 

예제 7-2를 실행하면 로봇의 range값이 터틀봇3의 정면(빨간 화살표 방향)이 아닌 반대 방향의 측정값이 나온다. 일단은 큰 문제는 아니어서 그냥 넘어간다.

 

 

 

 

 

========================================================================
정확한 정보 전달보단 공부 겸 기록에 초점을 둔 글입니다.
틀린 내용이 있을 수 있습니다.
틀린 내용이나 다른 문제가 있으면 댓글에 남겨주시면 감사하겠습니다. : )
========================================================================

반응형