본문 바로가기

전체 글

(45)
안드로이드 리사이클러뷰(RecyclerView) 실습 안드로이드 리사이클러뷰에 대한 개념을 설명한 이후 2달이 지난거 같다... 너무 바빠서 이제야 코드를 올리고 코드에 대한 설명을 올리려 한다. 실습에 앞서 개발 워크플로우와 이번 실습에서 보일 결과를 먼저 설명 후에 코드에 대한 설명을 하도록하겠다. 아래는 실습을 진행할 워크플로우와 최종 결과물이다. 3개의 클래스와 2개의 레이아웃으로 우측의 결과물을 만들 수 있다. 아마 설명을 하면서 지난번 올려놨던 '안드로이드 리사이클러뷰(RecyclerView) 개념' 설명이 자주 언급될거 같으니 참고하고 실습을 해보면 좋을거 같다. 코드의 설명은 워크플로우 순서에 맞춰 설명하도록 하겠다. 실습에 앞서 RecyclerView를 사용하기 위해서는 app.gradle에 implementation 'com.android..
안드로이드 리사이클러뷰(RecyclerView) 개념 안드로이드 앱을 개발하다보면 한 화면에 여러개의 목록을 보여주기 위해 ListView를 사용했지만 현재는 (5.0 롤리팝 이후) RecyclerView로 ListView의 거의 모든 기능 구현이 가능하기 때문에 대부분 RecyclerView를 많이 사용한다. 나또한 개발을 하며 실제 ListView를 사용하는것보다 RecyclerView를 사용하는게 더 좋다고 해서 알아보고 사용해보려 한다. 그럼 어떤 차이점이 있을까??? 기존의 listView는 커스터마이징이 힘들고 구조적인 문제로 인해 성능상 문제도 존재한다고 한다. 근데 정확히 어떻게 성능에 문제가 있는지는 잘 모르겠다... 가장 큰 차이점은 Layout Manager와 View holder 패턴의 의무사용, Item에 대한 뷰의 변형이나 애니메이..
[ROS: Robot Operating System] 3-2. ROS+아두이노IDE+OpenCM9.04 본 포스팅에서는 ROS를 이용하여 OpenCM9.04 보드. OpenCM9.04는 아두이노IDE를 사용할 수 있고, 또한, 아두이노 IDE는 ROS 라이브러리를 제공하고 있기 때문에 세 가지 방법을 통합하여 사용을 해본다. OS: Ubuntu ROS 버전: melodic 개발보드: OpenCM9.04 개발환경: 아두이노 IDE 먼저, 아두이노 ROS 패키지를 위한 소프트웨어를 설치한다. 터미널에 아래와 같이 입력한다. ros-melodic-rosserial-arduino * 만약, ros의 버전이 kinetic이면 melodic을 대신 kinetic을 입력하면 된다. 아래 rosserial은 ROS에서 시리얼 통신을 해줄 수 있도록 설치하는 것이다. ros-melodic-rosserial 아래 링크에서 ..
[ROS: Robot Operating System] 3-1. ROS 파일시스템 1. ROS의 파일 시스템 - Stack (ROS의 스택은 높은 수준의 라이브러리를 구성하는 패키지의 집합) > Package 1.2. ROS의 파일시스템 레벨 - 메타 패키지 (Meta Package): 현재 패키지와 관련된 다른 패키지들을 나타내준다. - 패키지 (Package): ROS의 가장 기초가 되는 구성으로, 라이브러리, 도구, 실행 파일 등이 포함되어 있다. - 패키지 매니페스트 (Package Manifest): 패키지를 설명하는 메타 데이터를 제공한다. - 메세지 타입: ROS에서 토픽을 주고 받는 메세지의 데이터 구조를 제공한다. - 서비스 타입: ROS에서 서비스를 위한 요청과 응답을 주고 받는다. 2. 설치파일 구성 - ROS의 설치파일은 크게 "ROS 설치 폴더"와 "사용자 작업..
[ROS: Robot Operating System] 2-4. ROS Service (서비스), Parameter (파라미터), Action (액션)의 이해 ROS에서, 마스터 (Master)는 노드 (Node)들의 중계기 역할만 하고, 실제 데이터는 노드 (Node)간에 직접 전송된다. 어떤 노드가 다른 노드에게 토픽을 전달할 때, 같은 토픽을 갖는 노드들을 연결해주는 것이 마스터의 역할이고, 실제로 데이터를 주고 받는 것은 노드 들만 관여한다. ROS는 몇 가지 통신 방식을 갖는다. 지난 포스팅에서 토픽 (Topic)에 대해서 공부했었는데, 토픽은 데이터가 지속적으로 전달되어지는 데이터 스트림에 적합한 비동기식 통신 방법이다. 반면, 대기/응답 (Request/Response) 통신으로 동기식 통신 방법을 ROS에서는 서비스 (Service)라고 한다. 여기서 동기식 방법 중에 직렬 방법과 병렬 방법이 존재하는데, 직렬 방법을 서비스, 병렬 방법을 액션 ..
[ROS: Robot Operating System] 2-3. ROS Message (메세지)의 이해 ROS Message (메세지)의 이해 1. Message (메세지)의 개념 - 메세지는 Topic이 데이터나 정보를 주고 받을 때 사용하는 포맷이다. - 토픽과 조금 혼동될 수도 있는데, 토픽은 데이터라고 보면 되고, 메세지는 정의된 자료형이라고 생각하면 쉬울 듯 하다. 2. 메세지 확인 예제 rostopic을 입력해보면, 아래와 같이 옵션들을 확인할 수 있다. - 토픽의 타입을 알기 위해 type 옵션을 사용해볼 예정이다. - /turtle1/cmd_vel 토픽이 어떤 메세지 타입을 주고 받는지 확인해보기 위해 rostopic type /turtle1/cmd_vel 을 입력해본다. - /turtle1/cmd_vel 토픽은 geometry_msgs/Twist 라는 메세지를 이용한다. 즉, geometr..
[ROS: Robot Operating System] 2-2. ROS Topic (토픽)의 이해 노드 (Node)에 이어서, ROS의 Topic 토픽에 대한 포스팅을 진행한다. 1. Topic (토픽)의 개념 - 토픽은 ('토익스피킹'이 아니고, ㅎㅎ....) 노드들 간에 통신을 할 수 있는 채널이다. 프로세스 간의 어떤 통신이 발생하고, 어떤 메시지를 주고 받게 되는데 이 경로를 토픽이라고 한다. 2. Topic (토픽)의 예제 - 본 포스팅에서는 turtlesim을 이용하여, 간단한 용어들에 대한 개념을 정리해본다. tutlesim은 우리가 기본적인 프로그래밍을 할 때 "hello world!"를 찾는 것처럼, ROS에서 가장 기본적인 예시로 사용되는 패키지이다. - 지난 포스팅에서 Node에 대한 공부를 할 때 예제를 이어서 사용한다. - 위의 그림과 같이, 각 노드 간에 전달되어지는 메시지의..
[ROS: Robot Operating System] 2-1. ROS Node (노드)의 이해 ROS Node (노드)의 이해 지난 포스팅에서는 ROS 설치 방법 및 작동 테스트 확인에 대한 포스팅을 하였다. 이번 포스팅에서는 ROS의 가장 기본적이고 중요한 개념들에 대해 튜토리얼을 진행하면서 공부를 해보려고 한다. ROS에서 사용되는 가장 기본적인 용어들은 따로 포스팅 해두었으니, 참고 하길 바란다. [ROS] 용어 정리: https://neosla.tistory.com/36?category=825336 ROS 공식 홈페이지에서는 ROS Tutorials을 제공한다. Beginner level과 Intermediate Level이 있으며, 이 Tutorial을 기반으로 Beginner level부터 시작하여 순차적으로 포스팅을 진행할 예정이다. [ROS] Tutorial: http://wiki...