Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Using 2 scanners in simulation #367

Open
Hannes9 opened this issue Aug 22, 2023 · 24 comments
Open

Using 2 scanners in simulation #367

Hannes9 opened this issue Aug 22, 2023 · 24 comments

Comments

@Hannes9
Copy link

Hannes9 commented Aug 22, 2023

Describe the solution you'd like
Is there a possibility in HELIOS to use 2 scanners (e.g. one horizontal with different height, and one vertical one) in one simulation ?

Describe alternatives you've considered
To do 2 simulations with seperated scanners included and merging e.g. the resulted point cloud afterwards would be an alternative or ?

Additional context
I want to simulate this total scanning device. (see picture below)
featured-image-Navvis-onperson

Thanks a lot !

@han16nah
Copy link
Contributor

Dear @Hannes9

yes, it is possible to define a MultiScanner as documented here in the Wiki. So for your application, you would add a new scanner to scanners_tls.xml, which has two "channels". For each channel, you can define a different beamOrigin with the position relative to the platform) and a rotation (rot).

This could look somewhat like this (assuming you are using something like the simple_linearpath platform):

<scanner id="navvis_vlx_3" ...> <!-- put all the scanner settings here like accuracy, wavelength, pulse frequency, max. scan angle, etc. -->
	<channels>
		<channel id="0">
			<beamOrigin x="0" y="0" z="1.9"> <!-- the one on top -->
                  		<rot axis="y" angle_deg="90"/> <!-- to scan horizontally --> 
              		</beamOrigin>
		</channel>
		<channel id="1">
			<beamOrigin x="0" y="0.3" z="1.3"> <!-- the one at the front -->
                  		<rot axis="z" angle_deg="90"/> <!-- to scan (vertically) towards the side -->
              		</beamOrigin>
		</channel>
	</channels>
</scanner>

(Not tested though 😉)

When executing the surveys, you can then add the option --splitByChannel to get one file per device or leave it out to get the merged point clouds from both devices (per leg, as always).

I hope this helps. Good luck, and just ask if you have further questions.

Best,

Hannah

@Hannes9
Copy link
Author

Hannes9 commented Aug 22, 2023

Dear Hannah,

Thanks for the quick response and that already helped. From my understanding one scanner can have multiple channels (see pictures from the manual of the scanner). So for my correct application I guess I need to add in total 64 channels (for both scanners) and 32 of each with different z and y values for in front and on top of a person, right ?

I am now wondering where I have to put the Vertical Angle setting for each of those channels (see table). I think i have to add another row with the code e.g. on top of the person for the 1st channel <rot axis="x" angle_deg="19.5"/> , right ? And then for each channel on top of the person the same way. I think for the channels in the scanner of the front of the person I have to adapt the z rotation angle for each channel, right ?

Yes I want to get the merged one directly, thanks for the info.

Thanks in adcance.

32_Channels
Channel-Distribution
Channels

@han16nah
Copy link
Contributor

han16nah commented Aug 22, 2023

Ah yes, of course, I should have recognized the multi-channel scanners :D
You can have a look at the velodyne scanners in scanners_tls.xml which show how to orientate the different channels using the rot tag in beamOrigin. And then combine with the rotation needed to tilt the device itself.

Tbh, I would probably run two simulations for each of the two scanners, but of course, you can also create a single scanner with 64 channels :)

@han16nah
Copy link
Contributor

Not better, just a bit easier to debug I guess

@Hannes9
Copy link
Author

Hannes9 commented Aug 22, 2023

Alright I understand.

Perfect, thanks a lot ! :)

@Hannes9 Hannes9 closed this as completed Aug 22, 2023
@Hannes9
Copy link
Author

Hannes9 commented Aug 25, 2023

Is there a possibility to set up the differentiation of Laser Emitter and Laser Receiver in Helios ? (see Figure 1.5 from previous message and Figure 1.6 below)

grafik

@Hannes9 Hannes9 reopened this Aug 25, 2023
@lwiniwar
Copy link
Contributor

Hi @Hannes9 ,

no, this feature is not available in HELIOS++.

Cheers,
Lukas

@Hannes9
Copy link
Author

Hannes9 commented Aug 25, 2023

Hi Lukas,

Alright, Thanks for the fast respone ! :)

Best,
Hannes

@Hannes9 Hannes9 closed this as completed Aug 25, 2023
@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Hi @han16nah or @lwiniwar,

I tried to implement now the new Multi-Channel Multi-scanner from above (see Figure 1.5). Somehow I still get this error message shown below. I attached the whole Code in Scanners_als.xml from my new created scanner below as well.
grafik

I was also wondeirng why those lines (see below) are marked differently (line 400-402 in code). Do maybe have an idea about that ?

grafik

