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

Initial UI #37

Merged
merged 46 commits into from
Mar 2, 2022
Merged

Initial UI #37

merged 46 commits into from
Mar 2, 2022

Conversation

chachmu
Copy link
Contributor

@chachmu chachmu commented Aug 29, 2021

I'm hoping we can merge this PR once it gets to the point that it will be helpful for developing other features. Essentially I just want it to let us output debug text/images initially and then I can start a new PR to flesh out an actual UI.

So far this basically just sets up a package that uses the rosbridge suite to launch a rosbridge server and prove that JavaScript running in a basic HTML file can successfully pub/sub with the ROS side of things.

@chachmu chachmu added this to the MMVP milestone Aug 29, 2021
@chachmu chachmu self-assigned this Aug 29, 2021
Copy link
Collaborator

@JNeiger JNeiger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Looks like CI is failing on installing the bridge through apt?

@chachmu
Copy link
Contributor Author

chachmu commented Aug 29, 2021

Yeah I noticed that. For whatever reason rosbridge hasn't added ROS2 packages to apt yet so you have to install from source. Not sure how we want to handle that.

@JNeiger
Copy link
Collaborator

JNeiger commented Aug 29, 2021

There's an external project add that we can throw in the cmake that will build and install it using the source during configure time for the time being to make it automated

@chachmu
Copy link
Contributor Author

chachmu commented Sep 8, 2021

It looks like the galactic package for rosbridge just didn't get published with the last sync so this should be resolved in the next few weeks (more information here).

If anybody wants to test the UI in the meantime you can just clone rosbridge_suite in the src folder next to our repo
git clone https://github.com/RobotWebTools/rosbridge_suite.git

You can start the rosbridge server with ros2 launch ateam_ui ateam_ui_launch.xml then open the html file in the src folder to see the webpage. The UI currently works for publishing and subscribing: it sends an example /cmd_vel message when you click the button and it will also display any std_msgs/String messages sent to /listener

@chachmu
Copy link
Contributor Author

chachmu commented Oct 3, 2021

At this point all I have to do is add the ROS connection to the frontend and we should be able to have the UI working for the robots/ball and overlays. I do still want to poke it a bit to test the performance to make sure I haven't messed anything up before merging this though.

Closes #4, closes #5

@chachmu
Copy link
Contributor Author

chachmu commented Oct 3, 2021

I went ahead and tested the performance; after fixing a few issues everything looks pretty good. All that's left is to settle on the ROS message structures for everything and add the connection on the UI end.

@JNeiger
Copy link
Collaborator

JNeiger commented Oct 3, 2021

I'll create the vision output messages within the next few days so you aren't completely blocked. Should at least give you the ability to manually publish state info

Copy link
Collaborator

@JNeiger JNeiger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! I'll try to test it before the meeting tonight

LIST_RECURSE true
RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/*
)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't know how ros2 calls cmake internally, but with glob, it requires a change to CMakeLists.txt to pick up new files that have been added.

Is this a concern with the UI? AKA will we be adding new files or is it more just editing the current files?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be an issue. Is there a way to have it pick up new files? The reason that I'm doing all that in the first place is because the /src file has to be copied to the install location before building it.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe you can just copy the folder instead of a list of files. The source arg just has to be a directory. See page 222 ish here https://drive.google.com/file/d/1z48ybhezGLe4_Xox-euVkHv68hWMjhBz/view?usp=sharing

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tldr depending on how you want to deal with the naming

file(COPY base/srcDir DESTINATION destDir) # --> destDir/srcDir
file(COPY base/srcDir/ DESTINATION destDir) # --> destDir

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think that works for detecting new files or even changes to existing ones, thats's why I was using the configure_file command, that one actually detects changes to the files

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah shoot, you right. It'll probably end up being some really gross custom target thing then. It's fine for now and if it becomes a problem we can always fix it

@JNeiger
Copy link
Collaborator

JNeiger commented Jan 25, 2022

Interesting colcon build output :P

Starting >>> ateam_common
Starting >>> ssl_league_msgs
Starting >>> ssl_league_protobufs
Starting >>> ateam_msgs
Starting >>> ateam_bringup
Finished <<< ateam_bringup [0.41s]
Finished <<< ssl_league_msgs [2.74s]
Finished <<< ssl_league_protobufs [3.17s]
Finished <<< ateam_common [3.70s]
Starting >>> ateam_autoref_bridge
Starting >>> ateam_ssl_vision_bridge
Finished <<< ateam_msgs [8.09s]
Starting >>> ateam_ssl_simulation_radio_bridge
Starting >>> ateam_ui
Finished <<< ateam_ssl_vision_bridge [5.86s]
Finished <<< ateam_autoref_bridge [10.3s]
Finished <<< ateam_ssl_simulation_radio_bridge [11.0s]
--- stderr: ateam_ui
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] / rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] - rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[..................] - rollbackFailedOptional: verb npm-session 0a611f722a3f61d
[            ......] \ build:n: sill doSerial build 8


                                                                                                                                                                                                                                                            0.1%
#######################                                                                                                                                                                                                                                     9.2%
################################################                                                                                                                                                                                                           19.5%
#########################################################################                                                                                                                                                                                  29.7%
###################################################################################################                                                                                                                                                        39.9%
############################################################################################################################                                                                                                                               50.1%
######################################################################################################################################################                                                                                                     60.3%
###############################################################################################################################################################################                                                                            70.5%
########################################################################################################################################################################################################                                                   80.7%
##################################################################################################################################################################################################################################                         90.9%
######################################################################################################################################################################################################################################################### 100.0%
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ reify: timing arborist:ctor Completed in 1ms
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:lib: sill idealTree buildDeps
⸨⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:lib: sill idealTree buildDeps
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:asar: sill fetch manifest fsevents@~2.3.2
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ idealTree:archiver-utils: sill fetch manifest path-is-ab
⸨#####⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠸ idealTree:archiver-utils: timing idealTree:node_modules/
⸨#####⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:archiver-utils: timing idealTree:node_modules/
⸨#####⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:archiver-utils: timing idealTree:node_modules/
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠸ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠹ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ idealTree:asar: timing idealTree:node_modules/@neutralin
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨#######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ idealTree:readable-stream: sill placeDep node_modules/@n
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠧ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠸ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠦ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠙ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨######⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ idealTree:unzipper: timing idealTree:node_modules/@neutr
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree: timing idealTree Completed in 6060ms
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ idealTree: timing idealTree Completed in 6060ms
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ reify:fsevents: sill reify mark deleted [
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠴ reify:fsevents: sill reify mark deleted [
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ reify:fsevents: sill reify mark deleted [
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠸ reify:fsevents: sill reify mark deleted [
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ reify:core-util-is: http fetch GET 200 https://registry.
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ reify:core-util-is: http fetch GET 200 https://registry.
⸨#########⠂⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ reify:signal-exit: http fetch GET 200 https://registry.n
⸨##########⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ reify:is-typedarray: http fetch GET 200 https://registry
⸨##########⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠼ reify:yaeti: http fetch GET 200 https://registry.npmjs.o
⸨##########⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠋ reify:rimraf: http fetch GET 200 https://registry.npmjs.
⸨##########⠂⠂⠂⠂⠂⠂⠂⠂⸩ ⠸ reify:setimmediate: http fetch GET 200 https://registry.
⸨###########⠂⠂⠂⠂⠂⠂⠂⸩ ⠏ reify:buffer-indexof-polyfill: http fetch GET 200 https:
⸨###########⠂⠂⠂⠂⠂⠂⠂⸩ ⠇ reify:string_decoder: http fetch GET 200 https://registr
⸨############⠂⠂⠂⠂⠂⠂⸩ ⠹ reify:universalify: http fetch GET 200 https://registry.
⸨#############⠂⠂⠂⠂⠂⸩ ⠹ reify:is-binary-path: http fetch GET 200 https://registr
⸨#############⠂⠂⠂⠂⠂⸩ ⠹ reify:readdirp: http fetch GET 200 https://registry.npmj
⸨##############⠂⠂⠂⠂⸩ ⠙ reify:supports-color: http fetch GET 200 https://registr
⸨###############⠂⠂⠂⸩ ⠸ reify:archiver-utils: http fetch GET 200 https://registr
⸨################⠂⠂⸩ ⠦ reify:follow-redirects: http fetch GET 200 https://regis
⸨################⠂⠂⸩ ⠹ reify:tar-stream: http fetch GET 200 https://registry.np
⸨#################⠂⸩ ⠴ reify:bufferutil: http fetch GET 200 https://registry.np
⸨#################⠂⸩ ⠙ reify:@neutralinojs/neu: timing reifyNode:node_modules/@
⸨##################⸩ ⠏ reify:uuid: http fetch GET 200 https://registry.npmjs.or
⸨##################⸩ ⠏ reify:uuid: http fetch GET 200 https://registry.npmjs.or
⸨##################⸩ ⠴ reify:async: http fetch GET 200 https://registry.npmjs.o
⸨##################⸩ ⠴ reify:async: http fetch GET 200 https://registry.npmjs.o
⸨##################⸩ ⠴ reify:async: http fetch GET 200 https://registry.npmjs.o
⸨##################⸩ ⠴ reify:async: http fetch GET 200 https://registry.npmjs.o
⸨##################⸩ ⠧ reify:es5-ext: http fetch GET 200 https://registry.npmjs
⸨##################⸩ ⠹ reify:figlet: http fetch GET 200 https://registry.npmjs.

npm notice
npm notice New minor version of npm available! 8.1.2 -> 8.3.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v8.3.2
npm notice Run npm install -g [email protected] to update!
npm notice
warning Your current version of Yarn is out of date. The latest version is "1.22.17", while you're on "1.22.11".
---
Finished <<< ateam_ui [25.0s]

Summary: 9 packages finished [33.2s]
  1 package had stderr output: ateam_ui

I tried to get the normal ros2 launch ateam_ui ateam_ui_launch.py to work, but it failed instantly. This is the output. Google says this is a WSL problem so I'm fine just using the debug version tbh.

[INFO] [launch]: All log files can be found below /home/joe/.ros/log/2022-01-25-14-17-34-172814-DESKTOP-2H0D5SC-21018
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [neu-1]: process started with pid [21020]
[INFO] [rosbridge_websocket.py-2]: process started with pid [21022]
[neu-1] Starting process: neutralino-linux_x64  --load-dir-res --path=. --export-auth-info --neu-dev-extension --neu-dev-auto-reload
[neu-1] neutralino-linux_x64 was stopped with error code 139
[neu-1] You can launch app with "neu run --verbose" to see the output coming from the Neutralinojs process. The verbose option is helpful for detecting framework initialization crashes.
[INFO] [neu-1]: process has finished cleanly [pid 21020]
[INFO] [rosbridge_websocket.py-2]: sending signal 'SIGINT' to process[rosbridge_websocket.py-2]
[rosbridge_websocket.py-2] Traceback (most recent call last):
[rosbridge_websocket.py-2]   File "/opt/ros/galactic/lib/rosbridge_server/rosbridge_websocket.py", line 53, in <module>
[rosbridge_websocket.py-2]     from rosbridge_server import ClientManager, RosbridgeWebSocket
[rosbridge_websocket.py-2]   File "/opt/ros/galactic/lib/python3.8/site-packages/rosbridge_server/__init__.py", line 2, in <module>
[rosbridge_websocket.py-2]     from .websocket_handler import RosbridgeWebSocket  # noqa: F401
[rosbridge_websocket.py-2]   File "/opt/ros/galactic/lib/python3.8/site-packages/rosbridge_server/websocket_handler.py", line 46, in <module>
[rosbridge_websocket.py-2]     from tornado.websocket import WebSocketClosedError, WebSocketHandler
[rosbridge_websocket.py-2]   File "/usr/lib/python3/dist-packages/tornado/websocket.py", line 36, in <module>
[rosbridge_websocket.py-2]     from tornado import simple_httpclient
[rosbridge_websocket.py-2]   File "/usr/lib/python3/dist-packages/tornado/simple_httpclient.py", line 211, in <module>
[rosbridge_websocket.py-2]     class _HTTPConnection(httputil.HTTPMessageDelegate):
[rosbridge_websocket.py-2]   File "/usr/lib/python3/dist-packages/tornado/simple_httpclient.py", line 212, in _HTTPConnection
[rosbridge_websocket.py-2]     _SUPPORTED_METHODS = set(["GET", "HEAD", "POST", "PUT", "DELETE", "PATCH", "OPTIONS"])
[rosbridge_websocket.py-2] KeyboardInterrupt
[ERROR] [rosbridge_websocket.py-2]: process has died [pid 21022, exit code -2, cmd '/opt/ros/galactic/lib/rosbridge_server/rosbridge_websocket.py --ros-args -r __node:=rosbridge -r __ns:=/ui'].

I was able to get ateam_ui_debug_launch.py to work. I was getting some errors from rosbridge though when I finally connected. I did have to make a change in the launch file. Specifically, cmd=["yarn", "dev", "--host"] so that I could connect using just an IP instead of localhost.

EDIT If this happens, just remove the build and install folder then rebuild. ros2/examples#303 (comment)

[rosbridge_websocket.py-2] [INFO] [1643138447.016459500] [ui.rosbridge]: Client connected. 1 clients total.
[rosbridge_websocket.py-2] [ERROR] [1643138447.091328700] [ui.rosbridge]: [Client 0] [id: subscribe:/ball:1] subscribe: Could not import 'rosidl_typesupport_c' for package 'ateam_msgs'
[rosbridge_websocket.py-2] [ERROR] [1643138447.099416000] [ui.rosbridge]: [Client 0] [id: subscribe:/blue/robot0:2] subscribe: Could not import 'rosidl_typesupport_c' for package 'ateam_msgs'
[rosbridge_websocket.py-2] [ERROR] [1643138447.101353800] [ui.rosbridge]: [Client 0] [id: subscribe:/blue/robot1:3] subscribe: Could not import 'rosidl_typesupport_c' for package 'ateam_msgs'
[rosbridge_websocket.py-2] [ERROR] [1643138447.102730400] [ui.rosbridge]: [Client 0] [id: subscribe:/blue/robot2:4] subscribe: Could not import 'rosidl_typesupport_c' for package 'ateam_msgs'
...

@chachmu
Copy link
Contributor Author

chachmu commented Jan 25, 2022

I should probably suppress non-error stdout for those commands so it doesn't flood the terminal when running colcon build although I think that should only happen once.

For the issue with WSL, it looks like you could change a config setting with WSL or just stick with using the debug version.

%userprofile%\.wslconfig

[wsl2]
kernelCommandLine = vsyscall=emulate

Also, I'll make the change to add that --host tag, I didn't realize it would be necessary since I was running everything on the same system.

@chachmu
Copy link
Contributor Author

chachmu commented Feb 2, 2022

I have discovered a fun issue with the CMake. When you run colcon build for the first time and it needs to install dependencies it asks you to input your password so it can run sudo but the doesn't really stand out and appears after a minute or so of other output so it's very likely that a user would just not see it and leave it stalled indefinitely.

Anybody have any ideas on how to avoid this?

@JNeiger
Copy link
Collaborator

JNeiger commented Feb 2, 2022

I'm not sure if there's an easy way to fix that. Can you output text in cmake to warn the user that this needs to happen? I'm not sure how much output colcon eats

@JNeiger
Copy link
Collaborator

JNeiger commented Mar 2, 2022

Merging per our chat last tuesday

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

Successfully merging this pull request may close these issues.

3 participants