Trajectory Planning for Differential Drive Mobile Manipulators via Topological Paths Search and Arc Length-Yaw Parameterization
head.mp4
We strongly recommend to use Docker to minimize the risk of compatibility issues.
To do so, follow the Quick Setup guide.
Alternatively, you can setup the environment manually following Manual Setup guide.
- Pull this code repository to your desired path:
git clone https://github.com/TopAY-Planner/TopAY.git
cd TopAY
- Build the image with the following command:
docker build -t topay .
xhost +Local:*
- then, create and start a container as follows:
docker create -it \
--env="DISPLAY=$DISPLAY" \
--volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
--runtime=nvidia \
--gpus all \
--name topay \
topay
docker start topay
- enter the container's bash shell with the following command:
docker exec -it topay bash
# exit container with ctrl+d
- Once the container is properly setup, you should be able to compile the source code without extra steps:
catkin_make # inside the container
apt-get update && \
apt-get install -y \
git \
vim \
wget \
ros-noetic-rosfmt \
ros-noetic-ackermann-msgs \
ros-noetic-pybind11-catkin \
ros-noetic-serial \
ros-noetic-rqt-multiplot \
ros-noetic-vrpn-client-ros \
ros-noetic-ompl \
ros-noetic-plotjuggler-ros \
libasio-dev \
libompl-dev \
libeigen3-dev \
libglfw3-dev \
libglew-dev \
libdw-dev \
python3-pip \
python3-tk \
xarclock mesa-utils \
libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev \
vulkan-utils mesa-vulkan-drivers pigz libegl1
Download and install osqp-0.6.2 and osqp-eigen v0.8.0 for mpc controller:
# replace <PATH> with your desired path
cd <PATH>
wget https://github.com/osqp/osqp/releases/download/v0.6.2/complete_sources.tar.gz
tar -xzf complete_sources.tar.gz
rm complete_sources.tar.gz
mkdir <PATH>/osqp/build && cd <PATH>/osqp/build
cmake .. && make -j && make install
cd <PATH>
wget https://github.com/robotology/osqp-eigen/archive/refs/tags/v0.8.0.tar.gz
tar -xzf v0.8.0.tar.gz
rm v0.8.0.tar.gz
mkdir <PATH>>/osqp-eigen-0.8.0/build && cd <PATH>>/osqp-eigen-0.8.0/build
cmake .. && make -j && make install
cd <PATH>
wget https://github.com/casadi/casadi/archive/main.tar.gz
tar -xzf main.tar.gz
rm main.tar.gz
sed -i -e 's/WITH_LAPACK_DEF\sOFF/WITH_LAPACK_DEF ON/g' /home/casadi-main/CMakeLists.txt
sed -i -e 's/WITH_QPOASES_DEF\sOFF/WITH_QPOASES_DEF ON/g' /home/casadi-main/CMakeLists.txt
mkdir <PATH>/casadi-main/build && cd <PATH>/casadi-main/build
cmake .. && make -j && make install
cd <PATH>
wget https://github.com/Livox-SDK/Livox-SDK2/archive/master.tar.gz
tar -xzf master.tar.gz
rm master.tar.gz
mkdir <PATH>/Livox-SDK2-master/build && cd <PATH>/Livox-SDK2-master/build
cmake .. && make -j && make install
change directory into the TopAY directory and run the following command:
catkin_maketutorialv.mp4
source devel/setup.zsh
# for planning with arbitrary target; use the '2d Nav Goal' to set a target for the planner
roslaunch planner run_all.launch rviz:=true
# for benchmarking in tables
roslaunch planner benchmark_tables.launch rviz:=false
# for benchmarking in cuboids
roslaunch planner benchmark_cuboids.launch rviz:=false
# for ablation test in tables
roslaunch planner ablation_tables.launch rviz:=false
# for ablation test in cuboids
roslaunch planner ablation_cuboids.launch rviz:=false
# Use the following command to start the process
./start.sh