Managing Projects

A project is a folder containing your robot’s hardware configuration and all your mission code. A project contains one or more missions — individual autonomous routines your robot can execute.


Creating a Project

raccoon create project <name>

Example:

raccoon create project MyRobot
cd MyRobot

This creates a folder with the following structure:

MyRobot/
├── raccoon.project.yml    ← hardware and connection configuration
├── src/
│   ├── main.py            ← entry point — registers and runs missions
│   ├── hardware/
│   │   ├── defs.py        ← generated motor/sensor objects (do not edit)
│   │   └── robot.py       ← generated Robot class (do not edit)
│   ├── missions/
│   │   ├── setup_mission.py     ← runs before your main missions
│   │   └── shutdown_mission.py  ← runs after your main missions
│   └── steps/             ← optional custom step definitions

Adding a Mission

Inside a project directory:

raccoon create mission <name>

Example:

raccoon create mission CollectBalls

This creates src/missions/collect_balls_mission.py with a mission skeleton ready for you to fill in.


Listing Projects and Missions

Show all projects in the current directory:

raccoon list projects

Show all missions in the current project:

raccoon list missions

Removing a Mission

raccoon remove mission <name>

This deletes the mission file. The change only takes effect on the robot after the next raccoon sync or raccoon run.


The Configuration File

raccoon.project.yml stores everything about your project. You can view and edit it with any text editor, but most settings are more easily managed through raccoon wizard and raccoon codegen.

A typical configuration looks like:

name: MyRobot
uuid: a1b2c3d4-...        # unique identifier, do not change
missions:
  - SetupMission
  - CollectBalls
  - ShutdownMission

drivetrain_type: differential   # or mecanum

motors:
  left_motor:
    port: 0
    inverted: false
    calibration:
      pid: {kp: 4.4, ki: 10.0, kd: 0.165}
      ff: {kS: 0.024, kV: 0.041, kA: 0.007}
  right_motor:
    port: 1
    inverted: true
    calibration:
      pid: {kp: 4.4, ki: 10.0, kd: 0.165}
      ff: {kS: 0.024, kV: 0.041, kA: 0.007}

connection:
  pi_address: 192.168.4.1
  pi_port: 8421
  pi_user: pi

The calibration values under each motor are written automatically by raccoon calibrate — you normally do not need to edit them manually.