Follow-me with ADBSCAN on Clearpath Robotics Jackal Robot#
This tutorial provides instructions for running the ADBSCAN-based Follow-me
algorithm from Autonomous Mobile Robot using Intel® RealSense™ camera input when
using a Clearpath Robotics Jackal robot.
The Intel® RealSense™ camera publishes to /camera/depth/color/points topic.
The adbscan_sub_node subscribes to the corresponding topic,
detects the obstacle array, computes the robot’s velocity and publishes to the
/cmd_vel topic of type geometry_msg/msg/Twist.
This twist message consists of the updated angular and linear velocity of the
robot to follow the target, which can be subsequently subscribed
by a robot-driver.
Getting Started#
Prerequisites#
Complete the get started guide before continuing.
Install the Deb package#
Install the ros-jazzy-follow-me-tutorial Deb package from the Autonomous
Mobile Robot APT repository.
sudo apt update
sudo apt install ros-jazzy-follow-me-tutorial
sudo apt update
sudo apt install ros-humble-follow-me-tutorial
Run Demo#
To launch the Follow-me application tutorial on the Jackal robot, use the following ROS 2 launch file.
source /opt/ros/jazzy/setup.bash
ros2 launch tutorial_follow_me jackal_followme_launch.py
source /opt/ros/humble/setup.bash
ros2 launch tutorial_follow_me jackal_followme_launch.py
After starting the script, the robot should begin searching for trackable objects in its initial detection radius (defaulting to around 0.5m), and then following acquired targets as they move from the initial target location.
There are reconfigurable parameters in
/opt/ros/jazzy/share/tutorial_follow_me/params/followme_adbscan_RS_params.yaml.
You can modify the parameters depending on the respective robot, sensor
configuration and environments (if required) before running the tutorial.
Find a brief description of the parameters in the following list.
Lidar_typeType of the point cloud sensor. For Intel® RealSense™ camera and LIDAR inputs, the default value is set to
RSand2D, respectively.Lidar_topicName of the topic publishing point cloud data.
VerboseIf this flag is set to
True, the locations of the detected target objects will be printed as the screen log.subsample_ratioThis is the downsampling rate of the original point cloud data. Default value = 15 (i.e. every 15-th data in the original point cloud is sampled and passed to the core BSCAN algorithm).
x_filter_backPoint cloud data with x-coordinate >
x_filter_backare filtered out (positive x direction lies in front of the robot).y_filter_left,y_filter_rightPoint cloud data with y-coordinate >
y_filter_leftand y-coordinate <y_filter_rightare filtered out (positive y-direction is to the left of robot and vice versa).z_filterPoint cloud data with z-coordinate <
z_filterwill be filtered out. This option will be ignored in case of 2D Lidar.Z_based_ground_removalFiltering in the z-direction will be applied only if this value is non-zero. This option will be ignored in case of 2D Lidar.
base,coeff_1,coeff_2,scale_factorThese are the coefficients used to calculate adaptive parameters of the ADBSCAN algorithm. These values are pre-computed and recommended to keep unchanged.
init_tgt_locThis value describes the initial target location. The person needs to be at a distance of
init_tgt_locin front of the robot to initiate the motor.max_distThis is the maximum distance that the robot can follow. If the person moves at a distance >
max_dist, the robot will stop following.min_distThis value describes the safe distance the robot will always maintain with the target person. If the person moves closer than
min_dist, the robot stops following.max_linearMaximum linear velocity of the robot.
max_angularMaximum angular velocity of the robot.
max_frame_blockedThe robot will keep following the target for
max_frame_blockednumber of frames in the event of a temporary occlusion.tracking_radiusThe robot will keep following the target as long as the current target location = previous location +/-
tracking_radius
Troubleshooting#
Failed to install Deb package: Please make sure to run
sudo apt updatebefore installing the necessary Deb packages.You may stop the demo anytime by pressing
ctrl-C.If the robot rotates more than intended at each step, try reducing the parameter
max_angularin the parameter file.If the motor controller board does not start, restart the robot.
For general robot issues, refer to Troubleshooting.