For presentation of already realized projects and their phases look at [theses-defend](theses-defend) and public presentations [knowbase](knowbase) pages.
## Projects Ideas
FA means funding already available
### NuttX on SAMV7 (SAME70) (FA)
NuttX [SAMV7](https://github.com/apache/incubator-nuttx/tree/master/arch/arm/src/samv7), [BSP](https://github.com/apache/incubator-nuttx/tree/master/boards/arm/samv7), BSPs for [Elektroline.cz](https://gitlab.com/elektroline-predator/nuttx/-/commits/same70)
[SaMoCoN](https://gitlab.fel.cvut.cz/otrees/motion/samocon) - NuttX and SAMV7 open source motion/robotic controller
### NuttX on ESP32C3
Information about development environment setup [ESP32C3 DevKitM-1](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/work-and-ideas/-/wikis/esp32c3-m1-nuttx)
Work on CAN/TWAI the driver by Jan Charvat in the branch [esp32c3-twai](https://github.com/charvj/incubator-nuttx/tree/esp32c3-twai)
[ICE-V](https://github.com/ICE-V-Wireless/ICE-V-Wireless) ESP32C3 with iCE40 FPGA, kits donated by [RISC-V International](https://riscv.org/). Planned is minimized motion controller support based on NuttX a iCE40 port of our previous PMSM projects for Raspberry Pi and Xilinx Zynq. The ongoing project to control PMSM motors by ICE-V [https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/ice-v-pmsm](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/ice-v-pmsm).
### GNU/Linux benchmarking on VisionFive2 RISC-V board
Resources
- https://rvspace.org/en/home
- https://github.com/starfive-tech/VisionFive2
Our main focus is CAN interface benchmarking and use in RT and automotive applications but it includes 3D accelerated graphic with open-source drivers and we have contact to mesa and kernel graphic drivers developers.
### Contribute to pysimCoder
[pysimCoder](https://github.com/robertobucher/pysimCoder) The Python based open source alternative for Simulink intended for education when full system is under control control, can be seen in the source form and understood and easily extend. Target supports GNU/Linux in RT configurations, Raspberry Pi, Xilinx Zynq based [MZ_APO]https://cw.fel.cvut.cz/wiki/courses/b35apo/en/documentation/mz_apo/start(), standalone MCU boards and NuttX ([thanks to OTREES related work](https://github.com/robertobucher/pysimCoder/commit/d72e3b8bff7b1ea0725e2f3fdeb831b1e32d1d4a)). Simple model has been tested to load over TFTP and run on [Teensy-4.1 BaseBoard](https://gitlab.com/pikron/projects/imxrt-devel/-/wikis/teensy_bb). Integration of runtime monitoring and parameter tuning ove silicon-heaven is described in our [article](https://gitlab.fel.cvut.cz/lencmich/process-control-2023/-/raw/main/pysimCoder_rapid_control_prototyping.pdf).
To make project usable in education, there is need to prepare blocks representing more peripherals on targets. Extension of the base block diagrams editing system in Phyton can be another part of the project.
The GitLab project to coordinate local development by CTU students [https://gitlab.fel.cvut.cz/otrees/control/pysimcoder-devel](https://gitlab.fel.cvut.cz/otrees/control/pysimcoder-devel)
### NuttX on NXP i.MX RT (Teensy 4.0) and CAN FD (FA)
[NuttX](https://nuttx.apache.org/) is small POSIX standard following systems widespread used for Drone Flight Controllers. See [PX4 autopilot](https://px4.io/) for example.
NuttX provides support for [i.MX RT](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus:IMX-RT-SERIES). Support for cheap [Teensy 4.x](https://www.pjrc.com/store/teensy40.html) boards has been added by Michal Lenc. [NuttX Teensy 4.x](https://nuttx.apache.org/docs/latest/platforms/arm/imxrt/boards/teensy-4.x/index.html) documentation.
The project goal is to bringup Teensy BSP into NuttX and test and contribute to CAN FD support.
Initial work has already been done by Michal Lenc. See his [local project development repository](https://github.com/michallenc/incubator-nuttx).
FlexCAN driver for imxRT integrated into mainline, [pull request](https://github.com/apache/incubator-nuttx/pull/2004), main controller [patch](https://github.com/apache/incubator-nuttx/commit/16707091878e94e7780d308559a89964dca33487).
[Teensy 4x BSP pull request](https://github.com/apache/incubator-nuttx/pull/2463) merged into NuttX mainline, but here are still many tasks to work on left.
### Test and Extend NuttX Matalab/Simulink Target
[NuttX](https://github.com/apache/incubator-nuttx) target support has been [included](https://github.com/aa4cc/ert_linux/commit/024185349b24e2096b51c3fba5c245a48df7a887) in the Minimalist Simulink Coder Target for Linux ([ert_linux](https://github.com/aa4cc/ert_linux)) already. Generated executable has been tested to load over TFTP into running NuttX system on next boards
There is space to add blocks representing CAN, sensors, motor control etc.
### RTEMS on NXP i.MX RT (Teensy 4.0) and CAN FD
### RTEMS Matalab/Simulink Target
### Motion Controller (PMSM and Stepper Motors) Based on i.MX RT
The carrier board for Teensy 4.1 has been already designed by Petr Porazil from PiKRON company, complete design schematic and PCB sources [https://gitlab.com/pikron/projects/imxrt-devel](https://gitlab.com/pikron/projects/imxrt-devel). The [hw/teensy_bb-1.tdb](https://gitlab.com/pikron/projects/imxrt-devel/-/raw/master/hw/teensy_bb-1.tdb?inline=false) can be opened by [PEDA](https://sourceforge.net/projects/peda/) EDA system.
It can be used as base for designs tuned for individual robotic applications and other porting and testing.
### SAMv7 Based and Other Open Hardware Controllers for Elektroline.cz (FA)
Design of new hardware.
The first evaluation version of railway/tram presence system combining imxRT and Texas Instruments safety MCU from TMS570 familly already tested to acquire frequency response.
But design of more less critical systems is waiting still.
### MZ_APO Xilinx Zynq related projects
The project with standard educational peripherals for MZ_APO kits is available there [https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top) as part [CTU FEE CAN bus](http://canbus.pages.fel.cvut.cz/) related projects.
The description how to build design including two peripherals to connect DC motors to PMOD1 and PMOD2 connectors is described in the project [Wiki](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top/-/wikis/B35APO-Buid-on-MZ_APO)
#### HDL Design of DMA Based Framebuffer Output to Parallel Connected LCD (FA)
Filip Kučera's and Kamila Zeleňáková's [development repository](https://gitlab.fel.cvut.cz/kucerfi3/zynq-mz_apo-top)
#### HDL Design of Interface and Drivers for Stereo CMOS Camera Chips (FA)
Hardware is already available. "Only" Chips Interface HDL and Video4Linux v2 (V4L2) driver is required.
#### LVDS Connected PMSM Motor Power Driver and Sensors Interface (FA)
#### RISC-V Implementation working in parallel to ARM Core on MZ_APO Board (FA)
Consider to participate in Robert Owen and professor Patterson course material preparation and test them on MZ_APO kits.
Simple education core already implemented and tested even of MZ_APO by Damir Gruncl - see [RVAPO](https://gitlab.fel.cvut.cz/gruncdam/pap-rvapo-c)
#### Bluetooth firmware and mobile applications to control suits illumination (FA)
The plan is to use some of [Nordic](https://www.nordicsemi.com/)[nRF52](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/Bluetooth-low-energy) MCUs.
nRF52 USB support already implemented by Roman Bartosinski and included in [uLAN](http://ulan.sourceforge.net/) project [libs4c/usb/nrf52usb](https://sourceforge.net/p/ulan/sysless/ci/master/tree/libs4c/usb/nrf52usb/).
We have found that open-source BLE stack for nRF52 is already in development for NuttX by others.
#### Bluetooth human interface device (mechanical design, firmware, open-hardware)
We have designed mouse-like device with optical and inertial senzors at PiKRON and can share experience and the important pieces of firmware design. Project would consist of mechanical design design of classical mouse device usable with laptops and mobile phones which switches into inertial 3D mode (magnetometer, gyro, accelerometer) when taken up from the table. It could be cool CTU FEE present objects.
## Projects Open for Participation
## Running projects
### QtMips Simulator to RISC-V Switch/Support Extension (FA)
The switch to RISC-V [progress/status](https://github.com/cvut/qtrvsim/issues/1)
Task
- finish Control Status Registers support
- implement branch predictor core functionality and visualization
- L2 cache support
- MMU support
- multicore and MOESI protocol support
### CAN Bus Related Projects
See [http://canbus.pages.fel.cvut.cz/](http://canbus.pages.fel.cvut.cz/) for running and done projects
There are plenty of tasks related to testing CTU CAN FD core design, drivers, port of Linux driver to RTEMS, NuttX, update Matlab/Simulink CTU CAN blocks-set to support CAN FD, more SocketCAN channels etc.
Actual RTEMS generic CAN/CAN FD subsystem bring-up run by Michal Lenc.
The wiki with RTEMS build for MZ_APO and related CAN thoughts [there](https://gitlab.fel.cvut.cz/otrees/rtems/work-and-ideas/-/wikis/home) and actual work GIT at [https://gitlab.fel.cvut.cz/otrees/rtems/rtems-canfd](https://gitlab.fel.cvut.cz/otrees/rtems/rtems-canfd). The first target is CTU CAN FD on MZ_APO support. But there is lot of other controllers with partial RTEMS support or even waiting for the initial version. More students can join the effort and became expert for CAN bus (perspective in satellites now) and RTEMS (RTOS of choice for ESA and NASA).
Extension of [OrtCAN](http://ortcan.sourceforge.net/) CANopen implementation to provide CANopen FD support (participated in the standardization process and [CiA](https://www.can-cia.org/) membership gives us lots of knowledge in the area).
Porting of OrtCAN to RTEMS, extension of NuttX OrtCAN support.
## Dormant Projects
### ORTE Data-Distribution Service (DDS) Implementation
ORTE implements the Real-Time Publish-Subscribe (RTPS) communication protocol.
DDS (version 2) is used as a coreRobot Operating System version 2 ([ROS 2](https://index.ros.org/doc/ros2/)) components communication protocol. ORTE is very light-way implementation of DDS protocol version 1 which has been developed at Department of Control Engineering FEE CTU and allowed standardization of the original version which required the second independent interoperable implementation. Project waits for update to protocol version 2, analysis and substantial part of update has been already done in frame of Jiří Hubáček's diploma theses [Implementation of actual version of DDSI-RTPS protocol for distributed control in Ethernet network](https://support.dce.felk.cvut.cz/mediawiki/images/3/37/Dp_2016_hubacek_jiri.pdf)
Python based toolbox for motion control units used at Department of Cybernetics to control [Bosch SR 450](https://cw.fel.cvut.cz/wiki/help/common/robot_bosch) and [CRS93/CRS97](https://cw.fel.cvut.cz/wiki/help/common/robot_crs) robots
https://github.com/cvut/pyrocon
#### MaRoCoN
Matlab based toolbox for motion control units used at Department of Cybernetics to control [Bosch SR 450](https://cw.fel.cvut.cz/wiki/help/common/robot_bosch) and [CRS93/CRS97](https://cw.fel.cvut.cz/wiki/help/common/robot_crs) robots
https://github.com/cvut/marocon
## Finished Projects
# Projects Related to OTREES
For presentation of already realized projects and their phases look at [theses-defend](theses-defend) and public presentations [knowbase](knowbase) pages.
## Projects Ideas
FA means funding already available
### NuttX generic tasks
- porting [Microwindows/Nano-X](http://www.microwindows.org/) on on top of NuttX framebuffer API, see [related discussion](https://github.com/ghaerr/microwindows/issues/85) on [Microwindows GitHub](https://github.com/ghaerr/microwindows)
- porting [https://microblocks.fun/](https://microblocks.fun/) to NuttX, some proof of feasibility ([smallvm](https://bitbucket.org/john_maloney/smallvm) bare core compilation) already done
### NuttX on SAMV7 (SAME70) (FA)
NuttX [SAMV7](https://github.com/apache/incubator-nuttx/tree/master/arch/arm/src/samv7), [BSP](https://github.com/apache/incubator-nuttx/tree/master/boards/arm/samv7), BSPs for [Elektroline.cz](https://gitlab.com/elektroline-predator/nuttx/-/commits/same70)
[SaMoCoN](https://gitlab.fel.cvut.cz/otrees/motion/samocon) - NuttX and SAMV7 open source motion/robotic controller
- need for ADC with DMA update to deliver data on demand
- PWM and its API updates, some needs even whole NuttX PWM API updates
-[pysimCoder](https://github.com/robertobucher/pysimCoder) work for the target and in general work continuation
- power stage redesign for for [higher voltage](https://gitlab.fel.cvut.cz/otrees/motion/samocon/-/wikis/Power-board-for-higher-voltages-with-N-channel-MOSFETs)(probably with GaN switches)
### NuttX on ESP32C3
Information about development environment setup [ESP32C3 DevKitM-1](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/work-and-ideas/-/wikis/esp32c3-m1-nuttx)
Work on CAN/TWAI the driver by Jan Charvat in the branch [esp32c3-twai](https://github.com/charvj/incubator-nuttx/tree/esp32c3-twai)
[ICE-V](https://github.com/ICE-V-Wireless/ICE-V-Wireless) ESP32C3 with iCE40 FPGA, kits donated by [RISC-V International](https://riscv.org/). Planned is minimized motion controller support based on NuttX a iCE40 port of our previous PMSM projects for Raspberry Pi and Xilinx Zynq. The ongoing project to control PMSM motors by ICE-V [https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/ice-v-pmsm](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/ice-v-pmsm).
### GNU/Linux benchmarking on VisionFive2 RISC-V board
Resources
- https://rvspace.org/en/home
- https://github.com/starfive-tech/VisionFive2
Our main focus is CAN interface benchmarking and use in RT and automotive applications but it includes 3D accelerated graphic with open-source drivers and we have contact to mesa and kernel graphic drivers developers.
### Contribute to pysimCoder
[pysimCoder](https://github.com/robertobucher/pysimCoder) The Python based open source alternative for Simulink intended for education when full system is under control control, can be seen in the source form and understood and easily extend. Target supports GNU/Linux in RT configurations, Raspberry Pi, Xilinx Zynq based [MZ_APO]https://cw.fel.cvut.cz/wiki/courses/b35apo/en/documentation/mz_apo/start(), standalone MCU boards and NuttX ([thanks to OTREES related work](https://github.com/robertobucher/pysimCoder/commit/d72e3b8bff7b1ea0725e2f3fdeb831b1e32d1d4a)). Simple model has been tested to load over TFTP and run on [Teensy-4.1 BaseBoard](https://gitlab.com/pikron/projects/imxrt-devel/-/wikis/teensy_bb). Integration of runtime monitoring and parameter tuning ove silicon-heaven is described in our [article](https://gitlab.fel.cvut.cz/lencmich/process-control-2023/-/raw/main/pysimCoder_rapid_control_prototyping.pdf).
To make project usable in education, there is need to prepare blocks representing more peripherals on targets. Extension of the base block diagrams editing system in Phyton can be another part of the project.
The GitLab project to coordinate local development by CTU students [https://gitlab.fel.cvut.cz/otrees/control/pysimcoder-devel](https://gitlab.fel.cvut.cz/otrees/control/pysimcoder-devel)
### NuttX on NXP i.MX RT (Teensy 4.0) and CAN FD (FA)
[NuttX](https://nuttx.apache.org/) is small POSIX standard following systems widespread used for Drone Flight Controllers. See [PX4 autopilot](https://px4.io/) for example.
NuttX provides support for [i.MX RT](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus:IMX-RT-SERIES). Support for cheap [Teensy 4.x](https://www.pjrc.com/store/teensy40.html) boards has been added by Michal Lenc. [NuttX Teensy 4.x](https://nuttx.apache.org/docs/latest/platforms/arm/imxrt/boards/teensy-4.x/index.html) documentation.
The project goal is to bringup Teensy BSP into NuttX and test and contribute to CAN FD support.
Initial work has already been done by Michal Lenc. See his [local project development repository](https://github.com/michallenc/incubator-nuttx).
FlexCAN driver for imxRT integrated into mainline, [pull request](https://github.com/apache/incubator-nuttx/pull/2004), main controller [patch](https://github.com/apache/incubator-nuttx/commit/16707091878e94e7780d308559a89964dca33487).
[Teensy 4x BSP pull request](https://github.com/apache/incubator-nuttx/pull/2463) merged into NuttX mainline, but here are still many tasks to work on left.
### Test and Extend NuttX Matalab/Simulink Target
[NuttX](https://github.com/apache/incubator-nuttx) target support has been [included](https://github.com/aa4cc/ert_linux/commit/024185349b24e2096b51c3fba5c245a48df7a887) in the Minimalist Simulink Coder Target for Linux ([ert_linux](https://github.com/aa4cc/ert_linux)) already. Generated executable has been tested to load over TFTP into running NuttX system on next boards
There is space to add blocks representing CAN, sensors, motor control etc.
### RTEMS on NXP i.MX RT (Teensy 4.0) and CAN FD
### RTEMS Matalab/Simulink Target
### Motion Controller (PMSM and Stepper Motors) Based on i.MX RT
The carrier board for Teensy 4.1 has been already designed by Petr Porazil from PiKRON company, complete design schematic and PCB sources [https://gitlab.com/pikron/projects/imxrt-devel](https://gitlab.com/pikron/projects/imxrt-devel). The [hw/teensy_bb-1.tdb](https://gitlab.com/pikron/projects/imxrt-devel/-/raw/master/hw/teensy_bb-1.tdb?inline=false) can be opened by [PEDA](https://sourceforge.net/projects/peda/) EDA system.
It can be used as base for designs tuned for individual robotic applications and other porting and testing.
### SAMv7 Based and Other Open Hardware Controllers for Elektroline.cz (FA)
Design of new hardware.
The first evaluation version of railway/tram presence system combining imxRT and Texas Instruments safety MCU from TMS570 familly already tested to acquire frequency response.
But design of more less critical systems is waiting still.
### MZ_APO Xilinx Zynq related projects
The project with standard educational peripherals for MZ_APO kits is available there [https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top) as part [CTU FEE CAN bus](http://canbus.pages.fel.cvut.cz/) related projects.
The description how to build design including two peripherals to connect DC motors to PMOD1 and PMOD2 connectors is described in the project [Wiki](https://gitlab.fel.cvut.cz/canbus/zynq/zynq-can-sja1000-top/-/wikis/B35APO-Buid-on-MZ_APO)
#### HDL Design of DMA Based Framebuffer Output to Parallel Connected LCD (FA)
Filip Kučera's and Kamila Zeleňáková's [development repository](https://gitlab.fel.cvut.cz/kucerfi3/zynq-mz_apo-top)
#### HDL Design of Interface and Drivers for Stereo CMOS Camera Chips (FA)
Hardware is already available. "Only" Chips Interface HDL and Video4Linux v2 (V4L2) driver is required.
#### LVDS Connected PMSM Motor Power Driver and Sensors Interface (FA)
#### RISC-V Implementation working in parallel to ARM Core on MZ_APO Board (FA)
Consider to participate in Robert Owen and professor Patterson course material preparation and test them on MZ_APO kits.
Simple education core already implemented and tested even of MZ_APO by Damir Gruncl - see [RVAPO](https://gitlab.fel.cvut.cz/gruncdam/pap-rvapo-c)
#### Bluetooth firmware and mobile applications to control suits illumination (FA)
The plan is to use some of [Nordic](https://www.nordicsemi.com/)[nRF52](https://www.nordicsemi.com/Products/Low-power-short-range-wireless/Bluetooth-low-energy) MCUs.
nRF52 USB support already implemented by Roman Bartosinski and included in [uLAN](http://ulan.sourceforge.net/) project [libs4c/usb/nrf52usb](https://sourceforge.net/p/ulan/sysless/ci/master/tree/libs4c/usb/nrf52usb/).
We have found that open-source BLE stack for nRF52 is already in development for NuttX by others.
#### Bluetooth human interface device (mechanical design, firmware, open-hardware)
We have designed mouse-like device with optical and inertial senzors at PiKRON and can share experience and the important pieces of firmware design. Project would consist of mechanical design design of classical mouse device usable with laptops and mobile phones which switches into inertial 3D mode (magnetometer, gyro, accelerometer) when taken up from the table. It could be cool CTU FEE present objects.
## Projects Open for Participation
## Running projects
### QtMips Simulator to RISC-V Switch/Support Extension (FA)
The switch to RISC-V [progress/status](https://github.com/cvut/qtrvsim/issues/1)
Task
- finish Control Status Registers support
- implement branch predictor core functionality and visualization
- L2 cache support
- MMU support
- multicore and MOESI protocol support
### CAN Bus Related Projects
See [http://canbus.pages.fel.cvut.cz/](http://canbus.pages.fel.cvut.cz/) for running and done projects
There are plenty of tasks related to testing CTU CAN FD core design, drivers, port of Linux driver to RTEMS, NuttX, update Matlab/Simulink CTU CAN blocks-set to support CAN FD, more SocketCAN channels etc.
Actual RTEMS generic CAN/CAN FD subsystem bring-up run by Michal Lenc.
The wiki with RTEMS build for MZ_APO and related CAN thoughts [there](https://gitlab.fel.cvut.cz/otrees/rtems/work-and-ideas/-/wikis/home) and actual work GIT at [https://gitlab.fel.cvut.cz/otrees/rtems/rtems-canfd](https://gitlab.fel.cvut.cz/otrees/rtems/rtems-canfd). The first target is CTU CAN FD on MZ_APO support. But there is lot of other controllers with partial RTEMS support or even waiting for the initial version. More students can join the effort and became expert for CAN bus (perspective in satellites now) and RTEMS (RTOS of choice for ESA and NASA).
Extension of [OrtCAN](http://ortcan.sourceforge.net/) CANopen implementation to provide CANopen FD support (participated in the standardization process and [CiA](https://www.can-cia.org/) membership gives us lots of knowledge in the area).
Porting of OrtCAN to RTEMS, extension of NuttX OrtCAN support.
## Dormant Projects
### ORTE Data-Distribution Service (DDS) Implementation
ORTE implements the Real-Time Publish-Subscribe (RTPS) communication protocol.
DDS (version 2) is used as a coreRobot Operating System version 2 ([ROS 2](https://index.ros.org/doc/ros2/)) components communication protocol. ORTE is very light-way implementation of DDS protocol version 1 which has been developed at Department of Control Engineering FEE CTU and allowed standardization of the original version which required the second independent interoperable implementation. Project waits for update to protocol version 2, analysis and substantial part of update has been already done in frame of Jiří Hubáček's diploma theses [Implementation of actual version of DDSI-RTPS protocol for distributed control in Ethernet network](https://support.dce.felk.cvut.cz/mediawiki/images/3/37/Dp_2016_hubacek_jiri.pdf)
Python based toolbox for motion control units used at Department of Cybernetics to control [Bosch SR 450](https://cw.fel.cvut.cz/wiki/help/common/robot_bosch) and [CRS93/CRS97](https://cw.fel.cvut.cz/wiki/help/common/robot_crs) robots
https://github.com/cvut/pyrocon
#### MaRoCoN
Matlab based toolbox for motion control units used at Department of Cybernetics to control [Bosch SR 450](https://cw.fel.cvut.cz/wiki/help/common/robot_bosch) and [CRS93/CRS97](https://cw.fel.cvut.cz/wiki/help/common/robot_crs) robots