JdeRobot / RoboticsAcademy

Learn Robotics with JdeRobot
https://jderobot.github.io/RoboticsAcademy
GNU General Public License v3.0
308 stars 219 forks source link

[Superthin templates] Fix GUI widget in follow line exercise #2464

Open pawanw17 opened 3 months ago

pawanw17 commented 3 months ago

The GUI Widget in the superthin version of the follow line exercise is broken, It is supposed to display a map overlayed on the camera images.

It works in master, but due to changes in superthin and movement from sharedVariables, the GUI just hangs up. The current workaround is to have a separate react component that only displays the camera images.

The files that likely need changes are https://github.com/JdeRobot/RoboticsAcademy/blob/master/react_frontend/src/components/visualizers/UpdateView.js https://github.com/JdeRobot/RoboticsAcademy/blob/master/react_frontend/src/libs/UpdateRenderer.js

the development can be started at the 4.5.6.beta RADI docker pull jderobot/robotics-academy:4.5.6.beta

This is how it is supposed to look image

JovanYap commented 3 months ago

Hi Pawan, I have downloaded the 4.5.6.beta development version and started it on my end and the overlay is not displayed as well. I am current taking a look at both the files and I will first create a separate react component that displays the camera image (I will try to find an alternative as well just in case this does not work) and conduct unit + integration testing after. Thank you!

pawanw17 commented 3 months ago

Hi @JovanYap Thanks for taking a look. To see it being overlayed you can take a look into jderobot/robotics-academy:4.4.31 The widget is not updated (likely because of the backend) but at least it is visible.

Also run the RADI with --debug flag to open a terminal, run the script ./entrypoint.sh to start robotics academy and ./kill_all.sh to kill all the processes.

JovanYap commented 3 months ago

Hi @pawanw17 Thanks for the information! I see that the overlay is present but not updating on version 4.4.31 but it is not present for 4.5.6beta. I am currently taking a look at ws_gui.js code that is related to follow the line exercise since it updates the map overlay and the position of the car. Are you referring to the REST API code for the backend part and may I ask where can I view the code or changelog for the 4.5.6beta and 4.4.31 versions? Thank you!

pawanw17 commented 3 months ago

Hi @JovanYap |Unfortunately we don't have a good changelog, the backend code you can find here: https://github.com/JdeRobot/RoboticsAcademy/blob/superthin-dev/exercises/static/exercises/follow_line_newmanager/python_template/ros2_humble/gui_exercise.py

4.5.6.beta involves migration of follow line exercise to superthin templates(removes exercise.py and refactores gui.py) It was supposed to use theses files https://github.com/JdeRobot/RoboticsAcademy/blob/master/react_frontend/src/components/visualizers/UpdateView.js https://github.com/JdeRobot/RoboticsAcademy/blob/master/react_frontend/src/libs/UpdateRenderer.js but they were not working for this migration so I created a new temporary JS component just to render the images and nothing else https://github.com/JdeRobot/RoboticsAcademy/blob/superthin-dev/exercises/static/exercises/follow_line_newmanager/react-components/SpecificFollowLine.js https://github.com/JdeRobot/RoboticsAcademy/blob/superthin-dev/exercises/static/exercises/follow_line_newmanager/react-components/helpers/showImagesFollowLine.js

You can change the component the exercise uses from this file https://github.com/JdeRobot/RoboticsAcademy/blob/390eed797fd8fcf3aa9532f81d8b41e779a9d1b5/exercises/templates/exercises/follow_line_newmanager/exercise.html#L23C38-L23C39

Let me know if you need any more info.

JovanYap commented 3 months ago

Thank you so much for the information! I am currently working on finding the source of the bug.

JovanYap commented 3 months ago

Hi @pawanw17, I did some testing and noticed that it is indeed a backend issue because the message.data.update object returned from the subscribed callback function has undefined values for lap, map, v and w fields.

Also, I noticed the file in entry_point/ros2_humble has the wrong filepath as gui.py and exercise.py do not exist, I tried changing to gui_exercise.py and it does not work as well.