<!-- ##### BEGIN Hesai XT32M2X ##### -->
	<scanner 	id 							= "hesai_XT32M2X"
				accuracy_m					= "0.01"		
				beamDivergence_rad 			= "0.0005"
				name              			= "Hesai XT32M2X 32-Channel Medium-Range Mechanical Lidar"
				optics            			= "rotating"
				pulseFreqs_Hz				= "50000,100000,200000,300000,380000,550000"
				pulseLength_ns     			= "4"
				averagePower_w				= "10"
				rangeMin_m					= "0.5"
				rangeMax_m					= "300"
				scanAngleMax_deg   			= "360"
				scanAngleEffectiveMax_deg	= "345"
				scanFreqMin_Hz				= "10"
				scanFreqMax_Hz				= "200"
				wavelength_nm				= "905"> 				<!-- added accuracy, wavelength, etc. from XT32M2X 32-Channel Medium-Range Mechanical Lidar data sheet -->

		<channels>
		<!-- BEGIN channels on scanner on top -->
			<channel id="0">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="19.5" />
				</beamOrigin>
			</channel>
            <channel id="1">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="18.2" />
				</beamOrigin>
			</channel>
            <channel id="2">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="16.9" />
				</beamOrigin>
			</channel>
            <channel id="3">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="15.6" />
				</beamOrigin>
			</channel>
            <channel id="4">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="14.3" />
				</beamOrigin>
			</channel>
            <channel id="5">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="13.0" />
				</beamOrigin>
			</channel>
            <channel id="6">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="11.7" />
				</beamOrigin>
			</channel>
            <channel id="7">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="10.4" />
				</beamOrigin>
			</channel>
            <channel id="8">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="9.1" />
				</beamOrigin>
			</channel>
            <channel id="9">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="7.8" />
				</beamOrigin>
			</channel>
            <channel id="10">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="6.5" />
				</beamOrigin>
			</channel>
            <channel id="11">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="5.2" />
				</beamOrigin>
			</channel>
            <channel id="12">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="3.9" />
				</beamOrigin>
			</channel>
            <channel id="13">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="2.6" />
				</beamOrigin>
			</channel>
            <channel id="14">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="1.3" />
				</beamOrigin>
			</channel>
            <channel id="15">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="0.0" />
				</beamOrigin>
			</channel>
            <channel id="16">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-1.3" />
				</beamOrigin>
			</channel>
            <channel id="17">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-2.6" />
				</beamOrigin>
			</channel>
            <channel id="18">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-3.9" />
				</beamOrigin>
			</channel>
            <channel id="19">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-5.2" />
				</beamOrigin>
			</channel>
            <channel id="20">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-6.5" />
				</beamOrigin>
			</channel>
            <channel id="21">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-7.8" />
				</beamOrigin>
			</channel>
            <channel id="22">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-9.1" />
				</beamOrigin>
			</channel>
            <channel id="23">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-10.4" />
				</beamOrigin>
			</channel>
            <channel id="24">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-11.7" />
				</beamOrigin>
			</channel>
            <channel id="25">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-13.0" />
				</beamOrigin>
			</channel>
            <channel id="26">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-14.3" />
				</beamOrigin>
			</channel>
            <channel id="27">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-15.6" />
				</beamOrigin>
			</channel>
            <channel id="28">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-16.9" />
				</beamOrigin>
			</channel>
            <channel id="29">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-18.2" />
				</beamOrigin>
			</channel>
            <channel id="30">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-19.5" />
				</beamOrigin>
			</channel>
            <channel id="31">
				<beamOrigin x="0" y="0.0305" z="1.9">
					<rot axis="x" angle_deg="-20.8" />
				</beamOrigin>
			</channel>
			<!-- END channels on scanner on top -->
			<!-- BEGIN channels on scanner in front -->
            <channel id="32">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-19.5" />
				</beamOrigin>
			</channel>
            <channel id="33">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-18.2" />
				</beamOrigin>
			</channel>
            <channel id="34">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-16.9" />
				</beamOrigin>
			</channel>
            <channel id="35">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-15.6" />
				</beamOrigin>
			</channel>
            <channel id="36">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-14.3" />
				</beamOrigin>
			</channel>
            <channel id="37">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-13.0" />
				</beamOrigin>
			</channel>
            <channel id="38">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-11.7" />
				</beamOrigin>
			</channel>
            <channel id="39">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-10.4" />
				</beamOrigin>
			</channel>
            <channel id="40">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-9.1" />
				</beamOrigin>
			</channel>
            <channel id="41">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-7.8" />
				</beamOrigin>
			</channel>
            <channel id="42">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-6.5" />
				</beamOrigin>
			</channel>
            <channel id="43">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-5.2" />
				</beamOrigin>
			</channel>
            <channel id="44">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-3.9" />
				</beamOrigin>
			</channel>
            <channel id="45">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-2.6" />
				</beamOrigin>
			</channel>
            <channel id="46">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="-1.3" />
				</beamOrigin>
			</channel>
            <channel id="47">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="0.0" />
				</beamOrigin>
			</channel>
            <channel id="48">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="1.3" />
				</beamOrigin>
			</channel>
            <channel id="49">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="2.6" />
				</beamOrigin>
			</channel>
            <channel id="50">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="3.9" />
				</beamOrigin>
			</channel>
            <channel id="51">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="5.2" />
				</beamOrigin>
			</channel>
            <channel id="52">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="6.5" />
				</beamOrigin>
			</channel>
            <channel id="53">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="7.8" />
				</beamOrigin>
			</channel>
            <channel id="54">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="9.1" />
				</beamOrigin>
			</channel>
            <channel id="55">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="10.4" />
				</beamOrigin>
			</channel>
            <channel id="56">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="11.7" />
				</beamOrigin>
			</channel>
            <channel id="57">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="13.0" />
				</beamOrigin>
			</channel>
            <channel id="58">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="14.3" />
				</beamOrigin>
			</channel>
            <channel id="59">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="15.6" />
				</beamOrigin>
			</channel>
            <channel id="60">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="16.9" />
				</beamOrigin>
			</channel>
            <channel id="61">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="18.2 />
				</beamOrigin>
			</channel>
            <channel id="62">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="19.5" />
				</beamOrigin>
			</channel>
            <channel id="63">
				<beamOrigin x="0" y="0" z="1.335">
					<rot axis="z" angle_deg="90" />
					<rot axis="y" angle_deg="90" />
					<rot axis="x" angle_deg="20.8" />
				</beamOrigin>
			</channel>
			<!-- END channels on scanner in front -->
        </channels>
	</scanner>
	<!-- ##### END Hesai XT32M2X ##### --> ```

