PACMAN (Path Assembling Cartographer, Mapping under Autonomous Navigation) is a self-driving ground robot capable of following a path, specifically paved sidewalks, and returning real-world coordinates of that path back to a ground station (such as a remote PC). These real-world coordinates can be saved and distributed to other systems that require the absolute position of pathways. Such systems include autonomous lawnmowers, autonomous snow removers, autonomous delivery robots, and others.
Since this is a ROS (Robot Operating System) workspace, you must have a functioning ROS environment on your PC. This workspace was only tested on Ubuntu 18.04 with ROS Melodic. When running on a Jetson system, ensure to set power mode to max, sudo nvpmodel -m 0
.
To run all required runscripts, the following packages are required:
- ros-melodic-robot-state-publisher
- ros-melodic-joint-state-publisher
- tmux
- supervisor
- python-catkin-tools
And the following Python packages are required:
- numpy 1.13.3
- scipy
- ps4drv
- yacs
- tqdm
To build all required components:
- $
cd ~
- $
git clone --recursive https://github.com/romleiaj/pacman_ws
- $
cd pacman_ws
- $
catkin build
This workspace hosts all software and utilities to enable PACMAN to operate. PACMAN consists of the following components:
- GOLDEN Wheelchair base
- Jetson Xavier - 16 Gb
- Logitech C920 Webcam
- Ouster OS1-16 LiDAR
- Cradlepoint Cellular Router
- Swiftnav Duro RTK GPS
- Two 12V 50Ah batteries in series
- Roboteq MDC2230 Motor Controller
- Pair of US Digital E3 Motor Encoders
- Pair of 24V 135RPM DC Motors
Simulation Path | 3D Model on Path |
---|---|
To simulate the pacman vehicle through Gazebo simulation software, you must download the latest version of Gazebo alongside with its ROS packages. Note: the full desktop version of ROS includes Gazebo software (therefore an install is not necessary).
To install Gazebo (Ubuntu):
curl -sSL http://get.gazebosim.org | sh
Make sure to catkin build
within the pacman_ws folder to procede (fill in <path to pacman_ws> with the corresponding path to the pacman workspace). Then, source the /devel/setup.bash folder:
cd <path to pacman_ws>
source devel/setup.bash
Finally, to launch simulation, use the roslaunch command to open up the gazebo simulation:
roslaunch pacman_simulation my_world.launch
To run the PACMAN system, there are many bash runscripts located within /src/runscripts/jetson/
that must be run locally on the Jetson Xavier. There are 4 main scripts,
tmux_core.sh
tmux_analytics.sh
tmux_navigation.sh
tmux_sensors.sh
that all must be launched in order for the system to be operational. Each of these scripts starts a tmux session, and starts multiple processes in separate windows within that session. This allows for individual process monitoring, as well as restarting individual processes, and a stable environment to work in via SSH.
These scripts are currently started at boot using supervisord
, a process control program. This launch is controlled by the supervisor.conf
located in the same directory. This is symlinked to a file in the home directory of the Xavier, which is then trampolined up to the /etc/supervisor/conf.d/
to dodge privileges conflicts by using version control.
GPS Track Visualized in Google Maps
Segmented Path | After Warp and with Dijstra Planned Path |
---|---|