Super COMO is an autonomous car platfrom at the University of Texas at Dallas. It is a hardware upgrade over the COMO platform.
Check out our website for details about car assembly, build, and other guides and tutorials.
Before installing the Super COMO packages, perform a full JetPack installation on the Jetson TX2. For the package, JetPack 3.2.1 was installed.
After installing JetPack, follow the steps below to setup Super COMO.
-
Configure repositories: Configure repositories to allow "restricted," "universe," and "multiverse." Do this by following the instructions in this link.
-
Clone super_como : Clone the repository to your home directory. In a terminal window run:
cd ~ && git clone https://github.com/The-SS/super_como
- Navigate to setup folder:
In terminal, navigate to the
setupfolder insuper_comoby running:
cd ~/super_como/setup
- Configure git (if not configured):
Configure git either manually or by running
git_config_setup.sh. You can run the setup file as follows:
./git_config_setup.sh
- Run the following scripts:
./install_programs.sh
./install_ros.sh
- Download and install the ZED SDK:
-
Go to the ZED downloads website and download the ZED SDK for Jetson TX2 with JetPack 3.2 and CUDA 9.
-
Once it downloads, either used
chmod +x <file_name>to make the file and executable or right click it --> permissions --> allow executing file as a program. -
Run the script by
cdto file location in a terminal and typing./followed by the file name.
- Setup the device rules: Run the rules set up script:
sudo ./rules_setup.sh
This script will reload the rules, but we recommend restarting the machine to ensure that the rules are in effect.
- Run the build script:
The
build.shscript at the root of the super_como package builds the catkin workspace. In a terminal window, navigate to the root of the super_como package then run the following command:
cd ~/super_como
./build.sh
- Generate the
ros_liblibraries for arduino:
- Go the the Arduino
librariesdirecotry:
cd ~/arduino-1.8.7/libraries
- Remove any previous
ros_libdirectory:
rm -fr ros_lib
- Generate the new libraries:
rosrun rosserial_arduino make_libraries.py .
For more details see the Install ros_lib into the Arduino Environment section here.
- Source the workspace: Every time a new terminal window is open you have to source your workspace.
source ~/super_como/workspace/devel/setup.bash
Alternatively, you can add the above to your bashrc file to avoid having to run it every time. To do that, run the following in a terminal.
echo "source ~/super_como/workspace/devel/setup.bash" >> ~/.bashrc
Once this runs you have to restart your terminal or source the bashrc file as follows:
source ~/.bashrc
- Add the Lidar to ethernet networks:
- Open
Network Connections. - Click on
Add. - In the new window do the following:
- Change the connection name to
lidar - In the
Generaltab, check theAutomatically connect to this network when it is availableandAll users may connect to this networkoptions - In the
IPv4 Settingstab, change themethodtoManualand add the following inAddresses:- address: 192.168.0.15
- netmask: 255.255.255.0 (this will change to 24)
- leave the
gatewayfield empty
- Click save.
- Change the connection name to
- Edit the USB port names:
The rules file generated by
rules_setup.shcreates symbolic links for devices that should be used instead of the port names generated by Linux. The full list of symbolic links found in/etc/udev/rules/99-device-rules.rulesis:
/dev/imu: IMU/dev/vesc: VESC/dev/teensy: Teensy/dev/gps: GPS module/dev/elp/back: back elp camera/dev/elp/right: righ elp camera/dev/elp/left: left elp camera/dev/elp/front: front elp camera
These links should be used in the package (instead of /dev/ttyUSB*, /dev/ttyACM*, or /dev/video*). Make the following modifications to the package:
- In
~/super_como/super_como/workspace/src/racecar/racecar/config/racecar-v2/vesc.yamlchange theportparameter undervesc_driverto/dev/vesc. - In
~/super_como/workspace/src/razor_imu_9dof/config/razor.yamlchange theportparameter to/dev/imu. - In
~/super_como/workspace/src/razor_imu_9dof/nodes/imu_node.pychange thedefault_portvariable to'/dev/imu'(line 110). The updated line should be:default_port='/dev/imu'.
- If running YOLO, change the
darknet_roscamera topic: In~/super_como/workspace/src/darknet_ros/darknet_ros/config/ros.yamlchange thetopicparameter undercamera_readinginsubscribersto the desired image topic. For example that could be the/zed/left/image_raw_colortopic if using the ZED or ZED mini cameras. Check the YOLO github repository for more details.
Operating the package is a two step process:
- Starting the sensors and hardware
- Starting an autonomous feature This decoupling allows for easy switching between autonomous features wihtout having to restart all sensor operation
- Open
super_como/workspace/src/hardware_interface/launch/super_como.launchand edit theOn/Off Switchessection (and save the changes).- Setting the default value to
truewill start the component - Setting the default value to
falsewill skip starting the component
- Setting the default value to
- Run the following in a terminal window:
roslaunch hardware_interface super_como.launch
The super_como.launch provides an all-in-one solution to starting all hardware components. Nonetheless, individual scripts can be launched. Any of the scripts in super_como/workspace/src/hardware_interface/launch or any of the other packages in workspace can be run individually to control a single (or multiple) device(s).
- Determine what application to run and edit the
super_como.launchscript to enable all the required sensors. - Run the appropriate launch file from
super_como/workspace/src/control/launchto perform the desired feature by running the following in a terminal window:
roslaunch control <file_name>
Here, <file_name> is the desired launch file name.
Some of the autonomous features include the following:
hallway_navigation.launch: requires the Hokuyo UST-10LX lidarhallway_nav_wth_object_detection.launch: requires the Hokuyo UST-10LX lidar and the camera used bydarknet_ros(yolo) (ZED camear by default)line_follower.launch: requires the ZED cameraline_follower_with_lidar.launch: requires the Hokuyo UST-10LX lidar and the ZED cameradarknet_ros.launch: requires the camera used bydarknet_ros(yolo) (ZED camear by default)
Other autonomous driving features can be designed similar to the first four included feature