728x90
- System 구성
- OS : Ubuntu 20.04 - ROS Noetic
- Controller Board : Jetson Xavier NX
- 초기엔 Jetson Nano를 사용했으나 성능이 떨어져 제약이 많아 Xavier로 변경
- 아래 과정을 거쳐 external memory 사용
- https://youngseong.tistory.com/113
- Motor : MDRobot - MDH100 | HBDS2D04E0100-D130
- Motor Driver : MD200T (2 channel 24V Motor Driver)
- MDRobot에서 제공하는 MDAS를 통해 motor driver 설정 후 사용
- https://youngseong.tistory.com/119
- IMU : iAHRS
- Lidar : RPLidar A2
- 각 sensor 선정 사유
- iAHRS : Kalman Filter 기반의 9DOF (가속도(3DOF) + 자이로(3DOF) + 지자기 센서(3DOF))를 가지는 AHRS로 값이 매우 정확하게 나옴
- RPLidar A2 : 가격 대비 효율이 우수하고 참고 자료가 많음
- Motor / Motor Driver: 로봇 제작 회사에서 해당 회사의 제품을 많이 사용하여 선정. 그리고 목표 스펙에 맞는 모터를 선정하고 해당 모터와 호환되는 동일 회사의 모터 드라이버 선정
- rules file을 통한 각 센서들의 USB Port에 대한 Symbolic Link 생성
- Source Code : https://github.com/YoungSeong98/Project_RIS
- Navigation Stack 구성
- 위 내용을 토대로 Navigation Stack 구성 완료
- Navigation Stack의 launch file 실행 시의 node graph와 TF tree
- initialpose, goal, odometry publisher 구성, ekf 를 통해 sensor fusion 진행
- https://youngseong.tistory.com/127
- Hardware 구성
- 2 wheel differential + caster wheel
- Solid Works를 통한 Robot의 Hardware 설계
- Robot의 바닥부분으로 사용할 알루미늄 판 제작 의뢰
- 3D 프린트 제작 외주를 맡겨 외피 제작
- 수행 성과
1) SLAM
- 여러 SLAM algorithm을 사용하여 Mapping 수행 (Hector / Cartographer SLAM)
- Hector SLAM은 Odometry 정보를 필요로 하지 않아 Lidar 만으로 mapping 가능
- Hector SLAM과 달리 Cartographer SLAM은 Odometry 정보를 통한 더 정밀한 Mapping이 가능
- 따라서 Navigation에는 Cartographer SLAM을 통해 작성한 Map을 사용
- Map의 내용을 토대로 Costmap 구성
2) Navigation
- SLAM을 통해 작성한 Map상에서의 Navigation 진행
- Rviz 화면에 Map topic을 불러온 후 AMCL을 통한 Map상에서의 Localization 진행
- 초기위치를 부여하고 목표지점을 부여하여 로봇을 이동시킴
- Base Local Planner로는 DWA 사용
- Project 수행 과정에서 겪었던 문제점과 해결 방법
1) OS 관련 (Jetson Nano 사용시)
- Jetpack에서 Ubuntu 20.04를 지원한지 얼마 되지 않아 불안정하고 참고자료가 많지 않아 OS를 18.04로 변경
- Jetpack 4.6부터 Ubuntu 20.04 지원 (2021년 10월)
2) Intel Realsense 관련
- Jetson Nano에서 Realsense 실행시 성능이 심하게 저하되고 Pointcloud값을 보지 못해 제외
3) Motor Driver 관련
- Desktop 환경에서는 모터가 정상 동작하나 Embedded Board 환경에서는 제대로 동작하지 못함
- RS485 통신 packet 중 Check sum bit가 overflow로 인해 제대로 전달되지 않아 motor driver의 source code 중 해당 bit를 계산하는 함수의 return type과 해당 bit의 data type을 uint8_t -> uint16_t로 변경
- https://youngseong.tistory.com/122
4) Navigation 관련
- Navigation Stack 완료 후 Rviz창에서 2D Goal을 부여하여 navigation을 진행하려 했으나 TF의 위치가 계속 변하는 문제 발생
- TF 구성을 수정하여 해결
- https://youngseong.tistory.com/143
- 향후 목표
- 현재 사용중인 ROS의 version을 1에서 2로 교체
- 원활한 Navigation 구현
참고 자료 :
1) ROS package
- RPLidar : https://github.com/Slamtec/rplidar_ros
- iAHRS : https://github.com/wookbin/iahrs_driver
2) ROS System 구성 : https://automaticaddison.com/how-to-set-up-the-ros-navigation-stack-on-a-robot/
3) Jetson Series 관련 : https://github.com/jetsonhacks
'Project > RIS' 카테고리의 다른 글
[RIS : 프로젝트 종료] (1) | 2023.03.10 |
---|---|
[RIS] 2/5 Motor Encoder 값 수신 완료 (0) | 2023.02.05 |
[RIS] Navigation 관련 문제 (2/24 해결) (0) | 2023.01.27 |
[RIS] 1/11 (Navigation Stack 구성 완료) (0) | 2023.01.11 |
[RIS] 1/10 (cv2를 통한 rviz map 생성) (0) | 2023.01.10 |