2 분 소요

나의 ROS로 gazebo 시뮬레이션을 돌려 보았다


1.예상치 못한 깃헙 배포이슈…

근데 갑자기 4월28일자 포스팅인 안뜬다. 왜이러지??ㄷㄷ?

image-20240427223020349

현재 편집날짜는 4월 27일이다. 그런데 4월 28일은 미래라서 현 블로그에서 불러오지는 못하는 것 같다. 꽤 현실성있게 잘 만들 템플릿이다(굳굳)

그래도 임시로 올리기는 해야해서 일단 동일날자, 0427로 잡아주었다. 내일 되면 바꿔주어야 겠다.

2.다시 본론으로 돌아가서..

오늘 내가 진도나가야 할 부분은 여기다.

image-20240428005250423

1)가제보 시뮬레이션부터 진행했다.

현재 아래명령어 까지 실행했고,

docker exec -it ros1 /bin/bash
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
rosrun turtlesim turtlesim_node
sudo apt install rosbash

아래 명령어에서 막혔다.

image-20240427232057316

그래서 아래 절차를 수행중이다.

sudo apt-get install python3-catkin-tools

image-20240428002326108

제대로 make되었다.

이후 가제보 Empty World환경에서 돌려보았다.

export TURTLEBOT3_MODEL=burger
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

image-20240428003019844

이후 가제보 TurtleBot3 World환경에서 돌려보았다.

export TURTLEBOT3_MODEL=waffle
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch

image-20240428003333822

이후 가제보 TurtleBot3 House환경에서 돌려보았다.

export TURTLEBOT3_MODEL=waffle_pi
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_house.launch

image-20240428003635645

이후 아래 명령어를 통해 키보드 조작(teleop) 설치후, 키보드 조작 노드를 들여와보았다.

sudo apt-get install ros-melodic-turtlebot3-teleop
export TURTLEBOT3_MODEL=burger
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

아래와 같이 조작해보았다.

image-20240428005118051

정상적으로 자유자재로 동작하는 것을 확인하였다.

image-20240428005131467

2.SLAM 시뮬레이션 진행으로 넘어갔다.

일단 아까처럼 가상의 엠티 환경을 실행해주었다.

export TURTLEBOT3_MODEL=burger
source devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_world.launch

그리고 슬램을 설치후 실행시켜 주었다.

sudo apt-get update
sudo apt-get install ros-melodic-turtlebot3-slam
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

아래와 같이 뜨는걸 확인했다.

image-20240428005751692

그리고 아까처럼 키보드 조작 노드를 실행했다.

export TURTLEBOT3_MODEL=burger
source devel/setup.bash
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

그렇게 키보드로 조작을 해서 한반퀴를 다 돌려주었더니 정상적으로 맵이 따졌다.(중간에 맵을 읽지 못하는 이슈가 발생했지만, SLAM패키지를 재설치하고 재시작하니 정상적으로 맵을 읽게 되었다.)

image-20240428013154975

이후 맵을 저장했다. 명령어는 아래와 같다.

rosrun map_server map_saver -f ~/map

image-20240428021546897

3.SLAM 시뮬레이션으로 넘어갔다.

마찬가지로 가제보를 열어주었다(이미 열려있다면 패스!)

export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_world.launch

(참고로, source devel/setup.bash 명령어는 export로 객체를 설정한 처음에만 해주면 되는 것 같다. 그 이후에는 터미널 창을 재시작하는 경우가 아니고서는 따로 이 명령어를 해서 셋업세팅을 해줄필요가 없는 것 같다. (이미 되있으니까!))

그리고 네비게이션 설치후 실행해주었다.

sudo apt-get update
sudo apt-get install ros-melodic-turtlebot3-navigation
export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

이후 아래와 같이 초기자세추정을 해주었다.

image-20240428025801766

이걸 왜하는거지? 라는 생각이 들었는데 찾아보니까, 탐색에 필요한 AMCL매개변수를 초기화하는 행위라고 하더라, 이를 통해 터틀봇3가 표시된 지도와 깔끔하게 오버랩되게 하는 LDS 센서 데이터를 사용하여 지도에서 올바르게 위치할 수 있게 하도록 한다더랑~엄청 중요한 거더랑;;; 위에 보면 2D Pose Estimate를 클릭하고 지도 위에 드래그를 하면 초록색 화살표가 생기는데 이걸 통해 로봇이 바라보는 방향으로 드래그를 해서 초점을 맞춰준다.뭔가 컴퓨터비전에서 Camera Calibration을 해주는 행위랑 유사한 것 같다ㅋㅋㅋ

LDS 센서 데이터가 저장된 지도에 오버레이될 때까지 초기자세추정을 계속해주었다.

image-20240428031014645

이후 제대로 된것 같아 싶어서 바로, 내비게이션 모드로 넘어갔다.

현재 해결해야 할 이슈:

[2D Nav Goal]이라는 버튼을 누르고 목표지점까지 벡터를 설정해주면, 그 지점까지 가야 정상인데, 현재 이 부분이 아직 해결이 안되었다. 동섭씨나 성준이형한테 한번 자문을 구해봐야 할 것 같다.

=>진도나간 설명서 링크

3.터틀봇 명령어(bashrc)

현재 실물 터틀봇에서는 성준이형이 이렇게 설정을 해놓았다고 한다. 이렇게 설정을 한 상태로 그대로 사용하면 좋을 것 같다.

image-20240428000343074

  • bringup :
  • teleop2 :
  • slam2 :
  • map2 :
  • navi2:

4.실물에다가 연동해보자!

wsl에서 ssh를 사용하기 위해 설치하기!

sudo apt install openssh-client

..중간생략…

잘 안되어서 멜로딕을 없애고 폭시(foxy)로 갈아타서 다시 진행중이다.

docker exec -it rosTest /bin/bash
source /opt/ros/$ROS_DISTRO/setup.bash

ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key


docker run -it --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  rosTest \
  /bin/bash

ROS2 foxy docker image에 접근하였으면, 해당 이미지에서 ROS2 관련 가제보 패키지와 슬램 및 내비게이션 패키지들을 설치해준다.

# GAZEBO 설치 (ROS2 foxy 버전에 대응하는 GAZEBO 설치)
sudo apt-get install ros-foxy-gazebo-*

# SLAM 알고리즈 중 하나인 Cartographer 알고리즘 패키지 설치
sudo apt install ros-foxy-cartographer
sudo apt install ros-foxy-cartographer-ros

# Navigation알고리즘 패키지 설치
sudo apt install ros-foxy-navigation2
sudo apt install ros-foxy-nav2-bringup

다시 폭시 컨테이너 구축 및 가동

#초기 도커 실행 및 접속(run)
sudo docker run --net=host --env="DISPLAY"  --volume="$HOME /.Xauthority:/root/.Xauthority:
rw"  --volume="/home/Docker/turtlebot3:/root/turtlebot3_ws"  -it --rm --privileged osrf/ros:foxy-desktop /bin/bash

#이후 도커 접속
sudo docker run -it osrf/ros:foxy-desktop /bin/bash

공식사이트와 블로그를 참고해서 다시 접속

#1.wget설치
sudo apt-get update  # 패키지 목록을 업데이트합니다.
sudo apt-get install wget  # wget을 설치합니다.

#2.스크립트 다운로드 
wget https://raw.githubusercontent.com/ROBOTIS GIT/robotis_tools/master/install_ros2_foxy.sh

#3.스크립트 실행 권한 부여 
chmod +x install_ros2_foxy.sh

#4.스크립트 실행
./install_ros2_foxy.sh

언어:

카테고리:

업데이트:

댓글남기기