Human Tracking 구동

Speedwell🍀·2022년 3월 22일
1

Human Following Robot

목록 보기
16/18

https://github.com/We-Go-Autonomous-driving/main2_one_person

$ cd catkin_ws
$ source devel/setup.bash
$ cd src/scout_mini_ros
$ rosrun scout_bringup bringup_can2usb.bash
$ roslaunch scout_bringup scout_minimal.launch
$ cd catkin_ws
$ source devel/setup.bash
$ cd src/scout_mini_ros
$ rosrun scout_bringup object_track_one_person.py

catkin_ws는 새로 만든 워크스페이스
터미널을 두 개로 나눠서 코드를 쳐야한다.


코드를 실행해보니 object가 있다는 건 인식하지만, 그 object를 사람으로 인식하지 못해서 속도나 xyz 값 등을 계산하지 못하는 걸 볼 수 있었다.

원인 후보는 다음과 같이 생각했다.

1. saved된 YOLO 모델의 weights가 이상
2. 카메라 위치가 낮아서 높이 조절이 필요
3. default로 세팅된 위치(2m 이상)가 너무 멀어서

사실 위의 세 가지 전부 원인이 아니었던 것 같다. 일단 카메라의 높이를 위로 조정해주었다.


이전 글인 [에러 해결] coco.names 에러, matplotlib 설치, SavedModel file OSErrorOSError: SavedModel file does not exist at: ~~ yolo4-tiny-416 이 에러를 고쳤다고 했었는데 재부팅을 해주지 않아서 반영이 되지 않았던 것이라고 생각한다.


이제 사람 인식도 잘 되고, 참고 깃헙에 적혀진대로 잘 구동되는 걸 터미널로 확인했다.

하지만 로봇이 움직이지 않는 문제가 발생했다.

이번 문제의 원인을 아래와 같이 생각해봤다.

  1. launch 파일 문제
    2. can 통신이 잘 안됨$ candump can0로 확인해보니 이건 문제 없음
    3. 자동모드 설정이 안됨 ➡ 조종기가 can을 이용한 자율 주행 모드로 잘 설정되어 있음

계속 헤매다가 결국 WEGO 회사에 전화를 해봤고 3시간 넘게 같이 에러를 봐주셨다.

그 과정을 아래에 정리해보자!


1. 코드로 로봇 이동시켜보기

1-1. catkin_ws에서 roslaunch

$ cd catkin_ws
$ source devel/setup.bash
$ cd src/scout_mini_ros
$ rosrun scout_bringup bringup_can2usb.bash
$ roslaunch scout_bringup scout_minimal.launch

일단 위의 코드로 roslaunch를 시켜준다.


아래 코드를 통해 로봇을 이동시킬 수 있다.
linear의 x값을 바꾸면 앞뒤로 움직이고, angular의 z값을 바꾸면 회전한다.

"linear 치고 tab키를 누르면 자동으로 코드가 완성되는데 linear에서 x: 0.0으로 설정된 것을 x: 0.1로 바꿔주면 된다.

$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
	x: 0.1
    y: 0.0
    z: 0.0
angular:
	x: 0.0
    y: 0.0
    z: 0.0"

하지만 움직이지 않았다.


rqt_graph를 확인해보라고 하셔서 $ rosrun rqt_graph rqt_graph를 해보니 pydot 모듈이 없다는 에러가 떴다.
파이썬 2.7을 써야 하는데 기본 설정된 버전이 3.6이라서 이 버전에는 pydot이 깔려있지 않았다.

파이썬의 default 버전을 바꿔주자!

$ sudo update-alternatives --config python을 입력하고 패스워드를 입력하면 내가 가진 파이썬 버전들이 나온다. 현재는 3.6에 되어있어서 2.7로 변경해줬다.


다시 rqt_graph를 해보자!

이건 문제가 없는 것 같다.


1-2. wego_ws에서 roslaunch

새로 만든 catkin_ws 워크스페이스가 아닌 기본으로 깔려있던 wego_ws 워크스페이스에서 roslaunch를 해봤다.

$ cd wego_ws
$ source devel/setup.bash
$ cd src/scout_ros
$ rosrun scout_bringup bringup_can2usb.bash
$ roslaunch scout_bringup scout_mini_robot_base.launch

그리고 다시 로봇 구동 코드를 쳐보자.

$ rostopic pub -r 10 /cmd_vel geometry_msgs/Twist "linear:
	x: 0.1
    y: 0.0
    z: 0.0
angular:
	x: 0.0
    y: 0.0
    z: 0.0"

로봇이 앞으로 잘 움직인다!


새로 만든 catkin_ws 워크스페이스와 기본에 깔린 wego_ws 워크스페이스가 충돌이 생긴 것 같다.


2. 워크스페이스 충돌 해결

$ gedit ~/.bashrc를 통해 bashrc 파일을 열어보자.
bashrc는 터미널을 키면 이 파일에 적힌 명령어들을 입력하라는 것이다.

제일 밑에 가보면 아래 사진과 같이 나와있다.

아래부터 세 줄을 주석처리해주면 된다. source /opt/ros/melodic/setup.bash가 2개가 있어서 하나를 지워주고 ws가 다중으로 있으면 에러가 생기기 때문에 source ~/wego_ws/devel/setup.bashsource ~/catkin_ws/devel/setup.bash를 지워준다.

save시켜주자!


3. wego_ws에서 폴더 복사해오기

여전히 catkin_ws에서 roslaunch를 하고 로봇 구동 코드를 쳐도 로봇이 움직이지 않는다.

catkin_ws에서 roslaunch 할 때 쓰는 scout_minimal.launch가 오래되어서 안되는 것 같다.


wego_ws에서 폴더를 복사해오자!

  1. catkin_ws/src/scout_mini_ros에 있던 scout_base scout_bringup scout_description scout_msgs를 지우고 wego_ws/src에 있는 해당 폴더들을 복사해왔다.

  2. catkin_ws/src에 있던 scout_sdk 폴더 안을 비우고 wego_ws에 있는 ugv_sdk 폴더 안에 있는 파일들을 복사해왔다.


이제 catkin_ws를 다시 make 해주면 된다.


4. catkin_make 해주기

하지만 위와 같은 cmake 에러가 생겼다.
3번에서 wego_ws에 있던 폴더들을 지우면서 catkin에 필요한 패키지 중 일부도 같이 지워진 것 같다.

결국 catkin_ws가 아닌 wego_ws에 패키지를 가져와서 하기로 했다.


최종) wego_ws에 패키지 다운받기

참고깃헙을 참고해서 다시 패키지를 다운 받고, yolov4 weights를 다운 받자!

초기 can bus에 연결된 workspace가 wego_ws라서 모든 경로를 wego_ws로 수정했다.
scout_ros에 bring_up 파일들을 넣어주고 cmake 했다.

이제 로봇이 사람 tracking을 한다....!

0개의 댓글