Closed lyf23333 closed 11 months ago
Hi @lyf23333 ,
Your launch file looks good. I see that the odometry topics provided to gbplanner and PCI are different. Is this on purpose or not?
I believe you are launching your simulator in a separate launch file, is that correct?
In addition to this, you will need to make sure that you have the appropriate controller for your robot that can follow the paths given by the planner. You can either use the topic
method where the planner will simply publish the path on the topic $(arg robot_name)/command/trajectory
or the action
method where the PCI has a ROS action client and your controller needs to have the action server for the same. You can find more details in the wiki.
Let me know if this helps.
Best, Mihir
Hi @MihirDharmadhikari ,
thank you very much for this quick reply! I worked out the connection between my simulator and gbplanner, i.e. my simulator received the path from gbplanner, but I still have two further questions:
After I launched the both simulation, the rviz view for the gbplanner looks like this. : There is no exploration views, can I somehow visualize it here?
After I successfully executed the initialization step i.e. robot moves forward for 2m and the path tracker sends a success signal back, I clicked the start planner button, then the following error appears, do you have any idea why is that?
Appreciate your help!
Best, Yifan
Hi @lyf23333
It seems that the voxblox map is not populating. Due to this, the adaptive bounding box calculator is not able to get the point cloud to do the PCA and hence complaining.
You should check that the correct point cloud is being sent to the planner as well as there is a tf from the point cloud's frame (in the frame_id
field of the message) and your fixed frame (the default is world
). You can check this with the tf_tree viewer in RQT.
Let me know if this helps.
Best, Mihir
Hi @MihirDharmadhikari ,
sorry for late response. Thanks a lot for the help!
I found that when I change my launch file to same as the demo launch file, only modifying the topics, the error disappears, my current launch file: The view: Do you know why would this work? Just curious.
But there is also issue here, the planner keeps planning and sometimes my robot receives paths and my robot just keeps exploring a very small areas. just in the red square you see above. Sometimes, the robot receives no path at all and the gbplanner output looks like below. Do you possibly know what could be the cause?
My environment is indoor environment, do you know how can I remove the roof in voxblox?
Thank you so much for your help!
Yifan
Hi @lyf23333
geofence
. It is an area that the planner treats as an obstacle. Since it is blocking all the paths around the robot, the planner is not able to span the graph in any other areas. You can set any set of polygons as geofences. The one you see here was set for the particular demo world. You can disable the geofence here or change the geofence parameters here.surface_pointcloud
instead of the occupied_nodes
in the rviz. This is what I do.
b. Write a separate node that subscribes to the occupied_nodes
topic (which is a visualization_msgs/MarkerArray
), removes the markers above a certain z
, and publishes it on another topic for visualization.Let me know if this helps.
Best, Mihir
Hi @MihirDharmadhikari , I would like to thank you very much for all help you have offered, they are all in time and useful! I adopted 2 and 3 and the planner works now:)
But still there is one issue: my env is corridor env, should be similar to subterranean spaces, so I assume the performance should be pretty good. But it's not, like shown here, my robot explores to the end of corridor and just stucks there. Sometimes it runs back but then turn back again to that place. From the rviz, only there exists exploration gain, but you see there are other openings as well.
So do you know what could be the reason? Is there any important parameters I should adapt when using in new env?
Appreciate your help!
Best, Yifan
Hi @lyf23333
From the second rviz screenshot I see that there is a no gain zone
(the big red box) on the left side. It is like an artificial "explored" area. Hence the robot is not going there. You can disable that by commenting out this parameter (i.e. setting that list to empty).
Furthermore, make sure that the global bounding box (set here) is correct and all of the area that you want to explore is within in.
You can find detailed description of all these parameters in our wiki in the parameters section.
Let me know if this helps.
Best, Mihir
Hi @MihirDharmadhikari,
Thank you. I removed the ´no gain zone´ and made sure that the global bounding is ok, but the performance doesn't change. Have you set any time threshold that if the robot doesn't reach the planned local goal, it replans? I wonder about this, because the robot still gets stuck there and it never goes to the next planning iteration. And I found that at first the planner gets exploration gain at all openings, but once it enters that corner, the gains are gone, so it just stuck there.
Thank you again for all help!
Best, Yifan
Can you send me the terminal log of the mission? Also, can you record a video of the mission (just the rviz window) and send that as well?
I have sent the video and log to your mail:)
It seems that the corridors are too narrow for the current robot size. I would recommend try the following changes:
RobotParams/size
to [0.4, 0.4, 0.4]
, RobotParams/size_extension
to [0.0, 0.0, 0.0]
.PlanningParams/type
to kBasicExploration
.9000
.
This will most likely improve the performance.
I also noticed that it did not plan for a long time in the beginning. It seemed like the robot was very close to the walls and hence could not plan. Can you make the robot move somewhere else during the initialization motion? You don't need to use the initialization button provided in the UI, you can move it using any other way if your simulator allows.Let me know if this works.
Best, Mihir
Hi Mihir, Thank you again! I tried all of stuff above and it works. Changing the initialization to wider space indeed solves the problem of not planning for a long time at beginning. And I guess it is working properly, I have sent another video to your mail. Besides, I have a few further questions that I may bother you:
Thank you again for all the help, I really appreciate that!!
Best, Yifan
Hey Yifan,
Glad to hear that it worked.
vis/sampler
and the vis/planning_workspace
to see if there are any samples in that area and if the global bounds are set correctly? You can also relax the maximum allowed inclination by increasing this parameter.estimated_time_remaining
in the action feedback message to 0
and the planner will trigger the next iteration.
Furthermore, you can always call the stop service planner_control_interface/std_srvs/stop
and then the start service planner_control_interface/std_srvs/automatic_planning
to begin the planning again.Hope this helps.
Best, Mihir
Hi @MihirDharmadhikari ,
that's so helpful! Thank you:)
Can I ask maybe the last question? I saw the video of the demo, how did you make the awesome video, I mean how did you plot the tracks, occupancy, traversability during the whole process? and for the local graph you show here, how did you make the background white? You record the rosbag and made replay or? Just like the ones shown here
If I want to also have such views, which buttons should I click in rviz?
Hope this won't be too annoying and thank you!
Best, Yifan
Hey @lyf23333
We record all the data, including the visualization topics of gbplanner, in rosbag. The videos are then created by screen-recording rviz and visualizing these topics. Some topics are created by running the planner offline, for example, the voxblox map which we don't record in the bag. The traversability map is also recreated offline.
The top-down view is created by accumulating the point cloud and visualizing the robot's path. We use the jsk_rviz_plugins/TFTrajectory
for visualizing the robot's path.
In the follow view we use the orbit view of rviz and set the target frame to the robot's body frame in the Views panel:
Always happy to help!
Best, Mihir
Thanks!
Hi @MihirDharmadhikari ,
I have several questions bothering me recently after studying into this:
Sorry for inconvenience if these are too many questions:), but I really feel interested and curious about the work and these details. Thank you very much for always answering my questions in patience:)
Best regards, Yifan
Hey Yifan,
Sorry for the late reply. I was out of the office.
header/frame_id
of the point cloud message) to the world frame then simply setting the decay_time in rviz to a high value works. That is what I did in the video.gbplanner_node/tsdf_pointcloud
topic (which is of type sensor_msgs/PointCloud2
) and count the number of points.Hope this helps.
Best, Mihir
@MihirDharmadhikari ,
Thank you very much! I got it!
Best, Yifan
Great! Happy to help!
Hi,
Thank you very much for sharing this awesome planner! I want to integrate this to my own robot system and I have already red the issue https://github.com/ntnu-arl/gbplanner_ros/issues/36 here, its very helpful. How can I modify the launch file? You mean I only need the pci and gbplanner package in the launch file, so this is my launch file, is this correct?
Thank you very much!