
외란억제로서 상호작용 (Interaction as Disturbance Rejection) 다양한 제어이론들이 특징이 잘 설명되어 있지 않은 인터페이스를 다룰 수 있도록 발전해왔다. 외란 억제 방법을 통해서 환경에 대한 다이나믹스가 외란힘으로 추가될 수 있다. 억제를 잘하기 위해서는 외란 힘의 경계값을 잘 정해줘야한다. 하지만 로봇이 환경과 상호작용하는 경우에 외란힘은 로봇의 수용량을 넘거나 동일한 경우가 대부분이다. 예를 들어 운동학적(Kinematic) 제약은 로봇의 행동에 따라 큰 힘을 만들 수 있는데, 외란힘(환경이 주는 힘)은 로봇의 상태와 연관이 있는 데 일반적으로 외란은 상태와 독립적으로 보기 때문에 상호작용을 외란억제 문제로 보는 것은 그렇게 좋지는 않다(not seem promising)..

*본 글은 https://summerschool.stiff-project.org/ 내용을 번역, 정리한 글입니다. 전 글에서 임피던스 제어란 환경을 어드미턴스로 두고 로봇과의 임피던스를 제어하는 것이라고 했다. 이를 성능(Performacne)과 안정성(Stability)의 관점에서 이야기해보자. 어떤 모션이나 힘을 제어하려고 할 때, 환경과의 상호작용은 컨트롤 가능한 변수에 영향을 주게 된다. 이런 영향으로 생기는 에러는 성능에 영향을 미치게 되고 안정성 또한 불안정해진다. 이런 불안정성은 coupled/contact instabilities라고 하는데, 단순한 시스템이 환경과 작용할 때도 확인할 수 있다. 한가지 예시를 들어보자. 질량(m)을 가지고 이노시아 값을 알고 있는 간단한 로봇이 있다고 하자..

임피던스 제어란 힘과 위치에 대한 동적 제어와 관련이 있다. 주로 로봇팔에 작용하는 힘에 대해 고려해야하는 환경에 있을 때 적용 되는 제어이다. 기계적인 임피던스는 모션 인풋에 대한 힘의 아웃풋인데 당연하게도 이는 전류 인풋에 대한 전압 아웃풋의 비를 가지는 전기적 임피던스와 상사를 가진다. 그렇다면 먼저 전기 임피던스(electircal impedence)에 대해서 알아보자. 임피던스의 정의는 "전압을 인가했을 때 전류가 흐르는 것에 반항하는 정도" 이다. 저항과의 차이점은 저항은 DC전압, 임피던스는 AC전압이 들어올 때 저항하는 것을 말한다. 이런 차이는 그렇게 중요하지는 않고, 이 정의를 바탕으로 힘, 위치로 대입해보자. 제어에서 임피던스란 "힘을 인가했을 때 모션을 방해하는 정도" 라고 표현할 ..

제어 엔지니어의 기초 : 물리현상을 선형 모델로 부끄럽지만 나는 아직 제어의 기초도 모르고 있다. 그럼에도 불구하고 논문을 작성해야할 시기가 다가와서 제어 엔지니어는 과연 어떤 workflow를 통해 문제를 정의하고 해결해나가는지 정리해보려 한다. 글의 전반적은 내용은 Brain Douglas 선생님 유튜브의 "Modeling Physical Systems ,An Overview" 에서 발취하였다. 이 글을 통해 조금이나마 제어 엔지니어의 기초를 쌓을 수 있으면 좋겠다. 문제 정의 제어 엔지니어로서 어떤 시스템을 제어할 것인지를 정의하는 것이 시작이다. 시스템이라는 단어는 여러 의미로 해석될 수 있다. 작은 시스템들이 복잡하게 구성되서 큰 시스템을 만들기도 하며, 작은 시스템 또한 하나의 복잡한 시스템일..
센서 데이터를 numpy 형태 모았을 경우 따로 point cloud 형태로 바꿔줘야한다. 가장 먼저 바꿔줄 형태는 pcd 이며 point cloud data라는 뜻이다. numpy to point cloud profile_np = np.load('/home/benlee/Desktop/pcd_data/pptk_save_2.npy') ori_pc = pcl.PointCloud(ori_pc_np) #numpy to pcl profile_np = np.load('/home/benlee/Desktop/pcd_data/pptk_save_2.npy') ori_pc = pcl.PointCloud(ori_pc_np) #numpy to pcl 먼저 np.load를 통해 저장해두었던 numpy 파일을 load 해온다...

Point cloud의 경우 실제 표면에 대한 point들의 집합을 말한다고 볼 수 있다. 따라서 Point 들의 집합으로 어떻게 표면을 나타낼 수 있는지가 중요한 요소가 된다. 표면은 작은 평면들의 집합으로 볼 수 있다. 따라서 먼저 Point set들을 평면으로 나타낼 수 있어야하고 이를 위해 중학생때 배웠던 평면방정식을 한번 되짚어보자. 평면 방정식은 점 3개의 위치만 알면 이를 평면식으로 나타낼 수 있다. 점 p1, p2, p3와 크래머의 정리를 이용해서 평면의 법선벡터와 원점과의 거리 d를 확인 할 수 있다. Pointcloud에서는 2가지 방법으로 법선 벡터를 찾을 수 있다. 1. point cloud에서 surface meshing 방법을 이용해 surface를 만들고 mesh를 바탕으로 법..

PCL의 기초인 passthrough filter랑, statistical outlier filter를 돌려봤다. 이전 글인 Point cloud 얉은 지식 1편에서(ropiens.tistory.com/59) 언급했던 필터들이다. 오리지널 이미지는 이렇게 생겼다. 이미지를 보면 경사면 부분에 노이즈가 많고, 윗부분에 노이즈가 있는 걸 알 수 있다. 이렇게 일반적인 포인트 클라우드 영역에서 벗어난 포인트들은 passthrough filter로 지워줄 수 있다. passthrough filter를 거치면 벗어난 포인트들이 사라진다. 이미지 처리에서 ROI랑 같은 원리다. 각 point.x , y, z 값에서 한 영역을 정하여 pass range 를 설정해주면 된다. 이 이미지는 statistical outl..

설치 환경 Ubuntu 20.04 ROS Noetic(에서 뭔가 문제가 있다..추후에 확인하는 걸로 개인적으로 멜로딕으로 하는 게 맞는 것 같다...) !!! 참고로 로스를 깔면 PCL이 설치되어 있다. 새로 잘못깔면 ROS를 밀어야하는 경우도 생기니 조심하자.!!! 설치 순서 1. 설치 파일 받기 https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.10.1 tar xvfz pcl-pcl-1.10.1.tar.gz tar xvfz pcl-pcl-1.10.1.tar.gz 2. 경로 이동 후 build 폴더 만들기 cd pcl-pcl-1.7.2 && mkdir build && cd build 3. CMake 하기 cmake .. 4. install 하기 ..