-
Notifications
You must be signed in to change notification settings - Fork 11
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
night time exploration #298
Comments
I am looking for input/thoughts from @cdondrup @Jailander @gestom and a plan who's doing what? |
Hi, the scheduling is performed on a daily basis at midnights, so I could simply read a rosparam that will tell me the start and end time for exploration of the next day ? |
Well, the problem is we need to restrict where it goes. Somehow, nodes need to be marked, don't they? |
Ahh, yes. But if some parts of the environment are inaccessible, then it means that not only the info-terminal should not schedule them, but also the navigation should not pass through these. This basically means that each node should point to a specific schedule, which specifies its inaccessibility, which is actually independent of the task performed. |
Is map switching easily possible? |
yes, its only calling a service |
So, if we were to implement two specific switch actions we could schedule this, even making sure the robot is in the valid place and not moving, before switching? |
the map could still have a route out of the forbidden area but not into it so you really don't need to make sure the robot is in a valid place. However not sure how strands Executive can manage this, we would need @bfalacerda opinion. |
Well. we don't need it. If we implement it as an action the robot is stationary. So no need to "hot-swapped", but of course the policy needs updating, too. So, please get @bfalacerda involved in this and see if it's possible and try ;-) |
Ok, to summarise for @bfalacerda we need some parts of the care house banned from the navigation at night, the idea is to switch topological maps when the prohibition starts leaving no edges into the forbidden areas just out of it.
|
If it's easier, we also delete all the nodes there, right? We don't need them. |
well to go out of there only, but if you make sure you leave before then you don't need them |
there are some extra services on the MDP side that would allow you to do that: https://github.com/strands-project/strands_executive/blob/hydro-release/strands_executive_msgs/srv/AddDeleteSpecialWaypoint.srv allows you to add and delete "forbidden" waypoints. The policy generation will be guaranteed to not plan through them after this is done. Then you can use https://github.com/strands-project/strands_executive/blob/hydro-release/strands_executive_msgs/action/ExecutePolicy.action , with the Then, during execution he will never plan routes through forbidden wps, but if he ends up there, execution will abort (and you would have to tell him to leave the forbidden area again) Would this work for you? This would just require some routine to add the forbidden waypoints at night time, and remove them at day time. I just tested and everything works fine, excep atm he doesnt stop when he gets to a forbidden waypoint - that's just an extra if though, I can do it now |
hmm ok, this is another way to do it, @marc-hanheide and @gestom what do you think? |
strands-project/strands_executive#221 makes the robot stop in case he reaches a forbidden waypoint |
sounds good to me... Then we would have to write an action that calls that service. As I said, I think, the leave part is secondary if at all. So, maybe just a config |
If you send a goal to the mdp server that tells it to visit a waypoint (the default thing that we always do), it'll turn that into "avoid all forbidden waypoints until you reach the target". If he starts on a forbidden waypoint, the spec is broken immediately, and he won't move. So, with this implementation you do need to explicitly tell the robot leave the forbidden area by sending a goal to the mdp server with the |
To create the list of forbidden waypoints you can just use: https://github.com/strands-project/aaf_deployment/blob/indigo-devel/aaf_logging/config/white_list_aaf.yaml or get all the nodes with the tag |
Maybe @TobKoer can comment and describe the exact area we are allowed to visit at night/holidays? @Jailander could you upload a screenshot of the topomap here so we can see all the nodes? |
Hi, the forbidden area is in the red square so the nodes on the whitelist are all other nodes, is that right @TobKoer ? |
@ Jailander, @marc-hanheide |
So, we can do some night time exploration (and also at public holidays), but only in some part of the environment. I suggest to implement this in the following way:
logging_server_start
), calledconfigure_day
andconfigure_night
, the return immediately with success, but they trigger a change in the topo map meta data (see below)configure_day
action all nodes that are labelled "info_point_day" will also be labelled "info_point", so that info-terminal considers them. All nodes that are not "info_point_day" will have their "info_point" meta tag removed. Same for night.Better Alternative?:
rosparam
changes in the google calendar, e.g. we introduce the tag that info_terminal is looking for a rosparam, and the google calendar interfaces changes that rosparam. More generally, we could implement a rosparam special action, that takes some YAML input on the calendar frontend, allowing any rosparam to be changed from there.The text was updated successfully, but these errors were encountered: