-
Notifications
You must be signed in to change notification settings - Fork 0
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
More streamlined launch system #227
Comments
Topics for consideration:
Note: more details will likely present themselves after the system is in a working state and we determine some testing workflows |
Also, ensure that all nodes are named in launch files via the This is to ensure that any changes of the names in the Nodes impls will not potentially break their capability to work with the launch system. |
@Terracom12 can you take a look at these commits when you get a chance to see if I am on the right track. I'm thinking that I need to properly namespace the different nodes but I'm not sure, I'm gonna look into it next. I figured I'd start with drive since it seems highly testable and once we get drive working I can start on one of the missions. large project launch file tutorial for future reference |
I like the direction you're going in to create a singular centralized launch file per subsystem. For drive, perhaps, it might seem a little much since there's only two nodes that need to be launched, but I think that it will prove to be a nice abstraction to use once implemented in more complex subsystems. As for the newly added heartbeat launch file, it is currently duplicating the YAML launch file. This is fine, for now, as I don't want to accidentally break any systems reliant upon it by deleting the YAML version. However, I would like you to add a comment to the YAML version stating something along the lines of Looking at drive_launch.py in the ISSUE:This line in the drive launch file is using the incorrect launch condition. |
Design and ScopeSince I haven't properly written it in text yet, and my descriptions to you in person were likely more than a bit hard to follow, I'll do my best to explain the scope of my ideas for this system below, and as much of my thought process that I can reason about at this hour. I will also provide a few ideas for implementation, though don't take any of these as concrete must-dos; you might find any of them to be counterintuitive or conflicting as you think more about the design and implementation, so they are by no means set in stone. PrinciplesThe leading (and only) one I can think of is: the system for the end-user should be simple and easy to reason about and use. That's really all there is to be said. By end-user I am referring both to a CLI user who will be typing What does this mean for us as designers? Take into highest consideration the actions that end-users will be taking most often. Here are a few high-level examples along with a brief description of the implied behavior:
That's certainly a brief list considering all the possible permutations, but I think that covers at least most of the common operations we'll want to quickly get going without any hassle in the field. Note that this is ignoring science for now, but it should certainly be taken into consideration in design. System DesignWell-thought-out design is essential for this sort of everyday use system. As I mentioned in my last comment, I might like the idea of a centralized launch file per subsystem, though I may need to think about this a little more. My thoughts regarding the capabilities of these scripts is for them to be able to perform every feasible permutation of actions that one might want that is within the subsystem's capabilities. It would probably be helpful for you to first implement a design on paper first (be it in text, or with graphs, etc.), since a system of this nature will essentially correspond one-to-one with any paper design, save perhaps a few convoluted parameters. Base-Rover Launch CommunicationI would like launch scripts on base-station to be capable of launching nodes on both base station and the rover. See the Usage section below for an example of the utility and usage of such behavior. There are several possible methods to do this. The simplest I can think of is to have the launch script on base-station communicate via (base) This ssh facility certainly have to be abstracted. Perhaps UsageIn this section I want to outline what I envision the high-level usage from an end-user's perspective to be, utilizing a few examples from the Principles section. Say the user wants to test drive: ros2 launch launch_system drive Run on base-station, this should launch everything necessary to drive the rover. Say the user wants to run-through the equipment servicing mission: ros2 launch launch_system servicing_mission Run on base-station, this should launch everything necessary for equipment servicing including drive, arm and televideo. Closing ThoughtsI left quite a few ideas out to keep this briefer, though it ended up much longer than I'd hoped, and probably a bit wordy. I appreciate you commenting on this thread with your progress, and I hope that this can clear up a bit for you. Please continue to ask here any questions that arise, along with any design proposals you would like to run by me. Thank you! |
Update the main launch system to use launch_ros and provide a centralized system to launch:
Also update subsystem launch files to ensure that they are well organized and document. Parameterize a log level of
DEBUG
wherever possible so as to allow higher-level launch files to propagate this argument downwards.The text was updated successfully, but these errors were encountered: