Python · 90 min
Parameters & Actions
Loading lesson…
Camera · /camera/image_raw
320 × 240 · RGB · 8 HzWaiting for image…
No student detection reported
Python
Python not loadedComplete the TODOs, then Run. Tab indents; Escape then Tab leaves the editor. Stop terminates Python.
Loading…
Robot
Graph
TF frames
Parameters
Action progress
Use a second terminal to observe messages. Ctrl+C stops a stream.
Custom interfaces on a real ROS 2 machine
ros2learn_interfaces/
├── CMakeLists.txt
├── package.xml
├── msg/
│ └── TargetInfo.msg
└── action/
└── DriveDistance.actionReal interface packages use ament_cmake and rosidl_generate_interfaces during the build. The browser provides generated-like Python classes directly. You do not need to write or run CMake here.
On a real ROS 2 machine
On a real ROS 2 machine, use an ament_python package for Python or an ament_cmake package with rclcpp for C++. Declare dependencies in package.xml.
For C++, CMakeLists.txt uses find_package, add_executable, ament_target_dependencies and install(TARGETS ...) to build and install the node. Build with colcon build, source the workspace setup, then launch with ros2 run.
KineNest provides educational compatibility headers in the browser. The kinenest::report_* helpers record learning evidence; they are not native ROS 2 APIs. No package build runs here.
Native custom messages and actions use interface files, package.xml and rosidl_generate_interfaces in CMakeLists.txt. The browser uses local headers shaped like generated interfaces; it does not run rosidl.
Real Python and browser-compiled C++ with an educational robotics runtime. Technical details