This ROS package implements the ORB SLAM3 Integration using zed camera on Turtlebot2 Kobuki Model, where the package also includes ground truth recording function using ouster OS1 64 lidar with HDL graph slam. The embed board was tested on jetson xavier NX on Jetpack 5.1.
Install ROS Noetic
Setup workspace:
$ mkdir ~/catkin_ws/src -p
$ cd ~/catkin_ws
$ catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ cd src$ sudo apt-get install ros-noetic-sophus ros-noetic-joy libusb-dev libftdi-dev ros-noetic-base-local-planner ros-noetic-move-base-msgs pyqt5-dev-tools net-tools
$ git clone https://github.com/hanruihua/Turtlebot2_on_Noetic.git
$ cd ~/catkin_ws
$ rosdep install --from-paths src --ignore-src -r -y
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ source ~/.bahsrcClone this wrapper:
$ cd ~/catkin_ws/src
$ git clone https://github.com/Seekerzero/kobuki_zed_orb_slam3.git
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ source ~/.bashrcInstall ZED SDK 3.8 for L4T 35.1 (Jetpack 5.0)
Install ZED ROS wrapper:
$ cd catkin_ws/src
$ git clone --recursive https://github.com/stereolabs/zed-ros-wrapper.git
$ cd catkin_ws
$ rosdep install --from-paths src --ignore-src -r -y
$ catkin_make -DCMAKE_BUILD_TYPE=Release
$ source ~/.bashrcSetup udev rule for connection with kobuki:
$ rosrun kobuki_ftdi create_udev_rulesSetup Ouster ROS Wrapper:
$ sudo apt install -y ros-noetic-pcl-ros ros-noetic-rviz
$ sudo apt install -y build-essential libeigen3-dev libjsoncpp-dev libspdlog-dev libcurl4-openssl-dev cmake net-tools
$ cd ~/catkin_ws/src
$ git clone --recurse-submodules https://github.com/ouster-lidar/ouster-ros.git
$ cd ~/catkin_ws
$ catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source ~/.bashrcSetup the network with OS1 lidar:
Get the hostname using:
avahi-browse -lrt _roger._tcpand change the sensor_hostname in lidar_sensor.launch to the lidar hostname.
Setup the FAST-LIO_SLAM Integration:
Setup the dependencies:
Install ceres solver
Install GTSAM
Install the ROS packages:
$ cd ~/catkin_ws/src
$ git clone https://github.com/Livox-SDK/livox_ros_driver.git
$ git clone https://github.com/gisbi-kim/FAST_LIO_SLAM.git
$ rosdep install --from-paths src --ignore-src -r -y
$ catkin_make --cmake-args -DCMAKE_BUILD_TYPE=Release
$ source ~/.bashrcModify the ROS topic based on your lidar topics in fast_lio launch and yaml files.
Follow the instruction on section 1.1.6 of Turtlebot3 PC setup to setup the ROS connection between laptop and Jetson.
On the laptop:
$roscoreConnect the jetson to Internet to sync the time, otherwise two bags from jetson and laptop will not be able merge into same timestamps. And then connect the jetson to ROS network which also connect the laptop.
SSH to jetson board:
$ ssh jetson_name@ipBring up the kobuki:
$ roslaunch turtlebot_bringup minimal.launchOn a new ssh terminal, launch the zed node and the robot state publisher:
$ roslaunch kobuki_zed_orb_slam3 view_model.launchOn a new ssh terminal, rosbag the topics:
$ rosbag record -b 0 --split --duration=10m /camera/fisheye1/camera_info /camera/fisheye1/image_raw /camera/fisheye1/metadata /camera/fisheye2/camera_info /camera/fisheye2/image_raw /camera/fisheye2/camera/fisheye2/metadata /camera/imu /initialpose /joint_states /mobile_base/sensors/imu_data /odom /ouster/imu /ouster/metadata /ouster/points /ouster/range_image /tf /tf_static
On the laptop:
$ roslaunch kobuki_zed_orb_slam3 lidar_sensor.launchrosbag the topics:
$ rosbag record /ouster/points /ouster/imu /ouster/range_imagecontrol the kobuki with:
$ roslaunch turtlebot_teleop keyboard_teleop.launchInstall rosbag-merge:
$ pip3 install rosbag-mergeget into the folder where contains two bag files:
$ rosbag-merge --outbag_name out.baglaunch the fast_lio_slam node:
$ roslaunch roslaunch fast_lio mapping_ouster64.launchplay the merge bag:
$ rosbag play --clock out.bagTo view the robot model in the record data;
$ roslaunch kobuki_zed_orb_slam3 view_model.launchFollow the instruction on orb_slam3_ros tosetup the ORB SLAM3 on ROS.