카테고리 없음

패스트캠퍼스 환급챌린지 33일차 : 자율주행 로봇을 위한 ROS2 & Nav2 한번에 끝내기 강의 후기

연두부진 2025. 4. 6. 23:49

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

오늘은 새로운 로봇으로 환경을 구축하고

cartographer로 mapping을 진행했다.

 

[오늘의 수강 영상]

 

[오늘의 실습]

 

오늘부터는 ADLINK Technology 회사에서 만든

NeuronBot을 사용하여 실습을 진행하였다.

 

오늘은 cartographer를 본격적으로 사용하기 전에

환경을 구축하는 거에 치중하고 마지막에 cartographer로

mapping을 진행해보았다.

 

로봇 환경 설정을 위해 필요한 요소들을 설치해 줬다.

$ sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  libbullet-dev \
  python3-colcon-common-extensions \
  python3-flake8 \
  python3-pip \
  python3-pytest-cov \
  python3-rosdep \
  python3-setuptools \
  python3-vcstool \
  openssh-server \
  wget

 

그 후, nav2_ws라는 워크스페이스를 새롭게 생성해 준 후에

필요한 리소스들을 가져오고

$ wget https://raw.githubusercontent.com/Adlink-ROS/neuronbot2_ros2.repos/humble/neuronbot2_ros2.repos

$ vcs import src < neuronbot2_ros2.repos

 

아래 명령어를 사용하여 워크스페이스 안의

모든 의존성 패키지들을 설치해 주었다.

$ rosdep install --from-paths src --ignore-src -r -y --rosdistro humble

 

그 후 워크스페이스에 가서 빌드를 진행해 주었다.

$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release

 

먼저 간단하게 시뮬레이션 환경이 제대로 생성되었는지

환경을 열어보고 간단하게 움직여보았다.

$ ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py


시뮬레이션을 처음 실행할 때

계속해서 Gazebo가 실행되지 않는 상황이 발생하였었다.

 

이를 해결하기 위해 그래서 이것저것 찾아보던 중

Gazebo에서 GUI 렌더링을 시도하는 중, 카메라나 렌더링 관련 오브젝트를

제대로 초기화하지 못했을 때 발생하는 아래와 같은 에러가 발생한 걸 알게 되었다.

 

gzclient: /usr/include/boost/smart_ptr/shared_ptr.hpp:728: Assertion `px != 0' failed.

 

이를 해결하기 위해 찾아보니 Gazebo 업데이트를 진행하면

해결될 수 있을 것 같아서 업데이트를 진행하였더니

이 문제가 해결되었다.

 

학교 다닐 때도 버전문제를 많이 겪었고

정말 싫더라도 어쩔 수 없이 마주하는 문제이기 때문에

 

항상 이 버전문제를 염두에 두고 앞으로 이러한 문제를

마주치더라도 잘 해결해 봐야겠다.


시뮬레이션 환경에서 기본으로 주어지는 환경이 두 개가 있다.

Mememan World와 Phenix World이다.

 

시뮬레이션을 실행시키면 가장 먼저

아래와 같은 화면이 나오게 된다.

Mememan world

 

이 화면이 Mememan world인데

여기서 Phenix World로 바꾸고 싶다면

 

neuronbot2_world.launch.py의 28번째 줄의 파일을

phenix_world.model로 수정하여 world를 바꿀 수 있습니다.

 

이렇게 바꾸면 아래와 같이 바뀌는 것을 볼 수 있다.

Phenix world

 

이렇게 확인을 해보면서 로봇이 시뮬레이션에서는

잘 작동하는 것을 확인하였다.

 

다음으로 이제 Cartographer를 통해 map을 그려볼 것이다.

 

근데 주어진 환경 말고 서점환경을 따로 불러와서

그 위에 로봇을 불러와 map을 제작해 보겠다.

 

Cartographer를 수행하기 위해서는

Launch 파일과 Lua 파일, Rviz 파일이 필요하고

이 파일들에서 필요한 정보들을 수정해줘야 한다.

 

먼저 Launch 파일에서 cartographer_node의 arguments로

설정파일의 경로(configuration_directory,13번 줄)와

설정 파일의 이름(configuration_basename,15번 줄)을 정의한다.

 

 

Lua 파일과 Rviz파일은 선생님이 사전에 주신 파일들을 사용하였고

아래 위치가 파일들이 있었다.

 

 

다음으로는 서점환경을 불러오기 위해서

git clone을 진행하였다.

$ git clone https://github.com/aws-robotics/aws-robomaker-bookstore-world.git -b ros2

 

내려받은 후 aws_robomaker_bookstore_world 패키지만 따로 빌드해 준다.

$ colcon build --symlink-install --packages-select aws_robomaker_bookstore_world

 

시뮬레이션이 잘 동작하는지 확인하기 위해

아래 명령어를 실행했다.

$ ros2 launch aws_robomaker_bookstore_world view_bookstore.launch.py


위와 같이 성공적으로 불러와지긴 하지만 그래픽카드가 안 좋은 건지

그래픽이 잘 안 불러와지고 확대했을 때만 제대로 보이는 것을 확인할 수 있었다.

 

이 문제는 조금 더 찾아봐야 할 것 같다ㅠㅠ


그래도 환경을 보는 것에는 문제가 되지 않아

계속 진행해 보았다.

 

우리가 서점환경에 로봇을 spawn 하기 위해서는

~/nav2_ws/src/neuronbot2/neuronbot2_gazebo/launch/

neuronbot2_world.launch.py를 아래와 같이 수정해줘야 한다.

 

15번 줄에 우리가 사용하는 모델 경로를 설정해 준 후

19번 줄에서 aws_robomaker_bookstore_world 패키지의

models 디렉터리 안에 있는 모델들을 Gazebo가 읽을 수 있도록

환경변수에 추가해 준다.

 

또한, 29번 줄에 directory에도 패키지를 잘 설정한 후

31번 줄에  우리가 사용하는 world를 잘 적어주면

 

이제 서점 환경에서 로봇을 spawn 할 수 있게 된다.


이 단계에서 29번 줄에 경로를 잘 설정하지 않으면

로봇만 불러지고 환경이 불러와지지 않는

문제가 발생한다.

 

잘 확인하고 진행해야 저와 같은

불상사를 막을 수 있습니다..


 

그 후 아래 명령어를 입력하여 로봇이 잘 Spawn 되는지 확인한다.

$ ros2 launch neuronbot2_gazebo neuronbot2_world.launch.py

 

 

 

Spawn이 잘 되는 것을 확인한 후

이제 Cartographer를 통해 mapping을 수행해 보았다.

 

아래 명령어를 입력하여 cartographer를 실행한 후,

$ ros2 launch neuronbot2_slam cartographer_launch.py open_rviz:=true use_sim_time:=true

 

telep_twist_keyboard를 수행하여 로봇을 이동하며

아래 동영상과 같이 mapping을 진행하였다.


오늘 이렇게 cartographer를 통해 map을 그려보았다.

 

중간중간 진행하면서 오류도 해결하면서

성공적으로 map을 작성할 수 있게 되어서

너무 뿌듯한 마음이 든다.


공부 시작시간
공부 종료시간

 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

https://bit.ly/4hTSJNB

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr