Elephant Robotics myAGV

Elephant Robotics myAGV

July 10, 2026 by Anirudh Kuldeep
Share

Mobile Robotics ยท SLAM ยท Jetson Nano

Elephant Robotics myAGV (2023 Jetson Nano Edition): Teleoperation, Gmapping, and 2D Navigation

The Elephant Robotics myAGV 2023 JN Edition is a powerful mobile robotics platform built around the NVIDIA Jetson Nano Developer Kit and powered by ROS. Equipped with high-precision Mecanum wheels and an integrated LiDAR sensor, it is an excellent platform for learning and deploying mapping and navigation algorithms. Its basic setup is available here.

This comprehensive guide walks you through the four-core movement and mapping paradigms of the myAGV: Keyboard Teleoperation, Joystick/Gamepad Control, Real-time Gmapping SLAM, and 2D Map Navigation.

Jetson Nano ROS1 Mecanum Drive YDLIDAR Gmapping Rviz

Step 0: Initializing the LiDAR and Base Odometry

Before launching any teleoperation or mapping tools, you must start the underlying communication hardware nodes. This scripts the power-on sequence for the LiDAR and establishes the communication pipeline between the Jetson Nano, the internal IMU, and the motor wheels.

  1. Open your terminal (Ctrl + Alt + T) and power on the YDLIDAR sensor:
    Bash
    cd ~/myagv_ros/src/myagv_odometry/scripts ./start_ydlidar.sh
  2. In a fresh terminal, spin up the base vehicle odometry node:
    Bash
    roslaunch myagv_odometry myagv_active.launch

STEP 1

Keyboard Teleoperation

Keyboard teleoperation allows you to command the omnidirectional Mecanum chassis directly using specialized key mappings.

With the base active node running, open a new terminal and run the teleop launch package:

Bash
roslaunch myagv_teleop myagv_teleop.launch

The Mapped Control Interface

Because the myAGV utilizes Mecanum wheels, it can translate sideways (strafe) in addition to conventional driving and rotation. Keep the teleop terminal window actively selected for it to register inputs:

Key Direction / Action
i / , Move Forward / Move Backward
j / l Move Left (Strafe) / Move Right (Strafe)
u / o Rotate Counterclockwise / Rotate Clockwise
k Emergency Stop
m / . Rotate Clockwise in Reverse / Rotate Counterclockwise in Reverse
q / z Increase / Decrease both Linear and Angular Velocities
w / x Increase / Decrease Linear Velocity only
e / c Increase / Decrease Angular Velocity only

STEP 2

Joystick Controller Remote Teleoperation (myagv_ps2)

For an ergonomic, remote pilot experience, you can command the myAGV using your paired wireless Bluetooth gamepad joystick controller via the dedicated myagv_ps2 package layer.

Joystick Package Setup & Driver Installation

Before initializing the tracking pipeline, make sure the Linux subsystem has access to the device reading packages.

  1. Install the baseline system joystick package tools onto your Jetson Nano workspace environment:
    Bash
    sudo apt-get update sudo apt-get install joystick

    (Press Y and hit Enter when prompted to complete configuration).

  2. Plug your wireless Bluetooth joystick's USB receiver into an available USB slot on the myAGV's Jetson Nano board.

Launching Joystick Communication

With your base active node running from Step 0, open a fresh console terminal layer and initialize the explicit myagv_ps2 launch file:

Bash
roslaunch myagv_ps2 myagv_ps2.launch

(Note: If using standard variant sub-hardware configurations that prompt execution errors, you can alternately deploy roslaunch myagv_ps2 myagv_ps2_number.launch).

Mapped Controller Mapping Mechanics

The button layouts map intuitively across seven discrete physical triggers to coordinate the full kinematics of the Mecanum vehicle base frame:

  • Buttons 1 to 4: Direct directional mapping matrix. Manages Forward, Backward, and Left/Right omnidirectional translation movements.
  • Button 5: Rotates the myAGV body in place counterclockwise.
  • Button 6: Rotates the myAGV body in place clockwise.
  • Button 7: Emergency Stop trigger. Immediately halts all active motor bus velocities.

STEP 3

Activating the Onboard Camera Feed

