> For the complete documentation index, see [llms.txt](https://campus-rover.gitbook.io/lab-notebook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://campus-rover.gitbook.io/lab-notebook/fiiva/lab-robots/linorobot/stack.md).

# stack.md

## Intro to LinoRobot

## Intro

Examine [Linorobot](https://campus-rover.gitbook.io/lab-notebook/fiiva/lab-robots/linorobot/www.linorobot.org) again. You will see very detailed instructions for building a robot, both the hardware and the software. In our world, **bullet**, **platform**, **cat** are all fully compliant Linorobot robots.

## Base hardware stack

* For the SBC we use either a Rasperry Pi 3B+ or a Raspberry Pi 4
  * Lidar is connected via USB to the Raspberry Pi
  * The Microcontroller is connected via USB to the Raspberry Pi
* For the microcontroller we use either a Teensy 3.2 or a Teensy 4.x (check this)
  * The motor controller is connected to the Teensy via
  * The IMU is connected to the Teensy via I2C bus

### SBC Software

The SBC is running Ubuntu 20.04 and ROS 1.0. It is a standard install which we get from the Linorobot installation. Of course our own ROS code and scripts are then added to it. Certain standard Linorobot Nodes are launched.

#### Standard Linorobot Nodes

### Microcontroller Software

The Teensy code is provided by Linorobot. We have tweaked it in small ways. See [How To](https://github.com/campusrover/labnotebook/blob/master/lab-robots/linorobot/linorobot/howto.md) for information on rebuilding it and installing the software. This software has the following jobs:

1. Read the encoders to determine the apparent speed and direction of the robot
2. Subscribe to cmd\_vel to determine the desired speed and direction
3. Use a PID controller to drive the motors to meet the desired speed and direction
4. Publish the actual speed and direction as computed by the encoders as `ODOM_RAW`
5. Read the IMU data (via the I2C bus) and publish it as `IMU_RAW`
6. Read other I2C sensors and actuators (coming soon!)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://campus-rover.gitbook.io/lab-notebook/fiiva/lab-robots/linorobot/stack.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
