Project page for: SemP-NBV: Semantic Predictive Next-Best-View for Autonomous Plant 3D Reconstruction (IROS 2025)
- (EXE) For packaged UE5 simulation application, see Globus download (~5GB)
- (Editor) For UE5 project without the asset models (for blueprint/code viewing), see https://github.com/NCSU-BAE-ARLab/AgriRoboSimUE5/tree/dev/AgriRoboSim2
- (ROS2) For ROS2-Humble project including the SemP-NBV planner (
benchbot_xarm6_cppandpointr_predictprojects), see https://github.com/XingjianL/UE5Sim_colcon_ws/tree/SemP-NBV and follow instructions inenvironment_configuration.txt(only for ROS setups, not including various python packages required for AdaPoinTr). - AdaPoinTr checkpoint: https://drive.google.com/drive/folders/1vt6djVtNlHejVu2klNQVRsKBoTQDHJMv?usp=sharing
- Requirements: GPU better than RTX 3060, Windows 11 with WSL Ubuntu 22.04 (Simulation works in Windows 11, ROS2 works in WSL)
- Download the
(EXE) packaged UE5 simulation applicationin Windows 11 and unzip (log in with Google if asked) - Run
AgriRobotSim.exe(full screen recommended for proper GUI) and selectxArm6map in the top left dropdown - Press
Map Menuafter switching to the level. There are three tabs:Robot Settings,Environment Settings, andTODO(see simulation options) - Change the dropdown in
Plant Collection, check the boxes for Plant and Variant, then click theRandomize Plantbutton. - The number box next to the button is the randomization seed.
- Click the
Arm Joint Menuin the top left, it will show 6 radial sliders and 3 row sliders for changing and visualizing the robot states. ThexArm6 Capture Imageat the bottom can be pressed with a file path to the saved images directory.
- Download Unreal Engine 5.3, clone the repo
(Editor), and try to open it with the.uproject - The project will NOT have any assets on GitHub due to licensing (mostly Quixel assets).
- The blueprints should still work, but cannot compile due to this issue.
- Clone the
(ROS2)repo and follow theenvironment_configuration.txtinstructions to set up the environment. - Change all the absolute filepaths (marked by
lxianglabxing) in the project code (such as CMake and various cpp/py files) to your own.
- Remember to source environment for every new terminal.
- Run
ros2 launch tomato_xarm6 upside_down_xarm6_moveit.launch.pyto start the ROS and ROSBridge for Windows-WSL communication. - Start the (Simulator EXE) and change levels to confirm connections made in above terminal and change the simulation options.
- Navigate to
pointr_predict.pyand startpython pointr_predict.pyto run the ROS node for AdaPoinTr and NBV planner, remember to download the checkpoints. - Run
ros2 run benchbot_xarm6_cpp benchbot_xarm6_cpporiros_test_auto.shwith various arguments (seebenchbot_xarm6_cpp/src/benchbot_xarm6_cpp.cppfor args)
Robot Settings- mostly for another project, not much to see for this one, you can try checking the boxBind View to Armso the player view sticks to the robot camera.Environment Settings- adjusting the plants in the environmentPlant Collection- adjusting the set of plant models available for randomization- (Single/Multi) - changes the segmentation appearance for plant parts semantics or not
- (Train/Test) - the set of plant models used for AdaPoinTr training or for testing the NBV framework.
Plantarrows - only used for one type of plant (can have multiple variants)Plantcheckbox - checked for randomizing the plant typesVariantcheckbox - checked for randomizing the plant variants (both checked means both randomized)Segmentdropdown - not used in our experiments (only have options for hydrangea), for testing purposesRandomize Plantbutton - click to randomize after checking the boxes, the number next to the buttom is the seedRaytrace Samplesslider - not used, was checking the image quality for hardware raytracing, does nothing here.
(TODO)- was used for PixelStreaming plugin for remote visualizations of the simulation, none of the options will work here.
FPS- shows FPS top leftUnit- more detailed stats for the simulationOthers- only visualized in (Editor)VSync- limits the FPS to displayMaximum- no FPS limit60 FPS- limits FPS to 6030 FPS- limits FPS to 30
-
xArm6- 6 radial sliders ($-2 \pi$ ,$2\pi$ ) for controlling the joints in the robot arm, no collisions. Note: the name in the circle may change after running (ROS2) -
BenchBot- 3 row sliders for adjusting the BenchBot platform. -
xArm Capture Image- saves the image pairs (left, right RGB and depth, and left segmentation) to disk, preview can be seen in the environment.