RobotKernal-UESTC/Code/MowingRobot/pibot_ros/pibot_install_ros.sh

142 lines
5.5 KiB
Bash
Raw Normal View History

2023-12-11 11:17:13 +08:00
#!/bin/bash
if [ ! -z "$PIBOT_HOME" ]; then
PIBOT_HOME_DIR=$PIBOT_HOME
else
PIBOT_HOME_DIR=~/pibot_ros
fi
echo -e "\033[1;32mpibot home dir:$PIBOT_HOME_DIR"
# http://wiki.ros.org/ROS/Installation/UbuntuMirrors
sudo sh -c 'echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" >> /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
code_name=$(lsb_release -sc)
if [ "$code_name" = "trusty" ]; then
ROS_DISTRO="indigo"
elif [ "$code_name" = "xenial" ]; then
ROS_DISTRO="kinetic"
elif [ "$code_name" = "bionic" ] || [ "$code_name" = "stretch" ]; then
ROS_DISTRO="melodic"
elif [ "$code_name" = "focal" ] || [ "$code_name" = "buster" ]; then
ROS_DISTRO="noetic"
else
echo "PIBOT not support "$code_name
exit
fi
echo "ros distro:" $ROS_DISTRO
sudo apt-get install -y git cmake unzip vim build-essential udev inetutils-ping iproute2 hostapd
sudo apt-get -y --allow-unauthenticated install ros-${ROS_DISTRO}-ros-base ros-${ROS_DISTRO}-slam-gmapping ros-${ROS_DISTRO}-navigation \
ros-${ROS_DISTRO}-xacro ros-${ROS_DISTRO}-robot-state-publisher \
ros-${ROS_DISTRO}-joint-state-publisher ros-${ROS_DISTRO}-teleop-twist-* ros-${ROS_DISTRO}-control-msgs \
ros-${ROS_DISTRO}-kdl-parser-py ros-${ROS_DISTRO}-tf2-geometry-msgs ros-${ROS_DISTRO}-hector-mapping \
ros-${ROS_DISTRO}-robot-pose-ekf ros-${ROS_DISTRO}-slam-karto ros-${ROS_DISTRO}-hector-geotiff ros-${ROS_DISTRO}-hector-trajectory-server \
ros-${ROS_DISTRO}-usb-cam ros-${ROS_DISTRO}-image-transport ros-${ROS_DISTRO}-image-transport-plugins \
ros-${ROS_DISTRO}-depthimage-to-laserscan ros-${ROS_DISTRO}-openni2* \
ros-${ROS_DISTRO}-robot-upstart ros-${ROS_DISTRO}-tf-conversions \
ros-${ROS_DISTRO}-realsense2-camera ros-${ROS_DISTRO}-libuvc* \
ros-${ROS_DISTRO}-camera-calibration ros-${ROS_DISTRO}-rtabmap* \
ros-${ROS_DISTRO}-web-video-server ros-${ROS_DISTRO}-roslint ros-${ROS_DISTRO}-laser-filters
if [ "$ROS_DISTRO" = "noetic" ]; then
sudo ln -sf /usr/bin/python3 /usr/bin/python
# third
cd $PIBOT_HOME_DIR/third_party/libuvc && mkdir -p build && cd build && cmake .. && sudo make install
cd $PIBOT_HOME_DIR
if [ ! -d $PWD/ros_package ]; then
mkdir ros_package
fi
cd ros_package
# astra ros package
if [ -f $PWD/astra.tar.gz ]; then
tar xzvf $PWD/astra.tar.gz
else
git clone https://github.com/orbbec/ros_astra_launch.git
git clone https://github.com/orbbec/ros_astra_camera.git
fi
# frontier_exploration ros package
# if [ -f $PWD/frontier_exploration.tar.gz ]; then
# tar xzvf $PWD/frontier_exploration.tar.gz
# else
# git clone -b $ROS_DISTRO-devel https://github.com/paulbovbel/frontier_exploration.git
# fi
# camera_umd
# if [ -f $PWD/camera_umd.tar.gz ]; then
# tar xzvf $PWD/camera_umd.tar.gz
# else
# git clone https://github.com/ros-drivers/camera_umd.git
# fi
cd ..
echo "ln -sf $PWD/ros_package ros_ws/src/ros_package"
if [ -f ros_ws/src/ros_package ]; then
rm ros_ws/src/ros_package
fi
ln -snf $PWD/ros_package ros_ws/src/ros_package
sudo apt-get -y --allow-unauthenticated install python3-pip python3-serial
elif [ "$ROS_DISTRO" = "melodic" ]; then
# third
cd $PIBOT_HOME_DIR/third_party/libuvc && mkdir -p build && cd build && cmake .. && sudo make install
cd $PIBOT_HOME_DIR
if [ ! -d $PWD/ros_package ]; then
mkdir ros_package
fi
cd ros_package
# astra ros package
if [ -f $PWD/astra.tar.gz ]; then
tar xzvf $PWD/astra.tar.gz
else
git clone https://github.com/orbbec/ros_astra_launch.git
git clone https://github.com/orbbec/ros_astra_camera.git
fi
# frontier_exploration ros package
# if [ -f $PWD/frontier_exploration.tar.gz ]; then
# tar xzvf $PWD/frontier_exploration.tar.gz
# else
# git clone -b $ROS_DISTRO-devel https://github.com/paulbovbel/frontier_exploration.git
# fi
cd ..
echo "ln -sf $PWD/ros_package ros_ws/src/ros_package"
if [ -f ros_ws/src/ros_package ]; then
rm ros_ws/src/ros_package
fi
ln -snf $PWD/ros_package ros_ws/src/ros_package
sudo apt-get -y --allow-unauthenticated install python-pip python-serial \
ros-${ROS_DISTRO}-freenect-* ros-${ROS_DISTRO}-orocos-kdl ros-${ROS_DISTRO}-camera-umd ros-${ROS_DISTRO}-cartographer-ros
else
sudo apt-get -y --allow-unauthenticated install python-pip python-serial \
ros-${ROS_DISTRO}-freenect-* ros-${ROS_DISTRO}-orocos-kdl ros-${ROS_DISTRO}-camera-umd ros-${ROS_DISTRO}-cartographer-ros\
ros-${ROS_DISTRO}-astra-launch ros-${ROS_DISTRO}-astra-camera ros-${ROS_DISTRO}-frontier-exploration
fi
read -s -n1 -p "install ros gui tools?(y/N)"
if [ "$REPLY" = "y" -o "$REPLY" = "Y" ]; then
sudo apt-get -y --allow-unauthenticated install ros-${ROS_DISTRO}-rviz ros-${ROS_DISTRO}-rqt-reconfigure ros-${ROS_DISTRO}-rqt-tf-tree \
ros-${ROS_DISTRO}-image-view
if [ "$ROS_DISTRO" = "noetic" ]; then
echo "please run ros_package/make_cartographer.sh to compile cartographer"
else
sudo apt-get -y --allow-unauthenticated install ros-${ROS_DISTRO}-cartographer-rviz
fi
fi