/dual_chaser

chasing algorithm for up to two target in obstacle environment

Primary LanguageC++MIT LicenseMIT

dual_chaser

Motion planner to chase up to two targets in obstacle environment thumbnail

This code is the implementation of the paper accepted to IEEE Access

Installation

  • Tested environment: ROS noetic w/ Ubuntu20.04

Option1. script install

mkdir -p ~/chaser_ws/src
cd ~/chaser_ws/src
git clone https://github.com/icsl-Jeon/dual_chaser.git
./install.sh

Option2. One-by-one building

git clone https://github.com/coin-or/qpOASES.git
cd qpOASES
mkdir build && cd build
cmake .. -DCMAKE_CXX_FLAGS=-fPIC
sudo make install
git clone https://github.com/icsl-Jeon/traj_gen.git
cd ./traj_gen/cpp
mkdir build && cd build
cmake ..
make && sudo make install
cd ~/catkin_ws/src
git clone https://github.com/icsl-Jeon/dual_chaser_msgs
cd ../
catkin build dual_chaser_msgs 
sudo apt-get install ros-noetic-octomap
git clone https://github.com/icsl-Jeon/octomap
cd octomap/dynamicEDT3D
mkdir build && cmake .. 
sudo make install
cd catkin_ws/src
git clone https://github.com/icsl-Jeon/octomap_mapping
catkin build octomap_server
sudo apt-get install ros-noetic-tf2-sensor-msgs
cd catkin_ws/src
git clone https://github.com/icsl-Jeon/chasing_utils.git
catkin build chasing_utils

zed2_client (optinal. But required if want to run bag and launch)

sudo apt-get install ros-${ROS_DISTRO}-compressed-depth-image-transport
cd catkin_ws/src
git clone https://github.com/stereolabs/zed-ros-wrapper.git
git clone https://github.com/stereolabs/zed-ros-interfaces
git clone https://github.com/icsl-Jeon/zed-ros-examples.git
git clone https://github.com/icsl-Jeon/zed2_client.git
catkin build zed_interfaces rviz_plugin_zed_od zed2_client

Launch

To test the algorithm, first download one of the bag files. For the starter, I recommend forest1.bag. The bags were recorded with a zed2 camera including object detection messages. Here, we use zed2_client to provide /tf of targets and pointcloud ~cloud_in.
Assuming you downloaded forest1.bag to /your/path/to/bag, modify the bag_file argument in zed_online.launch.

  <include file="$(find zed2_client)/launch/client.launch">
        <arg name="is_bag" value="$(arg is_bag)"/>
        <arg name="bag_file" value="/your/path/to/bag/forest1.bag"/>
        <arg name="run_edt" value="false"/>
        <arg name="rviz" value="false"/>
        <arg name="point_topic" value="/cloud_in"/>
        <arg if = "$(arg dual)" name="param_file" value="$(find dual_chaser)/param/zed2_client/circling.yaml"/>
        <arg unless="$(arg dual)" name="param_file" value="$(find dual_chaser)/param/zed2_client/single.yaml"/>
    </include>

Then launch the following:

roslaunch dual_chaser zed_online.launch is_bag:=true

Required transforms and topic for your usage

1. tf

  • World frame frame_id to drone (or sensor frame) drone_frame_id. Defaults are map and base_link respectively.
  • World frame to target object frames {target_0_filtered,target_1_filtered} (both required in dual target mode. In the single target mode, only the first one is required).

2. topics

Code structure

img

Analyzing

The status message regarding the current planning pose is published in the topic ~/wrapper/status. This can be visualized in rqt_gui or in matlab. The rqt perspective file configures the following: rqt_gui This can be launched by setting <arg name="rqt_gui" default="true"/> as the below snippet

    <arg name="plot_juggler" default="false"/>
    <arg name="rqt_gui" default="true"/>
    <arg name="rviz" default="true"/>
    <arg name="rosbag_status" default="false"/>
    <arg name="dual" default="true"/>
    <arg name= "is_bag" default = "false"/>