Skip to content

Commit 48dbaa1

Browse files
committed
Week 2 Blog
1 parent ef5d64f commit 48dbaa1

File tree

29 files changed

+3650
-413
lines changed

29 files changed

+3650
-413
lines changed

docs/_posts/16-06-25-week 2.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
title: Week 2 - ROS 2 Spin Logic & Design Decisions (June 10 ~ 16)
3+
date: 2025-06-16
4+
categories: [Coding Period, Phase One]
5+
tags: [robotics-academy, ros2, follow-line, coding-period, phase-one]
6+
---
7+
8+
Hey everyone!
9+
This week continued the **Phase One** of my GSoC project with **JdeRobot**, where I'm working on porting the Follow Line exercise to use **ROS 2-native code** inside Robotics Academy.
10+
11+
---
12+
13+
### Objectives for the Week
14+
15+
- [x] Clarify whether we should skip `prepare_RA_code()` or not
16+
- [x] Understand BT Studio vs RA exercise structure
17+
- [x] Decide: new exercise vs modifying the current one
18+
- [x] Make Follow Line work with `rclpy.spin()`
19+
20+
---
21+
22+
### What I Worked On
23+
24+
We kicked off the week with a sync-up meeting with the mentors to review progress and set technical goals.
25+
26+
![Weekly progress update meet](assets/lib/week_2.png)
27+
<sub><i>Weekly mentor sync-up</i></sub>
28+
29+
From there, I focused on clarifying whether ROS 2-native migration should create a **new exercise** or **extend the existing one**. After prototyping and analyzing system dependencies like `lap.py`, `gui.py`, and how `prepare_RA_code()` is tightly coupled with the exercise flow, I concluded that **modifying the existing Follow Line exercise** would be the more scalable and cleaner approach.
30+
31+
Why?
32+
33+
- Modifying the current setup keeps system architecture intact.
34+
- Key features like the GUI and lap tracking would require major rework otherwise.
35+
- Future ROS-native migrations will also be easier this way.
36+
37+
---
38+
39+
I got ROS 2-native logic running with `rclpy.spin()` inside the exercise. Here’s what I updated:
40+
41+
- Modified the **linter** to check for either a `while True` loop or presence of `rclpy.spin()`.
42+
- Tweaked **`prepare_RA_code()`** to ensure spin-based code runs as expected.
43+
- Temporarily skipped `add_frequency_control()` for now, since there's discussion around a newer frequency management method.
44+
45+
![Demo](assets/lib/week_2.gif)
46+
<sub><i>rclpy.spin() logic running inside the Follow Line exercise</i></sub>
47+
48+
I’ll be checking in with my mentors to confirm whether this is the right direction for the ROS 2 integration and also to better understand how frequency control is expected to be handled going forward.
49+
50+
---
51+
52+
### Additional Work
53+
54+
Outside the main objectives, I also explored:
55+
56+
- Creating a **GUI publisher node**, so the user can publish processed images to a topic and have them show on the web frontend. The topic is working, but threading and lifecycle bugs remain — still a work in progress.
57+
- Implemented basic logging redirection to the terminal inside the Docker container. Currently, logs don’t show on the VNC GUI console. I’ll check if this behavior is intended or something to fix.
58+
59+
---
60+
61+
### Key Learnings & Outcomes
62+
63+
- Learned how RAM handles linting and code patching (especially the `while True` check)
64+
- Understood the importance of maintaining compatibility with existing utilities like `lap.py` and `GUI`
65+
- Validated that `rclpy.spin()` can work inside the current flow with minimal structural changes
66+
- Raised and resolved two tickets this week related to exercise structure and rclpy.spin() integration.
67+
68+
69+
---
70+
71+
Thanks for reading! Next week, I’ll finalize how to structure the GUI topic subscription and revisit frequency control to integrate it cleanly with ROS-native logic.
72+
73+
Until next week —
74+
_Ashish_

docs/_site/404.html

Lines changed: 59 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,13 @@ <h2 class="panel-heading">Recently Updated</h2>
555555

556556

557557

