Repository for automated mission of Girona 1000 with robotic arm to scan and collect data of an area, communicate through luma and interact with objects found.
bt_cpp
packagepcl_geometric_primitives_detector
package
- Once you install ROS Noetic, create a workspace (eg.
~/catkin_ws
) following ROS instructions for ws creation (eithercatkin_make
orcatkin init
)
wget https://github.com/PointCloudLibrary/pcl/archive/refs/tags/pcl-1.14.1.tar.gz
tar -xzf pcl-1.14.1.tar.gz
cd pcl-pcl-1.14.1
mkdir build
cd build
cmake ..
# the number (10 in this case) depends on how many jobs you want to use
make -j10
sudo make -j10 install
- install groq (
pip install groq
) - install graphviz (
pip install graphviz
) - install open3d (
pip install open3d
) - install yaml (
pip install pyyaml
) - install tkinter (
pip install tkinter
)
-
To ensure compatibility, clone the dependencies at the specified versions. Navigate to the
src
directory of your Catkin workspace and clone all the needed repositories:sudo apt-get install python3-vcstool cd ~/catkin_ws/src git clone https://github.com/cernicarlo/bt_ace.git vcs import < ~/catkin_ws/src/bt_ace/repos.vc
-
Follow the instructions to install stonefish at
~/catkin_ws/src/stonefish/README.md
(previously downloaded withvcs
) -
Install dependencies
sudo apt install ros-noetic-interactive-markers
sudo apt install ros-noetic-ros-numpy
-
Please take a look at the folder
other_repo_modification
to substitute the relative file in the other repo involved in this use case. -
Build your workspace:
cd ~/catkin_ws
catkin build
source devel/setup.bash
WIP for girona1000 use case: the AUV goes to do the survey, it suddenly find an object it was not planned to find, it searches among its possibilities and it detects the bt that can make a turn around the object
T1
# launch simulation w/ Stonefish, RVIZ, service to plan the path and action service to follow the path
roslaunch bt_cpp scenario.launch
T2
# launch node to make available the planner services
roslaunch pcl_geometric_primitives_detector perception.launch
T3
# Launch the BT Manager
rosrun bt_cpp bt_manager
T4
# Mock script to cluster the pcl (to be deleted when pcl is fixed)
roslaunch pcl_geometric_primitives_detector mock_labeled_clustering.launch
(if debugging) T5
# to keep separate for debugging - to be included in perception.launch
rosrun pcl_geometric_primitives_detector pcl_geometric_primitives_detector
NB. here action is meant as a single BT
- First part of mission: Survey
- the BT manager validates the mission file
- If the mission file is validated, the mission starts
- the BT manager populates the stack with the entries in mission file
- BT manager executes stack (FIFO) removing the bt executed from the stack
- once the stack is empty, the BT manager calls the clustering service commands the auv to go to the luma
- Second part of mission: communication with luma and clustering
- once it's at the luma, the AUV communicates the clusters
- from the clusters, the BT manager gets the type of objects detected and where they are
- Third part of mission: population and execution of actions for each object detected
- the BT manager ask what action it can execute on each object
- the BT manager orders these actions based on the priority (in this case, distance AUV-object, from the smaller distance to the biggest)
- based on priorities, the BT manager populate a new stack with the actions for each object detected
- the BT manager execute the stack with a FIFO logic and popping the action executed until the stack is empty
In case there are some problems, please bear in mind that the latest commit tested is in the branch stable
. So, please:
cd ~/catkin_ws/src/bt_ace
git checkout stable
cd ~/catkin_ws
catkin build
source devel/setup.bash
and try again.