Robotics 썸네일형 리스트형 35일차 - ROS에서 dynamixel_sdk include 하기 서론 오로카에 dynamixel_sdk를 사용할 수 없다는 질문글이 달려 잠시 봤습니다.. CMakeLists.txt 파일에 include_directories(...) 안에 ../../../../../include/dynamixel_sdk와 같은 방식으로 라이브러리 폴더를 포함하고 있었습니다. ... 상대경로의 문제점 헷갈립니다. 배포가 힘듭니다. 상대경로는 헷갈린다? 물론 간단한 경우에는 상대경로를 사용하는 게 좋습니다. 해당 프로젝트의 src/ 폴더 안에 있는 main.cpp 파일을 찾는다던지. 하지만 위와 같이 ../../../../../이 들어간 순간... 지금 어느 위치에 있는 건지 헷갈리기 시작합니다. 해당 문제가 일어난 환경은 sdk의, 특정 언어 폴더의, 예제 폴더, 임의의 프로젝트와 같.. 더보기 34일차 - navigation.launch summary 서론 터틀봇에서 네비게이션을 실행하면 어떤 과정을 거칠까? 책을 보며 다시 정리해봤습니다. 저번에도 혼자 궁리해봤지만.. 좀더 자세히 알아왔습니다. 구동 # remote pc roscore & roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml # rviz는 알아서 실행됩니다. # turtlebot pc roslaunch turtlebot3_bringup turtlebot3_robot.launch 내비게이션에 필요한 정보 오도메트리(/odom, nav_msgs/Odometry): 오도메트리 정보는 국부 이동 계획 (local path planning)을 생성하거나 장애물을 회피하는 데에 사용됩니다. lo.. 더보기 33일차 - #! 사용하여 roslaunch에서 nodemon 사용하기 서론 이전에 rosnodejs로 nodemon을 실행하기 위해 rosrun의 소스코드를 살펴봤었습니다. 쉬뱅(She-bang) 혹은 샤뱅이라 불리는 #!/usr/bin/env nodemon 구문을 추가하여 해결했었죠. 이러한 방법으로 rosrun을 통해 자바스크립트 파일을 실행할 때 nodemon을 이용할 수 있었습니다. 그런데... roslaunch에는 안 통합니다... 오늘은 roslaunch를 통해 노드를 실행할 때 nodemon을 통해 실행할 수 있도록 만들어보겠습니다. which roslaunch roslaunch의 정체를 알기 위해 해당 파일이 위치한 경로로 이동하여 어떤 파일 형식과 내용을 가지고 있는지 파악해보도록 하겠습니다. 다음 명령어를 통해 roslaunch의 경로를 획득할 수 있습니.. 더보기 32일차 - /move_base_simple/goal rosnodejs로 퍼블리시 하기 서론 어제 얘기했던대로 오늘은 웹 메뉴판을 누르면 터틀봇이 지정된 위치로 움직이도록 만들어보겠습니다. 토픽 지난 시간에 터틀봇을 움직이게 만드는 토픽을 확인했습니다. 해당 토픽은 geometry_msgs/PoseStamped 메시지를 사용하는 /move_base_simple/goal입니다. 내용은 다음과 같습니다. # geometry_msgs/PoseStamped.msg # A Pose with reference coordinate frame and timestamp Header header Pose pose 헤더와 포즈의 내용은 각각 다음과 같습니다. # std_msgs/Header.msg # Standard metadata for higher-level stamped data types. # This.. 더보기 31일차 - real Navigation 서론 SLAM을 통해 지도를 만들었으니 실제 네비게이션 작업을 해보도록 하겠습니다. 아래 명령어를 통해 네비게이션에 필요한 노드와 rviz를 실행합니다. # Remote PC roscore & export TURTLEBOT3_MODEL=burger roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml roslaunch turtlebot3_bringup turtlebot3_robot.launch 실행되는 구문은 다음과 같습니다. 로봇 urdf 모델을 불러오고, tf2 정보를 퍼블리시 하는 turtlebot3_remote.launch, 이전에 작성한 지도를 불러오는 map_server 노드, 확률 기반 위치 .. 더보기 30일차 - RViz 파일 직접 구성하기_2 (tf, robot_state_publisher) model2.urdf.xacro가 링크와 관절을 포함하도록 다듬어 보겠습니다. 하단 박스를 포함한 는 일부러 터틀봇과 같은 이름을 사용하였고, 상단 실린더는 다른 이름을 사용하였습니다. 다음 명령어를 실행하여 해당 파일을 robot_description 파라미터로 설정합니다. # 마스터가 실행되고 있지 않다면 roscore & # 파라미터 설정 rosparam set /robot_description "$(xacro model2.urdf.xacro)"예제 파일처럼 RViz에서 tf, LaserScan, image 등 나머지 항목을 모두 추가한 모습입니다. 이 상태로는 rosbag을 실행하여도 움직이지 않습니다. RViz 상에서 RobotModel을 움직이기 위해선 tf와의 연결이 필요합니다. SLAM 예.. 더보기 29일차 - RViz 파일 직접 구성하기_1 (xacro, urdf, sdf) 서론 로보티즈에서 제공하는 예제만 이용해서는 다른 로봇 모델을 불러오거나 커스텀 설정을 할 수 없습니다. 이번 시간에는 독립심을 기르기 위해 RViz 파일을 직접 구성해보도록 하겠습니다. RViz 구성 RViz를 실행시켰을 때 초기 화면은 다음과 같습니다. 다음은 로보티즈에서 제공하는 turtlebot3_gmapping.rviz의 화면 구성입니다. RobotModel RobotModel은 주어진 경로에서 .stl, .dae 혹은 .obj 형식의 3D 모델링 파일을 받아 RViz 화면에 표시해줍니다. 이때 모델은 정확한 위치와 자세에 표시되는데 이는 자세 추정 값인 /tf 토픽을 사용한 결과입니다. 표시될 모델은 URDF에 정의되어 있습니다. http://wiki.ros.org/rviz/DisplayTyp.. 더보기 28일차 - real SLAM 서론 오늘은 딜리버리 서비스 로봇을 만들기 전에, 실제 집을 돌아다니면서 지도를 생성하면 얼마나 인식률이 좋은지, 유리나 거울 같은 장애물을 마주쳤을 때 어떤 모습을 보이는지 확인해보도록 하겠습니다. 집 구조 원래 로보티즈의 예제처럼, 메뉴를 주문 받으면 주방에 받으러 갔다가 거실로 돌아오는 걸 상상하고 있습니다. 따라서 거실과 주방만 지도를 생성하도록 하겠습니다. 거실에는 커다란 유리가 있고, 한 쪽 벽에는 유리장이 있습니다. 신발장에도 거울이 있죠. 주방의 경우 유리, 거울은 없지만 대신 식탁 때문에 좀 복잡합니다. 창피하네요.. 아무튼 시작! SLAM 아래부터는 책 335p를 따라합니다. 11.2.4. SLAM 실행 저는 터틀봇 버거를 가지고 있기 때문에 다음과 같이 환경변수를 설정했습니다. exp.. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 11 다음