@Hannes9 Hannes9 reopened this Aug 28, 2023
@lwiniwar
Copy link
Contributor

Hi @Hannes9 ,

you are missing a closing quotation mark (") here:
image

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Hi Lukas,

True, I'm sorry that I somehow didn't see that one.
It is working now, thanks a lot !

@Hannes9 Hannes9 closed this as completed Aug 28, 2023
@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Another topic: I have now a problem with executing the simulation along all waypoints.
In the following you can see that the simulation somehow stops after the 1st leg even more legs are provided. I didn't change anything in the survey.xml file except setting the onGround parameter and deleting the heights z values as they are no longer needed then.

grafik
Animation is just going from the first waypoint to the second waypoint as well and then it stops.

Code of survey.xml:

<document>
	<platformSettings id="platform1" movePerSec_m="50" onGround="true" />
    <scannerSettings id="scanner1" active="true" verticalResolution_deg="1.3" horizontalResolution_deg="0.36" headRotateStart_deg="0" headRotateStop_deg="360" scanAngle_deg="20.15" pulseFreq_hz="100000" trajectoryTimeInterval_s="0.01"/>
	<survey name="tum_data_mls" platform="data/platforms.xml#navvis-vlx-3-on-person" scanner="data/scanners_als.xml#hesai_XT32M2X" scene="data/scenes/owndata/tum_scene/tum_scene.xml#tum_scene_DL">
	<!-- platform: person, deflector: rotating -->
		<leg>
			<platformSettings  template="platform1" x="2697480" y="5349130"/>
			<scannerSettings  template="scanner1"/>
		</leg>
		<leg>
			<platformSettings  template="platform1" x="2697500" y="5349250"/>
			<scannerSettings  template="scanner1"/>
		</leg>
		<leg>
			<platformSettings  template="platform1" x="2697450" y="5349250"/>
			<scannerSettings  template="scanner1"/>
		</leg>
		<leg>
			<platformSettings  template="platform1" x="2697430" y="5349190"/>
			<scannerSettings  template="scanner1"/>
		</leg>
		<leg>
			<platformSettings  template="platform1" x="2697550" y="5349170"/>
			<scannerSettings  template="scanner1"/>
		</leg>
	</survey>
</document>

@Hannes9 Hannes9 reopened this Aug 28, 2023
@lwiniwar
Copy link
Contributor

Hi @Hannes9, please provide your platforms.xml as well.
Thanks!

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Hi.

Sure, the below. I have already the thought that it might happened, because for the other legs which are outside of the building, there is no z-value (height) defined then or ? -> Because of the onGround parameter.

<platform id="navvis-vlx-3-on-person" name="NavVis VLX 3 on person" type="linearpath">
		<scannerMount x="0" y="0" z="0">
			<rot axis="x" angle_deg="0" />	
		</scannerMount>
		<!--<positionXNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.02"/>
		<positionYNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.02"/>
		<positionZNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.02"/>
		<attitudeXNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.001"/>
		<attitudeYNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.001"/>
		<attitudeZNoise
			clipMin="0.0" clipMax="0.0" clipEnabled="false" fixedLifespan="1"
			type="NORMAL" mean="0.0" stdev="0.001"/>-->
	</platform>```

@han16nah
Copy link
Contributor

Hi Hannes,
yes, that sounds like a likely explanation. If your platform is not at the same XY-location as your scenepart with the helios_isGround parameter set to true in the material library file (.mtl), then this will cause problems. So maybe expand whatever you use as "ground" or add another large ground plane or so.

Cheers,

Hannah

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Hi Hannah.

I am not using the helios_isGround paramter, but the onGround parameter in the platformSettings in the survey.xml. Still I will try adding another ground plane and changing the waypoints within the scenepart. Probably one of those should work.

Thansk ! :)

@han16nah
Copy link
Contributor

Ah sorry, I confused it with ground positioning of the scene parts, sorry

You're right. For the platform, HELIOS++ determines the ground as the lowest z-coordinate in the scene data at the xy-position of the leg. So if there is no object at that location, no platform z-value can be computed. Hope it works with the respective scene/waypoint modifications 🤞 :)

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Hm, it is still taking only one leg. I added a groundplane and modified the waypoints, so that they are withing the scenparts.

@han16nah
Copy link
Contributor

Did it work before replacing z values by the onGround parameter?

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

I tried it with onGround="false" z="470"/> again and it is also not working.

It looks like it is not stopping at the 2nd waypoint and goes somehow to infinity maybe after the 1st waypoint (see picture below)
!(https://github.com/3dgeo-heidelberg/helios/assets/86365462/5140d47d-8b00-4301-8862-6d8976fde00c)

@han16nah
Copy link
Contributor

Is it correct that you want the scanner to rotate? If so, I guess you want it to rotate continuously, not just on 360° rotation?
Can you try setting the value for headRotateStop_deg to something much higher, to allow for many rotations of the scanner?

You may have a look at example notebook 12, which uses the Puck for both static and dynamic surveys.

If you provide a headRotateStop_deg, the leg will be terminated once that angle is reached (cf. TLS surveys). I guess this is before reaching the next waypoint so that's why your simulation stops.

Using the rotation speed (headRotatePerSec_deg) and your rotation range (difference between headRotateStop_deg and headRotateStart_deg), you can calculate how many seconds the scan will take.

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

Yes, continously. With headRotateStart_deg and headRotateStop_deg I wanted to set the FOV (horizontal) to continously 360 degrees, not only 90 degrees. So it is contiously scanning everything around 360 degrees within every leg.

I changed headRotateStop_deg to 36000, but the simulations looks unchanged.
I added the headRotatePerSec_deg with 10 as well.

I'll have a look on this notebook.

@Hannes9
Copy link
Author

Hannes9 commented Aug 28, 2023

This is my survey.xml file now, but it the simulation is still going beyond the 2nd waypoint.
<?xml version="1.0"?> <document> <platformSettings id="platform1" movePerSec_m="50" onGround="true"/> <scannerSettings id="scanner1" active="true" verticalResolution_deg="1.3" horizontalResolution_deg="0.36" headRotatePerSecMax_deg="7200" headRotatePerSec_deg="20.00" headRotateStart_deg="0" headRotateStop_deg="3600000000" scanAngle_deg="20.15" pulseFreq_hz="20000" trajectoryTimeInterval_s="0.01"/> <survey name="tum_data_mls" platform="data/platforms.xml#navvis-vlx-3-on-person" scanner="data/scanners_als.xml#hesai_XT32M2X" scene="data/scenes/owndata/tum_scene/tum_scene.xml#tum_scene_DL"> <!-- platform: person, deflector: rotating --> <leg> <platformSettings template="platform1" x="2697482" y="5349159"/> <scannerSettings template="scanner1"/> </leg> <leg> <platformSettings template="platform1" x="2697483" y="5349197"/> <scannerSettings template="scanner1"/> </leg> <leg> <platformSettings template="platform1" x="2697458" y="5349189"/> <scannerSettings template="scanner1"/> </leg> <leg> <platformSettings template="platform1" x="2697479" y="5349174"/> <scannerSettings template="scanner1"/> </leg> <leg> <platformSettings template="platform1" x="2697518" y="5349170"/> <scannerSettings template="scanner1"/> </leg> </survey> </document>

@Hannes9
Copy link
Author

Hannes9 commented Sep 3, 2023

I solved it with just removing the headRotateStop_deg. Would that mean that the FOV (horizontal) is still 360° anyways ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants