The section below provides details of how to prepare and demonstrate our system on your own setup. It will go over the software requirements, and purposes of each bash scripts. A public Github repo [link] contains the files that this section mentions.
Prerequisites
- Ubuntu 22.04
- ROS2 humble DISTRO
- Git and tmux installed
- sudo level access to the system
Installation
Installation can be done via the install.bash
script. The script will setup an venv with following packages installed
- numpy
- torch
- torchvision
- opencv-python
- scipy
- tqdm
- ultralytics
Execution
To launch the proper ROS2 nodes, a bash script is a convenient tool for starting all the necessary nodes. By running
bash zaapp/scripts/launch.bash
following nodes are launched, each opening their own window:
- Husky Node
- Core Node
- Control Node
- Behavior Node
All four Nodes above are crucial components for demonstrating ZAAPP weeding robot.
Husky Node
The Husky Node resides in the husky
window, which contains four panes. Each pane launches a third party ROS2 node. For debugging purposes, you can launch individual Node with their corresponding commands.
- Base Node:
- Command:
ros2 launch husky_base base_launch.py
- Description: Launches the base configuration for the Husky robot.
- Command:
- Teleoperation Node:
- Command:
ros2 launch husky_control teleop_launch.py
- Description: Launches the teleoperation control for the Husky robot, allowing joystick/keyboard control.
- Command:
- Driver Node:
- Command:
ros2 launch robot_bringup drivers_hack.launch.py
- Description: Brings up the LiDAR’s drivers.
- Command:
- Localization Node:
- Command:
ros2 launch robot_bringup localization.launch.py
- Description: Launches FASTLIO localization for the robot.
- Command:
Core Node
The Core Node resides in the core
window, which contains four panes. For debugging purposes, you can launch individual Node with their corresponding commands.
- Weed Detection Node:
- Command:
ros2 run downward_facing_camera weed_detection_node
- Description: Processes data from the downward-facing camera for weed detection.
- Command:
- Weed Map Node:
- Command:
ros2 run forward_facing_camera weed_map_node
- Description: Processes data from the forward-facing camera to generate a weed map.
- Command:
- Manipulator Node:
- Command:
ros2 run manipulator_ros manipulator_node
- Description: Controls the robot’s 2-DOF manipulator. Also controls the laser module.
- Command:
- Odom2World Node:
- Command:
ros2 run odom2world odom2world
- Description: Converts odometry data to a predefined world frame.
- Command:
Control Node
The Control Node resides in control
window, which contains two panes. For debugging purposes, you can launch individual Node with their corresponding commands.
- Trajectory Generator Node:
- Command:
ros2 run behavior trajectory_generator_node
- Description: Generates dynamic trajectories for the robot to follow.
- Command:
- Controller Node:
- Command:
ros2 run behavior controller_node
- Description: Controls the robot’s movements based on generated trajectories.
- Command:
Behavior Node
The Behavior Node resides in behavior
window, which contains two panes. For debugging purposes, you can launch individual Node with their corresponding commands.
- Visual Servoing Node:
- Command:
ros2 run visual_servoing visual_servoing_server
- Description: Enables visual servoing to guide the robot using visual inputs. Refines laser aiming to each detected weed.
- Command:
- Aladeen Node:
- Command:
ros2 run behavior aladeen_node --ros-args -p sentience:=0
- Description: Highest level behavior planning. Orchestrates overall weeding process.
- Command:
You will also notice a debug
window appears without launching any nodes. This window serves convenient debugging purposes.
Please refer to System Implementation for additional details of each Node, of which corresponds to various subsystems.