j3soon / ros2-essentials

A repo containing essential ROS2 Humble features for controlling Autonomous Mobile Robots (AMRs) and robotic arm manipulators.
https://j3soon.github.io/ros2-essentials/
Apache License 2.0
8 stars 3 forks source link

Aloha Workspace for Simulation #56

Closed j3soon closed 1 month ago

j3soon commented 1 month ago

This PR adds support for the following features:

  1. Robotic arm (Aloha arm)
  2. MoveIt 2
  3. Isaac Sim

These features were not present in the original codebase and can serve as references for future workspaces that incorporate robotic arms, MoveIt 2, or Isaac Sim.

Closes: #48

Isaac Sim

There are 3 ways to install Isaac Sim:

  1. Install through Omniverse Launcher (i.e., binary install)
  2. Use the pre-built Isaac Sim docker image
  3. (Experimental) Pip installation

The first option is challenging to set up within a container. The second option involves using a closed-source Dockerfile, which requires a free NGC account to pull the image. This approach adds difficulties for future maintenance for several reasons:

The third option, while still experimental, simplifies Isaac Sim installation through pip install, allowing for easier integration. Although not all tutorials are updated for this method, I have come up with straightforward workarounds and can make Isaac Sim integration similar to that of Gazebo.

In this PR, I choose to use the third option, and believe it can allows much easier future maintenance for this repo. Nevertheless, it is worth noting that the first two options remain valuable for scenarios where long-term maintenance isn't necessary, such as quick testing or prototyping.

Limitations

In addition, after this PR is merged, we'll need to update template_ws and other workspaces in a subsequent PR to ensure full Isaac Sim support across all workspaces. The modifications in the aloha_ws also fixes several issues present in the current template_ws.

Would appreciate if @YuZhong-Chen or @Assume-Zhan have some time to review this and provide some feedback. If you're able to, please add yourself to the Reviewers section before beginning the review. Thank you!

j3soon commented 1 month ago

Tested on a clean machine with L40 GPUs. If host UID isn't 1000, the permission issue can be resolved by this simple workaround: https://github.com/j3soon/ros2-essentials/issues/53#issuecomment-2351397799

j3soon commented 1 month ago

Note that this PR is tested with docker engine version 27. Lower docker versions such as version 25 will report error due to the subpath feature used.

Ref: https://docs.docker.com/engine/release-notes/26.0/

j3soon commented 1 month ago

Just tested on a Ubuntu 22.04 Desktop environment with ARM CPU. MoveIt 2 can work without any code changes.

Please note that Gazebo and Isaac Sim do not support ARM CPUs, so trying to run them on such hardware will fail as expected.

j3soon commented 1 month ago

When controlling the Isaac Sim robot arm with MoveIt 2, it often exhibits overshooting behavior compared to Gazebo. The cause of this issue is still unclear.

I suspect this issue may be related to the dampness and stiffness when importing the URDF. However, the dampness seems to be explicitly set to 0.1 in the vx300s URDF. The following are some potential references:

I think we can document this behavior in README and open an issue. This issue could be left to future investigation when we are integrating our UR5 arm.

j3soon commented 1 month ago

I'll go ahead and merge this first. If you notice any issues in the future, please add your review here, and we can address them with a follow-up PR. Thanks!