개발/기술문의

LabVIEW/STM32 등 개발문의 -> jexe0716@gmail.com 으로 연락부탁드립니다.

반응형

STM32/Mbed 6

Eigen Library 와 Simple Kalman Filter

Kalman Filter 에 대해서 처음 공부하고 있었을 때쯤, LabVIEW를 이용하여 매트릭스 계산을 하면서 편하게 그래프 찍으며? 일했다. 근데, 이걸 STM32에 탑재하려고 하니 매트릭스 연산을 코딩해야 되는 상황이 발생했다. 한번쯤 들어본 것이 Eigen 라이브러리이다. 이번 기회에 한번 적용해보고자 찾아보니, Mbed에서 이미 훌륭하신 분이 라이브러리를 만들어서 배포해주셨다(Yogi KURODA). Eigen - Eigne Matrix Class Library | Mbed 단순한 Kalman을 만들면 Inverse, Transpose 동작을 확인할 수 있으니, 임의의 데이터를 감소시켜가면서 동작하게 코딩해봤다. 그리고 해당 데이터를 랩뷰에서 만든 것과 비교하니 오차없이 잘 동작한다. 1 2 3..

STM32/Mbed 2021.04.14

EtherCAT통신하기

Ethernet보다는 훨씬 빠른 속도가 요구되는 환경에서는 EtherCAT이 많이 사용되고 있다. 이 통신을 (Slave 역할로)STM32에서 사용하기 위한 방법을 인터넷을 검색해보면, (1)특정회사에서 만든 EtherCAT모듈을 탑재하거나 (2)RJ45 포트가 포함된 STM32보드로 직접 연결한다. (2)의 경우는 Master or Slave로 동작을 하는데 이부분은 EtherCAT 스택을 직접 짜서 넣은 것으로 보이는데, 이 부분에 대해서는 공부가 많이 필요할 것 같다. 오늘은 (1)의 경우에 대한 것을 소개하고자 한다. Esmacat 이라는 회사에서는 ROS에 관한 Master와 Slave의 다양한 솔루션을 제공한다. 이중에 EtherCAT Arduino Shield by Esmacat(EASE) ..

STM32/Mbed 2021.02.28

Mbed Studio X HAL Library

arm 사의 Mbed 를 사용하게 되면서 가장 먼저는 online IDE(web에서 코드 작성)를 사용했었다. 물론 코드 공유 및 PC 개발 환경 구축 등 장점을 가지고 있지만, 기존에 ST사에서 제공하는 HAL library 를 사용한 것이 익숙한 나에게는 Mbed 코드는 너무 아두이노?스러운 느낌이 있어서 불편했다. 정확하게는 코드는 내 맘대로 사용하기가 너무 어려웠다. 그리고 회로를 개발한 뒤에는 JTAG으로 컴파일을 하려다보니 online IDE가 ST link를 지원하지 않아서 문제가 발생했다. 이러한 이유로 뭔가 MbedOS 사용을 중단해야 되나 고민이 되었는데 그러나 OS를 써야할 경우가 분명 있을거라 MbedOS 역시 포기할 수는 없고, 찾아보니 Mbed Studio라는 offline ID..

STM32/Mbed 2020.11.03

BufferedSerial 과 Ticker

Mbed 를 이용하여 UART 통신을 할 때 BufferedSerial 을 사용하면 쉽게 여러 데이터를 전송할 수 있다. 사용방법은 기존의 Serial과 동일하다. for 문에 serial.putc(); 로 날렸었다면 BufferedSerial은 아래처럼 serial.write(buffer, num); 로 쉽게 보낼 수 있다. (Cube HAL library에서는 그렇게 쉬운 것이 Mbed에서는 오히려 어려운 경우의 예이다...) 그리고 이전에 HAL에서 Systick Callback 함수를 사용하여 원하는 시간에 동작을 하였다면, Mbed에서는 Ticker라는 것으로 쉽게 동작할 수 있다. tick.attach(func(), time); 으로 원하는 시간에 함수가 동작한다. 반대로 tick.detach..

STM32/Mbed 2020.09.19

STM32 ARM에서 ROS와 연동하기(2, subscriber)

STM32 ARM에서 ROS와 연동하기(1, publisher) 에 이어서, Master PC로부터 메시지를 받아 동작하는 코드를 구현해본다. Master PC에서 servo motor의 position 값을 메세지로 날려주면, microcontroller에서 메세지를 읽고 servo motor의 위치를 조절한다. 먼저, 지난 번과 동일하게 ros_lib_kinetic를 사용하며 추가로 servo 라이브러리를 받았다. 그리고 메세지의 데이터 타입은 float형을 사용한다. publisher와 달리 subscriber는 callback 함수를 만들어서 사용한다는 차이가 있다. 메세지를 받아서 그에 맞게 적절한 행동을 취할 수 있게 된다. 전체 코드는 아래와 같다. [ Code ] 12345678910111..

STM32/Mbed 2020.09.13

STM32 ARM에서 ROS와 연동하기(1, publisher)

ROS는 rosserial 를 통해서 외부 microcontroller와 통신이 가능하다. rosserial은 시리얼 통신으로 받은 데이터를 메세지 타입으로 변환하여 Node 간 메시지를 전송할 수 있게 한다. 따라서 microcontroller와 메시지를 주고 받기 위해서는 Master PC에 rosserial가 준비되어야 한다. Mbed를 사용하면 ROS와 연동할 수 있는 라이브러리를 사용할 수 있다. 물론 ROS 버전에 맞춰 사용해야 하며, 이 라이브러리를 사용하게 되면 ROS에서 사용한 코드와 동일하게 publisher와 subscriber, message를 만들어서 사용할 수 있다. ARM 계열 사용자는 Mbed를 통해서 쉽게 ROS와 연결 할 수 있어서 편리하다. Mbed Compiler 환경..

STM32/Mbed 2020.09.13
반응형