icsl-Jeon / dual_chaser

chasing algorithm for up to two target in obstacle environment
MIT License
17 stars 1 forks source link

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

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

traj_gen

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

dual_chaser_msgs

cd ~/catkin_ws/src
git clone https://github.com/icsl-Jeon/dual_chaser_msgs
cd ../
catkin build dual_chaser_msgs 

dynamicEDT3D (my fork ver.)

sudo apt-get install ros-noetic-octomap
git clone https://github.com/icsl-Jeon/octomap
cd octomap/dynamicEDT3D
mkdir build && cmake .. 
sudo make install

octomap_server (my fork ver.)

cd catkin_ws/src
git clone https://github.com/icsl-Jeon/octomap_mapping
catkin build octomap_server

chasing_utils

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

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"/>