Creating a workspace
Background
workspace에는 ROS2 package가 있고, ROS2를 사용하기 전 installation workspace를 source해야 한다.
그 외 workspace를 사용하기 위해서 source하는데, 이를 기존 workspace(underlay)에 overlay한다고 한다.
underlay에는 overlay에 있는 모든 package의 dependency가 포함되어야 하며, underlay보다 overlay가 우선적이다.
Tasks
source ROS2 environment
Tutorial에서는 ROS2 installation이 underlay이지만 ROS2 installation이 반드시 underlay일 필요는 없다.
source /opt/ros/humble/setup.bash
Create a new directory
workspace마다 새로운 directory를 생성하는 것이 좋다. 이 때 이름은 workspace의 목적을 나타내는 이름이면 좋다.
또한 package에 src directory를 넣는 것이 좋다.
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
Clone a sample repo
repository는 여러 branch를 가지고 있기 때문에 clone할 때 -b를 사용하여 branch를 지정해주자.
git clone https://github.com/ros/ros_tutorials.git -b humble
ros_tutorial이라는 repository는 turtlesim package를 가지고 있고, 나머지 package는 COLCON_IGNORE 파일을 포함하고 있어 built되지 않는다.
Resolve dependencies
workspace를 building하기 전 package dependency를 해결해야 한다.
이미 모든 dependency가 있을테지만, dependency를 clone할 때마다 확인하는 것이 좋다.
Linux환경에서는 rosdep command 사용을 위해 rosdep을 설치해야 한다.
sudo apt upgrade
sudo apt install python3-rosdep2
rosdep update
# cd if you're still in the ``src`` directory with the ``ros_tutorials`` clone
cd ..
rosdep install -i --from-path src --rosdistro humble -y
Build the workspace with colcon
colcon build
ls
여기서 install directory는 overlay를 soure할 수 있는 setup file이 있다.
Source the overlay
overlay를 sourcing하기 전, 새로운 터미널창을 열어 실행해야 한다.
같은 터미널창에서 했을 때 문제가 생길 수 있기에 build했던 터미널과 분리해야 한다.
cd ~/ros2_ws
source install/local_setup.bash
이 때 overlay의 local_setup을 soucring하면 overlay에서 사용할 수 있는 package만 추가된다.
즉, ROS2 installation을 sourcing한 다음 ros2_ws overlay local_setup을 sourcing하면 underlay의 환경을 포함하고 있기 때문에 단순히 ros2_ws를 추가한 것이 된다.
이제 turtlesim package를 실행해보자.
ros2 run turtlesim turtlesim_node
Modify the overlay
여기서 main installation의 turtlesim이 아니라 overlay turtlesim 을 사용하는지 어떻게 알 수 있을까?
overlay의 turtlesim을 수정해보자.
~/ros2_ws/src/ros_tutorials/turtlesim/src 에 있는 turtle_frame.cpp 파일을 수정해서 window title bar를 바꿔보려 한다.
setWindowTitle("TurtleSim")에서 TurtleSim을 MyTurtleSim으로 바꿔보자.
그 후 (build-sourcing)실행해보면 title bar가 바뀐 것을 확인할 수 있다.
ros2 run turtlesim turtlesim_node
ROS2_Humble Documentation : https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries.html