zeta2 bringup
목표: 로봇의 zeta2_bringup 패키지를 사용하고 데이터가 잘 올라오는지 확인한다.
이 과정에서는 로봇의 zeta2_bringup 패키지를 다운로드 받고 패키지를 실행하는 것 까지 해볼 것입니다.
zeta2_bringup 패키지가 잘 작동하면 로봇에서 올라오는 센서나 모터의 데이터들을 확인할 수 있습니다.
전제조건
앞의 과정을 다 끝내고 와야 합니다. ROS2에 대한 기본 개념이 없으면 이해하기 힘들 수 있습니다.
1 라이다 세팅
현재 이 로봇에는 ld06 라이다가 장착되어 있습니다. 로봇의 라즈베리파이에 연결되어 있으며 이 둘은 서로 시리얼 통신을 해야합니다.
하지만 라이다를 인식할 수 없다고 나옵니다. 시리얼 연결이 자동으로 되지 않기 때문입니다. 그래서 우리는 우분투에서 세팅을 해줘야 합니다.
sudo apt install raspi-config
sudo raspi-config
Interface Options
Serial Port
YES or NO to "Would you like a login shell to be accessible over serial?"
NO
YES
"The serial login shell is enabled, The serial interface is enabled"
이 과정이 끝나고 reboot를 하게 되면 우리는 시리얼 장치가 확인 되는 것을 볼 수 있습니다.
ls /dev/ttyS0
그리고 이제 이 시리얼을 사용하기 위해 권한을 줄 것입니다.
sudo usermod -a -G tty $USER
sudo usermod -a -G dialout $USER
reboot
재부팅이 끝나고 나면 우리는 사용할 수 있습니다.
2 zeta2_bringup 패키지 설치
패키지를 다운 받기에 앞서서 우리는 필요한 다른 필수 패키지들을 설치해 줄 것입니다.
# git
sudo apt update
sudo apt install git
# bringup
sudo apt install ros-humble-tf-transformations -y
sudo apt install python3-pip -y
sudo pip3 install transforms3d
sudo apt install ros-humble-robot-localization -y
# description
sudo apt install ros-humble-joint-state-publisher-gui -y
sudo apt install ros-humble-xacro -y
위의 과정이 다 끝났으면 이제 zeta2_bringup 패키지를 설치할 준비가 모두 끝난 겁니다.
먼저 ros2를 소스해주고 새로운 폴더 들을 만듭니다.
Note
소스 해주기 전
과거 과정에서 소스 자동화를 하지 않았다면 여기서 해주는게 편합니다.
로봇의 터미널을 열고
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
이 명령어를 입력합니다.
한 번만 입력해 두면 다음부터 새로운 터미널을 열 때 마다 자동으로 소스가 진행 됩니다.
source /opt/ros/humble/setup.bash
mkdir -p ~/zeta_ws/src
폴더에 가서 zeta2_bringup 패키지를 다운 받습니다.
cd ~/zeta_ws/src
git clone https://github.com/zetabank-devteam/zeta2_edu_devel.git
Note
2.1 로봇 별 설정
로봇의 크기에 따라서 설정할 것들이 생깁니다.
왼쪽의 작은 로봇이 있고, 오른쪽의 조금 더 큰 로봇이 있습니다.
지금 이 패키지는 조금 더 큰 로봇을 기준으로 완성 된 것입니다.
그렇기에 작은 로봇을 사용할 경우엔 수정사항이 생깁니다.
큰 로봇일 경우엔 스킵해도 됩니다.
2.1.1 control.py 수정
스크립트 폴더에서 cmd_vel 의 topic 을 받아서 motor_driver_serial_input 이라는 topic 으로 데이터를 보내주는 부분이 있습니다.
이 경우에 바퀴 제어를 위한 값들을 계산하기 위해 바퀴와 바퀴 사이의 간격을 사용하는 부분이 있습니다.
그 부분을 작은 로봇에 맞게 수정해 주어야 합니다. 바퀴의 중앙에서 중앙까지의 값을 넣어주면 됩니다.
파일의 약 109번째 줄에 있습니다.
작은 로봇의 경우엔 13.4 cm 정도가 됩니다. 그래서 그 값을 0.174 -> 0.134 로 수정하면 됩니다.
cd ~/zeta_ws/src/zeta2_edu_devel/zeta2_bringup/scripts
gedit control.py
-------
L = 0.174 -> L = 0.134
-------
2.1.2 odometry.py 수정
여기선 joint_states 라는 topic 을 생성하는 쪽에서 사용 됩니다.
똑같이 파일로 가서 약 314번째 줄에 있는 wheel_base를 0.174 -> 0.134 로 수정해주면 됩니다.
cd ~/zeta_ws/src/zeta2_edu_devel/zeta2_bringup/scripts
gedit odometry.py
-------
wheel_base = 0.174 -> wheel_base = 0.134
-------
기존의 큰 로봇을 사용할 경우엔 생략하셔도 됩니다.
다음으론 새로 만든 폴더의 root 위치로 가서 빌드 해줍니다.
cd ~/zeta_ws
colcon build
build가 끝나면 빌드된 폴더의 소스를 해주고 실행하면 됩니다.
source ~/zeta_ws/install/setup.bash
brinup 실행
ros2 launch zeta2_bringup zeta2_bringup.launch.py
조이스틱으로 조작되는 모습을 확인할 수 있습니다.
다른 데이터들을 확인해 볼 수도 있습니다.
source /opt/ros/humble/setup.bash
source ~/zeta_ws/install/setup.bash
ros2 node list # 실행 중인 노드를 확인하는 명령어 입니다.
source /opt/ros/humble/setup.bash
source ~/zeta_ws/install/setup.bash
ros2 topic list # 생성된 토픽을 확인하는 명령어 입니다.
대부분의 경우엔 topic 데이터를 확인하여 점검합니다.
Note
방금 만든 워크스페이스 소스 하는 법
우리가 만든 워크스페이스에서도 자동으로 소스를 할 수 있게 만들 수 있습니다.
로봇의 터미널을 열고
echo "source ~/zeta_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
이 명령어를 입력합니다.
한 번만 입력해 두면 다음부터 새로운 터미널을 열 때 마다 자동으로 소스가 진행 됩니다.
요약
로봇을 bringup 하는 것과 조작하는 것을 배웠습니다.
다음 단계
다음 과정에선 로봇을 자율주행 시켜보겠습니다.