티스토리 뷰
2021.6.8. 02:16
안녕하세요
프로그래밍을 배우는 빛나는 샤트입니다.
AIFFEL 대전 1기 24주차
해커톤3 5주차.
*AIFFEL 대전 1기 24주차 기간=2021.06.07~2021.06.11
1️⃣[Day_109][210607]
🎯풀잎스쿨;수학
오늘은 어제 늦게 자서 수학은 쉬었다.
확률 관련 학습을 진행했다고 한다.
🎯해커톤3
오후에는 해커톤3 진행.
DeepSORT + ROS 코드를 합치는 작업.
원래는 DeepSORT 파이썬 코드를 따로 짜서 from, import를 시도하려고 했지만
동영상을 한 프레임씩 가져와야 하므로 어려웠다.
결국 DeepSORT 코드 안에 ROS Publisher 코드를 집어 넣어서 완성시켰다.
다행히 오늘 내에 RGB값을 이용한 로봇 제어는 성공했다.
이제...Depth 활용 방안에 대해 적용해보자.
2️⃣[Day_110][210608]
🎯해커톤3
Light control에 관한 topic을 이용해 조명을 제어하려고 시도함.
위고 코리아 담당자와 전화 통화를 통해 대략적인 방법을 알게 됨.
일단 로봇을 구동시키는 launch를 실행하고 rostopic를 실행해보니 속도를 제어하는 /cmd_vel이외에도 /scout_light_control을 확인할 수 있었다.
그래서 아! /scout_light_control topic을 이용해서 조명을 제어해서 사용자에게 로봇의 상태(Target Lost, Ready etc...)를 알려줄 수 있다고 생각했다. 그래서 아래와 같은 방법을 이용해 조명을 진짜 제어할 수 있는 지 확인해봤다.
일단 subscribe가 되는 node가 있는지 확인했다. (확인 성공)
$ rostopic info /scout_light_control
그리고 여기서 확인할 수 있는 정보 2가지!
'데이터 타입'과 'subscribe node 존재 여부'
데이터 타입은 'scout_msgs/ScoutLightCmd'였다.
그러면...뭘 하면 좋을까 하다가 http://wiki.ros.org/ko/ROS/Tutorials/UnderstandingTopics
글을 보고 $ rostopic pub 명령어를 확인했다.
$ rostopic pub [topic] [msg_type] [args]
[args]는 어떤 걸 넣어야할 지 모르니까 일단 1 을 넣었다.
$ rostopic pub /scout_light_control scout_msgs/ScoutLightCmd 1
결과를 보니
['enable_cmd_light_control', 'front_mode', 'front_custom_value', 'rear_mode', 'rear_custom_value']
에 해당하는 값을 입력하면 될 것 같은 느낌이다. 총 5개니까...데이터 타입만 알면 임의로 입력해보면 된다!
ScoutLIghtCmd.msg 파일을 열어서 확인해보니
bool enable_cmd_light_control
uint8 front_mode
uint8 front_custom_value
uint8 rear_mode
uint8 rear_custom_value
위와 같이 데이터 타입이 나와 있어서...
$ rostopic pub /scout_light_control scout_msgs/ScoutLightCmd True 1 1 1 1
코드 실행 결과 로봇의 조명이 켜졌다!
반대로 0을 입력하니 꺼졌다!!
이제 코드를 이용해 조명을 제어할 수 있겠다 후후... 그건 내일 하자..
3️⃣[Day_111][210609]
🎯해커톤3
오늘은 수요일. 오후에는 코딩마스터가 있어서 오프라인 모임을 하지 않았다가 해커톤3 막바지라서 나오게 되었다.
하지만 나온 사람은 총 2명...😠
그래도 함께 depth camera를 보면서 값을 확인했는데...음...시간이 많이 필요하다.
오전은 2시간밖에 없어서 많은 것을 할 수 없었다.
어제 하던 조명 제어를 이어서 했다.
$rostopic pub 명령어를 이용해서 조명을 켜고 끄는 것은 성공했다.
하지만 .py를 만들어서 발행을 하고 싶었다.
중요한 것은 제어 명령 변수를 알지 못하는 점이 가장 컸다.
제어 명령 변수는 속도/회전 제어를 할 수 있는 /cmd_vel topic를 제어할 때 사용했던
[linear.x linear.y linear.z angular.x angular.y angular.z] 등이 있다.
어제 결과를 통해 ['enable_cmd_light_control', 'front_mode', 'front_custom_value', 'rear_mode', 'rear_custom_value'] 의 값을 바꾸면 조명이 제어되는 것을 확인했다.
즉, 아래의 5개의 변수에 값을 할당해 발행하면 되지 않을까? 하는 생각이 들었다.
bool enable_cmd_light_control
uint8 front_mode
uint8 front_custom_value
uint8 rear_mode
uint8 rear_custom_value
그렇다면 위 변수를 이용하면 조명을 제어할 수 있겠다고 생각했다.
그래서 아래와 같이 코드를 짜서 발행을 해봤다.
#! /usr/bin/env python
import rospy
from scout_msgs.msg import ScoutLightCmd
class Light_Control():
def __init__(self):
rospy.init_node('scout_light_control_shate', anonymous=False)
self.msg_pub = rospy.Publisher(
'/scout_light_control',
ScoutLightCmd,
queue_size=10
)
self.count = 0
def onMsg(self):
on = ScoutLightCmd()
on.enable_cmd_light_control = True
on.front_mode = 1
self.msg_pub.publish(on)
# 조명 켜기
def on():
while not rospy.is_shutdown():
light = Light_Control()
rate = rospy.Rate(10)
light.onMsg()
rate.sleep()
if __name__ == "__main__":
on()
위와 같이 조명이 켜지는 것을 확인!
이를 이용해서 깜빡이는 코드를 작성해 발행을 시도했더니 아래와 같이 성공!!
위의 코드는 아래에 작성되었습니다.
https://github.com/We-Go-Autonomous-driving/main-we-go-project/blob/master/light_control.py
4️⃣[Day_112][210610]
🎯해커톤3
어제 일과가 끝나기 전에 depth camera를 이용해 여러 가지 test를 해본 결과는 아래와 같다.
정지된 상태에서 동일한 point의 깊이값을 자꾸 다르게 읽어왔다. 2000이었다가 4000이었다가... --> align을 이용해 해결
더 넓은 곳에서 확인하기 위해 진흥원 로비에서 깊이값 읽기 시도, 깊이값이 너무 흔들렸다. 0이었다가 2000이었다가... --> 바닥 소재가 난반사를 일으켜서 생기는 현상으로 추측하고 천 소재를 바닥에 깔고 시도하니 값이 흔들리지 않았다. 그리고 페브릭 소재로 된 장소에서는 값이 불안정하지 않았다.
집에 가서 깊이값을 이용해 사람을 따라가는 코드와 bbox를 이용해 사람의 좌우 회전에 따른 로봇의 좌우 회전을 구현하는 코드를 작성하기로 함.
나와 함께 한 1명의 팀원은 깊이값을 어떤 영역에서 받아올 지 정해서 코드를 작성해서 오기로 함.
오늘의 가장 큰 컨셉은 화면에 보이는 1인을 잘 따라가는 것을 시연.
코드를 파헤치다보니 while문과 for문을 해석하다보니 화면 속 bbox중 가장 최근 id를 이용하는 법을 사용해서
추적하도록 시연.
결과는 아래와 같다. 첫 번째 시도치고는 꽤 나쁘지 않다. 다만 linear속도가 빠르고 turn속도가 느린 점은 개선해야겠다.
아직은 depth값을 이용하고 있지 않지만 인식된 객체를 잘 따라가는 모습을 확인함.
내일은 타겟 1인을 잘 추적할 수 있는 방법을 보완하고 linear, angular 속도를 개선 예정.
5️⃣[Day_113][210611]
🎯해커톤3
오늘의 주요한 점은 특정 1인을 따라갈 수 있게 하는 방법.
그래서 COCO dataset에 있는 cell phone 클래스를 이용해 핸드폰을 들고 있는 사람의 id를 계속 따라가게 했다.
딥러닝보다 주행 알고리즘 짜는데 시간을 많이 보내고 있다.
사실 딥러닝 부분은 1~2주에 했기 때문에 지금은 알고리즘을 더 열심히 하는 것이 맞다고 본다.
어제 밤에 집에서 혼자 했을 때는 꽤 잘 인식이 됐는데 진흥원에서 테스트를 해보니 인식이 잘 되지 않았다.
아무래도 다른 클래스를 이용해야겠다. 넥타이 아니면 정지표지판을 이용해야겠다. 혹은 다른 객체를 학습해서 가중치를 얻어야 할지도 모르겠다.
💉오전에 잠시 병원에 가서 얀센 백신을 접종하고 왔다. 11시에 맞았는데 오후 3시부터 조금 어지러워지기 시작했다.
오후에는 서브 객체 인식과 회전 주행 알고리즘 변경을 테스트했는데...
그닥 좋은 성과를 보지 못했다.
아무래도 손가락 관절 인식을 통한 서브 객체 인식을 시도해보거나 다른 객체를 찾아봐야겠다.
깊이값을 이용한 테스트는 다음주에 시도해봐야겠다.
📢24주차를 마무리하며
해커톤3의 5주차가 끝났다. 이제 1주일 남았다. 마무리해야하는 시점인데 하고 싶은 것들은 너무 많다.
하드웨어를 만들어서 이것저것 테스트를 해보고 싶은 마음이다.
이번주에는 다들 참여도가 높다고 생각된다.
(물론 수요일은...괘씸했지만!)
그리고 실제로 로봇을 기동시켜보면서 움직이는 것을 확인해보니 더 실감이 나고 신기했다.
어떻게 보면 조립을 참 잘한다고 생각이 들기도 하는데...
딥러닝 모델을 공부하고 ROS에 대해 배우고 RGBD에 대해 접해보고 알고리즘을 짜는 등
배운 개념들을 실제로 적용해보는 총집합이라고 생각한다.
발표자료에 사용할 키워드가 방금 생각났다.
딥러닝, CV, Depth, 코딩 마스터(알고리즘), ROS
이걸로 해야겠다.
다음주는 해커톤3 마지막 주이다. 그리고 AIFFEL도 끝이지.
물론 21일, 22일이 있지만 최종 발표와 시상/졸업이기 때문에 18일(금)이 지나면 끝이라고 봐도 무방.
이제 다음 일정을 위해 다시금 작년의 나를 되돌아봐야겠다.
그리고...백신 후유증 빨리 사라졌으면 좋겠다.😢
'교육 > AIFFEL(대전)1기' 카테고리의 다른 글
AIFFEL(대전) [AIFFEL LIFE] 26장 26주차를 지나오며(마지막) (0) | 2022.02.20 |
---|---|
AIFFEL(대전) [AIFFEL LIFE] 25장 25주차를 지나오며 (0) | 2022.02.20 |
AIFFEL(대전) [AIFFEL LIFE] 23장 23주차를 지나오며 (0) | 2022.02.20 |
AIFFEL(대전) [AIFFEL LIFE] 22장 22주차를 지나오며 (0) | 2022.02.20 |
AIFFEL(대전) [AIFFEL LIFE] 21장 21주차를 지나오며 (0) | 2022.02.20 |
- Total
- Today
- Yesterday
- 해커톤
- 멘탈관리
- 멋쟁이사자처럼
- 모두의연구소
- AIFFEL
- 인공지능교육
- ros
- 자율주행로봇
- SLAM강의
- SLAM공부
- 광주
- AIFFEL교육
- AIFFEL인공지능과정
- 대전 인공지능
- IT
- 양정연SLAM
- 인공지능 교육
- 인공지능
- 광주인공지능사관학교
- 서빙로봇
- 모두의 연구소
- 광주AI
- 아이펠
- AIFFEL후기
- 자율주행기술
- 실내자율주행
- 배달로봇
- 도전
- Python
- Slam
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |