This PR is made for new release and do not work with current v0.3 robot
descriptions.
Use for the ros2 control for quick arm control.
Launch files spawn:
- Robot state publisher
- Controller manager with ros2_control
- Joint state broadcaster
- Robot controller (joint trajectory or forward position)
- Gripper controller
- RViz2 visualization
---------
Co-authored-by: Thomason Zhou <t95zhou@uwaterloo.ca>
Added script to cmake install path
Added merge script that communicates with kirigirisu
Added another launch exe for kirigirisu visualization
Adjusted log content in test/hardware
## Problem
When building openarm_ros2, the hardware interface tests fail because
the components_urdfs.hpp header from ros2_control_test_assets cannot be
found as
follows.
```console
$ colcon build
...
/home/otegami/work/cpp/ros2_ws/src/openarm_ros2/openarm_hardware/test/test_openarm_hardware.cpp:21:10: fatal error: ros2_control_test_assets/components_urdfs.hpp: No such file or directory
21 | #include "ros2_control_test_assets/components_urdfs.hpp"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
gmake[2]: *** [CMakeFiles/test_openarm_hardware.dir/build.make:79: CMakeFiles/test_openarm_hardware.dir/test/test_openarm_hardware.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:237: CMakeFiles/test_openarm_hardware.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2
---
Failed <<< openarm_hardware [14.9s, exited with code 2]
Summary: 6 packages finished [15.1s]
1 package failed: openarm_hardware
5 packages had stderr output: openarm_bimanual_bringup openarm_bimanual_description openarm_bringup openarm_description openarm_hardware
1 package not processed
```
## Cause
Although ros2_control_test_assets was installed, it wasn’t declared as a
dependency of the GMock test
target.
## Solution
Add ros2_control_test_assets as a test dependency in both the
CMakeLists.txt and in the package.xml,
ensuring the test can locate its headers.
## Problem
When we launch openarm_bringup, the following error are raised.
```console
$ ros2 launch openarm_bringup openarm.launch.py
[INFO] [launch]: All log files can be found below /home/otegami/.ros/log/2025-05-23-15-07-52-834283-otegami-2239551
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ros2_control_node-1]: process started with pid [2239568]
[INFO] [robot_state_publisher-2]: process started with pid [2239569]
[INFO] [rviz2-3]: process started with pid [2239570]
[robot_state_publisher-2] [INFO] [1747984073.330768599] [robot_state_publisher]: Robot initialized
[ros2_control_node-1] [INFO] [1747984073.346291338] [controller_manager]: Using Steady (Monotonic) clock for triggering controller manager cycles.
[ros2_control_node-1] [ERROR] [1747984073.346957366] [pluginlib.ClassLoader]: Could not find a root element for package manifest at /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/package.xml.
[ros2_control_node-1] [ERROR] [1747984073.347001329] [pluginlib.ClassLoader]: Could not find package manifest (neither package.xml or deprecated manifest.xml) at same directory level as the plugin XML file /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/openarm_hardware.xml. Plugins will likely not be exported properly.
[ros2_control_node-1] )
[ros2_control_node-1] [ERROR] [1747984073.347237704] [pluginlib.ClassLoader]: Could not find a root element for package manifest at /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/package.xml.
[ros2_control_node-1] [ERROR] [1747984073.347246277] [pluginlib.ClassLoader]: Could not find package manifest (neither package.xml or deprecated manifest.xml) at same directory level as the plugin XML file /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/openarm_hardware.xml. Plugins will likely not be exported properly.
[ros2_control_node-1] )
[ros2_control_node-1] [ERROR] [1747984073.347465709] [pluginlib.ClassLoader]: Could not find a root element for package manifest at /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/package.xml.
[ros2_control_node-1] [ERROR] [1747984073.347471103] [pluginlib.ClassLoader]: Could not find package manifest (neither package.xml or deprecated manifest.xml) at same directory level as the plugin XML file /home/otegami/work/cpp/ros2_ws/install/openarm_hardware/share/openarm_hardware/openarm_hardware.xml. Plugins will likely not be exported properly.
```
## Cause
when the license comments appeared before the
xml-model instruction, it happedned.
## Solution
This PR changes places the xml-model declaration
immediately after the XML prolog and ahead of the
license block to resolve the issue.
We are standardizing our software under Apache License 2.0. This PR
replaces existing BSD 3-Clause License with Apache 2.0 in this
repository.
## About Copyright
All commits in this repository are made by Reazon Holdings, Inc.
members, so the copyright has been added as follows.
- `Copyright 2025 Reazon Holdings, Inc.`
```console
$ git shortlog -sn
55 Thomason Zhou
14 thomason
5 takuya kodama
1 Fujimoto Seiji
1 edwin-giang
1 toki
```
## How it was done
We added the new license header directory by directory, with each commit
covering a single directory to make review easier.
To ensure there are no missing files, we ran the following commands.
```
$ grep -RIL --exclude-dir='.git' --exclude='*.stl' "Apache License, Version 2.0" .
./openarm_bringup/README.md
./openarm_bimanual_moveit_config/README.md
./openarm_bimanual_description/urdf/openarm_bimanual.urdf
./.gitignore
./README.md
./openarm_description/urdf/openarm.urdf
./openarm_description/resource/openarm_description
```
The following files are auto-generated.
- openarm_bimanual_description/urdf/openarm_bimanual.urdf
- openarm_description/urdf/openarm.urdf
## Summary
This PR updates the C++ hardware interface to support **CANFD** and confirms successful operation with **MoveIt** on the actual robot hardware.
---
## Changes Made
- Migrated from classic CAN to **CANFD** in the motor control interface.
- Updated the following modules:
- `openarm_hardware/include/openarm_hardware/canbus.hpp`
- `openarm_hardware/src/canbus.cpp`
- `openarm_hardware/src/motor_control.cpp`
- `openarm_hardware/include/openarm_hardware/motor_control.hpp`
- `openarm_hardware/src/openarm_hardware.cpp`
- Improved CAN socket handling and data frame structure.
- Refactored internal motor communication logic for robustness.
---
## Verification
- Confirmed joint control and motion execution with real hardware using **MoveIt**.
- Controllers were properly loaded and executed planned trajectories without error.
- CANFD communication is now functional and stable during runtime.
* Create mujoco_ros2_control package
* Enable Mujoco hardware interface for OpenArm
* Verify connection with ros2_control
* Update actuators to pos/vel
* Add motor after creation
* Tune KD for smoother motion
* Restore realsense camera
* Change camera to be 10 tilt from vertical to match physical model
* Repair urdf to match physical robot
* Checkpoint moveit2_configuration
* Remove collision between camera and pedestal and remove additional ros2_control interfaces for mock
* Enable octomap perception
* Fix base_link to world transform
* Update openarm to support moveit2 bimanual planning with end effectors
* Improve safety of openarm_hardware zero position autocalibration
* Remove openarm_mujoco_ros2_control from moveit2 branch
* Restore sensor functionality