super(Exercise, self).__init__(exercise_command=f"{current_path}/../../python_template/ros2_humble/exercise.py 0.0.0.0",
                                       gui_command=f"{current_path}/../../python_template/ros2_humble/gui.py 0.0.0.0 {circuit}",
                                       update_callback=update_callback)

Kindly advise on the current issue if you have any insights on the migration from ros1 to ros2. Thank you so much!

pawanw17 commented 2 months ago

Hi @JovanYap I took a look at the lap, map, v, w values and they seem to be static {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"} {"image": "", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"}

I don't think this would be the reason the widget crashes

For now we can ignore the entry_point/ros2_humble/exercise.py

Apoorvgarg-creator commented 1 month ago

@pawanw17 The reason it was not rendering because the image is basically coming as empty "". The function used is drawImage getting nothing in image, hence no preview.

pawanw17 commented 1 month ago

@Apoorvgarg-creator even with the image the widget gets crashed....

The previous comment was intentionally made to have image as "" so lap and map can be seen better.

Apoorvgarg-creator commented 1 month ago

@Apoorvgarg-creator even with the image the widget gets crashed....

-- Can you send me a few sample JSON for this where image data is present. Current Data (RADI Version : 4.5.13) -

image : "{\"image\": \"\", \"shape\": \"\"}"
lap : "0"
map : "(11.99880433440535, 63.58239772652345)"

Since, we are using Flex Container now, the size of the circuit is not fixed, which is scaling the image ( circuit ).

Yes, Since beginning (Correct me if I am wrong) I remember while migrating also, image data was null only. we will basically draw a red dot over the static image and use the position data coming from backend to move it on the map.

@pawanw17 I have raised a draft PR, but working on the other circuit also, as now it is configured as world, earlier it was changed using a dropdown selector for circuit inside the visualization component only.

pawanw17 commented 1 month ago

@Apoorvgarg-creator If you run the code GUI.showImage(HAL.getImage()) Inside the while loop

Then you should see the image data being populated.

I can share the samples tomorrow

pawanw17 commented 1 month ago

Hi @Apoorvgarg-creator The code I ran on 4.5.13

from GUI import GUI
from HAL import HAL
# Enter sequential code!
HAL.setV(2)
while True:
    im = HAL.getImage()
    GUI.showImage(im)
    # Enter iterative code!

Here is the sample json

{"image": "{\"image\": \"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\", \"shape\": [480, 640, 3]}", "lap": "0", "map": "(151.0, 77.0)", "v": "0.0", "w": "0.0"}
Apoorvgarg-creator commented 1 month ago

@pawanw17 Please confirm if this json is sent when update state.

pawanw17 commented 1 month ago

@Apoorvgarg-creator yes

pawanw17 commented 1 month ago

@Apoorvgarg-creator I tried to go back to the old widget by updating this line https://github.com/JdeRobot/RoboticsAcademy/blob/23ebd74ae417596e97cefb3fe37147ca363ffc89/exercises/templates/exercises/follow_line_newmanager/exercise.html#L23 with {% react_component components/visualizers/UpdateView %}{% end_react_component %}

And it seems the issue is intermittent now, the widget works most of the time but hangs abruptly sometimes or doesn't appear.

Apoorvgarg-creator commented 1 month ago

@pawanw17 I will also check if there is some "why" for the stated behaviour

Apoorvgarg-creator commented 2 weeks ago

@pawanw17 I ran the code sent by you. I put a debugger also, but I didn't get any data.

Apoorvgarg-creator commented 2 weeks ago

@pawanw17 Check this, No data is coming from backend in image.

Screenshot 2024-07-02 at 9 46 21 PM Screenshot 2024-07-02 at 9 47 44 PM
pawanw17 commented 2 weeks ago

The data is not going because your code is stuck probably because of a runtime error see the console in UI, there is some error in your online editor code

If you scroll the console a bit then you'll see the real error