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>
We’ve added the autopep8 hook to our `.pre-commit-config.yaml` to
enforce a consistent Python style.
To verify its behavior without touching every file at once, we’re
applying it in-place to depth_camera.launch.py for now because the large
number of impacted files there are.
The follow-up PR will run autopep8 accross the entire codebase once this
initial change passes CI.
ref: https://github.com/hhatto/autopep8
## 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
* Rename openarm_bimanual_teleop to openarm_bimanual_bringup
* Update package descriptions
* Add quickstart link
* Add note to source overlay
* Add test installation step
* Add poses and update default rviz config
* Fix rev1 to match hardware
* Align rev3 with hardware joint limits
* Match hardware joint limits
* Complete with more poses
* Update README.md with moveit2 video
* Add new READMEs in openarm_bringup and openarm_bimanual_moveit_config
* Add octomap note
* 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