Hi!
I inserted my robot in the simulation, and I am having trouble on simulating the lidar data, here are my config and graph related to the lidar:
bridge_config/robot_config.json:
...
"RearLidar": {
"LidarComponent": {
"parent_actor": "myRobot_1",
"parent_T_lidar": [0.3826834, 0.0, 0.0, 0.9238795, -0.3235, 0.2985, 0.0536],
"horizontal_fov": 90.0,
"vertical_fov": 1,
"rotation_rate": 20.0,
"horizontal_resolution": 0.5,
"vertical_resolution": 4,
"min_range": 0.05,
"max_range": 29.0,
"draw_lidar_points": true
}
},
...
"RearLidarPublisher": {
"isaac.alice.TcpPublisher": {
"port": 5100,
"host": "localhost"
}
},
...
bridge_config/robot_graph.json:
"nodes": [
...
{
"name": "RearLidar",
"components": [
{
"name": "MessageLedger",
"type": "isaac::alice::MessageLedger"
},
{
"name": "LidarComponent",
"type": "isaac::sim_bridge::Lidar"
}
]
},
...
{
"name": "RearLidarPublisher",
"components": [
{
"name": "isaac.alice.MessageLedger",
"type": "isaac::alice::MessageLedger"
},
{
"name": "isaac.alice.TcpPublisher",
"type": "isaac::alice::TcpPublisher"
}
]
},
...
"edges": [
{
"source": "Arculee1RearLidar/LidarComponent/range_scan",
"target": "RearLidarPublisher/isaac.alice.TcpPublisher/LidarSensor"
},
...
robot.config.json:
...
"rear_scan_accumulator": {
"isaac.perception.ScanAccumulator": {
"min_slice_count": 180,
"clock_wise_rotation": false
}
},
...
"RearLidarSubscriber": {
"lidar_initializer": {
"lhs_frame": "robot",
"rhs_frame": "rear_lidar",
"pose": [0.3826834, 0.0, 0.0, 0.9238795, -0.3235, 0.2985, 0.0536]
},
"isaac.alice.TcpSubscriber": {
"port": 5100,
"host": "localhost"
}
},
...
robot.graph.json:
"nodes": [
...
{
"name": "rear_scan_accumulator",
"components": [
{
"name": "isaac.alice.MessageLedger",
"type": "isaac::alice::MessageLedger"
},
{
"name": "isaac.perception.ScanAccumulator",
"type": "isaac::perception::ScanAccumulator"
}
]
},
...
{
"name": "RearLidarSubscriber",
"components": [
{
"name": "lidar_initializer",
"type": "isaac::alice::PoseInitializer"
},
{
"name": "isaac.alice.MessageLedger",
"type": "isaac::alice::MessageLedger"
},
{
"name": "isaac.alice.TcpSubscriber",
"type": "isaac::alice::TcpSubscriber"
}
]
},
...
"edges": [
{
"source": "RearLidarSubscriber/isaac.alice.TcpSubscriber/LidarSensor",
"target": "rear_scan_accumulator/isaac.perception.ScanAccumulator/scan"
},
...
{
"source": "rear_scan_accumulator/isaac.perception.ScanAccumulator/fullscan",
"target": "ROSRearLaserPublisher/isaac.rosbridge.LaserScanDataPublisher/rosbridge_laser_scan"
},
...
Here is an explanation of the desired workflow:
Simulation side:
Bridge spawns my robot with the lidar on the right front corner → lidar data is generated, with fov = 90°, resolution= 0.5, so 180 points are generated per spin → data is sent to TcpPublisher.
SDK side:
Data is received on TcpSubscriber and sent to accumulator → data is sent from accumulator to a codelet that prints the data.
My Problems:
- I don't fully understand the transformation on the TcpSubscriber for the lidar data. And maybe because of that, every time I run the simulation, I get a different angle interval on the lidar data, i.e.: First Run: AngleMin: 0.357782, AngleMax: 6.63224. Second Run: AngleMin: 0.270518, AngleMax: 6.54498 Third Run: AngleMin: 5.50654, AngleMax: 11.781.
- Because of these variations, my lidar data is not precise, and on every time run I get different data, even though my robot is stopped at the same spot, in a static world.