The purpose of ARC is to determine if it is possible to build an autonomous RC vehicle using commodity hardware.
We will try to use relatively inexpensive parts, including cameras, computers, and an RC vehicle used as the base, with minimal fabrication. All of the software used is open source, allowing users to tinker and adapt the project to their needs.
Research for ARC took us down several paths as we tested platforms for use in our project. We chose platforms that we could run in simulation to speed up the development process.
We found that the Robotics Operating System (ROS) provides a good base to build from and, consequently, the platforms we chose are implemented on ROS.
Two such simulation environments were Georgia Tech's AutoRally platform and the Stage simulation platform.
Below are instructions for installing and running GT AutoRally and Stage with the ARC project.
Step-by-step instructions on how to run our implementation of the GT AutoRally simulation platform.
- Go to GT AutoRally and follow the instructions to install the AutoRally platform. Be sure to follow the instructions carefully and completely, failure to do so may result in an incomplete installation that will require extended time to troubleshoot.
NOTE: It is assumed from this point on that you have already gone through the "Autonomous Driving in Simulation" instructions at GT AutoRally.
The following instructions are intended for after completing the GT AutoRally setup and simulation instructions above.
At this point you should be able to run GT AutoRally
-
Keep all simulation configuration according to the AutoRally specifications.
e.g. stateEstimator's InvertY and InvertZ values. -
Navigate to the work space where you put the AutoRally package. And then go to the
src/autorally
directory.
NOTE: All files/folders modified and provided by ARC for AutoRally are found in the arc_autorally folder.
-
Under autorally_description/urdf, replace the
autoRallyPlatform.urdf.xacro
file with file of the same name that we provide. -
Copy the
world
folder we provide toautorally_description/models
. -
Under
autorally_description
, there is a file namedempty_sky_AR.world
. Copy the code below to the end of the file (before the last ""):
model://urdf/models/world -
Under
autorally_gazebo/launch
, there is a file namedautoRallyTrackWorld.launch
, comment out the last node (namedspawn_track
). -
Copy the
autorally_smartdriving
folder to src/autorally. -
Open a terminal, navigate to your work space. The directory that contains
devel/
,src/
andbuild/
. -
Use
catkin_make
to compile the package. -
Open the bashrc by typing in
gedit ~/.bashrc
. -
At the bottom of the file, add these two lines:
source workspace_directory/devel/setup.bash
source workspace_directory/src/autorally/autorally_util/setupEnvLocal.sh
(Replace theworkspace_directory
with your actually work space directory) -
Copy the
run_autorally.sh
we provide to your work space. -
Open another terminal, navigate to your work space and run the
run_autorally.sh
script.
run_autorally.sh
script automates the initialization processes of the GT AutoRally
simulation.
-
A single terminal window opens opens with sub-divided windows using tmux.
-
Applications necessary for AutoRally will open next, including Gazebo and
rqt_publisher
. These applications along with other processes are launched by the script within different tmux sub-windows in the main terminal window. -
Find the application window (seperate from the terminal window) titled "rqt_publisher".
-
Go to rqt_publisher and make sure the topics created during initial setup are still there:
/runStop
/chassisState
/constantSpeedController/speedCommand
If rqt_publisher does not have those three topics in the main part of the window, go back to the setup instructions and add them.
-
Make sure /runStop is set to true and speed (under
/speedCommand
) is set to 3. Then check the boxes to the left of those three topics. -
Run these two commands in two of the tmux windows:
roslaunch autorally_smartdriving autorally_configuration.launch
roslaunch autorally_smartdriving move_base.launch
-
Go back to the rqt_publisher window and uncheck the
constantspeedcontroller
message. -
Terminate the
waypointfollower
and theconstantspeedcontroller
. -
Copy the rviz config file we provide.
-
roslaunch autorally_smartdriving auto_turn.launch
-
run rviz with the rviz config file.
rosrun rviz rviz
-
Now you can set goals through Rviz and the car should go towards the goal autonomously
All files modified by ARC for use in the Stage simulator are found in the arc_stage
folder provided.
- Extract the NewArc compressed file. In it there will be two packages named "smart driving" and "stage_launch".
- Create a ROS work space, and copy the two packages to the src folder inside the new work space.
- On the root of the new work space, run "catkin_make".
- On a new terminal, run "roscore".
- On the original terminal, run "source devel/setup.bash".
- Run "roslaunch stage_launch arc_stage.launch".
- A stage simulator and Rviz should show up.
- The red blocks on the simulator can be moved around.
- Use the "2D Nav Goal" on Rviz to tell the car where to go.
Note:
- For all these to work, the autorally_smartdriving package in AutoRally must be functional, because this simulation will launch the "odom" node from there. Also, the topic that the odom node subscribes to should change to "/base_pose_ground_truth". The source code is located in {AutoRally_workspace}/src/autorally/autorally_smartdriving/src/Odom/odom.cpp.
- To display rplidar lidar data, uncomment line 48 to 50 in the arc_stage.launch file. Lidar data is not currently used to decide paths, but instead just to visualize the data on Rviz.
- If incorparating other external lidars to the car frame, add more "laser_scan_sensor: {}"s after line 28 in costmap_common_params.yaml, and define more rangers in arc_robot.inc. Frame names and topic names must be defined with cautions. Fram names must be unique.
The parts list for ARC is a compilation of parts, with prices, used for this project. ARC is designed to be modular, meaning that you can choose the quality/brand component you want to use. Consider this list a minimum-components-needed list. Feel free to add to the number of components used for greater accuracy in data.
Note: The Intel NUC and the RPi3/Arduino require an external monitor, keyboard, and mouse. These would be an additional cost, should you need to purchase them.
Part Description | Price |
---|---|
----------------------------- | |
AutoPilot | |
Raspberry Pi 3 | $45 |
PXFmini | $77.73 |
OR | |
PWM Controller | $3.95 |
Arduino | $39.90 |
----------------------------- | |
Ublox Neo-M8N GPS with Compass | $8.85 |
UM7-LT Orientation Sensor | $139.95 |
3DR radios (2) | $100.00 |
LeddarTech Leddar Evaluation Kit $299 | $299.00 |
Intel NUC Skull Canyon | $$994.98 |
SlamTec RPLIDAR | $199.00 |
Sub total | $1,741.78 |
Totals | |
With Autopilot Uses PXFMini/RPi3 | $1,865 |
Without Autopilot (Uses PWM/Arduino) | $1,785.63 |
With RC Car | |
Traxxas Summit RC car | $549.95 |
Totals | |
With Autopilot Uses PXFMini/RPi3 | $2,414.46 |
Without Autopilot (Uses PWM/Arduino) | $2,335.58 |
The above table was generated using Markdown Table Generators by copy/pasting from Google Sheets using the instructions from that site.