Skip to main content

Physical AI & Humanoid Robotics Coursebook

An AI-Native Interactive Coursebook with RAG Chatbot

Advanced ROS 2 Concepts

Introduction​

This section covers advanced ROS 2 concepts that build upon the fundamentals introduced in Chapter 2. These topics are essential for developing complex robotic systems.

Real-time Performance​

Real-time Capabilities​

ROS 2 provides real-time capabilities through various mechanisms:

  • Real-time scheduling: Using SCHED_FIFO and SCHED_RR policies
  • Memory pre-allocation: Avoiding dynamic memory allocation during runtime
  • Deterministic communication: Configuring DDS QoS for deterministic behavior

Example: Real-time Publisher​

#include <rclcpp/rclcpp.hpp>
#include <std_msgs/msg/string.hpp>

class RealTimePublisher : public rclcpp::Node
{
public:
RealTimePublisher() : Node("realtime_publisher")
{
// Configure publisher with real-time QoS
auto qos = rclcpp::QoS(rclcpp::KeepLast(10));
qos.reliable().durability_volatile();

publisher_ = this->create_publisher<std_msgs::msg::String>(
"realtime_topic", qos);
}

private:
rclcpp::Publisher<std_msgs::msg::String>::SharedPtr publisher_;
};

Advanced DDS Configuration​

Quality of Service (QoS) Settings​

QoS policies allow fine-tuning of communication behavior:

  • Reliability: Reliable vs. best-effort delivery
  • Durability: Volatile vs. transient-local
  • History: Keep-all vs. keep-last policies
  • Deadline: Message delivery deadline constraints

Custom DDS Profiles​

<?xml version="1.0" encoding="UTF-8"?>
<dds xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<profiles>
<publisher profile_name="reliable_publisher">
<qos>
<reliability>
<kind>RELIABLE</kind>
</reliability>
<durability>
<kind>TRANSIENT_LOCAL</kind>
</durability>
</qos>
</publisher>
</profiles>
</dds>

ROS 2 Security​

Security Features​

ROS 2 includes built-in security features:

  • Authentication: Identity verification
  • Access Control: Permissions and roles
  • Encryption: Data confidentiality and integrity

Security Configuration​

# Generate security files
ros2 security create_keystore ~/enclaves
ros2 security create_key ~/enclaves/node_name

Multi-robot Systems​

Robot-to-Robot Communication​

Setting up communication between multiple robots:

// Using unique namespaces for each robot
auto robot1_sub = create_subscription<MessageType>(
"/robot1/topic", qos, callback);
auto robot2_sub = create_subscription<MessageType>(
"/robot2/topic", qos, callback);

Distributed Coordination​

  • Leader election: Algorithms for distributed leadership
  • Consensus protocols: Agreement mechanisms
  • Task allocation: Distributed task assignment

Performance Optimization​

Memory Management​

  • Object pools: Reusing message objects
  • Zero-copy transfers: Direct memory access
  • Custom allocators: Specialized memory management

Communication Optimization​

  • Intra-process communication: Direct node communication
  • Message filtering: Reducing unnecessary data transfer
  • Connection sharing: Reusing DDS connections

Advanced Tools​

Performance Analysis​

  • ros2 doctor: System health checking
  • ros2 bag: Data recording and playback
  • rqt_plot: Real-time data visualization

Debugging Tools​

  • ros2 lifecycle: Lifecycle node management
  • ros2 param: Parameter server interaction
  • ros2 action: Action server/client tools

Next Steps​

These advanced ROS 2 concepts provide the foundation for building sophisticated robotic systems. Combine these techniques with the Physical AI and humanoid robotics concepts from other chapters to create truly advanced robotic applications.