본문 바로가기

공부/ROS

(14)
[RPI4][ROS1] Raspberry Pi 4B 에서 Ubuntu 20.04 server USB로 부팅하기 for ROS noetic 나는 ROS1 Noetic으로 ROS를 시작했고 너무 ROS1에 너무 익숙해져서 ROS2를 아직 메인으로 사용하고 있지 않다. 그래서 이전 Quadruped robot도 그렇고 지금 진행 중인 Inchworm inspired robot도 모두 ROS1 Noetic으로 진행하고 있다. 소형, 저가형 로봇에 비싼 시스템(ex. Jetson series)을 사용할 수는 없기에 사실상 RaspberryPi가 유일한 방법이다. RaspberryPi 4B(이하 RPI4)는 ROS noetic를 사용할 수 있는 Ubuntu 20.04를 공식 지원하지만 여기서 문제가 발생한다. 나는 안정성과 속도를 위해 USB 부팅을 사용하고 싶지만, RPI4로 Ubuntu 20.04를 USB 부팅하는 것은 공식 지원하지 않는다.(2..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 팔로우 봇 #3 215~217p) ●예제 코드 12-5의 lower, upper yellow hsv값은 12-4와 동일한 값(lower = [22,93,0], upper = [45,255,255])을 사용했다. ●나는 mask된 영상(노란색 필터의 2진 영상 + 일정 영역 밖의 픽셀=0)도 보고 싶어서 예제 코드 12-5에서 namedWindow를 하나 추가해 주고 imshow로 mask를 보여주게 했다. ~~~ cv2.namedWindow('mask',2) ~~~ cv2.imshow('mask',mask) ~~~ ●예제 코드 12-5는 예제 코드 12-4에서 P제어기만 추가한 코드였다. 아래 링크는 이전에 PID제어를 간단하게 공부했던 내용이다. https://istein.tistory.com/52 2022-1 PID..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 팔로우 봇 #2 208~209p) ●책에선 느닷없이 followbot의 course라는 launch를 실행시킨다. 당연히 앞에서 설치한 적도 없고 만든 적도 없기에 나는 이를 대신해서 이전에 이미 설치했던 것을 사용했다. $roslaunch turtlebot3_gazebo turtlebot3_autorace.launch ●course.launch처럼 단순한 line은 아니지만 따라갈 노란색의 line과 turtlebot이 spawn 되기에 실습을 따라가는데에 큰 문제가 없다고 판단했다. ●(중요)turtlebot3_autorace.launch로 불러온 turtlebot은 bashrc에 설정해둔 MODEL:=에 상관 없이 burger type으로 spawn된다. 앞에서 burger형은 카메라가 장착되어 있지 않다고 확인했..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 팔로우 봇 #1 이 실습은 Ch12의 팔로우-봇(pp.201~217)의 내용이다. +)저작권 때문에 코드 전문은 올리지 않고 책의 내용을 noetic버전에서 실습할 때 도움이 되는 내용들 위주로 업로드할 예정이다. +책은 ros indigo 버전이지만 나는 noetic 버전에서 실습했다. 이에 따라 달라지는 코드는 이 글에 적어두었다. +나는 followbot_ws를 따로 만들지 않고 기존에 쓰던 catkin_ws 안에 followbot pkg를 만들었다. 202p) ●앞과 마찬가지로 나는 turtlebot3를 사용하기에 해당 패키지를 실행시켰다. 다만 이번 실습에선 카메라가 필요하므로 model을 burger가 아닌 waffle로 설정했다. 모델을 바꾸는 법은 이전에 포스팅했다. https://istein.tistor..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #3 (실습 실패) +) #2를 끝내고 moveit_commander docs에서 ros_arm에서 사용할 만한 다른 쓸만한 메서드가 있나 찾아봤다. http://docs.ros.org/en/indigo/api/moveit_commander/html/classmoveit__commander_1_1move__group_1_1MoveGroupCommander.html#acfe2220fd85eeb0a971c51353e437753 moveit_commander: moveit_commander.move_group.MoveGroupCommander Class Reference Execution of simple commands for a particular group Definition at line 44 of file move_gr..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #2 183~185p) ●예제 코드 11-2를 ros_arm으로 제작하면서는 'ⓐros_arm에 class 사용하기, ⓑplanning의 solution 문제'를 중심적으로 공부해했다. 코드 구성 자체는 교재의 코드를 기반으로 하되, 왼팔/오른팔의 첫 번째 인자를 exact sol/approximate sol을 구할지를 선택하도록 했다. 기본 코드 자체가 이전과 달리 class를 사용해서 기본적으로 어떤 느낌으로 class를 rospy에서 사용하면 되는지도 배웠다. ●L28, 30, 36에서 터미널에 입력한 argument를 받아서 바로 노드에서 정의한 메서드 처리하는 부분은 sys라이브러리를 사용한 거 같아 이 부분을 한번 찾아봤는데 이해가 쉽지 않았다. 일단은 하나의 세트로 알고 외워서 나중에 비슷한 기능..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 체스 봇 + ros_arm_moveit #1 +)Ch9~10의 SLAM 부분은 당장 관심 있는 부분이 아니어서 일단 넘어간다. 본래 실습은 Ch11의 체스-봇(pp.172~197)의 내용을 하려고 했으나 실습에서 사용한 robonaut 2 sim을 더 이상 다운로드할 수 없어 부득이하게 기존의 개인 프로젝트에서 만들어둔 ros_arm으로 개인 공부를 진행했다. https://istein.tistory.com/49 2021-2 간단한 ROS연습용 로봇팔 제작 #12 (完) [launch 파일 구성 및 프로젝트 마무리] ros_arm을 moveit!으로 구동하는 데에 성공했으니 이제 마지막으로 편하게 실행시키기 위해 launch 파일을 만들 차례다. ros_arm 작동에 실행시켜야 하는 것들을 적 istein.tistory.com +)사용한 패키지가 ..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 텔레옵 봇 #4 133~134p) ●이 부분의 실습을 하기 위해선 turtlebot3_world, key_publisher, keys_to_twist_with_ramps까지 총 3개의 launch파일 및 노드가 실행되어야 한다. ●책에선 단순히 keys_to_twist_with_ramps가 publish하는 topic을 바꿔줘야 한다고 되어 있지만 그냥 default로, 즉 cmd_vel로 publish하게 해도 잘 동작한다. 앞 예제에서도 다뤘지만 turtlebot3부터는 cmd_vel_mux~가 아닌 그냥 cmd_vel을 subscribe하기 때문이다. +)따로 scale값을 조정해주지 않아서 많이 빨랐다. 134~141p) ●교재에서 사용한 turtlebot과 달리 turtlebot3는 depth camera가 없..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 텔레옵 봇 #3 130~131p) ●예제 코드 8-5의 send_twist(): 블록에서 global 변수를 사용하는 부분에 \는 오타인 거 같다. ●예제 코드 8-5는 처음에 이해가 쉽지 않아서 함수(블럭)별로 나눠서 이해한 것을 써봤다. if __name__ == '__main__': ⓐ전과 달리 parameter값을 확인하고 가져오는 것을 fetch_param이란 함수를 만들어서 구현했다. parameter는 ~을 붙여 private을 사용했다. ⓑTwist msg는 속도를 나타내는 메시지이므로 plot에서 보는 기울기(변화율)는 가속도이다. 그래서 ramps에 들어가는 parameter이름을 accel로 한 거 같다. ramped_vel(): ⓐ함수 input의 v는 속도, t는 시간이다. 속도는 각속도(angu..
[ROS]『ROS로 배우는 로봇 프로그래밍』 책 따라하기 - 텔레옵 봇 #2 127~128p) [ros parameter basic self study] ●예제 코드 8-4를 하면서 rospy.has_param, get_param에서 파라미터 이름 앞에 ~를 붙이는 부분의 책 설명이 잘 이해가 안 가서 구글링과 코드를 변형해가면서 parameter를 전반적으로 공부했다. +)아래 ⓐ~ⓔ는 내가 따로 공부하고 이해한 방식이므로 틀린 설명일 수 있다. 다만 기능적으로는 맞는 거 같다. ⓐ파라미터는 기본적으로 'rosparam set 명령을 이용'하거나 'rosrun 뒤에 파라미터 항을 추가하는 방식'으로 만들거나 수정할 수 있다. ⓑA라는 이름의 파라미터를 만들 때 rosparam으로 만들면 그냥 A라는 이름으로 만들어진다. 반면 rosrun으로 만들면 실행한 노드이름/A라는 이름으..