Bird
Raised Fist0
ROSframework~5 mins

Custom message definition in ROS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a custom message in ROS?
A custom message in ROS is a user-defined data structure that allows you to send specific information between nodes, beyond the standard message types.
Click to reveal answer
beginner
How do you define a custom message in ROS?
You create a .msg file inside the msg folder of your ROS package, listing the fields and their types line by line.
Click to reveal answer
intermediate
Why do you need to rebuild your ROS package after adding a custom message?
Because ROS generates source code from the .msg files during build, so rebuilding creates the necessary code to use the new message type.
Click to reveal answer
intermediate
What types of fields can you include in a ROS custom message?
You can include primitive types (int32, float64, bool), arrays, strings, and even other message types as fields.
Click to reveal answer
intermediate
How do you use a custom message in your ROS node code?
After building your package, you import the generated message class in your code and use it to publish or subscribe to topics with that message type.
Click to reveal answer
Where do you place the .msg file for a custom message in a ROS package?
AIn the config folder
BInside the msg directory of the package
CIn the launch folder
DIn the src directory
What command do you run after adding a new custom message to your ROS package?
Aroslaunch
Brosrun
Ccatkin_make or colcon build
Drosmsg show
Which of these is NOT a valid field type in a ROS custom message?
Aint32
Bstring
Cfloat64[]
Dhtml
How do you refer to a custom message type in your ROS Python code?
AImport the message class from your package's msg module
BWrite the message fields manually
CUse a generic message type
DNo import needed, just use strings
What happens if you forget to rebuild your ROS package after adding a custom message?
AYour code will not recognize the new message type
BThe message will work anyway
CROS will auto-generate the message code
DYour package will crash immediately
Explain the steps to create and use a custom message in a ROS package.
Think about file creation, build process, and code usage.
You got /5 concepts.
    Describe why custom messages are useful in ROS and give an example scenario.
    Consider how standard messages might be limited.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of defining a custom message in ROS?
      easy
      A. To send specific data types tailored to your robot's needs
      B. To create new robot hardware components
      C. To write Python scripts for robot control
      D. To install ROS packages automatically

      Solution

      1. Step 1: Understand the role of custom messages

        Custom messages allow you to define exactly what data your robot nodes exchange.
      2. Step 2: Compare with other options

        Options B, C, and D relate to hardware, scripting, or package management, not message definition.
      3. Final Answer:

        To send specific data types tailored to your robot's needs -> Option A
      4. Quick Check:

        Custom messages = tailored data [OK]
      Hint: Custom messages define data, not hardware or scripts [OK]
      Common Mistakes:
      • Confusing message definition with hardware setup
      • Thinking custom messages are scripts
      • Assuming messages install packages
      2. Which of the following is the correct syntax to define a field named speed of type float32 in a ROS .msg file?
      easy
      A. speed float32
      B. float32 speed
      C. float speed32
      D. float speed

      Solution

      1. Step 1: Recall ROS message field syntax

        In ROS .msg files, the type comes first, then the field name, e.g., float32 speed.
      2. Step 2: Check each option

        float32 speed matches the correct syntax. Options B, C, and D have incorrect order or wrong types.
      3. Final Answer:

        float32 speed -> Option B
      4. Quick Check:

        Type before name in .msg files [OK]
      Hint: Type first, then field name in .msg files [OK]
      Common Mistakes:
      • Swapping field name and type order
      • Using incorrect type names
      • Omitting the type or name
      3. Given this custom message definition in RobotStatus.msg:
      bool is_active
      float32 battery_level
      string status_message
      What will be the default value of is_active when a new message is created in a ROS node?
      medium
      A. false
      B. 1
      C. null
      D. true

      Solution

      1. Step 1: Understand default values in ROS messages

        Boolean fields default to false when a message is created without explicit initialization.
      2. Step 2: Evaluate options

        false is false, which matches the default. Options A and B represent true values, and C is invalid for bool.
      3. Final Answer:

        false -> Option A
      4. Quick Check:

        Boolean default = false [OK]
      Hint: Boolean fields default to false unless set [OK]
      Common Mistakes:
      • Assuming booleans default to true
      • Confusing null with default values
      • Using numeric 1 instead of boolean true
      4. You wrote this in your SensorData.msg file:
      int32 temperature
      float64 humidity
      string location
      But when building your ROS package, you get an error. What is the likely cause?
      medium
      A. Using float64 instead of float32 is invalid in ROS messages
      B. Field names cannot be lowercase
      C. Missing blank line at the end of the file
      D. No error; the message definition is correct

      Solution

      1. Step 1: Check ROS message type validity

        ROS supports float64 as a valid type, so Using float64 instead of float32 is invalid in ROS messages is incorrect.
      2. Step 2: Verify field naming and formatting

        Lowercase field names are allowed, and no blank line is required at the end.
      3. Final Answer:

        No error; the message definition is correct -> Option D
      4. Quick Check:

        Valid types and names mean no error [OK]
      Hint: ROS supports float64 and lowercase names [OK]
      Common Mistakes:
      • Thinking float64 is invalid
      • Assuming field names must be uppercase
      • Expecting blank line at file end
      5. You want to define a custom message RobotCommand.msg that includes a nested message Header from the standard ROS messages and a custom field command of type string. Which is the correct way to define this?
      hard
      A. Header header string command
      B. header Header command string
      C. std_msgs/Header header string command
      D. Header: std_msgs/Header string command

      Solution

      1. Step 1: Understand nested message syntax in ROS

        To use a message from another package, you must prefix the type with the package name, e.g., std_msgs/Header.
      2. Step 2: Check each option

        std_msgs/Header header string command correctly uses std_msgs/Header header. Header header string command misses the package prefix, C reverses type and name, D uses invalid syntax.
      3. Final Answer:

        std_msgs/Header header string command -> Option C
      4. Quick Check:

        Use package/type for nested messages [OK]
      Hint: Prefix nested types with package name [OK]
      Common Mistakes:
      • Omitting package name for nested messages
      • Swapping field name and type
      • Using colon syntax incorrectly
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard