소프트웨어 <unk> 설정, 소켓캐인, ROS2 및 제어
오픈아름 소프트웨어 문서: 설정 가이드, 우부투 설치, 로봇 설명 (URDF/xacro), 소켓캐인 CAN 라이브러리, 험블/자즈키의 ROS2 설치 및 고급 제어 전반
OpenArm 하드웨어 허브 를 참조하십시오.
이 페이지에
- [소프트웨어 개요]
- [Ubuntu 설치]
- [설립 안내]
- [모터 ID 설정]
- [CAN 인터페이스]
- [CAN FD vs CAN 2.0]
- [모터 제어 명령]
- [모터 LED 상태]
- [robot description (URDF) ]
- [설비]
- [비주얼]
- [CAN 라이브러리]
- [건축]
- [중요한 클래스]
- [ROS2 통합]
- [허허한 설치]
- [Jazzy 설치]
- [첨단 제어]
오픈아름 문서
- [전환]
- [기 시작]
- [하드웨어]
- [소프트웨어]
- [전화 수술]
- [시뮬레이션]
- [FAQ & 구매]
또한 참조
- [오프아임 1 빠른 시작]
- [← 모든 위키 기사는]
- [공식 문서]
소프트웨어 문서: 우분투 설정, 로봇 설명 파일 (URDF/xacro), 소켓캐인 CAN 라이브러리, ROS2 설치 및 구성, 고급 제어 알고리즘.
우분투 22.04 ROS2 Humble SocketCAN URDF MoveIt2 C++ 파이썬
원자: docs.openarm.dev/software/ ** 마지막으로 업데이트 된:** 2026년 4월 11일
1. 소프트웨어 개요
오픈아름 소프트웨어 생태계에 오신 것을 환영합니다! 이 두동력 로봇을 다리로 연결하기 위한 도구 킷이 구축되고 있으며, 기금을 환영합니다.
소프트웨어 생태계는 다음과 같은 것을 제공합니다.
- URDF 로봇 모델에 대한 모듈화된 XACRO 파일
- 소켓캐너를 통해 고 주파수 모터 상호작용을 위한 낮은 수준의 제어 API
- ROS2 통합 (활동적인 개발 중) 제어 인터페이스와 MoveIt2 구성
- ** 시스템 식별, 중력 보상 및 카르테스 공간 제어에 대한 제어 알고리즘**
새로운 사용자는 설비 가이드에서 시작해야 합니다. 기여자들은 각 섹션에서 개선 기회를 찾을 수 있습니다.
소프트웨어 저장소
| Repository | Description |
|---|---|
| openarm_description | URDF/XACRO files for single-arm and bimanual configurations |
| openarm_can | C++ CAN library for Linux-based motor control with Python bindings |
| openarm_ros2 | ROS2 middleware integration packages |
2. 우부턴을 설치
오픈아름 소프트웨어는 우분투 리눅스와 소켓캐너 지원이 필요합니다. 우분투 22.04 LTS (Jammy Jellyfish) 는 권장 버전입니다.
Ubuntu 22.04 LTS를 다운로드하십시오. 공식 Ubuntu 다운로드 페이지를 방문하십시오: ubuntu.com/download/desktop. Ubuntu 22.04 LTS를 다운로드하십시오.
** 부팅 가능한 USB 드라이브를 만들 수 있습니다.**
- Windows: [Rufus]를 다운로드하여, USB 장치와 Ubuntu ISO를 선택하고, 다음으로 작성합니다.
- macOS: [Balena Etcher]
T85 ) 또는 터미널 명령어를 사용하세요. - Linux: ISO 경로와 USB 장치 식별자를 사용하여
T0 명령을 사용합니다.
- USB에서 시작하여 설치. 시작 가능한 USB를 삽입하고 시스템을 다시 시작하여 BIOS/UEFI 설정에 액세스하고 USB를 주요 시작 장치로 설정하십시오. 그래픽 설치 프로그램을 따라 시간 구역, 사용자 이름 및 암호를 선택하십시오.
** 경고** 표준 설치는 선택한 드라이브의 모든 데이터를 삭제합니다. 계속하기 전에 장치 식별자를 두 번 확인합니다.
- ** 설치 후: 시스템 업데이트를 실행하고 개발 도구를 설치합니다.**
sudo apt 업데이트 && sudo apt 업그레이드 -y sudo apt 설치 -y curl git 구축 필수 gnome tweaks
Docker 대체 Ubuntu 전용 머신 없이 개발 전용 시나리오에서는 Docker 설정을 사용할 수 있습니다. 그러나 SocketCAN를 통해 하드웨어 제어하려면 Ubuntu 네이티브 설치가 필요합니다.
3. 오픈아름 설정 가이드
이 가이드에서는 하드웨어 연결부터 소프트웨어 테스트까지 OpenArm 설정에 대해 안내합니다. 성공적인 설정을 위해 각 단계를 따라가십시오.
전제 조건
하드웨어 요구 사항
- DAMIAO 모터로 오프너아임 로봇 팔
- 24V 전력 공급, 적절한 전력 용량
- 케이블 (모터 패키지에 포함된 케이블은 충분하다)
통신 장치 요구 사항
| Purpose | Required Device | OS |
|---|---|---|
| Motor ID setup | DAMIAO USB CAN Debugger | Windows |
| Motor control & further setup | SocketCAN-compatible interface | Ubuntu 22.04 / 24.04 or other Linux with SocketCAN support |
단계 1: 엔진 ID 구성
각 DAMIAO 모터를 정렬하기 전에 올바른 CAN ID로 구성하십시오. 단계별로 전체 절차를 위해 [하드웨어 > 모터 ID 구성] (
각 관절에 지정된 송신/ 수신기 CAN ID 쌍에 대한 빠른 참조로 아래 표를 사용하십시오.
| Joint | Transmitter ID | Receiver ID |
|---|---|---|
| J1 | 0x01 |
0x11 |
| J2 | 0x02 |
0x12 |
| J3 | 0x03 |
0x13 |
| J4 | 0x04 |
0x14 |
| J5 | 0x05 |
0x15 |
| J6 | 0x06 |
0x16 |
| J7 | 0x07 |
0x17 |
| J8 | 0x08 |
0x18 |
**Damiao 디버깅 도구 (Windows) ** USB-CAN에서 디버깅 도구를 다운로드하여 디버깅 ID를 설정하고 확인하십시오: Debugging_Tools_v.1.6.8.8.exe. 버스에서 결합하기 전에 항상 한 모터를 한번에 테스트하십시오.
단계 2: CAN 인터페이스를 설정
하드웨어 조립 후, 우분투 컴퓨터에서 소켓캐인 인터페이스를 구성합니다. 먼저 공식 OpenArm PPA에서 필요한 패키지를 설치합니다.
# OpenArm PPA를 활성화하고 필요한 모든 패키지를 설치 sudo apt 설치 -y 소프트웨어-자유-공동 sudo add-apt-repository -y ppa:openarm/main sudo apt 업데이트 sudo apt 설치 -y \ 사용할 수 있는 도구 iproute2 \ libeigen3-dev \ libopenarm-can-dev \ liborocos-kdl-dev liburdfdom-dev liburdfdom-heads-dev \ libyaml-cpp-dev \ 열기통이 가능한 용품
다음으로 OpenArm 도움말을 사용하여 CAN 인터페이스를 표시하거나 수동으로:
4팔의 설정 (can0에서 can3) -오픈아름 -오프닝아름 -오프닝아름 -오프닝아름 -오프닝아름
# 인터페이스가 UP인지 확인하세요 ip 링크 쇼가 될 수 있습니다
** 한 팔당 한 포트 CAN** 각 팔에는 전용 CAN 인터페이스가 필요합니다. 단일 팔 설정에서는
CAN FD vs CAN 2.0
오픈아름 모터는 CAN 2.0 (클래시 CAN, 8 바이트의 유용무용) 와 CAN FD (플렉서블 데이터 레이트, 더 높은 데이터 레이트에서 최대 64 바이트의 유용무용) 모두를 지원합니다.
| Mode | Nominal Baud | Data Baud | 적재 하중 |
|---|---|---|---|
| CAN 2.0 | 1 Mbit/s | — | 8 bytes |
| CAN FD | 1 Mbit/s | 5 Mbit/s | up to 64 bytes |
** 수동 ip 링크 명령어 (CAN 2.0):**
sudo ip 링크 세트 캔0 다운 sudo ip 링크 세트 can0 타입 bitrate 1000000 sudo ip 링크 설정이 가능
** 수동 ip 링크 명령어 (CAN FD
sudo ip 링크 세트 캔0 다운 sudo ip 링크 세트 can0 타입은 1000000 dbitrate 5000000 fd에 sudo ip 링크 설정이 가능
수동 모터 제어 명령
이 명령어를 사용하여 낮은 수준의 디버깅을 수행하고 더 높은 수준의 코드를 실행하기 전에 모터 통신을 확인합니다. 항상 버스를 먼저 모니터링하십시오.
버스의 모든 CAN 프레임을 모니터링하십시오
# 모터 바드 레이트를 변경 (목적 모터 ID로 --canid을 교체) 팔이 열려서 바우드레이트 변할 수 있습니다. # --flash를 추가하여 전력 주기를 계속 유지합니다 (모터당 최대 ~ 10,000개의 플래시 글쓰기) 팔이 열려서 바우드레이트 변할 수 있습니다.
CAN 2.0 모터 제어 (목적 모터의 송신기 ID로
- 엔진을 비켜 송신 수0 001#FFFFFFFFFFFFFFFD
CAN FD 모터 제어 (BRS 플래그를 표시하는
- 엔진을 비켜 송신할 수 있는 용인
시속 1차 모터 테스트 모터를 처음 시작 시, 동일한 CAN 버스에서 여러 모터를 단독으로 연결하고 테스트하십시오. 이는 ID 충돌이나 전선 결함을 쉽게 식별합니다.
엔진 LED 상태
다마오 모터마다 현재 상태를 나타내는 보드 LED가 있습니다.
| LED Pattern | Meaning |
|---|---|
| Green (steady) | Motor enabled and ready |
| Red (steady) | Motor disabled |
| Red (flashing) | Motor error state — send Clear Error command before re-enabling |
문제 해결 리소스
- [CAN 통신 비정상 진단]
T88 ) 간헐적이고 지속적인 CAN 버스 오류를 진단 - [공공적인 전선 문제]
T89 ) 연결기 양극성, 종료 저항성, 케이블 방위 끝
3단계: 모터 테스트
CAN 인터페이스를 구성한 후,
설정 경로 요약
| Step | Description |
|---|---|
| 0 | Prerequisites — hardware, cables, CAN adapter |
| 1 | Motor ID Configuration (Windows + Damiao Tools) |
| 2 | Setup CAN Interface (openarm-can-configure-socketcan) |
| 3 | Motor Test — verify joint communication |
| 4 | Motor Configuration — tune control parameters |
| 5 | Hands-On: Demo Run |
4. 로봇 설명 (URDF/xacro)
디렉토리 구조
T28 주요 로봇 파일 T29 버전별 URDF - 팔 운동학, 육체 집합, 최종 효과자 및 ROS2 제어에 대한 별도의 디렉토리
T30 버전별 매개 변수 파일
설치
ROS2가 설치되어 있는지 확인합니다 (부 6 참조) # 환경 변수를 설정 수출 ROS_DISTRO=소심한 수출 COLCON_WS=~/ros2_ws
건설
cd $COLCON_WS colcon build --packages-select openarm_description
# 작업 공간을 출처 소스 $COLCON_WS/install/setup.bash
URDF 세대 예제
한 팔과 손
xacro 로봇/오픈아름_robot.xacro 팔_type:=우측 끝_effector:=손
ROS2 제어로 2개 수동 설정 xacro 로봇/오픈아름_robot.xacro 쌍방향:=true ros2_control:=true
# 가짜 하드웨어와 시뮬레이션 버전 xacro 로봇/오픈아름_robot.xacro 시뮬레이션:=진짜
RViz 시각화
패키지는 단일 팔 및 쌍방향 구성 모두에서 RViz 시각화를 위한 런칭 파일들을 포함합니다.
# 단일 팔 시각화를 시작 로즈2 발사 openarm_description display.launch.py
# 2동력 시각화를 시작
로즈2 발사 오픈아름
구성 논증
사용자 정의 가능한 매개 변수는: 팔/체 유형, 최종 효과자 선택, 쌍방향 모드, CAN 인터페이스, 위치 오프셋 및 ROS2 제어 설정입니다.
멀티 로봇 설정
네트워크 격리 위해 ROS 이름 공간 및
5. CAN 라이브러리 (openarm_can)
오픈아름 CAN 라이브러리는 고급 오픈아름 제어 애플리케이션과 저급 모터 프로토콜 사이의 주요 통신 다리입니다. 그것은 모터 제어 및 상태 모니터링을 위해 리눅스의 소켓캐인 인터페이스를 활용합니다.
건축
도서관은 3층 구조를 사용한다.
- 통/소켓
고급 부품: T32 , T33 , T34 - damiao_motor
모터 프로토콜 레이어 (Damiao MIT 모드) - canbus
낮은 수준의 CAN 통신 (Linux SocketCAN)
주요 클래스
| Class | Description |
|---|---|
OpenArm |
Manages the CAN socket and all motor components globally |
ArmComponent |
Coordinates multiple arm motors as an integrated system |
GripperComponent |
Manages single motor operations with gripper-specific functions: open(), close(), set_position() |
DMDeviceCollection |
Provides shared motor operations including bulk control and parameter queries |
모터 제어 방법
모터는
// MITParam 구조: {kp, kd, q, dq, tau} // kp - 위치 이득 // kd - 속도 증가 // q - 원하는 위치 (rad) // dq - 원하는 속도는 (rad/s) // tau - 전력 전동동력 (Nm)
MITParam 파람 params.kp = 10.0; params.kd = 0.5; params.q = 목표_위치는 params.dq = 0.0; params.tau = 0.0
arm.send_mit_control(joint_id, params)
구현 작업 흐름
** CAN 인터페이스로 OpenArm를 초기화하십시오.** CAN 인터페이스 (예를 들어,
T44 ) 를 가리키는 T43 인스턴스를 생성하십시오. ** 타입 및 CAN ID를 가진 모터 장치를 등록.** 각 관절에 대한 송신자 ID, 수신자 ID 및 모터 모델을 지정하십시오.
모터를 활성화하고 호출 모드를 구성. 제어 응답을 위해
T45 호출 모드를 사용하세요. MIT 매개 변수를 통해 제어를 수행한다. 최대 1000 Hz로 위치/속도/토크 커맨드를 전송한다.
** 모니터 피드백 프레임.** 원하는 주파수에서 관절 상태를 다시 읽어보세요.
구성 메모
- 모터 타입, 전송 ID 및 수신 ID의 벡터 길이는 정확히 일치해야 합니다
- 시간정지 값: 느린 동작을 위해 1000
2000 마이크로초; 빠른 제어 루프를 위해 300500 마이크로초 - 제어 주기의 주파수는 8 엔진 설정에서 1000 Hz를 초과하지 않아야 합니다.
- 제어에 대해
T47 호출 모드를 사용하십시오. 파라미터 쿼리에서는 T48
6. ROS2 통합
OpenArm는 URDF/XACRO 모델,
ROS2 Humble (상담) 을 설치
# ROS2 Humble 데스크톱 패키지를 설치 sudo apt 설치 -y 로스-허블- 데스크톱
# OpenArm에 대한 제어기 패키지를 설치
sudo apt 설치 -y \
로즈-무블-로즈2 컨트롤
로즈-허블-로즈2 컨트롤러
로즈-허블-컨트롤러- 매니저
로즈-허블-그립터-컨트롤러
로즈
# MoveIt2 사용자
# ROS2 환경을 소스 (연구성 위해 ~/.bashrc에 추가) echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc 출처 ~/.bashrc
# 설치 확인 로스2 -h 로스2 주제가
ROS2 Jazzy (변호) 를 설치
Ubuntu 24.04 또는 Jazzy 사용자들을 위한 sudo apt 설치 -y 로즈-자지- 데스크톱
# 컨트롤러 패키지를 설치 (jazzy-특정 이름) sudo apt 설치 -y \ 로즈-자지-로즈2 컨트롤 로즈-자지-로즈2 컨트롤러 로즈 재즈 컨트롤러 매니저
Jazzy 상태 재즈리 유통은 개발 중이며 OpenArm 패키지 안정을 문제로 할 수 있습니다. 제작 사용에 Humble는 권장됩니다.
openarm_ros2 저장소 설정
# 작업 공간을 만들고 복제
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git klone
# 의존성을 설치 cd ~/ros2_ws 로스데프 설치 --From-paths src --ignore-src - r - y
건설
Colcon 빌드 --symlink-install
# 소스 작업 공간 소스 설치/설정.bash
ROS2 특징
- 관절 위치, 속도 및 노력의 제어 인터페이스
- 단일 팔 및 쌍손으로 설정하는 MoveIt2 계획 그룹 구성
- 중력 보상
- 탄력 조절
T50 용 하드웨어 인터페이스 플러그인
7. 고급 제어
고급 제어 섹션은 제어 가이드 및 알고리즘을 위한 적극적으로 개발된 영역입니다.
** 곧 도착** 각 제어 모드 에 대한 상세한 문서 를 준비 하고 있습니다. 기증 을 환영 합니다.
시스템 식별
관절 마찰, 관절성, 진압 매개 변수를 포함한 오픈아름의 역학을 특징화하는 절차. 문서가 곧 다가옵니다.
중력 보상
중력 보상 은 각 관절 에서 중력 동력을 계산하고 실시간으로 취소함으로써 팔을 무중 (일반적) 으로 유지 합니다. 이것은 안전한 텔레오퍼레이션 에 필수적이다. 구현 문서 는 곧 다가옵니다.
카르테시아 우주 제어
관절 공간보다는 카르테시아 공간 (XYZ 위치 + 방향) 에서 팔의 최종 효과자를 제어합니다. 카르테시아 명령어를 공동 명령으로 변환하기 위해 역 운동학 (IK) 을 사용합니다. 문서가 곧 다가옵니다.
마찰 보상 모델
텔레오퍼레이션 스택은 각 관절에 적용되는 탄을 기반으로 하는 마찰 보상 모델을 사용합니다:
Fc - 정적 마찰 수준
# k - 마찰 전환 날카로
Fv -
tau_f = Fc * tanh(k * dq) + Fv * dq + Fo
관절 매개 변수 (Kp, Kd, Fc, k, Fv, Fo) 는 제어 구성 파일에서 구성될 수 있다.
유관 이 페이지의 내용은 [docs.openarm.dev]에 있는 공식 OpenArm 문서에 근거하여 작성되었습니다.
[OpenArm 구매할 수 있나요?]







