본문 바로가기

Enginius/Robotics

[ROS] ROS의 구조와 패키지 만드는 방법

1. ROS 패키지 만드는 방법

cd catkin_ws/src

catkin_create_pkg test_pkg ros_cpp rospy std_msgs cv_bridge sensor_msgs geometry_msgs nav_msgs tf

test_pkg는 패키지 이름이다. 

ros_cpp rospy std_msgs cv_bridge sensor_msgs geometry_msgs nav_msgs tf는 패키지의 dependency들이다. 물론 따로 추가하는 방법도 있다. 

 위의 계층도는 ROS에서 catkin이라는 workspace의 계층도를 나타낸다. 위와 같이 터미널 창에서 칠 경우, pkg_name에 test_pkg가 생기게 된다. 

 

 위에서 catkin_ws->src->pkg_name 폴더 안에 launch라는 폴더를 만들고, *.launch 파일을 생성한다. launch 파일한번에 여러개의 node와 launch 파일을 실행할 때 사용한다. 


 위에서 .cpp 파일은 node를 생성하는데 사용된다. 그리고 .h 파일은 그냥 헤더파일이다. 물론 이를 사용하기 위해서는 CMakeList.txt에서 해당 헤더를 설정해야한다. 


CMakeList.txt 파일 변경

// 추가 Dependency

find_package(PLC REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})


// 노드로 만들 cpp를 설정

add_executable(노드_이름    경로/파일_이름.cpp)

target_link_libraries(노드_이름   ${catkin_LIVRARIES} ${PCL_LIBRARIES})


// 노드로 만들 cpp를 설정

add_executable(노드_이름    경로/파일_이름.cpp)

target_link_libraries(노드_이름   ${catkin_LIVRARIES} ${OpenCV_LIBS})


// 노드로 만들 cpp를 설정

add_executable(노드_이름    경로/파일_이름.cpp)

target_link_libraries(노드_이름   ${catkin_LIVRARIES} yaml_cpp)


CMakeList.txt 에 헤더 추가하기 

// 추가 Dependency

find_package(PLC REQUIRED)

include_directories(${PCL_INCLUDE_DIRS} ./include)

./include는  위의 계층도에서 include 폴더 안에 있는 


2. 현재 사용되는 노드와 Launch 파일


amcl_launch.launch

 - gmapping을 켠다. 

 - RVIZ를 켠다. 

 

kinect_laser.launch

 - 키보드 입력을 받아서 로봇 제어

 - 키넥트 연결 (openni)

 - 키넥트 값을 레이져로 변환 (ROS 기본 제공)

 - 키넥트와 파이오니어 사이의 tf 


kinect_laser_pcl.launch

 - 키보드 입력을 받아서 로봇 제어

 - 키넥트 연결 (openni)

 - 키넥트 값을 레이져로 변환 (경재가 변경)

 - 키넥트와 파이오니어 사이의 tf 


3. 컴파일 하기

/catkin_ws$ catkin_make 


4. ROS_ARIA 설치하기 

ROS_ARIA는 파이오니어 로봇을 돌리기 위해 필요한 부분이다. 

cd ~/catkin_ws/src

git clone https://github.com/amor-ros-pkg/rosaria.git 

소스를 깃허브에서 받아온다. 


source ~/catkin_ws/devel/setup.bash

세팅을 준비한다. 


echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

해당 내용을 ./bashrc에 추가한다. 


rosdep update

rosdep install rosaria

catkin_make

ROS에 Dependency를 추가한다. 

ROS_ARIA를 설치한다. 

페키지를 컴파일 한다. 











'Enginius > Robotics' 카테고리의 다른 글

Gaussian process path  (0) 2014.12.24
RSS 2014 papers  (0) 2014.12.12
Installing ROS  (0) 2014.08.04
Robot with deep learning  (0) 2014.07.30
ROS - Pioneer control using Gazebo simulator  (0) 2014.07.21