Human Tracking 구동
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 OSError에 OSError: SavedModel file does not exist at: ~~ yolo4-tiny-416
이 에러를 고쳤다고 했었는데 재부팅을 해주지 않아서 반영이 되지 않았던 것이라고 생각한다.
이제 사람 인식도 잘 되고, 참고 깃헙에 적혀진대로 잘 구동되는 걸 터미널로 확인했다.
하지만 로봇이 움직이지 않는 문제가 발생했다.
이번 문제의 원인을 아래와 같이 생각해봤다.
- 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.bash
와 source ~/catkin_ws/devel/setup.bash
를 지워준다.
save시켜주자!
3. wego_ws에서 폴더 복사해오기
여전히 catkin_ws에서 roslaunch를 하고 로봇 구동 코드를 쳐도 로봇이 움직이지 않는다.
catkin_ws에서 roslaunch 할 때 쓰는 scout_minimal.launch가 오래되어서 안되는 것 같다.
wego_ws에서 폴더를 복사해오자!
-
catkin_ws/src/scout_mini_ros에 있던
scout_base
scout_bringup
scout_description
scout_msgs
를 지우고 wego_ws/src에 있는 해당 폴더들을 복사해왔다. -
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을 한다....!
Author And Source
이 문제에 관하여(Human Tracking 구동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bbirong/Human-Tracking-구동저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)