반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 운영체제 #working set #working set algorithm #file system
- turtlebot4
- Raspberry Pi
- Linux
- ROS
- ROS2
- planning
- 자율주행
- 데브코스
- 인턴
- TOF
- 자윯주행
- control
- rviz
- MORAI
- 디지털시스템설계 #verilog #module #port #구조문
- 데이터베이스 #정규화 #이상현상 #함수종속
- Slam
- 운영체제 #page replacement algorithm
- python
- turtlebot
- 프로그래머스
- ubuntu
- pathplanning
- 자율주행 #opencv #perception #control #제어 #인지
- Gazebo
- 프로그래머스 #데브코스 #자율주행
- morai #자율주행 #데브코스 #planning&control #ros #ubuntu
- create3
- ros #rviz #onedayproject #Lane Keeping #Lane Changing #차선 변경
Archives
쓰레기 개발자
Turtlebot4로 SLAM + 로컬에서 시각화(Rviz) 본문
회사의 Turtlebot4에는 라즈베리파이4와 Create3가 있다. 하지만 라즈베리파이4의 성능이 좋지 않아서 SLAM과 Turtlebot4 관련된 로봇 구동 노드들은 라즈베리파이4에서, Rviz 같은 시각화 툴과 Gazebo 같은 시뮬레이션은 로컬에서 진행하고자 한다.
우선 라즈베리파이와 내 로컬 노트북(LG그램) 기준으로 스펙을 비교하여 보면,
|
라즈베리파이4
|
LG 그램
|
CPU
|
브로드컴 BCM2711, 쿼드코어 Cortex-A72 (ARM v8) 64-bit SoC @ 1.5GHz
|
인텔® Evo™ 플랫폼 13세대 인텔® 코어™ i5-1340P 프로세서 @ 1.9GHz (최대 4.6GHz)
|
RAM
|
4GB LPDDR4-3200
|
16GB LPDDR5-6000
|
GPU
|
VideoCore VI
|
인텔® Iris® Xe Graphics
|
위와 같다. 따라서 Rviz를 라즈베리파이에서 launch 해보면

에러가 뜨면서 돌아가지 않는다.
이를 해결하기 위해 Docker에서 Galactic 환경을 실행하여 시각화를 진행하였다.
참고로 로컬은 Ubuntu 24.04 LTS + ROS2 Jazzy이고, Turtlebot4는 Ubuntu 20.04 LTS + ROS2 Galactic이다.
1. ROS2 Galactic 공식 Docker 이미지 사용
다음 명령어로 docker 이미지를 다운받고 실행한다.
docker run -it --net=host ros:galactic
2. GUI 실행을 위한 설정
로컬에서 X11 접근 권한을 허용해줘야 한다. 로컬에서 다음 명령어를 실행한다.
xhost +local:root
이제 Docker 컨테이너에서 다음 코드를 입력하여 환경 변수를 설정해준다.
export DISPLAY=:0
export XDG_RUNTIME_DIR=/tmp
export QT_X11_NO_MITSHM=1
그 후에 도커에서 rviz2를 입력했을때 실행되면 GUI 실행은 성공이다.
3. ROS2 네트워크 설정
로컬과 Turtlebot4가 연결할 수 있게 하려면 둘의 IP 주소부터 확인해야한다.
Turtlebot4에서 다음 명령어로 IP 주소를 확인한다.
hostname -I
출력 결과에 IP 주소가 두개가 뜨는데 turtlebot4는 두번째 주소, 로컬은 첫번째 주소를 사용하면 된다. 만약 Turtlebot4의 LCD가 고장나지 않았다면 LCD 좌측 상단에 IP가 뜨는데 그걸 사용하면 된다.
그 후에 Turtlebot4에서 ROS2 Galactic 네트워크가 broadcast 되도록 설정해줘야한다. 다음과 코드를 입력한다.
export ROS_DOMAIN_ID=0
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
export ROS_IP=<터틀봇 IP>
export ROS_HOSTNAME=<터틀봇 IP>
ROS_DOMAIN과 RWM_IMPLEMENTATION은 로컬 브라우저 주소창에 <터틀봇 IP>:8080을 치게 되면 와이파이에 연결된 Create3 페이지가 나오게 되는데, Application-Configuration에 들어가면 나오고, ROS_IP와 ROS_HOSTNAME은 터틀봇 IP를 입력하면 된다.
이제 이 설정을 .bashrc에 추가하여 라즈베리파이가 실행될때마다 ROS 네트워크를 broadcast 하도록 설정해준다. 다음 명령어를 입력하면 된다.
echo "export ROS_DOMAIN_ID=0" >> ~/.bashrc
echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc
echo "export ROS_IP=<터틀봇 IP>" >> ~/.bashrc
echo "export ROS_HOSTNAME=<터틀봇 IP>" >> ~/.bashrc
source ~/.bashrc
이 네트워크 설정을 <터틀봇 IP>를 <로컬 PC IP>로만 바꾸고 나머지는 동일하게 docker에서 설정해준다.
이제 docker와 turtlebot4 터미널에서 각각 ros2 topic list를 입력해서 나오는 토픽들이 일치하면 성공이다.
반응형
'인턴' 카테고리의 다른 글
Turtlebot4에 TOF 센서 연결하는법 - 1 (0) | 2025.02.06 |
---|---|
Turtlebot4 navigation (nav2) (0) | 2025.02.05 |
[Troubleshooting] Turtlebot4 fixed red light error (2) | 2025.02.05 |
Turtlebot4 설치부터 기본 세팅까지 (0) | 2025.01.18 |
Turtlebot4로 mapping하기 (2) | 2025.01.15 |