To give your myAGV first-person situational awareness, you can capture the live feed from the onboard Jetson camera. Running the dedicated camera package exposes the video stream as a standard ROS topic, allowing you to overlay real-world camera visual data alongside your spatial map data.

Open an independent terminal panel and spin up the hardware camera node:

Bash
roslaunch jetson_camera jetson_camera.launch

Viewing the Feed in Rviz

Once the node is active, you don't need to open an external video viewer. You can integrate it directly into your current Rviz tracking cockpit:

  1. In the open Rviz window, look at the bottom-left of the panel and click the Add button.
  2. Under the topic selection tab, locate and select the Camera display type.
  3. Configure the newly added display properties by changing its Image Topic field to point directly to your active camera topic (e.g., /jetson_camera/image_raw).
  4. A dedicated picture-in-picture window will appear right in your Rviz dashboard, showcasing the live feed directly from the front of your AGV!

STEP 4

Real-time Spatial Mapping (Gmapping SLAM)

The Gmapping package uses laser-scan data from the LiDAR along with wheel odometry to build a high-fidelity 2D grid map of the environment.

Mapping Workflow

  1. Make sure your vehicle is placed at a starting spot before starting to map.

    Note: Do not move the cart manually after starting the launch nodes, as the IMU and wheel encoders self-calibrate upon activation and manual shifts distort the map matrix.

  2. Start the primary Gmapping SLAM script in a new terminal:
    Bash
    roslaunch myagv_navigation myagv_slam_laser.launch

    This will auto-initialize Rviz, visualizing your localized LiDAR sweeps.

  3. Open a separate terminal and launch your chosen steering framework to guide the cart:
    • Option A (Keyboard): roslaunch myagv_teleop myagv_teleop.launch
    • Option B (Joystick Control): roslaunch myagv_ps2 myagv_ps2.launch
  4. Pro-Tip for Clean Maps: Slowly drive and rotate the myAGV around the room. For optimal feature calculation and sharp barrier lines, keep movement speeds slow and steady to prevent mapping blurs.

Saving the Generated Map

Once the map environment is structurally filled out in Rviz, do not close the terminals. Open a fresh terminal line and serialize the data files to the storage directory:

Bash
cd ~/myagv_ros/src/myagv_navigation/map rosrun map_server map_saver

This saves two structural files to the folder path:

  • map.pgm: The physical pixel matrix map representation.
  • map.yaml: The positional configuration file tracking occupancy thresholds.

Custom File Naming: To save to a specific directory or custom name file structure, pass the -f flag:

Bash
rosrun map_server map_saver -f /home/er/myagv_ros/src/myagv_navigation/map/map_505

STEP 5

2D Map Navigation

With your localized workspace map saved, the myAGV can execute global path planning and avoid obstacles autonomously.

Executing Navigation Tasks

  1. Execute your core telemetry links and launch the tracking map navigation file:
    Bash
    roslaunch myagv_navigation navigation_active.launch

    Rviz will display the pre-saved environment map.

  2. Align the AGV Pose: Select the 2D Pose Estimate tool located on the upper toolbar in Rviz. Click on the map at the myAGV's real-world physical location and drag the green arrow to face its current orientation. Adjust this until the laser scans line up cleanly with the static obstacles on the map.
  3. Issue a Destination Goal: Select the 2D Nav Goal tool from the upper interface panel. Click anywhere on the map to set your destination coordinates and drag the heading arrow to define the final stopping orientation.
  4. Observation: The underlying ROS navigation stack will compute a global trajectory path (visible as a path line in Rviz) and safely drive the chassis to the designated target point.

Advanced: Multi-Point Waypoint Loop Handling

For automated loops and advanced multi-stop missions, use the operation profile dashboard on the lower-left section of Rviz:

  1. Max Targets Option: Configure the maximum number of waypoint stops your script should handle.
  2. Whether to Cycle: Ticking this checkbox switches the AGV to persistent patrolling loop mode (e.g., executing sequence 1 -> 2 -> 3 -> 1 -> 2 -> 3).
  3. Click Start Navigation to begin the automated route. If you need to stop the AGV due to a path emergency, clicking Cancel pauses the route immediately; selecting Start Navigation again resumes the trip, directing the myAGV straight toward the next scheduled waypoint.