ROS Workspace Organization - TSummersLab/como GitHub Wiki

Workspace

This is where ROS operates from, essentially.

The organization is as follows:

  1. build
  2. devel
  3. src    3.1 barc    3.2 como_driver    3.3 controllers    3.4 data_service    3.5 image_processing    3.6 labs    3.7 nmea_navsat_driver    3.8 razor_imu_9dof    3.9 rplidar_ros

build

This contains the build files.

devel

This contains developer files. You would want to source the setup.bash file here (in every new terminal window) to overlay the workspace on top of the environment. You can also add the source <como_location>/workspace/devel/setup.bash file to your ~/.bashrc script to automatically source the workspace. If you have the UTD COMO image, this is already added to the bashrc file.

src

This contains packages and source files.

  • barc

    This contains the BARC low-level controller which provides some sample scripts and the required dependencies to operate the car such as the ECU.msg which defines the ROS message used to set the car's steering and throttle.

  • como_driver

    This contains the COMO car drivers. Scripts in this package subscribe to velocity and steering values generated by the scripts in controllers and issues an ECU message to set the car steering and throttle. This package provides a layer of abstraction to allow users to use individual velocity or steering control scripts for different implementations.

    For example, the line_follower script subscribes to the steering message published by one of the controller scripts and combines that with a fixed throttle signal. Thus, the ECU message consists of a variable steering value and a constant throttle value. The platoon script subscribes to the same steering message topic as the line_follower, but it also subscribes to an additional topic that sets the velocity. The ECU message published by the platoon script consists of variable steering and throttle signals.

    This package was/is developed at UTD.

  • controllers

    This contains different controller implementations. Scripts in controllers subscribe to raw and processed sensor data, use this data to generate a steering or throttle command (or both), then publishes each piece of data to individual topics. This allows the como_driver scripts to subscribe to the desired topics before issuing a final ECU message to control the car.

    This package was/is developed at UTD.

  • data_service

    This contains basic data services.

  • image_processing

    This contains image processing scripts used by the controllers scripts (and potentially the como_driver). Scripts in this package provide a variety of image processing tools such as line detection, qr code detection, April tag detection, and many others.

    This package was/is developed at UTD.

  • labs

    This contains lab things.

  • nmea_navsat_driver

    This contains the ros package with drivers for NMEA devices such as a GPS. This package is a submodule of ros-drivers/nmea_navsat_driver

  • razor_imu_9dof

    This contains the ROS driver to use the Razor 9DoF IMU. This package is a submodule of KristofRobot/razor_imu_9dof

  • rplidar_ros

    This contains the ROS package to operate the RPLidar (A2 and A3 versions). This package is a submodule of Slamtec/rplidar_ros.