-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #56 from j3soon/aloha-ws
Aloha Workspace for Simulation
- Loading branch information
Showing
985 changed files
with
115,151 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* Reference: https://aka.ms/devcontainer.json */ | ||
{ | ||
"name": "aloha-ws", | ||
"dockerComposeFile": "../docker/compose.yaml", | ||
"service": "aloha-ws", | ||
// Workspace settings | ||
"workspaceFolder": "/home/ros2-essentials/aloha_ws", | ||
// Vscode extensions | ||
"customizations": { | ||
"vscode": { | ||
"extensions": [ | ||
"ms-vscode.cpptools", | ||
"ms-vscode.cpptools-themes", | ||
"twxs.cmake", | ||
"donjayamanne.python-extension-pack", | ||
"eamodio.gitlens", | ||
"mhutchie.git-graph", | ||
"streetsidesoftware.code-spell-checker", | ||
"ms-iot.vscode-ros" | ||
] | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
# Visual Studio Code | ||
.vscode | ||
|
||
# ROS2 basic directories | ||
/build | ||
/install | ||
/log | ||
|
||
# Custom ignores | ||
/isaacsim/assets | ||
/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_descriptions/urdf/*.urdf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
# aloha_ws | ||
|
||
## Start Container | ||
|
||
```sh | ||
cd ~/ros2-essentials/aloha_ws/docker | ||
xhost +local:docker | ||
docker compose up | ||
# The first build will take a while (~10 mins), please wait patiently. | ||
``` | ||
|
||
The commands in the following sections assume that you are inside the Docker container: | ||
|
||
```sh | ||
# in a new terminal | ||
docker exec -it ros2-aloha-ws bash | ||
``` | ||
|
||
## View Robot Model in RViz | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_descriptions xsarm_description.launch.py robot_model:=vx300s use_joint_pub_gui:=true | ||
``` | ||
|
||
It is worth noting that `aloha_vx300s.urdf.xacro` and `vx300s.urdf.xacro` files are identical. We opt to use `vx300s` since `aloha_vx300s` seems to lack corresponding configs, such as those for MoveIt 2. | ||
|
||
![](figure/rviz.png) | ||
|
||
## View Robot Model in Gazebo | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_sim xsarm_gz_classic.launch.py robot_model:=vx300s | ||
``` | ||
|
||
## ROS 2 Control | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_control xsarm_control.launch.py robot_model:=vx300s use_sim:=true | ||
# and then use the `Interbotix Control Panel`. | ||
``` | ||
|
||
![](figure/ros2-control.png) | ||
|
||
## MoveIt 2 with RViz | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_moveit xsarm_moveit.launch.py robot_model:=vx300s hardware_type:=fake | ||
``` | ||
|
||
![](figure/moveit-rviz.png) | ||
|
||
## MoveIt 2 with Gazebo | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_moveit xsarm_moveit.launch.py robot_model:=vx300s hardware_type:=gz_classic | ||
``` | ||
|
||
![](figure/moveit-gazebo.png) | ||
|
||
## MoveIt 2 with Isaac Sim | ||
|
||
Prepare USD files: | ||
|
||
```sh | ||
cd /home/ros2-essentials/aloha_ws/isaacsim/scripts | ||
./create_urdf_from_xacro.sh | ||
python3 create_vx300s_from_urdf.py | ||
python3 create_vx300s_with_omnigraph.py | ||
``` | ||
|
||
and run: | ||
|
||
```sh | ||
ros2 launch interbotix_xsarm_moveit xsarm_moveit.launch.py robot_model:=vx300s hardware_type:=isaac | ||
# and then move the target and use the `MotionPlanning` panel. | ||
``` | ||
|
||
![](figure/moveit-isaacsim.png) | ||
|
||
### Debugging with Isaac Sim | ||
|
||
The Isaac Sim app can be launched with: | ||
|
||
```sh | ||
isaacsim omni.isaac.sim | ||
``` | ||
|
||
Keep in mind that the standalone scripts can be easily debugged in Isaac Sim's `Script Editor`. | ||
Simply copy the code, omitting anything related to SimulationApp (remove the beginning and end), | ||
and paste to the `Script Editor` and run it. | ||
|
||
To open pre-configured USD file with OmniGraph: | ||
|
||
- `File > Open` and click `My Computer`, then in `File name:` type: | ||
``` | ||
/home/ros2-essentials/aloha_ws/isaacsim/assets/vx300s_og.usd | ||
``` | ||
- Click `Window > Visual Scripting > Action Graph` | ||
- In the `Action Graph` tab, click `Edit Action Graph` and select `/ActionGraph` | ||
- Click `Play (SPACE)` | ||
|
||
View the current joint states: | ||
|
||
```sh | ||
# in a new terminal | ||
docker exec -it ros2-aloha-ws bash | ||
ros2 topic echo /vx300s/joint_states | ||
``` | ||
|
||
A specific world can also be directly launched and played with: | ||
|
||
```sh | ||
isaacsim omni.isaac.sim --exec '/home/ros2-essentials/aloha_ws/isaacsim/scripts/open_isaacsim_stage.py --path /home/ros2-essentials/aloha_ws/isaacsim/assets/vx300s_og.usd' | ||
``` | ||
|
||
To access Nucleus from Isaac Sim, you should [install Nucleus](https://docs.omniverse.nvidia.com/nucleus/latest/workstation/installation.html) with default username/password `admin:admin` on your host machine or connect to an external Nucleus server. | ||
|
||
## References | ||
|
||
- [Interbotix X-Series Arms \| Trossen Robotics Documentation](https://docs.trossenrobotics.com/interbotix_xsarms_docs/index.html) | ||
- [ROS 2 Interface](https://docs.trossenrobotics.com/interbotix_xsarms_docs/ros_interface/ros2.html) | ||
- [ROS 2 Standard Software Setup](https://docs.trossenrobotics.com/interbotix_xsarms_docs/ros_interface/ros2/software_setup.html) | ||
- [ROS 2 Open Source Packages](https://docs.trossenrobotics.com/interbotix_xsarms_docs/ros2_packages.html) | ||
- [Stationary ALOHA Software Setup \| Trossen Robotics Documentation](https://docs.trossenrobotics.com/aloha_docs/getting_started/stationary/software_setup.html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
# Setup paths in `~/.profile` to allow unified environment variable across login/non-login shells | ||
# set PATH so it includes user's private bin if it exists | ||
if [ -d "$HOME/bin" ] ; then | ||
PATH="$HOME/bin:$PATH" | ||
fi | ||
# set PATH so it includes user's private bin if it exists | ||
if [ -d "$HOME/.local/bin" ] ; then | ||
PATH="$HOME/.local/bin:$PATH" | ||
fi | ||
# Source global ROS2 environment | ||
source /opt/ros/$ROS_DISTRO/setup.bash | ||
# Optionally perform apt update if it has not been executed yet | ||
if [ -z "$( ls -A '/var/lib/apt/lists' )" ]; then | ||
echo "apt-get update has not been executed yet. Running sudo apt-get update..." | ||
sudo apt-get update | ||
fi | ||
# Optionally perform rosdep update if it has not been executed yet | ||
if [ ! -d $HOME/.ros/rosdep/sources.cache ]; then | ||
echo "rosdep update has not been executed yet. Running rosdep update..." | ||
rosdep update | ||
cd $ROS2_WS | ||
# Ref: https://docs.ros.org/en/humble/Tutorials/Intermediate/Rosdep.html | ||
rosdep install --from-paths src --ignore-src -y -r | ||
fi | ||
# Optionally build the workspace if it has not been built yet | ||
if [ ! -f $ROS2_WS/install/setup.bash ]; then | ||
echo "Workspace has not been built yet. Building workspace..." | ||
cd $ROS2_WS | ||
# TODO: If command `arch` outputs `aarch64`, consider adding `--packages-ignore <package>` to ignore x86 packages | ||
# Ref: https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Creating-Your-First-ROS2-Package.html | ||
if [ $(arch) == "aarch64" ]; then | ||
colcon build --symlink-install | ||
else | ||
colcon build --symlink-install | ||
fi | ||
echo "Workspace built." | ||
fi | ||
# Source gazebo environment | ||
# Ref: https://github.com/Interbotix/interbotix_ros_manipulators/issues/81#issuecomment-1562118208 | ||
# Ref: https://classic.gazebosim.org/tutorials?tut=ros2_installing&cat=connect_ros#InstallGazebo | ||
if [ $(arch) == "x86_64" ]; then | ||
source /usr/share/gazebo/setup.bash | ||
fi | ||
# TODO: Source other workspace environments as underlay | ||
# Set Isaac Sim environment variables | ||
# Ref: https://docs.omniverse.nvidia.com/isaacsim/latest/installation/install_python.html#running-isaac-sim | ||
# Ref: https://github.com/NVIDIA-Omniverse/IsaacSim-dockerfiles/blob/e3c09375c2d110b39c3fab3611352870aa3ce6ee/Dockerfile.2023.1.0-ubuntu22.04#L49-L53 | ||
export OMNI_USER=admin | ||
export OMNI_PASS=admin | ||
export OMNI_KIT_ACCEPT_EULA=YES | ||
# Source workspace environment | ||
source $ROS2_WS/install/setup.bash | ||
echo "Successfully built workspace and configured environment variables." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
* | ||
!.bashrc | ||
!script | ||
!udev_rules |
Oops, something went wrong.