I am MA Junzhe, a student from Class 3, Major in Computer Science, Grade 2024. My recent internship focused on autonomous driving.

The core task of this internship was to implement automatic path tracking based on the PIX autonomous driving chassis, utilizing the ROS (Robot Operating System) and the Apollo system. This was not merely a simple exercise in code writing, but a deep collaboration from software algorithms to hardware control.

(I) Building the Foundation

In engineering development, the environment comes first. As I use a Mac device, its architecture had compatibility conflicts with the Apollo system. To avoid potential hardware risks, I set up a virtual machine environment using Parallels Desktop, clearing obstacles for subsequent development. To improve team efficiency, I pre-studied core Linux commands (Git, Pipes, Tmux, SSH, etc.) a week in advance and utilized NumPy to achieve the unified conversion between quaternions and different coordinate systems in multi-view geometry. Furthermore, I organized ROS tutorials for the IPC (Industrial PC), binocular camera, and LiDAR, and synchronized the resources and summary documents with my team members, ensuring the entire team started from the same technical level.

(II) Core Challenge


During the ROS learning process, I focused on overcoming two advanced functions:

Elliptical Route Trajectory Planning: Initially, I tried to derive the relationship formula between ellipses and angles in polar coordinates using calculus. However, during the engineering implementation in ROS, the core lay in achieving real-time closed-loop control of speed and angle. This made me deeply realize the subtle gap between pure mathematical derivation and solving practical engineering problems.

Multi-Agent Coordination (V-Formation Following): To achieve the formation flight of three turtles, the key was to establish independent dynamic reference frames for the two follower turtles. This was quite challenging for me, a beginner just exposed to ROS coordinate transformations. After repeated debugging, I finally succeeded in getting the code logic to work.

(III) Collaboration and Engineering Mindset


Actual development is far more complex than a simulated environment. During the internship, I experienced multiple system reinstallations after virtual machine crashes, which honed my system maintenance skills. More importantly, debugging a real vehicle is completely different from typing on a computer: hardware operation involves probabilistic bugs and various unpredictable environmental interferences. Every line of code must be executed with caution to prevent system errors or safety incidents. This reverence for hardware was a crucial lesson in engineering thinking.

(IV) Work Summary


This internship gave me a cognitive shift from theory to physical sensation regarding “computer control of specific machinery.” It not only improved my engineering implementation skills but also taught me that a good developer needs both a solid theoretical foundation and the resilience to solve unexpected problems on-site. In future team collaborations, I will continue to refine my skills and contribute to the fields of embodied intelligence and autonomous driving.