Skip to content

Feature/mobility#7

Open
pondersome wants to merge 10 commits intowaveshareteam:ros2-humblefrom
pondersome:feature/mobility
Open

Feature/mobility#7
pondersome wants to merge 10 commits intowaveshareteam:ros2-humblefrom
pondersome:feature/mobility

Conversation

@pondersome
Copy link
Copy Markdown

Considering adding one or more arms to a mobile robot, a series of mobility enhancements came to mind:

Added a launch file for roarm_driver with the ability to override the usb connection on start up. For example, if using udev rules to set the name of the port:

ros2 launch roarm_driver roarm.launch.py serial_port:=/dev/roarm_port

Namespaces can be used to isolate one arm from another, allowing the universal TF tree to remain conflict-free. roarm_driver will use the current namespace to select the appropriate joint_states to act on. If not using namespaces, the base of the arm can be renamed with a launch argument allowing a joint to be defined without conflicting with the chassis' base_link.

Moved the description generation system to use xacro to compile descriptions on the fly in a launch file.

Added the ability to rotate the gripper mount with an argument to support when owners change the factory orientation.

Created an example mounted.display.launch.py to show how two arms can be configured on one base:

Added README documentation supporting these mobility features. Added a new section 9.

These extended features have not been tested against the Moveit2 examples, but since by default they don't change anything if unused, I don't anticipate problems. Let me know if you see otherwise.

To see an example of using these features in cross package way, refer to:
desribe.with.arm.py

…r mobile robot integration

parameter-enabled xacros to generate arm description urdf

optionally change the default base_link name so it can become a link on a robot's urdf
optionally add a prefix which can be used as a namespace scope to assure links and joints are uniquely named across robots in a global transform space

usage example:
xacro roarm_urdf_builder.xacro prefix:=mybot_ base_link_name:=left_arm_base_link > roarm_generated.urdf

run without parameters to generate the default roarm urdf:
xacro roarm_urdf_builder.xacro > roarm_generated.urdf
  - Added self.current_positions dictionary to track last known position of each joint
  - Modified joint_states_callback to only update joints present in the message
  - Always sends complete joint states to hardware using cached values for missing joints
  - Incremental updates where individual joints can be controlled without affecting others
@pondersome
Copy link
Copy Markdown
Author

Added partial updates where individual joints can be controlled without affecting others. Cache of joint positions maintained inside roarm_driver.py

Fixed arm_driver Joint Name Matching (roarm_driver.py)
- Solution: Normalize both namespace and joint names by stripping leading slashes before comparison. This stops enforcing and arbitrary leading slash expectation for tf frame names
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant