For presentation of already realized projects and their phases look at [theses-defend](theses-defend) and public presentations [knowbase](knowbase) pages.
For presentation of already realized projects and their phases look at [theses-defend](theses-defend) and public presentations [knowbase](knowbase) pages.
## Projects Ideas
## Projects Ideas
FA means funding already available
FA means funding already available
### NuttX on SAMV7 (SAME70) (FA)
### NuttX generic tasks
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)
- 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
[SaMoCoN](https://gitlab.fel.cvut.cz/otrees/motion/samocon) - NuttX and SAMV7 open source motion/robotic controller
### NuttX on SAMV7 (SAME70) (FA)
### NuttX on ESP32C3
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)
Information about development environment setup [ESP32C3 DevKitM-1](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/work-and-ideas/-/wikis/esp32c3-m1-nuttx)
[SaMoCoN](https://gitlab.fel.cvut.cz/otrees/motion/samocon) - NuttX and SAMV7 open source motion/robotic controller
Work on CAN/TWAI the driver by Jan Charvat in the branch [esp32c3-twai](https://github.com/charvj/incubator-nuttx/tree/esp32c3-twai)
- need for ADC with DMA update to deliver data on demand
[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).
- 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
### GNU/Linux benchmarking on VisionFive2 RISC-V board
- 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)
Resources
### NuttX on ESP32C3
- https://rvspace.org/en/home
- https://github.com/starfive-tech/VisionFive2
Information about development environment setup [ESP32C3 DevKitM-1](https://gitlab.fel.cvut.cz/otrees/risc-v-esp32/work-and-ideas/-/wikis/esp32c3-m1-nuttx)
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.
Work on CAN/TWAI the driver by Jan Charvat in the branch [esp32c3-twai](https://github.com/charvj/incubator-nuttx/tree/esp32c3-twai)
### Contribute to pysimCoder
[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).
[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).
### GNU/Linux benchmarking on VisionFive2 RISC-V board
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.
Resources
- https://rvspace.org/en/home
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)
- https://github.com/starfive-tech/VisionFive2
### NuttX on NXP i.MX RT (Teensy 4.0) and CAN FD (FA)
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.
[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.
### Contribute to pysimCoder
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.
[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).
The project goal is to bringup Teensy BSP into NuttX and test and contribute to CAN FD support.
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.
Initial work has already been done by Michal Lenc. See his [local project development repository](https://github.com/michallenc/incubator-nuttx).
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)
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).
### NuttX on NXP i.MX RT (Teensy 4.0) and CAN FD (FA)
[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.
[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.
### Test and Extend NuttX Matalab/Simulink Target
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.
[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
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).
There is space to add blocks representing CAN, sensors, motor control etc.
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).
### RTEMS on NXP i.MX RT (Teensy 4.0) and CAN FD
[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.
### RTEMS Matalab/Simulink Target
### Test and Extend NuttX Matalab/Simulink Target
### Motion Controller (PMSM and Stepper Motors) Based on i.MX RT
[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
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.
There is space to add blocks representing CAN, sensors, motor control etc.
### SAMv7 Based and Other Open Hardware Controllers for Elektroline.cz (FA)
### RTEMS on NXP i.MX RT (Teensy 4.0) and CAN FD
Design of new hardware.
### RTEMS Matalab/Simulink Target
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.
### Motion Controller (PMSM and Stepper Motors) Based on i.MX RT
But design of more less critical systems is waiting still.
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.
### MZ_APO Xilinx Zynq related projects
It can be used as base for designs tuned for individual robotic applications and other porting and testing.
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.
### SAMv7 Based and Other Open Hardware Controllers for Elektroline.cz (FA)
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)
Design of new hardware.
#### HDL Design of DMA Based Framebuffer Output to Parallel Connected LCD (FA)
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.
Filip Kučera's and Kamila Zeleňáková's [development repository](https://gitlab.fel.cvut.cz/kucerfi3/zynq-mz_apo-top)
But design of more less critical systems is waiting still.
#### HDL Design of Interface and Drivers for Stereo CMOS Camera Chips (FA)
### MZ_APO Xilinx Zynq related projects
Hardware is already available. "Only" Chips Interface HDL and Video4Linux v2 (V4L2) driver is required.
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.
#### LVDS Connected PMSM Motor Power Driver and Sensors Interface (FA)
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)
#### RISC-V Implementation working in parallel to ARM Core on MZ_APO Board (FA)
#### HDL Design of DMA Based Framebuffer Output to Parallel Connected LCD (FA)
Consider to participate in Robert Owen and professor Patterson course material preparation and test them on MZ_APO kits.
Filip Kučera's and Kamila Zeleňáková's [development repository](https://gitlab.fel.cvut.cz/kucerfi3/zynq-mz_apo-top)
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)
#### HDL Design of Interface and Drivers for Stereo CMOS Camera Chips (FA)
#### Bluetooth firmware and mobile applications to control suits illumination (FA)
Hardware is already available. "Only" Chips Interface HDL and Video4Linux v2 (V4L2) driver is required.
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.
#### LVDS Connected PMSM Motor Power Driver and Sensors Interface (FA)
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/).
#### RISC-V Implementation working in parallel to ARM Core on MZ_APO Board (FA)
We have found that open-source BLE stack for nRF52 is already in development for NuttX by others.
Consider to participate in Robert Owen and professor Patterson course material preparation and test them on MZ_APO kits.
#### Bluetooth human interface device (mechanical design, firmware, open-hardware)
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)
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.
#### Bluetooth firmware and mobile applications to control suits illumination (FA)
## Projects Open for Participation
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.
## Running projects
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/).
### QtMips Simulator to RISC-V Switch/Support Extension (FA)
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)
The switch to RISC-V [progress/status](https://github.com/cvut/qtrvsim/issues/1)
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.
Task
## Projects Open for Participation
- finish Control Status Registers support
- implement branch predictor core functionality and visualization
## Running projects
- L2 cache support
- MMU support
### QtMips Simulator to RISC-V Switch/Support Extension (FA)
The switch to RISC-V [progress/status](https://github.com/cvut/qtrvsim/issues/1)
See [http://canbus.pages.fel.cvut.cz/](http://canbus.pages.fel.cvut.cz/) for running and done projects
Task
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.
- finish Control Status Registers support
- implement branch predictor core functionality and visualization
Actual RTEMS generic CAN/CAN FD subsystem bring-up run by Michal Lenc.
- L2 cache support
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).
- MMU support
- multicore and MOESI protocol support
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).
### CAN Bus Related Projects
Porting of OrtCAN to RTEMS, extension of NuttX OrtCAN support.
See [http://canbus.pages.fel.cvut.cz/](http://canbus.pages.fel.cvut.cz/) for running and done projects
## Dormant 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.
### ORTE Data-Distribution Service (DDS) Implementation
Actual RTEMS generic CAN/CAN FD subsystem bring-up run by Michal Lenc.
ORTE implements the Real-Time Publish-Subscribe (RTPS) communication protocol.
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).
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)
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.
### Robot Control Projects
## Dormant Projects
#### PyRoCoN
### ORTE Data-Distribution Service (DDS) Implementation
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
ORTE implements the Real-Time Publish-Subscribe (RTPS) communication protocol.
https://github.com/cvut/pyrocon
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)
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
### Robot Control Projects
https://github.com/cvut/marocon
#### PyRoCoN
## Finished Projects
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