ROS cpp 코드
1. 구동 알고리즘
•
실시간성 보장을 위해 c++로 filtering 및 거리 계산 수행
2. RSSI 특징
•
rssi값 (1m~10m) - 선형 구간이 있고, 그 이후에는 선형적으로 변하지 않는다.
◦
a = -55, n = 2로 설정 (x축 : 거리, y축 : RSSI)
◦
음수 구간(x축 : RSSI, y축 : 거리 )
3. 파이썬을 이용한 실시간 kalman filter를 사용한 뒤 rssi데이터 (1m~10m)
3-1. 정지할 때(실제 거리 1m)
•
raw rssi data
•
filtered rssi data(kalman filter)
•
distance
3-2. 이동 할때 (실제 거리 1m - 6m)
•
raw rssi data
•
filtered rssi data
•
distance
3-3. 이동할 때 (실제 거리 1m - 10m)
•
distance
4. 실험 결과
•
거리 오차는 최대 cm 정도 난다.
•
rssi 신호 세기는 7m가 이상이면 선형적인 구간을 벗어나는 것을 확인
◦
해당 선형 구간을 넘어가면 오차가 커진다.
•
6m 이내에서는 어느정도 위치 추정이 잘 이뤄 진다.
5. 앞으로 할 일
•
블루투스 모듈 (마스터, 슬레이브) 간의 통신 안정화 작업
⇒ 통신이 끊어지면 재 접속하도록 코드 추가
•
필드 테스트(사람에 부착할 시 이루멍 과의 높이차 고려 )
6. 야외 실험
1.
roscore
2.
sudo chmod 777 /dev/ttyA*
3.
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=9600
4.
rosrun arduino print_1m_ros
5.
rostopic echo /rssi
6.
rosrun arduino write_ros.py
7.
rostopic echo /bt_dist
roslaunch arduino arduino.launch alpha:=-68 n:=3