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.
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.
- Open your terminal (Ctrl + Alt + T) and power on the YDLIDAR sensor:
Bash
cd ~/myagv_ros/src/myagv_odometry/scripts ./start_ydlidar.sh - 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:
roslaunch myagv_teleop myagv_teleop.launchThe 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.
- 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).
- 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:
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:
roslaunch jetson_camera jetson_camera.launchViewing 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:
- In the open Rviz window, look at the bottom-left of the panel and click the Add button.
- Under the topic selection tab, locate and select the Camera display type.
- 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).
- 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
- 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.
- Start the primary Gmapping SLAM script in a new terminal:
Bash
roslaunch myagv_navigation myagv_slam_laser.launchThis will auto-initialize Rviz, visualizing your localized LiDAR sweeps.
- 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
- 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:
cd ~/myagv_ros/src/myagv_navigation/map
rosrun map_server map_saverThis 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:
rosrun map_server map_saver -f /home/er/myagv_ros/src/myagv_navigation/map/map_505STEP 5
2D Map Navigation
With your localized workspace map saved, the myAGV can execute global path planning and avoid obstacles autonomously.
Executing Navigation Tasks
- Execute your core telemetry links and launch the tracking map navigation file:
Bash
roslaunch myagv_navigation navigation_active.launchRviz will display the pre-saved environment map.
- 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.
- 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.
- 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:
- Max Targets Option: Configure the maximum number of waypoint stops your script should handle.
- Whether to Cycle: Ticking this checkbox switches the AGV to persistent patrolling loop mode (e.g., executing sequence 1 -> 2 -> 3 -> 1 -> 2 -> 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.