Skip to content

Commit c98ae9c

Browse files
committed
week 3 blog
1 parent 48dbaa1 commit c98ae9c

File tree

28 files changed

+3253
-1419
lines changed

28 files changed

+3253
-1419
lines changed

docs/_posts/23-06-25-Week 3.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
---
2+
title: Week 3 - ROS 2 Frequency Control & Spin Once (June 17 ~ 23)
3+
date: 2025-06-23
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] Open PRs for changes in Robotics Academy and RAM for `rclpy.spin()`
16+
- [x] Add support for `rclpy.spin_once()` and implement user-controlled frequency
17+
- [ ] Migration of `frequency.py` into RA
18+
- [ ] ROS Native logging support from user code
19+
20+
---
21+
22+
### What I Worked On
23+
24+
We started the week with our weekly sync-up meeting with the mentors to review the progress and plan technical goals.
25+
26+
![Weekly progress update meet](assets/lib/week_3.png)
27+
<sub><i>Weekly mentor sync-up</i></sub>
28+
29+
The first major task I worked on was opening my initial PRs for the GSoC project. I created a new branch called `ros-native`, which will serve as the working branch for all ROS 2-native features. Once stable, it will be merged into production.
30+
31+
The PRs this week focused on getting `rclpy.spin()` and `rclpy.spin_once()` running inside the existing Robotics Academy framework. With this done, the user can now choose how to control the event loop, and also has the ability to define the frequency of execution within their code. This marks a key milestone in the ROS 2-native migration.
32+
33+
---
34+
35+
After this, I began working on migrating the existing frequency control (currently injected by RAM) into a new module inside RA. While the initial idea was clear, I quickly realized that this change requires deeper structural updates across the RA codebase—especially to support the optional use of `frequency.py`.
36+
37+
I also began prototyping the logging integration. Currently, log output appears in the terminal running Docker, but not in the VNC (in-GUI terminal). On further investigation, I found that the print statements inside the VNC console are routed via an initialization in `GUI.py`. This means that if `GUI.py` isn't imported, the logs don’t show up in the VNC console. I’ll need to explore workarounds or alternative ways to enable logging visibility without requiring the GUI import.
38+
39+
---
40+
41+
### PRs & Issues Raised
42+
43+
Here are the key contributions made this week:
44+
45+
**Issues**
46+
- [Add ROS 2 spin() support to user code](https://github.com/JdeRobot/RoboticsApplicationManager/issues/217)
47+
- [Support for rclpy.spin_once() and user-defined frequency](https://github.com/JdeRobot/RoboticsApplicationManager/issues/218)
48+
- [New frequency control module](https://github.com/JdeRobot/RoboticsApplicationManager/issues/219)
49+
- [Fix logging in VNC Console](https://github.com/JdeRobot/RoboticsApplicationManager/issues/222)
50+
51+
**Pull Requests**
52+
- [Add ROS 2 spin() support to user code](https://github.com/JdeRobot/RoboticsApplicationManager/pull/216)
53+
- [Support for rclpy.spin_once() and user-defined frequency](https://github.com/JdeRobot/RoboticsApplicationManager/pull/221)
54+
55+
56+
---
57+
58+
### Key Learnings & Outcomes
59+
60+
- Implemented native ROS 2 loops using `rclpy.spin()` and `rclpy.spin_once()` within the existing framework
61+
- Enabled frequency control directly via user code, rather than injecting it from RAM
62+
- Identified architectural gaps that need to be addressed for logging and `frequency.py` migration
63+
64+
---
65+
66+
> I will be taking a short break this coming week as I have exams scheduled. I’ll resume development and continue from **June 28**.
67+
{: .prompt-info }
68+
69+
Thanks for reading! Next up, I’ll finalize the GUI image publishing mechanism and continue refining the frequency and logging logic to better support ROS 2-native workflows.
70+
71+
Until next week —
72+
_Ashish_

docs/_site/404.html

Lines changed: 41 additions & 66 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-3/">Week 3 - ROS 2 Frequency Control & Spin Once (June 17 ~ 23)</a>
560+
</li>
561+
562+
563+
564+
558565
<li class="text-truncate lh-lg">
559566
<a href="/gsoc2025-Ashish_Ramesh/posts/week-2/">Week 2 - ROS 2 Spin Logic & Design Decisions (June 10 ~ 16)</a>
560567
</li>
@@ -656,6 +663,11 @@ <h2 class="panel-heading">Recently Updated</h2>
656663

657664

658665

666+
667+
668+
669+
670+
659671

660672

661673

@@ -672,31 +684,27 @@ <h2 class="panel-heading">Recently Updated</h2>
672684

673685

674686

675-
676-
677687

678688

679689

680690

681691

682692

683-
684-
685-
693+
686694

687695

688696

689697

690698

691-
692-
693699

694700

695701

696702

697703

698704

699-
705+
706+
707+
700708

701709

702710

@@ -709,10 +717,6 @@ <h2 class="panel-heading">Recently Updated</h2>
709717

710718

711719

712-
713-
714-
715-
716720

717721

718722

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

726730

727731

728-
729-
730732

731733

732734

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

740742

741743

742-
743-
744744

745745

746746

@@ -755,29 +755,20 @@ <h2 class="panel-heading">Recently Updated</h2>
755755

756756

757757

758-
759-
760-
761-
762-
763-
764-
765-
766-
767758

768759

769760

770761

771762

772763

773-
764+
765+
766+
774767

775768

776769

777770

778771

779-
780-
781772

782773

783774

@@ -812,19 +803,19 @@ <h2 class="panel-heading">Trending Tags</h2>
812803
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
813804

814805

815-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
806+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
816807

817808

818-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
809+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>
819810

820811

821-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
812+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/ros2/">ros2</a>
822813

823814

824-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>
815+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
825816

826817

827-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/ros2/">ros2</a>
818+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
828819

829820
</div>
830821
</section>
@@ -956,6 +947,11 @@ <h2 class="panel-heading">Trending Tags</h2>
956947

957948

958949

950+
951+
952+
953+
954+
959955

960956

961957

@@ -972,31 +968,27 @@ <h2 class="panel-heading">Trending Tags</h2>
972968

973969

974970

975-
976-
977971

978972

979973

980974

981975

982976

983-
984-
985-
986-
987977

978+
988979

989980

990981

991-
992982

993983

994984

995985

996986

997987

998988

999-
989+
990+
991+
1000992

1001993

1002994

@@ -1009,10 +1001,6 @@ <h2 class="panel-heading">Trending Tags</h2>
10091001

10101002

10111003

1012-
1013-
1014-
1015-
10161004

10171005

10181006

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

10261014

10271015

1028-
1029-
10301016

10311017

10321018

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

10401026

10411027

1042-
1043-
10441028

10451029

10461030

@@ -1055,29 +1039,20 @@ <h2 class="panel-heading">Trending Tags</h2>
10551039

10561040

10571041

1058-
1059-
10601042

10611043

10621044

10631045

10641046

10651047

1066-
1067-
1068-
1069-
1070-
1071-
1072-
1073-
1048+
1049+
1050+
10741051

10751052

10761053

10771054

10781055

1079-
1080-
10811056

10821057

10831058

@@ -1112,19 +1087,19 @@ <h2 class="panel-heading">Trending Tags</h2>
11121087
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/coding-period/">coding-period</a>
11131088

11141089

1115-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
1090+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
11161091

11171092

1118-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/follow-line/">follow-line</a>
1093+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>
11191094

11201095

1121-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
1096+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/ros2/">ros2</a>
11221097

11231098

1124-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/phase-one/">phase-one</a>
1099+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/community-bonding/">community bonding</a>
11251100

11261101

1127-
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/ros2/">ros2</a>
1102+
<a class="post-tag btn btn-outline-primary" href="/gsoc2025-Ashish_Ramesh/tags/intro/">intro</a>
11281103

11291104
</div>
11301105
</section>

0 commit comments

Comments
 (0)