Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,8 @@ jobs:
docker run --rm \
${{ steps.meta.outputs.tags }} \
bash -c "
colcon test &&
# Just test our things
colcon test --paths src/wilbur/* &&
colcon test-result --verbose
"

Expand Down
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@
[submodule "src/external/serial"]
path = src/external/serial
url = https://github.com/tylerjw/serial.git
[submodule "src/external/mujoco_ros2_control"]
path = src/external/mujoco_ros2_control
url = https://github.com/ros-controls/mujoco_ros2_control.git
50 changes: 37 additions & 13 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -87,14 +87,14 @@ RUN groupadd -g ${USER_GID} ${USERNAME} \
&& useradd -l -u ${USER_UID} -g ${USER_GID} --create-home -m -s /bin/bash -G sudo,adm,dialout,dip,plugdev,video ${USERNAME} \
&& echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \
mkdir -p \
/home/${USERNAME}/.ccache \
/home/${USERNAME}/.colcon \
/home/${USERNAME}/.ros \
/home/${USERNAME}/.bash \
${ER4_WS}/src \
${ER4_WS}/build \
${ER4_WS}/install \
${ER4_WS}/log && \
/home/${USERNAME}/.ccache \
/home/${USERNAME}/.colcon \
/home/${USERNAME}/.ros \
/home/${USERNAME}/.bash \
${ER4_WS}/src \
${ER4_WS}/build \
${ER4_WS}/install \
${ER4_WS}/log && \
chown -R ${USERNAME}:${USERNAME} /home/${USERNAME}

# Setup the install directory and copy the workspace to it.
Expand Down Expand Up @@ -128,6 +128,12 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
ros-${ROS_DISTRO}-rmw-fastrtps-cpp \
ros-${ROS_DISTRO}-plotjuggler-ros

# Install nanobind from pip rather than rosdep, and include additional deps for the mujoco conversion process.
ENV PIP_BREAK_SYSTEM_PACKAGES=1
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
pip3 install nanobind mujoco==3.5.0 obj2mjcf trimesh pycollada

# Copy in the remainder of the src directory
COPY --chown=${USERNAME}:${USERNAME} src/ src/

Expand Down Expand Up @@ -160,6 +166,24 @@ RUN echo "source /entrypoint.sh" >> ~/.bashrc
# Make it obvious when operating in a container
RUN echo "PS1=\"${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\](docker):\[\033[01;34m\]\w\[\033[00m\]\$ \"" >> ~/.bashrc

# Modify for MuJoCo
RUN sudo chmod a+rwx /opt/ros/jazzy/opt/mujoco_vendor/bin/mujoco_plugin/

# Added to support headless accelerated rendering in the container. For more information see
# https://bender.jsc.nasa.gov/confluence/spaces/~eholum/pages/325397633/Graphics+Acceleration+with+FastX
# Add additional logic to make sure we clone the correct version for our CPU.
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
sudo apt-get -y update && \
sudo apt-get install -q -y --no-install-recommends \
libxv1 \
libglu1-mesa \
libegl1
RUN ARCH=$(dpkg --print-architecture); \
wget https://github.com/VirtualGL/virtualgl/releases/download/3.1.3/virtualgl_3.1.3_${ARCH}.deb && \
sudo dpkg -i virtualgl_3.1.3_${ARCH}.deb && \
rm virtualgl_3.1.3_${ARCH}.deb

ENTRYPOINT ["/entrypoint.sh"]

# Source built dev image for automated testing.
Expand All @@ -181,11 +205,11 @@ USER root
RUN OLD_UID=$(id -u ${USERNAME}) && \
OLD_GID=$(id -g ${USERNAME}) && \
if [ "${OLD_UID}" != "${USER_UID}" ] || [ "${OLD_GID}" != "${USER_GID}" ]; then \
sed -i "s/^\(${USERNAME}:[^:]*:\)[^:]*:[^:]*:/\1${USER_UID}:${USER_GID}:/" /etc/passwd && \
sed -i "s/^\(${USERNAME}:[^:]*:\)[^:]*:/\1${USER_GID}:/" /etc/group && \
find /home/${USERNAME} \
\( -user ${OLD_UID} -o -group ${OLD_GID} \) \
-print0 | xargs -0 -P $(nproc) -n 1000 chown ${USER_UID}:${USER_GID}; \
sed -i "s/^\(${USERNAME}:[^:]*:\)[^:]*:[^:]*:/\1${USER_UID}:${USER_GID}:/" /etc/passwd && \
sed -i "s/^\(${USERNAME}:[^:]*:\)[^:]*:/\1${USER_GID}:/" /etc/group && \
find /home/${USERNAME} \
\( -user ${OLD_UID} -o -group ${OLD_GID} \) \
-print0 | xargs -0 -P $(nproc) -n 1000 chown ${USER_UID}:${USER_GID}; \
fi

USER ${USERNAME}
3 changes: 3 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ services:
# default to colorized output of ros logs
- RCUTILS_COLORIZED_OUTPUT=1
- NVIDIA_DRIVER_CAPABILITIES=all
# For remote graphics acceleration, no effect if not using VGL
- VGL_DISPLAY=:0
- VGL_COMPRESS=proxy
volumes:
# If they are present, mount DDS configurations from the host machine into the container.
# If not, fallback to the default localhost configurations for both fastrtps and cyclonedds.
Expand Down
1 change: 1 addition & 0 deletions src/external/mujoco_ros2_control
Submodule mujoco_ros2_control added at 58f465
2 changes: 1 addition & 1 deletion src/wilbur
Submodule wilbur updated 80 files
+1 −0 .gitattributes
+1 −0 .pre-commit-config.yaml
+ − docs/wilbur_rviz.png
+7 −7 wilbur_deploy/config/controllers_hande.yaml
+35 −30 wilbur_deploy/config/controllers_w200.yaml
+8 −0 wilbur_deploy/config/teleop_interactive_markers.yaml
+22 −0 wilbur_deploy/config/teleop_joy.yaml
+19 −0 wilbur_deploy/config/twist_mux.yaml
+75 −32 wilbur_deploy/launch/control.launch.py
+39 −14 wilbur_deploy/launch/control_mock_hardware.launch.py
+53 −30 wilbur_deploy/launch/controller_manager.launch.py
+5 −8 wilbur_deploy/launch/robot_state_publisher.launch.py
+58 −43 wilbur_deploy/launch/spawn_controllers.launch.py
+124 −0 wilbur_deploy/launch/teleop.launch.py
+2 −1 wilbur_deploy/package.xml
+25 −15 wilbur_deploy/wilbur_deploy/launch_utils.py
+47 −10 wilbur_deploy/wilbur_deploy/pig_warnings.py
+2 −6 wilbur_description/launch/view_robot.launch.py
+ − wilbur_description/meshes/w200/wheels/cylinder_wheel.stl
+3 −2 wilbur_description/urdf/attachments/bulkhead.urdf.xacro
+9 −9 wilbur_description/urdf/common.urdf.xacro
+4 −4 wilbur_description/urdf/diff_unit.urdf.xacro
+2 −2 wilbur_description/urdf/links/mesh.urdf.xacro
+6 −5 wilbur_description/urdf/w200.ros2_control.xacro
+4 −5 wilbur_description/urdf/w200.urdf.xacro
+2 −2 wilbur_description/urdf/w200/attachments/arm_plate.urdf.xacro
+17 −16 wilbur_description/urdf/w200_macro.urdf.xacro
+2 −2 wilbur_description/urdf/wheels/track.urdf.xacro
+3 −2 wilbur_description/urdf/wheels/wheel.urdf.xacro
+4 −6 wilbur_description/urdf/wilbur.urdf.xacro
+14 −9 wilbur_description/urdf/wilbur.xacro
+80 −0 wilbur_description/urdf/wilbur_mock.ros2_control.xacro
+40 −0 wilbur_description/urdf/wilbur_mock.urdf.xacro
+9 −10 wilbur_description/urdf/wilbur_ur10e.urdf.xacro
+1 −1 wilbur_description/urdf/wilbur_ur10e_macro.urdf.xacro
+6 −6 wilbur_gz/config/bridge.yaml
+7 −17 wilbur_gz/launch/sim_gz.launch.py
+1 −1 wilbur_gz/package.xml
+1 −1 wilbur_gz/urdf/w200_gz.xacro
+1 −1 wilbur_gz/urdf/wilbur_gz.ros2_control.xacro
+9 −6 wilbur_gz/urdf/wilbur_gz.urdf.xacro
+14 −61 wilbur_gz/urdf/wilbur_gz.xacro
+4 −4 wilbur_gz/worlds/empty_world.sdf
+1 −1 wilbur_moveit_config/config/wilbur.srdf
+4 −12 wilbur_moveit_config/launch/wilbur_moveit.launch.py
+22 −0 wilbur_mujoco_config/CMakeLists.txt
+24 −0 wilbur_mujoco_config/README.md
+0 −0 wilbur_mujoco_config/config/mujoco_plugins.yaml
+3 −0 wilbur_mujoco_config/docs/circle.png
+3 −0 wilbur_mujoco_config/docs/final_rotation.png
+3 −0 wilbur_mujoco_config/docs/final_translation.png
+201 −0 wilbur_mujoco_config/docs/simulation_notes.md
+18 −0 wilbur_mujoco_config/docs/skid_steering_friction_coeffs.md
+3 −0 wilbur_mujoco_config/docs/theta_dot_v1.png
+3 −0 wilbur_mujoco_config/docs/theta_dot_v2.png
+3 −0 wilbur_mujoco_config/docs/theta_dot_v3.png
+3 −0 wilbur_mujoco_config/docs/theta_dot_v4.png
+3 −0 wilbur_mujoco_config/docs/x_dot_v1.png
+3 −0 wilbur_mujoco_config/docs/x_dot_v2.png
+3 −0 wilbur_mujoco_config/docs/x_dot_v3.png
+3 −0 wilbur_mujoco_config/docs/x_dot_v4.png
+113 −0 wilbur_mujoco_config/launch/generate_mjcf.launch.py
+191 −0 wilbur_mujoco_config/launch/wilbur_mujoco.launch.py
+0 −0 wilbur_mujoco_config/mjcf_data/.gitkeep
+26 −0 wilbur_mujoco_config/package.xml
+44 −0 wilbur_mujoco_config/urdf/wilbur_mujoco_processed_inputs.xacro
+143 −0 wilbur_mujoco_config/urdf/wilbur_mujoco_raw_inputs.xacro
+154 −0 wilbur_mujoco_config/urdf/wilbur_mujoco_ros2_control.xacro
+41 −0 wilbur_mujoco_config/urdf/wilbur_mujoco_scene.xacro
+46 −0 wilbur_mujoco_config/urdf/wilbur_mujoco_xacro.urdf
+44 −0 wilbur_testing/CMakeLists.txt
+17 −0 wilbur_testing/README.md
+5 −0 wilbur_testing/include/navigation_testing/utils.hpp
+78 −0 wilbur_testing/launch/check_odometry.launch.py
+21 −0 wilbur_testing/package.xml
+196 −0 wilbur_testing/src/log_odom.cpp
+160 −0 wilbur_testing/src/log_odom_gz.cpp
+160 −0 wilbur_testing/src/log_odom_sep.cpp
+99 −0 wilbur_testing/src/send_cmd.cpp
+16 −0 wilbur_testing/src/utils.cpp
Loading