Add 3D Lidar to iris for usage with Bonxai mapping example
Background
As explained in this Bonxai demo, the ardupilot_gz iris_lidar.launch.py assumes a 2D lidar and it must be modified. https://github.com/tejalbarnwal/3D-planning-with-bonxai
We'd like to add 3D lidar support that works out of the box without having to modify code here.
Approaches considered
- rename the iris launch file to
iris_lidar.launch.pytoiris_2d_lidar.launch.pyand duplicate the code for 3D lidar - Add a launch argument for 2d/3d in the launch file, rename
iris_with_lidartoiris_with_2d_lidarand duplicate toiris_with_3d_lidar - Remove the lidar from
iris_with_lidarand call itiris_ardupilot, and then add two new modelsiris_with_2d_lidarandiris_with_3d_lidarthat only add the lidar link and the lidar sensor, then have theiris_with_lidar.launch.pypick which model based on an argument
How to select 2d/3d lidar in launch file?
DeclareLaunchArgument(
"lidar_dimensions", default_value="2", description="Whether to use a 2D or 3D lidar"
),
FYI @tejalbarnwal
Hi, I prefer the third approach, where we use a base SDF file (e.g., iris_ardupilot) and build on it to add specific sensors like 2D/3D LiDAR, depth cameras, or RGB camera to create different models like iris_with_2D_lidar, iris_with_depth_camera, etc
My only concern is ensuring consistency between the model passed via the launch argument and the model included in the world files (e.g., iris_maze.sdf, iris_runway.sdf). The developer must manually ensure they match. or example, iris_maze.sdf
references the iris_with_lidar model and defines its pose in the environment
A potential improvement would be to enable the independent spawning of the iris model in the world, separate from other Gazebo components, to simplify integration. However, I am unsure how this could be implemented.
Hi, I prefer the third approach, where we use a base SDF file (e.g., iris_ardupilot) and build on it to add specific sensors like 2D/3D LiDAR, depth cameras, or RGB camera to create different models like
iris_with_2D_lidar,iris_with_depth_camera, etcMy only concern is ensuring consistency between the model passed via the launch argument and the model included in the world files (e.g.,
iris_maze.sdf,iris_runway.sdf). The developer must manually ensure they match. or example,iris_maze.sdfreferences the iris_with_lidar model and defines its pose in the environmentA potential improvement would be to enable the independent spawning of the iris model in the world, separate from other Gazebo components, to simplify integration. However, I am unsure how this could be implemented.
Why don't we start with just the simple option 3 with manually ensured consistency. Did you want to take this on, or have me do it?
I will implement it tonight after my job and submit a PR.
Hi @Ryanf55 ,
I have created a pull request and am still making a few minor changes, as described in the PR description.
One difference from what was discussed in point 3 is that I did not create an iris_ardupilot model. The basic models already exist in the ardupilot_gazebo repository. This repo includes models like iris_with_ardupilot and iris_with_standoffs, which do not have any perception sensors. These models are already used internally by the iris_with_lidar model.
Let me know your reviews for the PR.