A complete example of configuring OctoMY™ for a Traxxas RC car converted into an autonomous robot platform.
Pro Tip
This example shows a complex multi-controller setup. If you're just starting out, begin with the Basic Wheeled Robot tutorial first. Come back here once you're comfortable with the fundamentals.
This example demonstrates how to configure all OctoMY™ components for a wheeled robot based on a Traxxas RC car chassis. It covers:
Did You Know?
Traxxas RC cars are popular for robotics conversions because they have high-quality motors, suspensions, and drivetrains. The 1/10 scale Slash is particularly popular for autonomous car research.
Every OctoMY™ Agent needs a unique identity.
identification:
id: xxxxxx # Unique identifier (generated)
keypair: yyyyyy # RSA keypair (generated)
personality:
name: "El Traxxo"
gender: male
The identity is created during the delivery (birth) process.
This robot uses two controllers working together.
The first controller handles sensors and cameras:
controller:
name: "Arduino #1"
type: arduino
sensors:
- name: imu
type: accelerometer_gyro
media:
- name: usb_cam
type: usb_camera
- name: android_back
type: android_camera
position: back
- name: android_front
type: android_camera
position: front
depth: true
lobes:
- name: wheeled
type: locomotion
stanzas:
- name: driving
The second controller handles the RC servo actuators:
controller:
name: "ArduMY #1"
type: ardumy
actuators:
- name: throttle
type: rc_servo
pin: 9
- name: steering
type: rc_servo
pin: 10
sensors:
- name: lidar
type: usb_lidar
media:
- name: usb_cam
type: usb_camera
- name: android_back
type: android_camera
- name: android_front
type: android_camera
depth: true
lobes:
- name: wheeled
type: locomotion
Security Consideration
When using multiple controllers, ensure each has proper fail-safe configuration. If one controller loses communication, the others should bring the robot to a safe stop automatically.
The puppet defines the 3D scene graph for visualization and simulation.
puppet:
name: "RC Car"
scene:
- body
- wheel_fl # Front left wheel
- wheel_fr # Front right wheel
- wheel_bl # Back left wheel
- wheel_br # Back right wheel
- rc_servo_throttle
- rc_servo_steering
- lidar
- cameras
The puppet connects to actuators and sensors by name, allowing the UI to visualize the robot's state in real-time.
Triggers enable autonomous responses to events.
triggers:
- name: "Trigger-set #1"
triggers:
- type: location_enter
zone: "home_base"
action: slow_down
- type: face_detected
action: wave_greeting
- type: obstacle_detected
distance: 0.5
action: emergency_stop
Grids define sensor data processing pipelines.
grids:
- name: "Grid #1"
calculations:
- type: obstacle_map
inputs: [lidar, depth_camera]
- type: position_estimate
inputs: [imu, wheel_encoders]
The main plan brings everything together:
plan:
name: "Main Plan"
autonomy: full
skeptron:
enabled: true
group_size: 2 # Collaborate with 2 other agents
waypoint_mission: true
trigger_set: "Trigger-set #1"
grid: "Grid #1"
audit_trail:
enabled: true
type: blockchain
Pro Tip
Start with
autonomy: remoteto test manual control first. Once you're confident the hardware works correctly, switch toautonomy: fullfor autonomous operation.
With this configuration, the Agent supports multiple operating modes:
| Mode | Configuration |
|---|---|
| Authority | Available (can be controlled by Remote) |
| Skeptron | On (part of a 3-agent group) |
| Control | Plan (following waypoint mission) |
The "driving" stanza connects the wheeled locomotion lobe to the actuators:
stanza:
name: driving
mappings:
- lobe: wheeled
actuators:
- throttle
- steering
sensors:
- imu
- lidar
When this stanza is active, the locomotion lobe controls both servos while receiving sensor feedback.
| Component | Purpose | Controller |
|---|---|---|
| Throttle servo | Speed control | ArduMY #1 |
| Steering servo | Direction | ArduMY #1 |
| IMU (MPU6050) | Orientation | Arduino #1 |
| USB LIDAR | Obstacle mapping | ArduMY #1 |
| Front camera | Vision, depth | Arduino #1 |
| Back camera | Rear view | Arduino #1 |
This Traxxas example demonstrates: