Repository Summary

Description ROSCon DE 2023 talk "Learning Robotics Fundamentals with ROS 2 and modern Gazebo"
Checkout URI https://github.com/andreasbihlmaier/robotics_fundamentals_ros_gazebo.git
VCS Type git
VCS Version main
Last Updated 2023-11-23
Dev Status UNKNOWN
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

README

ROSCon DE 2023 talk “Learning Robotics Fundamentals with ROS 2 and modern Gazebo”

Slides available here

Setup:

  • Follow the official installation instructions at https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html.
  • In the step “Install ROS 2 packages”, install the packages ros-humble-desktop and ros-dev-tools.
  • In addition, install the following packages
  sudo apt install \
    python3-colcon-common-extensions \
    ros-humble-ign-ros2-control \
    ros-humble-plotjuggler-ros \
    ros-humble-ros2-control \
    ros-humble-ros2-controllers \
    ros-humble-ros-gz-sim-demos \
    ros-humble-ros-ign-gazebo \
    ros-humble-rqt-joint-trajectory-controller \
    ros-humble-rqt-tf-tree
  

M1:

  • Start (modern) Gazebo:
  ros2 launch ros_gz_sim gz_sim.launch.py gz_args:="empty.sdf -r"
  
  • Spawn a simple mobile robot in Gazebo:
  ros2 run ros_gz_sim create -file $(pwd)/vehicle_blue.sdf -z 0.325
  
  • Create a bridge between ROS and Gazebo:
  ros2 run ros_gz_bridge parameter_bridge \
    '/model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]gz.msgs.Twist' \
    '/model/vehicle_blue/pose@tf2_msgs/msg/TFMessage[gz.msgs.Pose_V'
  
  • Start PlotJuggler
  ros2 run plotjuggler plotjuggler
  
  • Add plots:
    • ROS2 Topic Subscriber -> Select /model/vehicle_blue/pose
    • Drag and drop /model/vehicle_blue/pose/empty/vehicle_blue/translation/x from Timeseries List to the plot area
    • Split the plot vertical twice
    • Add Custom Series -> Input timeseries: Same x as above; Function library: backward_difference_derivative; New name: v; Create New Timeseries
    • Drag and drop v from Custom Series to the middle plot and to the bottom plot
    • Apply filter to data on the bottom plot -> Derivative
    • Now the top plot shows the position x, the middle plot shows the velocity v, and the bottom plot shows the acceleration a.
  • Command the mobile robot to move forward:
  ros2 topic pub --once /model/vehicle_blue/cmd_vel geometry_msgs/msg/Twist '
  linear:
    x: 0.1
    y: 0.0
    z: 0.0
  angular:
    x: 0.0
    y: 0.0
    z: 0.0'
  

P1:

  • Start Gazebo:
  ros2 launch ros_gz_sim gz_sim.launch.py gz_args:="$(pwd)/falling_world.sdf"
  
  • Create ROS-Gazebo bridge:
  ros2 run ros_gz_bridge parameter_bridge '/model/sphere/pose@tf2_msgs/msg/TFMessage[gz.msgs.Pose_V'
  
  • Record pose of falling sphere:
  ros2 bag record /model/sphere/pose
  
  • Unpause Gazebo
  • Wait for sphere to hit the ground. Stop recording.
  • Open bag file in PlotJuggler

P2:

  • Start Gazebo:
  ros2 launch ros_gz_sim gz_sim.launch.py gz_args:="$(pwd)/slippery_slope.sdf"
  
  • Create ROS-Gazebo bridge:
  ros2 run ros_gz_bridge parameter_bridge \
    '/model/sphere/pose@tf2_msgs/msg/TFMessage[gz.msgs.Pose_V' \
    '/model/cylinder/pose@tf2_msgs/msg/TFMessage[gz.msgs.Pose_V'
  
  • Record pose of falling sphere:
  ros2 bag record /model/sphere/pose /model/cylinder/pose
  
  • Unpause Gazebo
  • Wait for both objects to have rolled down the inclined plane. Stop recording.
  • Open bag file in PlotJuggler

R1:

  • Start Gazebo:

```

File truncated at 100 lines see the full file