558+
<li class="text-truncate lh-lg">
559+
<a href="/gsoc2025-Ashish_Ramesh/posts/week-2/">Week 2 - ROS 2 Spin Logic & Design Decisions (June 10 ~ 16)</a>
560+
</li>
561+
562+
563+
564+
558565
<li class="text-truncate lh-lg">
559566
<a href="/gsoc2025-Ashish_Ramesh/posts/Week-1/">Week 1 - Coding Period Begins! (June 2 ~ 9)</a>
560567
</li>
@@ -633,20 +640,26 @@ <h2 class="panel-heading">Recently Updated</h2>
633640

634641

635642

643+
644+
645+
646+
636647

637648

638649

639650

640651

641652

642-
643-
644-
653+
645654

646655

647656

648657

649658

659+
660+
661+
662+
650663

651664

652665

@@ -659,6 +672,8 @@ <h2 class="panel-heading">Recently Updated</h2>
659672

660673

661674

675+
676+
662677

663678

664679

@@ -674,9 +689,7 @@ <h2 class="panel-heading">Recently Updated</h2>
674689

675690

676691

677-
678-
679-
692+
680693

681694

682695

@@ -689,6 +702,8 @@ <h2 class="panel-heading">Recently Updated</h2>
689702

690703

691704

705+
706+
692707

693708

694709

@@ -710,6 +725,8 @@ <h2 class="panel-heading">Recently Updated</h2>
710725

711726

712727

728+
729+
713730

714731

715732

@@ -722,6 +739,8 @@ <h2 class="panel-heading">Recently Updated</h2>
722739

723740

724741

742+
743+
725744

726745

727746

@@ -743,6 +762,8 @@ <h2 class="panel-heading">Recently Updated</h2>
743762

744763

745764

765+
766+
746767

747768

748769

@@ -755,6 +776,8 @@ <h2 class="panel-heading">Recently Updated</h2>
755776

756777

757778

779+
780+
758781

759782

760783

@@ -786,16 +809,16 @@ <h2 class="panel-heading">Trending Tags</h2>
786809
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/robotics-academy/">robotics-academy</a>
787810

788811

789-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
812+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
790813

791814

792-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
815+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
793816

794817

795-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
818+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
796819

797820

798-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
821+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
799822

800823

801824
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>
@@ -917,20 +940,26 @@ <h2 class="panel-heading">Trending Tags</h2>
917940

918941

919942

943+
944+
945+
946+
920947

921948

922949

923950

924951

925952

926-
927-
928-
953+
929954

930955

931956

932957

933958

959+
960+
961+
962+
934963

935964

936965

@@ -943,6 +972,8 @@ <h2 class="panel-heading">Trending Tags</h2>
943972

944973

945974

975+
976+
946977

947978

948979

@@ -958,9 +989,7 @@ <h2 class="panel-heading">Trending Tags</h2>
958989

959990

960991

961-
962-
963-
992+
964993

965994

966995

@@ -973,6 +1002,8 @@ <h2 class="panel-heading">Trending Tags</h2>
9731002

9741003

9751004

1005+
1006+
9761007

9771008

9781009

@@ -994,6 +1025,8 @@ <h2 class="panel-heading">Trending Tags</h2>
9941025

9951026

9961027

1028+
1029+
9971030

9981031

9991032

@@ -1006,6 +1039,8 @@ <h2 class="panel-heading">Trending Tags</h2>
10061039

10071040

10081041

1042+
1043+
10091044

10101045

10111046

@@ -1027,6 +1062,8 @@ <h2 class="panel-heading">Trending Tags</h2>
10271062

10281063

10291064

1065+
1066+
10301067

10311068

10321069

@@ -1039,6 +1076,8 @@ <h2 class="panel-heading">Trending Tags</h2>
10391076

10401077

10411078

1079+
1080+
10421081

10431082

10441083

@@ -1070,16 +1109,16 @@ <h2 class="panel-heading">Trending Tags</h2>
10701109
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/robotics-academy/">robotics-academy</a>
10711110

10721111

1073-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
1112+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
10741113

10751114

1076-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
1115+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
10771116

10781117

1079-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
1118+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
10801119

10811120

1082-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
1121+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
10831122

10841123

10851124
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>

0 commit comments

Comments
 (0)