Go to file
dependabot[bot] 54e0b8f1a0
Bump actions/download-artifact from 5 to 6 (#62)
Bumps
[actions/download-artifact](https://github.com/actions/download-artifact)
from 5 to 6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<p><strong>BREAKING CHANGE:</strong> this update supports Node
<code>v24.x</code>. This is not a breaking change per-se but we're
treating it as such.</p>
<ul>
<li>Update README for download-artifact v5 changes by <a
href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/417">actions/download-artifact#417</a></li>
<li>Update README with artifact extraction details by <a
href="https://github.com/yacaovsnc"><code>@​yacaovsnc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/424">actions/download-artifact#424</a></li>
<li>Readme: spell out the first use of GHES by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/431">actions/download-artifact#431</a></li>
<li>Bump <code>@actions/artifact</code> to <code>v4.0.0</code></li>
<li>Prepare <code>v6.0.0</code> by <a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a> in
<a
href="https://redirect.github.com/actions/download-artifact/pull/438">actions/download-artifact#438</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/danwkennedy"><code>@​danwkennedy</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/431">actions/download-artifact#431</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v5...v6.0.0">https://github.com/actions/download-artifact/compare/v5...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="018cc2cf5b"><code>018cc2c</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/438">#438</a>
from actions/danwkennedy/prepare-6.0.0</li>
<li><a
href="815651c680"><code>815651c</code></a>
Revert &quot;Remove <code>github.dep.yml</code>&quot;</li>
<li><a
href="bb3a066a8b"><code>bb3a066</code></a>
Remove <code>github.dep.yml</code></li>
<li><a
href="fa1ce46bbd"><code>fa1ce46</code></a>
Prepare <code>v6.0.0</code></li>
<li><a
href="4a24838f3d"><code>4a24838</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/431">#431</a>
from danwkennedy/patch-1</li>
<li><a
href="5e3251c4ff"><code>5e3251c</code></a>
Readme: spell out the first use of GHES</li>
<li><a
href="abefc31eaf"><code>abefc31</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/424">#424</a>
from actions/yacaovsnc/update_readme</li>
<li><a
href="ac43a6070a"><code>ac43a60</code></a>
Update README with artifact extraction details</li>
<li><a
href="de96f4613b"><code>de96f46</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/417">#417</a>
from actions/yacaovsnc/update_readme</li>
<li><a
href="7993cb44e9"><code>7993cb4</code></a>
Remove migration guide for artifact download changes</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-artifact/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/download-artifact&package-manager=github_actions&previous-version=5&new-version=6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-28 08:11:22 +09:00
.github Bump actions/download-artifact from 5 to 6 (#62) 2025-10-28 08:11:22 +09:00
dev readme: use package (#53) 2025-10-10 18:22:12 +09:00
examples Import 2025-07-22 15:15:21 +09:00
include/openarm Add getters for fd_enabled and can_interface for openarm class (#27) 2025-09-02 18:46:18 +09:00
packages Add installation of executables (#59) 2025-10-16 15:24:17 +09:00
python Update version info to 1.0.0 (2025-10-10) 2025-10-10 15:49:53 +09:00
setup Activate 4 can with one script (#28) 2025-09-05 17:55:38 +09:00
src/openarm Add getters for fd_enabled and can_interface for openarm class (#27) 2025-09-02 18:46:18 +09:00
.clang-format Import 2025-07-22 15:15:21 +09:00
.cmake-format.py Import 2025-07-22 15:15:21 +09:00
.editorconfig Add shell linter and formatter (#4) 2025-07-22 17:28:32 +09:00
.gitignore Add support for .deb packages for ubuntu-noble-amd64 (#32) 2025-09-26 14:56:28 +09:00
.packit.yaml Create Fedora RPM packages (#31) 2025-10-01 10:26:23 +09:00
.pre-commit-config.yaml Add shell linter and formatter (#4) 2025-07-22 17:28:32 +09:00
CMakeLists.txt Add installation of executables (#59) 2025-10-16 15:24:17 +09:00
CODE_OF_CONDUCT.md Import 2025-07-22 15:15:21 +09:00
CONTRIBUTING.md Import 2025-07-22 15:15:21 +09:00
helper.rb Make release process more robust (#51) 2025-10-10 16:23:00 +09:00
LICENSE.txt Import 2025-07-22 15:15:21 +09:00
openarm-can.pc.in Import 2025-07-22 15:15:21 +09:00
OpenArmCANConfig.cmake.in Import 2025-07-22 15:15:21 +09:00
Rakefile Make release process more robust (#51) 2025-10-10 16:23:00 +09:00
README.md readme: Fedora and EPEL RPM package installation instructions (#57) 2025-10-23 10:06:12 +09:00

OpenArm CAN Library

A C++ library for CAN communication with OpenArm robotic hardware, supporting Damiao motors over CAN/CAN-FD interfaces. This library is a part of OpenArm. See detailed setup guide and docs here.

Quick Start

Prerequisites

  • Linux with SocketCAN support
  • CAN interface hardware

1. Install

Ubuntu

  • 22.04 Jammy Jellyfish
  • 24.04 Noble Numbat
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:openarm/main
sudo apt update
sudo apt install -y \
  libopenarm-can-dev \
  openarm-can-utils

AlmaLinux, CentOS, Fedora, RHEL, and Rocky Linux

  1. Enable EPEL. (Not required for Fedora)
    • AlmaLinux 8 / Rocky Linux 8
      sudo dnf install -y epel-release
      sudo dnf config-manager --set-enabled powertools
      
    • AlmaLinux 9 & 10 / Rocky Linux 9 & 10
      sudo dnf install -y epel-release
      sudo crb enable
      
    • CentOS Stream 9
      sudo dnf config-manager --set-enabled crb
      sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel{,-next}-release-latest-9.noarch.rpm
      
    • CentOS Stream 10
      sudo dnf config-manager --set-enabled crb
      sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm
      
    • RHEL 8 & 9 & 10
      releasever="$(. /etc/os-release && echo $VERSION_ID | grep -oE '^[0-9]+')"
      sudo subscription-manager repos --enable codeready-builder-for-rhel-$releasever-$(arch)-rpms
      sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-$releasever.noarch.rpm
      
  2. Install the package.
    sudo dnf update
    sudo dnf install -y \
      openarm-can-devel \
      openarm-can-utils
    

2. Setup CAN Interface

Configure your CAN interface using the provided script:

# CAN 2.0 (default)
/usr/libexec/openarm-can/configure_socketcan.sh can0

# CAN-FD with 5Mbps data rate
/usr/libexec/openarm-can/configure_socketcan.sh can0 -fd

3. C++ Library

#include <openarm/can/socket/openarm.hpp>
#include <openarm/damiao_motor/dm_motor_constants.hpp>

openarm::can::socket::OpenArm arm("can0", true);  // CAN-FD enabled
std::vector<openarm::damiao_motor::MotorType> motor_types = {
    openarm::damiao_motor::MotorType::DM4310, openarm::damiao_motor::MotorType::DM4310};
std::vector<uint32_t> send_can_ids = {0x01, 0x02};
std::vector<uint32_t> recv_can_ids = {0x11, 0x12};

openarm.init_arm_motors(motor_types, send_can_ids, recv_can_ids);
openarm.enable_all();

See dev/README.md for how to build.

4. Python (🚧 EXPERIMENTAL - TEMPORARY 🚧)

⚠️ WARNING: UNSTABLE API ⚠️ Python bindings are currently a direct low level temporary port, and will change DRASTICALLY. The interface is may break between versions.Use at your own risk! Discussions on the interface are welcomed.

Build & Install:

Please ensure that you install the C++ library first, as 1. Install or dev/README.md.

cd python

# Create and activate virtual environment (recommended)
python -m venv venv
source venv/bin/activate

./build.sh

Usage:

# WARNING: This API is unstable and will change!
import openarm_can as oa

arm = oa.OpenArm("can0", True)  # CAN-FD enabled
arm.init_arm_motors([oa.MotorType.DM4310], [0x01], [0x11])
arm.enable_all()

Examples

  • C++: examples/demo.cpp - Complete arm control demo
  • Python: python/examples/example.py - Basic Python usage

For developers

See dev/README.md.

License

Licensed under the Apache License 2.0. See LICENSE.txt for details.

Copyright 2025 Enactic, Inc.

Code of Conduct

All participation in the OpenArm project is governed by our Code of Conduct.