KevsRobots Learning Platform
By , Minute
To use all the common ROS2 commands we need to source the setup script:
source /opt/ros/humble/setup.bash
In ROS we use workspaces to manage our robotics projects. They are essentially a folder, with a set of files that ROS expects to see. The great thing is that ROS makes it really easy to set these up with a single colcon build command.
cd /ros2
mkdir first_app
cd first_app
mkdir src
colcon build
ls
You will see a few new folders created - build, install and log

What is
colcon?colcon - collective construction
Colcon is a command line tool to improve the workflow of building, testing and using multiple software packages. It automates the process, handles the ordering and sets up the environment to use the packages.
colcon created a new install folder; this contains a number of setup scripts that we will use to setup our terminal shell environment with the correct settings for this workspace.
You can look inside the setup files by using the
catcommand, egcat setup.bashwill show you (catalogue) the contents of the script.
Let’s go ahead and setup our terminal shell environment with our freshly created workspace bash setup scripts.
source install/setup.bash
You may need to fix the permissions within the container so that VSCode can write to these files and folders.
chmod 777 -R ../first_app

Let’s create our first ROS2 python program.
src folder and Click New file - From the VSCode folder window, select the src folder and then click the New Files buttontalker.py
Let’s cheat a bit - paste the code below, we’ll explain it in the next section
#!/usr/bin/env python3
# My first Node!
import rclpy
from rclpy.node import Node
def main(args=None):
rclpy.init(args=args)
node = Node("py_test")
node.get_logger().info("Hello ROS2")
rclpy.spin(node)
rclpy.shutdown()
if __name__ == "__main__":
main()

Let’s run it! Don’t worry we’ll explain exactly whats going on.
colcon build
python3 src/talker.py

Congratulations! You’ve just written a ROS2 program.
import rclpy loads the ROS 2 Python library (ros client library for python).rclpy.init() starts ROS communications for this program.Node("py_test") creates a node called py_test. A node is a single program in a ROS system; a robot usually has lots of them, each doing one job (reading a sensor, driving the motors, planning a route).node.get_logger().info(...) prints a message through ROS’s logging system, with a timestamp and the node’s name.rclpy.spin(node) keeps the node running and handling events until you press CTRL + C.rclpy.shutdown() tidies up when the node stops.
You can use the arrows ← → on your keyboard to navigate between lessons.
Comments