Nemesis is a hybrid ROS1/ROS2 skid-steer UVG which grew out of an effort primarily to familiarize my self with integrating an exising ground vehicle into the ROS ecosystem.
The project began with the implementation a C++ ROS1
hardware_interface for the Monsterborg mobile base from PiBorg.
On its completion I went on to extend the system with a i7 processor and sensors payload for simultaneous localization and mapping (SLAM). Since then I have been using the system as an outdoor mapping and a mobile compute edge platform for drone navigation experiments including the TUM AR Drone ROS stack.
Very recently, I have began to make inroads into adding experimental autonomous navigation support with the ROS1 move_base package. After a rudimentary setup of
move_base on ROS Melodic, I decided to switch to ROS2 Foxy to leveradge the
nav2 package for greater flexibility using
ros1_bridge to communicate with the mobile base Kinetic stack. This is currently current work in progress.
The following describes my stable setup on ROS1.
The System architecture is logically into two system components with corresponding code repositories:
A mobile base with an internal ARM based (ARM Cortex-A53 1.2GHz) base controller computer running ROS Kinetic. antoan/nemesis
Upper chassis housing an i7 Intel dual core processor (i7-6600U CPU @ 2.60GHz) computer running ‘ROS Melodic’ and Intel Realsense D435i depth & T256 tracking cameras, positioned relative to each other with a dedicated mount. antoan/nemesis_core
Both computers are connected via ethernet network with an onboard router. The robot can be driven via multiplexed input from a Sony PS4 DualShock 4 controller, ROS
rqt_steering plugin or
cmd_vel input from
(A brief 3rd of POV Nemesis)
The software stack running on the mobile base is largely based on an adaptation of the Clearpath Husky Kinetic stack’s base, control, description and navigation packages.
The ROS hardware interface implementation wraps the motor controller driver that came with the mobile base, which I ported to Cython from Python, to reduce latency in the main ROS control loop.
For perception and SLAM, I use rtabmap_ros built from source with Apriltag support. In addition, I use the realsense_ros with the Realsense distribution installation method rather than the
Below are some example mapping session taken recently.