모터 고장으로 로봇을 교체받고, 처음부터 다시 설치하는 과정을 다룬 글입니다.
우선 라즈베리파이용 OS설치 드라이버를 다운받아야합니다.
https://ubuntu.com/tutorials/how-to-install-ubuntu-on-your-raspberry-pi#1-overview
뭐 우분투에서는 다음의 명령어로 설치가 가능하다고 합니다.
sudo snap install rpi-imager
이걸로 설치를 진행하고,
rpi-imager를 실행하신 후 sd카드와 PC를 연결합니다.
22.04 LTS RPi 4 를 선택합니다.
그렇게 SD카드를 구우면 됩니다. 조금 오래걸리니까 기다리도록 합시다.
다 구워지면 OS 설치를 시작합시다. 그냥 우분투 설치랑 같게 진행하면 됩니다. (라즈베리 파이에 그 키보드와 마우스를 연결합니다.)
설치가 완료되면 다음을 따라합니다.
라즈베리 파이에 연결한채로 하면 귀찮아지니
sudo apt install net-tools
이거 설치한 다음에 바로 ifconfig로 ip확인하고 기록해두도록 합니다.
192.168.0.14 로 연결을 해보자. 본컴에서 연결이 되면 라즈베리파이에 마우스와 키보드를 연결할 필요가 없다.
이제 ssh를 깔아주어야합니다.
sudo apt update
sudo apt upgrade
sudo apt install openssh-server -y
이제 pc에서 연결을 시도하자, 혹시 이런 오류가 발생한다면 인터넷에 찾으면 해결법이 나오니
그거 해결해서 다시 올려주세요
혹시나 이런 오류가 발생한다면, 다음의 블로그를 참고합니다.
ssh-keygen -R IP
IP에 로봇의 IP를 입력한다.
그리고 연결이 완료되면, 이제 라즈베리파이와 모니터를 연결하는 고생을 하지 않아도됩니다.
그래서 연결된 모습입니다. 연결이 되었는지는 그냥 ls같은거 검색해보면 될 듯합니다. 라즈베리파이와 PC의 이름을 다르게 하면 좋습니다.
추가로 VScode가 있다면, 서로 연결하면 그걸로 코드를 작성할 수 있습니다.
확장에서 ssh를 설치하고 난 후에 연결을 시도하면 됩니다. 하단 좌측에
왼쪽 버튼을 클릭합니다.
connect to Host를 클릭합니다.
그 후에 ssh 뒤에 넣었던 것을 입력합니다.
입력후에 enter를 입력합니다.
그러면 새로운 창이 뜨는데, 여기서 password를 입력합니다.
그러면 하다 우측에 연결중이 나옵니다
쬐끔 오래걸린다고 합니다. 뭐 맞다면 될테니 이제 다른거로 들어갑시다.
(왜 연결이 안될까유..)
이제 이 라즈베리파이에 ROS2 humble을 설치하도록 합시다. 이 내용은 블로그 글이 있으니 그걸 따라 해주시면됩니다. 여기서 가제보만 빼고 설치하시면 됩니다.
이 부분에서 gazebo 부분만 빼고 받으면됩니다. 그러면 ROS는 위의 블로그글에서 설치를 마무리했다 가정하고 진행을 하겠습니다.
우리가 사용하는 로봇은 minibot임으로 다음의 파일들을 참고합니다.
이 파일은 아두이노에다가 설치를 합니다. 아두이노 설치법은 다음을 참고합니다.
이 코드를 아두이노에 추가합니다. 추가할때는 라즈베리와이와의 연결을 해제하고, 라즈베리파이의 전원을 꺼준뒤에 진행합니다.
https://github.com/PinkWink/pinklab_minibot_robot
다끝나면 다음을 진행합니다. 우선 PC에서 진행합니다.
PC에서 진행하기 mini_bot 폴더를 만들고 그 안에 src폴더를 만들고 src폴더안에 다음의 패키지를 git clone을 합니다.
cd ~/Mini_bot폴더/src
git clone https://github.com/byeongkyu/pinklab_minibot_robot.git
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
문제생기면 그냥 colcon build
여튼 무엇인가 하나가 수정될때마다 빌드를 꼭해야합니다.
symlink 들어가는 이유는? src 폴더에 각종 코드와 config랑 있는데, build하면 install로 이사를 간다. 어떤 파일이 빌드 대상이 아닌데, install 폴더로 옮기기는 그러니까 링크로 해놓는다. 귀찮으면 걍 colcon build만 쳐도됨
bashrc에 등록을 합시다.
alias minibot="humble; source ~/mini_bot/install/local_setup.bash; echo \"mini_bot workspace is activated.\""
PC설정은 이걸로 끝
이제 로봇을 설정합시다. 로봇에서도 동일한 과정을 진행해야합니다.
이제 ssh로 로봇에 접근합니다.
여기서 minibot 폴더 만들고 src만들고 gitclone하고 colcon build 합니다.
cd ~/Mini_bot폴더/src
git clone https://github.com/PinkWink/pinklab_minibot_robot.git
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
문제생기면 그냥 colcon build
sudo rosdep init
rosdep update
rosdep에 문제가 생긴다면 sudo rosdep init 과 rosdep update를 진행합니다.
여기까지하고, 이제 USB 설정과 라이다 설정을 진행해야합니다.
로봇의 bashrc는 최종적으로 다음처럼 나와야합니다.
source /opt/ros/humble/setup.bash
echo "ROS2 Humble is activated."
alias sb="source ~/.bashrc; echo \"bashrc is reloaded.\""
export ROS_DOMAIN_ID=13
source ~/minibot/install/local_setup.bash
echo "minibot workspace is activated."
이제 USB포트 설정을 합시다
sudo apt remove brltty
이거 삭제하고서 (방해가된다고 합니다.)
USB를 지정하려고 합니다.
minibot 경로에 보면 bring_up에 script에 있는 99-minibot-devices.~~를 복사해야 넣어야합니다.
복사할때 여러개가 사용될 수 있는데 mc를 사용하도록 합시다.
sudo apt install mc
sudo mc를 입력합니다.
이 상태에서 오른쪽에는 복사할 곳
왼쪽에는 복사해 붙여넣을 곳을 놓습니다.
미니봇의 minibot_bringup/scripts의 파일을 오른쪽은 etc/udev/rules.d 의 경로로 복사해야합니다.
를 놓고
F5로 카피합니다.
그 후 재부팅합니다.
이렇게 뜨면 정상입니다.
이렇게 설정을 마무리하면 이제 라이다 패키지를 받아야합니다.
https://github.com/YDLIDAR/YDLidar-SDK/blob/master/doc/howto/how_to_build_and_install.md
일단 로봇패키지에 넣는게 편하니 그쪽가지 가서 git clone을 하자.
minibot 폴더의 src에 이동합니다.
git clone https://github.com/YDLIDAR/YDLidar-SDK.git
이걸로 다운로드를 받습니다.
일단 다운로드 받고 나서 라이다를 설치해야합니다.
설치하는 과정은 다음과 같습니다.
cd YDLidar (tab)
mkdir build
cd build
이후에
cmake ..
make
sudo make install
이렇게 설치를 진행하시면 됩니다.
(조금 걸립니다.)
여기서 작동이 안하면 src에 다음의 패키지를 git clone하고 colcon build하면 해결됩니다.
그 후에 yd lidar ROS2 driver를 추가로 설치합니다.
(안병규님이라는 분께서 오류가 있는걸 수정하신 버전입니다.)
https://github.com/byeongkyu/ydlidar_ros2_driver.git
이것도 src에 다운로드 받읍시다.
그 후에 ws로 나가서 빌드합니다.
colcon build
sb
경고는 일단 무시하고 진행합니다.
만약에 빌드가 안되면 다시 설치..
빌드가 안되면 rosdep을 안한거니 위로 올라가서 그거 다시 하고 옵니다.
이제 로봇을 돌릴겁니다.
ros2 launch minibot_bringup bringup_robot.launch.py
로봇을 가동하는 코드입니다. 로봇으로 합니다.
일단 minibot 환경을 다시 불러오거나
만약 다음과 같은 오류가 발생한다면 pinklab_minibot_robot 폴더를 다 날리고 다시 git clone하고 다시 빌드합니다.
git clone https://github.com/PinkWink/pinklab_minibot_robot.git
깃 주소를 바꿔봅니다.
이유를 모르겠는데, 다시 설치하면 사라지기도 했습니다.
일단 다시 설치하고 오류가 나면
sudo shutdown now로 종료하고, 전원을 종료하고 조금 시간을 두고 다시
켜면 돌아갑니다.
키보드로 원격 조종을 하는 코드로
ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r cmd_vel:=base_controller/cmd_vel_unstamped
gif 올리는 부분
이러면 로봇을 돌릴 수 있습니다.
위에가 모두 켜져있는 상태로?
그러면 SLAM을 하기 위해서는 다음처럼 합니다. 다음 순서대로 해야합니다.
ros2 launch minibot_bringup bringup_robot.launch.py
위의 코드는 로봇에서
ros2 launch minibot_navigation2 map_building.launch.py
위의 코드는 로봇에서
rviz2 -d `ros2 pkg prefix minibot_navigation2`/share/minibot_navigation2/rviz/map_building.rviz
위의 코드는 피씨에서
(mini_bot 환경을 불러오세요)
슬램을 해보겠습니다.
슬램이 끝나면
저장
ros2 run nav2_map_server map_saver_cli
작업이 끝나면 nav2 패키지의 maps폴더에 넣고 실행..
ros2 launch minibot_bringup bringup_robot.launch.py
이거는 로봇에서
ros2 launch minibot_navigation2 bringup_launch.py map:=`ros2 pkg prefix minibot_navigation2`/share/minibot_navigation2/maps/map_1677573079.yaml
내 맵은 이렇게 생겼으니까
이 맵을 로봇으로 전송해주고 로봇에서 실행해야합니다.
밑은 컴퓨터에서
rviz2 -d `ros2 pkg prefix minibot_navigation2`/share/minibot_navigation2/rviz/nav2_view.rviz
우선 맵을 맞춰준다음에
기다리면
명령을 내리고 움직이는거까지는 ㄴ되는데
파라미터를 수정해야한다.
ros2 run v4l2_camera v4l2_camera_node --ros-args --params-file ./rpi_camera.yaml
'공부#Robotics#자율주행 > (ROS2)주행로봇' 카테고리의 다른 글
벨로다인 스터디, 가제보에서 사용해보기 (0) | 2023.05.04 |
---|---|
URDF로 만든 로봇을 GAZEBO상에서 컨트롤 하기 SLAM (2/2) (0) | 2023.02.10 |
URDF로 만든 로봇을 GAZEBO상에서 컨트롤 하기 SLAM (1/2) (0) | 2023.02.09 |
URDF, XACRO 마스터 하기 ! (ADDBOT Rviz에서 구현하기) (2/2) (0) | 2023.02.06 |
URDF, XACRO 마스터 하기 ! (ADDBOT Rviz에서 구현하기) (1/2) (1) | 2023.02.06 |