# Summary The previous URDF directory structure used has a chained call from **openarm.urdf.xacro** -> **openarm.xacro** -> **openarm.ros2_control.xacro**. **openarm.xacro** takes both robot hardware description and control/communication configuration arguments but the file content is only about robot description. # Changes Made - Renamed **openarm.xacro** to **openarm.robot.xacro**. This file now contains only the robot's hardware description, including links, joints, visuals, and inertial properties. - **openarm.control.xacro** handles all ROS 2 control configurations, including hardware interfaces, joint interfaces, and CAN device setup. - Updated openarm.urdf.xacro (entry point)Calls both **openarm.robot.xacro** and **openarm.control.xacro**. This change should separates responsibilities and arguments for each subsystem. Have tested with bringup scripts for both single-arm and bimanual configurations.
38 lines
1.8 KiB
XML
38 lines
1.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!--
|
||
Copyright 2025 Reazon Holdings, Inc.
|
||
|
||
Licensed under the Apache License, Version 2.0 (the "License");
|
||
you may not use this file except in compliance with the License.
|
||
You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="openarm">
|
||
<!-- Robot description parameters -->
|
||
<xacro:arg name="prefix" default="" />
|
||
<xacro:arg name="side" default="right" />
|
||
<xacro:arg name="zero_pos" default="up" />
|
||
|
||
<!-- Control-related parameters -->
|
||
<xacro:arg name="can_device" default="can0" />
|
||
<xacro:arg name="use_mock_hardware" default="false" />
|
||
<xacro:arg name="mock_sensor_commands" default="false" />
|
||
|
||
<!-- Include robot description (without control parameters) -->
|
||
<xacro:include filename="openarm.robot.xacro"/>
|
||
<xacro:openarm_robot prefix="$(arg prefix)" side="$(arg side)" zero_pos="$(arg zero_pos)"/>
|
||
|
||
<!-- Include control configuration (with only control parameters) -->
|
||
<xacro:include filename="$(find openarm_description)/urdf/openarm.ros2_control.xacro"/>
|
||
<xacro:arg name="initial_positions_file" default="$(find openarm_description)/config/initial_positions.yaml" />
|
||
<xacro:openarm_ros2_control name="OpenArmHW" prefix="$(arg prefix)" initial_positions_file="$(arg initial_positions_file)" can_device="$(arg can_device)" use_mock_hardware="$(arg use_mock_hardware)" mock_sensor_commands="$(arg mock_sensor_commands)"/>
|
||
|
||
</robot>
|