ROS Workspace Organization - TSummersLab/como GitHub Wiki
Workspace
This is where ROS operates from, essentially.
The organization is as follows:
- build
- devel
- 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. Theplatoon
script subscribes to the same steering message topic as theline_follower
, but it also subscribes to an additional topic that sets the velocity. The ECU message published by theplatoon
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 thecomo_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 thecomo_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.