Infrastructure repository for UT AUTOmata.
These instructions target ROS 2 Jazzy on Ubuntu 24.04. The package is built with colcon and depends on the ROS 2 branches of amrl_msgs and amrl_maps.
Create a colcon workspace with all three packages:
mkdir -p ~/ut_automata_ws/src
cd ~/ut_automata_ws/src
git clone https://github.com/ut-amrl/ut_automata.git --recurse-submodule
git clone https://github.com/ut-amrl/amrl_msgs.git
git clone https://github.com/ut-amrl/amrl_maps.gitIf you cloned without submodules, initialize them later:
cd ~/ut_automata_ws/src/ut_automata
git submodule update --init --recursiveAdd the ROS 2 environment to your shell startup:
source /opt/ros/jazzy/setup.bash
source ~/ut_automata_ws/install/setup.bashInstall package dependencies:
cd ~/ut_automata_ws/src/ut_automata
./install_dependencies.shBuild the workspace:
cd ~/ut_automata_ws
source /opt/ros/jazzy/setup.bash
colcon build --symlink-install
source install/setup.bashIf you keep ut_automata, amrl_msgs, and amrl_maps as sibling directories (for example under ~/projects), run the scoped build from that parent directory:
cd ~/projects
source /opt/ros/jazzy/setup.bash
colcon build --base-paths ut_automata amrl_msgs amrl_maps --packages-up-to ut_automata --cmake-args -DCMAKE_BUILD_TYPE=Release -DPython3_EXECUTABLE=/usr/bin/python3From inside the ut_automata directory, use relative sibling paths instead:
source /opt/ros/jazzy/setup.bash
colcon build --base-paths . ../amrl_msgs ../amrl_maps --packages-up-to ut_automata --cmake-args -DCMAKE_BUILD_TYPE=Release -DPython3_EXECUTABLE=/usr/bin/python3The repository also keeps a convenience Makefile:
make -jLaunch the simulator and websocket bridge:
ros2 launch ut_automata simulator.launch.pyTo publish ground-truth localization:
ros2 launch ut_automata simulator.launch.py localize:=trueYou can also run individual nodes:
ros2 run ut_automata simulator
ros2 run ut_automata websocketOpen web_rviz.html in a browser and connect to the IP address of the computer running websocket.
Start the full car stack:
ros2 launch ut_automata start_car.launch.pyRun individual nodes when needed:
ros2 run ut_automata joystick
ros2 run ut_automata vesc_driver --config_dir ~/ut_automata_ws/src/ut_automata/config
DISPLAY=:0 ros2 run ut_automata gui
ros2 launch ut_automata hokuyo_10lx.launch.pyOptional camera support depends on the ROS 2 camera driver installed on the car.
The systemd service and desktop launcher under scripts/ expect the workspace install space at ~/ut_automata_ws/install and source /opt/ros/jazzy/setup.bash.
Install the service:
sudo ln -s ~/ut_automata_ws/src/ut_automata/scripts/ut_automata.service /etc/systemd/system/ut_automata.service
sudo systemctl enable ut_automata
sudo systemctl start ut_automataCheck status:
systemctl status ut_automataThe car's motion profile is limited by the top speed, acceleration, deceleration, and VESC motor counts per second. The relevant settings are in config/vesc.lua:
erpm_speed_limit = 22000;
max_acceleration = 6.0; -- m/s^2
max_deceleration = 6.0; -- m/s^2