no image
[10] 메카넘휠 로봇 IMU센서 작동 테스트(Window)
IMU센서 IMU센서는 엔티렉스에서 개발한 MW-AHRSv2를 사용하였다. MW-AHRSv1( 3축 가속도, 3축 자이로, 3축 지자기가 내장된 AHRS 모듈) 엔티렉스에서 2번째 선보이는 IMU 제품출시~!! 3축 가속도, 3축 자이로, 3축 지자기가 내장된 AHRS 모듈로, RS232및 CAN통신 지원, 알루미늄케이스를 가공하여 장착, 로봇제품이나 소형항공기용으로 독 www.devicemart.co.kr 해당 제품 구매시 케이블만 동봉되어있어서 RS-232와 CAN통신을 위해서 RS-232 to USB 혹은 CAN to USB 인터페이스 장치가 필요하다. 디바이스마트나 네이버에 검색해도 쉽게 나온다. RS-232 통신 보통 센서들이 직렬통신으로 데이터를 전송한다. 해당 IMU센서도 RS-232라는 직..
2023.03.09
no image
[9] 메카넘휠 로봇 SBC 전후좌우 제어
SBC 설치 저번에는 노트북에 아두이노를 직접 연결하여 테스트를 거쳤다. 이제 SBC에 아두이노를 연결하고 노트북트로 원격조종을 해보려 한다. SBC는 우선 Jetson Nano B01로 사용을 한다. Ubuntu 20.04 LTS에 ROS2 Galactic을 설치했다. Git 레포지토리를 이용해서 기존에 노트북에서 하던 작업 내용을 옮겼다. 글을 쓰는 시점에서 레포지토리는 비공개 상태이므로 작업의 편의를 위해 SSH를 발급받아 SSH클론 해주었다. 아두이노 1의 포트는 /dev/ttyACM0 아두이노 2의 포트는 /dev/ttyACM1 으로 각각 할당되었고 Bashrc 파일에 각 포트마다 chmod 666을 입력해주어 Permission Denied를 방지했다. 노트북과 SBC는 ROS_DOMAIN_I..
2023.03.08
no image
[8] 메카넘휠 로봇의 파라미터 변경을 통한 통합 런치파일 구성
ROS2 파라미터 각 노드는 자체적으로 파라미터 서버를 둘 수 있다. 사실 정말 유용하게 사용되는 기능인데, 노드가 실행되는 도중에도 실시간으로 파라미터를 변경하여 적용이 가능하다. 기존에 코드를 열고 변수를 바꿔줬던 것에 비해서 상당히 효율적이다! 이전 글에서 말했다시피 모터의 각속도 데이터를 시리얼통신으로 아두이노에게 보내주었다. 앞바퀴 둘, 뒷바퀴 둘 해서 각각 나누어 받게 될텐데, 이 때 노드를 앞바퀴용과 뒤바퀴용을 따로 만들어 구동하면 노드 스크립트를 두 개나 만들게 돼서 비효율적이다. 따라서 노드 스크립트는 하나만 사용하고 대신 파라미터를 변경할 수 있도록 해서 런치파일 작성시 각자의 파라미터만 지정해주어 편리하게 사용하고자 했다. motor_control.py 전체 소스코드는 다음과 같이 구..
2023.03.07
no image
[7] ROS2 메카넘휠 모터 제어
ROS2를 이용하여 모터를 제어해보자 모터를 제어하기 위해서 다음과 같은 과정을 생각했다. 1. 사용자로부터 로봇의 원하는 선속도와 각속도를 받는다. 2. 메카넘휠 역기구학 계산을 적용하여 선속도와 각속도를 모터의 각속도로 받는다. 3. 각 모터의 각속도를 임베디드보드(아두이노)로 전송한다. 4. (현재속도/최대속도)*255 를 계산하여 PWM제어의 255에 대한 비로 변환해주고 구동한다. 구동 사양은 다음과 같다. Laptop : 테스트할 때 사용 Jetson Nano(SBC) : 실제 적용 Arduino MEGA 2560 : 모터 구동 Laptop 혹은 SBC와 임베디드보드의 통신 사실 이 부분이 제일 힘들었다. 나름의 시행착오도 겪어가며 여러가지 방법을 고민했다. 보통 센서데이터 전송에는 Seria..
2023.03.05
no image
[4] YdLidar G4 라이다센서 데이터 받아오기
라이다센서 라이다센서는 Ydlidar의 G4모델을 사용하였다. 중국 회사의 제품이지만 가격대비 나쁘지 않은 성능을 보여준다. 그리고 아래 작성한 튜토리얼은 YdLidar가 아니더라도 대부분의 라이다와 ROS의 연동과정과 비슷하므로 참고해도 좋다. YDLIDAR|Focus on lidar sensor solutions Robot cleaner By providing low-cost, high-lifetime, small-sized, high-stability lidar, it helps intelligent sweeping robots easily implement application solutions such as mapping, obstacle avoidance and navigation. www.y..
2023.02.28
no image
[6] 메카넘휠 로봇 SBC(single-board computer) 세팅
어떤 SBC를 사용하나?! 작년 프로젝트에서 Odroid C4제품을 사용했던 기억이 난다. 당시 navigation을 진행하면 램 부족인지 아님 어떤 이유에서 노드가 비정상적으로 종료되어서 고생을좀 했다. C4는 4GB모델이었다. 라즈베리파이가 상대적으로 정보도 많고 안정적이라 생각하지만 재고확보와 가격측면에서 불합격이다. Odroid 제품을 사용하면서 좋았던점은 한국제품이며 Forum의 답변이 매우 빠르다는 점이였다. 가격대비 성능 아웃풋이 좋기도한데 (그래프상 수치로) 강제종료 여러번으로 CPU가 죽어버리는 상황도 있었다. 무튼 가성비 킹정이다. 이번에는 Odroid M1 8GB 제품을 사용한다. 램이 무려 8GB이며 SSD도 지원을 한다. 나는 eMMC를 사용했는데, Odroid에서 안정성이 좋다고..
2023.02.12
no image
[5]메카넘휠 로봇 하드웨어 빌드업
보드 플레이트 제작 로봇에 들어가는 모터드라이버, 임베디드보드 등을 적재하기 위해 플레이트를 제작하였다. 작년 한이음 프로젝트에서는 로봇 내부에 보드를 적재할 공간을 생각하지도 않아서 꽤 고생했던 기억이 난다. 정리되지 않은 배선과 각종 보드가 꼬여버려서 정리의 필요성을 절실히 느꼈다. 이번 로봇은 외형이 프로파일이라 다양한 형태의 적재가 가능하고 여유공간이 많다는 장점이 있다. 이를 이용해서 보드를 어떻게 하면 이쁘게 담을 수 있을까 생각해보게 되었다. 보드에 타공이 되어있긴 하지만 홀 사이즈도 다양하고 위치도 제각각이라 범용적인 타공이 필요했다. 그래서 10mm간격으로 4mm 홀을 규칙적으로 뚫어서 가능하게 하였다. 프로파일의 레일을 따라 장착할 수 있도록 걸쇠도 만들어주었다. 출력물에 모터 구동과 ..
2023.02.12
no image
[1] 메카넘휠 모바일 매니풀레이터 설계 - 주행부 PART1
로봇의 목적 제작하려는 로봇의 목적은 "좁은 물류현장에서의 피킹작업 수행"이다. 로봇의 하드웨어 특징 첫 번째로 로봇의 바퀴의 특징을 설명한다. 로봇의 바퀴는 참 다양하다. 대표적으로는 다음과 같다. 시스템 2-wheeled(with ball caster) 우리가 ROS에 입문할 때 흔히들 사용하는 TurtleBot이나 소형 자율주행로봇에 사용. 4-wheeled(전륜, 후륜, 4륜) 보통의 자동차나 자율주행 로봇에 사용. Omni directional 차량이나 자율주행 로봇에 사용. 주로 실내 산업현장에서 사용되고 있음. 좁은 물류현장이 타겟인 만큼 Omni directional 구동방식중 메카넘휠을 채택했다. 구현방법이 다른 것에 비해 간단하고 실제 산업현장에서 널리 사용되는 방식이기 때문이다. 각 ..
2023.02.03
[머리글]메카넘휠 모바일 매니퓰레이터 만들기
시작 학부동안 누릴 수 있는 혜택으로 실무 경험을 쌓아보고자 동아리 사업에 발을 담궜다. 지원금은 500정도로 하고싶은 모든걸 해볼 수 있을테니 정말 좋은 기회다. 동아리 등록은 1월 초에 하였다. 성과보고회는 2월 중순쯤이라 사실 완벽한 모바일 로봇을 완성시키기 어려운 시간이다. 어림잡아 한 달간은 설계와 발주를 진행하고 동시에 기초 제어코딩을 끝마쳐야 2월 들어서 바퀴정도는 움직이지 않을까 싶다. 목표 기간이 짧은만큼 목표를 잘 설정해야했다. 너무 지나치치 않게, 하지만 동기부여가 될정도로?! 그래서 성과보고회가 끝마무리되는 2월 중순까지 설정 목표는 다음과 같다. 모바일 매니퓰레이터 Teleop Keyboard Node로 구동. 매니풀레이터가 Desired Pose를 잘 추종할 수 있도록 제어. 이..
2023.02.03