no image
PSO(Particle Swarm Optimization)을 이용한 매니퓰레이터의 최종 위치 추정
매니퓰레이터 매니퓰레이터는 엑추에이터의 각도의 변화를 이용하여 자세를 변화한다. 우리가 목표로 하는 3차원 공간상의 좌표가 있다면, 로봇팔이 그 위치까지 도달할 수 있도록 제어해야 한다. 3차원 공간에서 매니퓰레이터가 6-DOF를 가지는 non-redunduncy 한 문제에서는 Inverse Kinematics(IK)를 사용하여 목표점까지 제어가 가능하다. 하지만 매니퓰레이터가 6-DOF를 초과하는 redunduncy한 상황은 조금 다르다. Redunduncy상황에서 IK를 풀기 위해서는 Jacobian이 정방행렬이 아니어서 pseudo inverse를 이용하여 계산을 한다. 이때 pseudo inverse를 이용하다 보니 수치계산으로 인한 singularity가 발생하곤 한다. 이러한 singulari..
2023.05.08
[matlab] Ubuntu에서 Matlab Add-on 설치시 권한 오류 해결법
원인 보통 /usr 하위에 있는 matlab 실행파일을 실행하게 된다. Matlab은 Add-on을 설치할 때 모든 창을 종료하고 인스톨러를 실행한다. 이럴경우 인스톨러가 정상적으로 실행되지 않으며 /usr 하위목록에 대한 권한 오류가 발생한다. 해결법 이럴때는 sudo ./matlab으로 루트로서 matlab을 실행한다. Sudo 권한으로 실행하면 이전에 세팅해놓은 인터페이스나 모든게 디폴트 상태일 것이다. 놀라지 말고 설치하려던 Add-on을 Install해주면 된다. Sudo권한으로 실행한 Matlab이나 그냥 사용자로 실행한 Matlab이나 Add-on은 공유되기 때문에 위 방법이 통한다.
2023.05.04
no image
[1] 매니퓰레이터 재료 선정
자유도 매니퓰레이터의 자유도는 4자유도로 결정하였으며, 로보티즈의 오픈매니풀레이터를 레퍼런스로 하였다. 4자유도는 6자유도에 비해서 엔드이펙터의 orientation 조작이 제한된다. 6자유도는 Spherical Wrist구조가 있기 때문에 엔트이펙터의 orientation 조작성이 매우 좋긴하다. 하지만 주어진 시간이 짧았으며, 추후 설계를 보완하여 6자유도로 디벨롭 기회가 있었기 때문에 우선 4자유도를 선택하게 됐다. 엑추에이터 국내 로봇기업 로보티즈에서 꽤 오랫동안 개발해온 다이나믹셀이라는 스마트 엑추에이터다. 로보티즈에 애정을 가지고 있기도 했고 제어가 쉽고 정밀도가 뛰어나서 연구개발과 교육용으로 많이 쓰이므로 1순위로 선정을 했다. 매니퓰레이터는 대부분이 산업현장에서 이용되고 있는만큼 실제로 다..
2023.03.31
no image
[중간점검] 프로젝트 점검
진행 완료 - 로봇 구성 필수 센서 ROS2 패키지 확보 완료 - 엔코더 DC모터 PID 제어기 구성 완료 - Teleop를 이용한 원격제어 완료 - IMU센서, LIDAR센서 Jetson Nano에서 구동 완료 - 로봇의 Description인 URDF를 이용하여 Robot State Publisher, IMU, LIDAR Launch파일 구성 완료.(bringup) 진행 예정 - 메카넘휠 특성상 슬립 현상을 줄이기 위한 해결책 필요 - 엔코더 데이터와 IMU센서를 이용하여 Odometry를 구성하고 TF2를 real-time update. - Cartographer 패키지로 2D SLAM 구성 - NAV2 패키지로 Navigation 세부 계획 - 4월 中 SLAM구현, NAV2 리서치 - 5월 中 ..
2023.03.31
no image
[파이썬] 컴퓨터 비전 - 이미지 잘라내기
과제 사용자가 마우스 드래그로 지정한 영역을 잘라내도록 프로그래밍 하시오. 해결법 마우스 이벤트 콜백함수로 사용자가 드래그를 시작한 지점 ix, iy와 끝낸 지점 x, y를 저장한다. (ix, iy), (x, y)의 위치에 따라 인덱싱의 범위가 달라지므로 cut_image 함수를 정의하여 if문 처리를 해준다. 만약 사용자가 드래그를 했을 때 두 점이 동일선상에 위치하여 직선이 되는경우와 두 점이 일치하는 경우는 잘라내기를 할 수 없다. 위와 같은 예외상황이 발생시 함수를 종료하고 사용자에게 다시 지정하게끔 안내한다. 코드 # [코드 설명] # 사용자가 마우스 드래그로 지정한 영역을 잘라내는 프로그램이다. # cut_image()라는 함수를 만들었으며 어느 방향에서 드래그를해도 잘라내기가 가능하게 코딩하..
2023.03.27
no image
[14] 메카넘휠 로봇 DC모터 PID제어
PID제어를 구현하는 과정에서 많은 시행착오와 데이터 통신 이슈로 인하여 프로젝트 일정이 늦어졌다. 모터의 속도를 정확하게 제어하는 것은 로봇의 Odometry를 구성하는데 꼭 필요하다. 모터의 정확한 속도를 기반으로 로봇이 어디까지 갔는지 위치를 추정할 수 있기 때문이다. PID 제어 기본적으로 피드백 형태를 가지며 비례(Proportional), 적분(Integral), 미분(Differential) 제어를 이용하는 방법 중 하나이다. 구현이 쉽고 경제적 이점 때문에 다양한 분야에서 광범위하게 사용되고 있는 제어 기법이다. 위 식은 순서대로 비례항, 적분항, 미분항이 더해진 형태이다. 비례항은 오차값에 Kp 게인을 곱한다. 오차값이란 [목표 값 - 실제 출력되는 값]이다. 그래서 오차값의 크기에 비례..
2023.03.26
no image
[파이썬] 데이터프로그래밍실습 - 369게임 만들기
과제-1 1에서 n까지 자연수에 대한 3,6,9 게임 결과를 출력한다. 조건 반드시 함수를 이용한다. 하나의 숫자를 매개변수로 출력값을 리턴하는 함수를 작성한다. 그리고, 이 함수를 이용하여 1에서 n까지의 3,6,9 게임 프로그램을 작성한다. 10 단위로 다음 줄에 출력한다. 실행 결과 예시 구현 결과 함수를 이용해서 해보라고 제시가 되었다. 하지만 백준 알고리즘처럼 러닝타임을 계산하는 게 아니기 때문에 클래스도 연습할 겸 아래와 같이 작성했다. class game_369: def __init__(self, num_user = 0): self.num_user = num_user self.num_arr = [] def f369(self, num): #숫자를 분해하여 3으로 나누어 떨어지는 수 찾기 ten..
2023.03.21
no image
[13]메카넘휠 로봇 IMU센서 작동 테스트(Ubuntu)
Ubuntu 20.04 LTS 환경에서 패키지 빌드 지난번 Window환경에서 exe실행파일을 통해 IMU센서 정삭작동을 확인하였다. Ubuntu에서 바로 테스트해보고자 하였으나 공식 Github 레포지토리에 AMD64 라이브러리가 잘못 올라와서 문의하고 수정된 걸 받고 하니 시간이 좀 걸렸다. [10] 메카넘휠 로봇 IMU센서 작동 테스트(Window) IMU센서 IMU센서는 엔티렉스에서 개발한 MW-AHRSv2를 사용하였다. MW-AHRSv1( 3축 가속도, 3축 자이로, 3축 지자기가 내장된 AHRS 모듈) 엔티렉스에서 2번째 선보이는 IMU 제품출시~!! 3축 가속도, 3축 자이로 merobot.tistory.com Ntrex에서 제공하는 ROS2 패키지를 빌드해본다. GitHub 레포지토리는 아..
2023.03.16
no image
[ROS2]DeclareLaunchArgument와 LaunchConfiguration의 차이점
Launch 파일에서 DeclareLaunchArgument와 LaunchConfiguration의 사용에 있어서 차이점이 궁금했다. DeclareLaunchArgument CLI에서 Launch파일을 실행할 때 인수를 지정 가능하다. 즉 외부에서 Launch파일의 인수에 접근이 가능한 것이다.gui_arg = DeclareLaunchArgument( name='gui', default_value='True' ) default_value에 기본값을 지정해주어 Launch파일 실행 시 따로 변수를 입력해주지 않아도 되게끔 한다. 만약 default_value를 주석처리하고 코드를 실행해보면 변수가 없으므로 오류가 발생하며 직접 CLI에서 입력해주어야 한다. 주석처리 시 발생하는 오류는 다음과 같다.Runt..
2023.03.15