/eddiebot-ros

ROS2 packages for Parallax Eddie robot along with simulations using Gazebo (formerly ignition gazebo)

Primary LanguageC++

Eddiebot ROS

ROS2 packages for Parallax Eddie robot along with simulations using Gazebo (formerly ignition gazebo)

For an in depth tutorial on how to use this package check out the accompanying tutorial: robotics lab

Packages

  • eddiebot_bringup: The driver for the Eddie robot board. It establishes a connection to the board using UART and acts as a bridge between ROS2 and Eddie commands that the firmware on the board understands. For more details about the commands please checkout the documentation directory.
  • eddiebot_description: This package defines structure of the robot using URDF modelsf for every component of the robot. These models are used for generating kinematic and tf information. It uses the diff_drive plugin for differential drive control of the robot. The launch files start robot_state_publisher that reads the URDF model and generates static TF transforms, and joint_state_publisher that sends out dynamic TF transforms for joint position updates.
  • eddiebot_gazebo: Contains some sample worlds to test the robot in, along with a bunch of launch files that are able to setup Gazebo, spawn Eddie into the world, and necessary bridges for ROS2 and Gazebo communication.
  • eddiebot_nav: Contains the launch files for the setup and launch of the navigation stack using nav2, slam_toolbox, depthimage_to_laserscan, and various other packages.
  • eddiebot_msgs: Definition of specific topics and services for Eddie robot.
  • eddiebot_odom: Publishes odometry information useful for mapping and localization. It publishes the transform between the frames /odom and /base_footprint.
  • eddiebot_rviz: Rviz configurations and launch files for visualizing and monitoring various aspects of Eddie.
  • eddiebot_vel_controller: A converter between different velocity types.

Screeenshots

gaz rviz maze nav

eddie-rviz.mp4

Features

  • How to convert a legacy ROS1 codebase to ROS2
  • Example of hooks for setting GZ_SIM_RESOURCE_PATH
  • Robot description launch with robot_state_publisher, joint_state_publisher, and joint_state_publisher_gui
  • Kinect, Depth, Ultrasonic and infrared sensors in new Gazebo (gpu_lidar, gz::sim::systems::Sensors, rgbd_camera, gz-sim-sensors-system)
  • Use of gz-sim-diff-drive-system gz::sim::systems::DiffDrive for differential drive control.
  • Employing xacro files for easier management of robot structure defitnition.
  • Launch files for launching Gazebo and Spawning a robot using ros_gz_sim and ros_gz
  • Use of pointcloud_to_laserscan for depth camera.
  • Examples of ros_gz_bridge for bridging ROS2 with Gazebo.
  • Modern nav2, slam_toolbox, and rtabmap launch and configuration files.
  • Computation and publishing of odometry.
  • rviz launch files with proper TF transformation along with different configuration files.
  • Use of the new Gazebo (formerly ignition gazebo)