From bd64a1ac1a01a247a9cbab46759c02aa9086cb8f Mon Sep 17 00:00:00 2001 From: Vivek Ray Date: Sat, 28 Feb 2026 11:48:04 +0530 Subject: [PATCH 1/3] software:rockchip:added software dir structure --- source/index.rst | 8 ++ .../axon/axon-video/video-input/mipi.rst | 111 +++++++++--------- .../software/qualcomm/qualcomm-home.rst | 7 ++ .../vicharak_sbcs/software/rockchip/obs.rst | 6 + .../software/rockchip/rockchip-home.rst | 11 ++ .../vicharak_sbcs/software/rockchip/ros.rst | 6 + 6 files changed, 93 insertions(+), 56 deletions(-) create mode 100644 source/vicharak_sbcs/software/qualcomm/qualcomm-home.rst create mode 100644 source/vicharak_sbcs/software/rockchip/obs.rst create mode 100644 source/vicharak_sbcs/software/rockchip/rockchip-home.rst create mode 100644 source/vicharak_sbcs/software/rockchip/ros.rst diff --git a/source/index.rst b/source/index.rst index c39be53..1298dd5 100644 --- a/source/index.rst +++ b/source/index.rst @@ -49,6 +49,14 @@ applications including IoT, AI and multimedia processing. Vaaman SBC Axon SBC +.. toctree:: + :titlesonly: + :caption: Software + :maxdepth: 5 + + Rockchip + Qualcomm + .. toctree:: :glob: :titlesonly: diff --git a/source/vicharak_sbcs/axon/axon-video/video-input/mipi.rst b/source/vicharak_sbcs/axon/axon-video/video-input/mipi.rst index be9a4bb..6fcd7fc 100644 --- a/source/vicharak_sbcs/axon/axon-video/video-input/mipi.rst +++ b/source/vicharak_sbcs/axon/axon-video/video-input/mipi.rst @@ -79,62 +79,6 @@ How to Attach Camera to Axon .. image:: /_static/images/rk3588-axon/axon-camera-6.gif :width: 40% -Camera Interface PCBs ---------------------- - -2 Lane Alpha PCB ( Rpi compatible ) -==================================== - -.. image:: /_static/images/rk3588-axon/axon-camera-alpha.webp - :width: 30% - -Verify Camera Connection and Detection: ---------------------------------------- - -1. Open a terminal by clicking ctrl+alt+t - -2. Install v4l2 tools - -.. code-block:: bash - - sudo apt install v4l-utils - -3. Check if the camera device is detected: - -.. code-block:: bash - - v4l2-ctl --list-devices - -4. You should see output listing all the camera devices and sensors (look for rkisp_mainpath): - -.. code-block:: text - - rkisp_mainpath (platform:rkisp0-vir0): - /dev/video22 - /dev/video23 - /dev/video24 - /dev/video25 - /dev/video26 - /dev/video27 - /dev/video28 - /dev/media2 - - rkisp_mainpath (platform:rkisp1-vir0): - /dev/video31 - /dev/video32 - /dev/video33 - /dev/video34 - /dev/video35 - /dev/video36 - /dev/video37 - /dev/media3 - -.. note:: - - Here, the first device below rkisp_mainpath that is /dev/video22 and /dev/video31 are your camera devices. Similarly, your cameras will be listed here, note down the device name like video22 and video31. - -5. If you got the device name and number then it confirms that axon has detected the Camera. If it is not visible, check the connection and pins again. - Enable Overlays In Axon ------------------------ @@ -216,6 +160,61 @@ Enable Overlays In Axon .. danger:: Make sure that whenever you are going to connect Camera, Device should be power off. +Camera Interface PCBs +--------------------- + +2 Lane Alpha PCB ( Rpi compatible ) +==================================== + +.. image:: /_static/images/rk3588-axon/axon-camera-alpha.webp + :width: 30% + +Verify Camera Connection and Detection: +--------------------------------------- + +1. Open a terminal by clicking ctrl+alt+t + +2. Install v4l2 tools + +.. code-block:: bash + + sudo apt install v4l-utils + +3. Check if the camera device is detected: + +.. code-block:: bash + + v4l2-ctl --list-devices + +4. You should see output listing all the camera devices and sensors (look for rkisp_mainpath): + +.. code-block:: text + + rkisp_mainpath (platform:rkisp0-vir0): + /dev/video22 + /dev/video23 + /dev/video24 + /dev/video25 + /dev/video26 + /dev/video27 + /dev/video28 + /dev/media2 + + rkisp_mainpath (platform:rkisp1-vir0): + /dev/video31 + /dev/video32 + /dev/video33 + /dev/video34 + /dev/video35 + /dev/video36 + /dev/video37 + /dev/media3 + +.. note:: + + Here, the first device below rkisp_mainpath that is /dev/video22 and /dev/video31 are your camera devices. Similarly, your cameras will be listed here, note down the device name like video22 and video31. + +5. If you got the device name and number then it confirms that axon has detected the Camera. If it is not visible, check the connection and pins again. To use the camera(s): ----------------------------------------------------------------------- diff --git a/source/vicharak_sbcs/software/qualcomm/qualcomm-home.rst b/source/vicharak_sbcs/software/qualcomm/qualcomm-home.rst new file mode 100644 index 0000000..72d848b --- /dev/null +++ b/source/vicharak_sbcs/software/qualcomm/qualcomm-home.rst @@ -0,0 +1,7 @@ +#################################### +Qualcomm +#################################### + +.. note:: + + Coming soon! This documentation is under development. diff --git a/source/vicharak_sbcs/software/rockchip/obs.rst b/source/vicharak_sbcs/software/rockchip/obs.rst new file mode 100644 index 0000000..50918fb --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/obs.rst @@ -0,0 +1,6 @@ +OBS (Open Broadcast Software) Studio +===================================== + +.. note:: + + Coming soon! This documentation is under development. diff --git a/source/vicharak_sbcs/software/rockchip/rockchip-home.rst b/source/vicharak_sbcs/software/rockchip/rockchip-home.rst new file mode 100644 index 0000000..95f5449 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/rockchip-home.rst @@ -0,0 +1,11 @@ +#################################### +Rockchip +#################################### + +Vicharak supports a wide range of Rockchip-based boards and provides comprehensive software support to simplify development and deployment. + +.. toctree:: + :maxdepth: 1 + + OBS + ROS diff --git a/source/vicharak_sbcs/software/rockchip/ros.rst b/source/vicharak_sbcs/software/rockchip/ros.rst new file mode 100644 index 0000000..15f2e00 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/ros.rst @@ -0,0 +1,6 @@ +ROS2 (Robot Operating System) +============================= + +.. note:: + + Coming soon! This documentation is under development. From 0839d4fe412cda560eea72109db17cc2df9580b7 Mon Sep 17 00:00:00 2001 From: Vivek Ray Date: Mon, 2 Mar 2026 11:54:10 +0530 Subject: [PATCH 2/3] software: ros2 : added setup and usage docs for vicharak-ros2 tool --- .../images/software/software-ros2-logo.webp | Bin 0 -> 14200 bytes .../images/software/software-ros2-menu01.webp | Bin 0 -> 13740 bytes .../images/software/software-ros2-menu02.webp | Bin 0 -> 11728 bytes .../vicharak_sbcs/software/rockchip/ros.rst | 160 +++++++++++++++++- 4 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 source/_static/images/software/software-ros2-logo.webp create mode 100644 source/_static/images/software/software-ros2-menu01.webp create mode 100644 source/_static/images/software/software-ros2-menu02.webp diff --git a/source/_static/images/software/software-ros2-logo.webp b/source/_static/images/software/software-ros2-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..d9e873b410a14cfd41bf8bad27ba04f02136a0e7 GIT binary patch literal 14200 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�uMU?m;zuX$)C1r$ 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 RJwXo_lT`A5y!YR%{|51>l)eA} literal 0 HcmV?d00001 diff --git a/source/vicharak_sbcs/software/rockchip/ros.rst b/source/vicharak_sbcs/software/rockchip/ros.rst index 15f2e00..809b744 100644 --- a/source/vicharak_sbcs/software/rockchip/ros.rst +++ b/source/vicharak_sbcs/software/rockchip/ros.rst @@ -1,6 +1,164 @@ ROS2 (Robot Operating System) ============================= +The Robot Operating System (ROS) is a set of powerful open-source software libraries and tools that help developers build robotic applications. It provides device drivers, state-of-the-art algorithms, distributed communication, and developer tools that simplify robotics software development. + +.. image:: /_static/images/software/software-ros2-logo.webp + :width: 70% + +ROS2 Support at Vicharak +------------------------ + +Vicharak provides **native and wrapped ROS2 support** across multiple environments through a unified tool called: **vicharak-ros2** + +``vicharak-ros2`` is a universal installation and management layer tool designed to: + +- Run ROS2 in **any environment** +- Simplify dependency handling +- Provide reproducible setups +- Support multiple ROS2 distributions +- Work across Linux distros and SBCs + +The objective is simple: + +``Run ROS2 anywhere, without setup friction.`` + +.. note:: + + **Ubuntu & RHEL users:** ROS2 can be installed natively following official documentation on your systems. However, **vicharak-ros2** is recommended for other distros or if you don't want to manage dependency yourself, want simplified management, consistent and quick setup. + +Why ROS2 on Vicharak SBCs? +-------------------------- + +ROS2 applications often require reliable compute performance, stable Linux environments, and predictable dependency handling — all of which are core strengths of Vicharak boards. + +Vicharak SBCs are designed to be: + +- Powerful enough for robotics workloads suitable for real-time ROS2 nodes +- Optimized for Linux development +- Hardware-friendly ideal for robotics integrations +- Efficient and portable + + +Vicharak-Ros2 +-------------- + +Currently Available Options +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +**vicharak-ros2** enables you to install any combination of these distributions and packages: + +.. list-table:: + :widths: 25 25 25 25 + :header-rows: 1 + + * - Distribution + - **ros-core** + - **ros-base** + - **Other** + * - **Humble** + - ✓ + - ✓ + - Manual Installation + * - **Jazzy** + - ✓ + - ✓ + - Manual Installation + +.. tip:: + + **ros-base** is recommended for most users as it includes essential tools and development support. You can install additional packages manually after setup. + + +Getting Started +---------------- + +Install using .deb Package +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1. Download the package + + +2. Install the package + + .. code-block:: bash + + sudo apt install ./vicharak-ros2-all.deb + +3. Run the installer + + .. code-block:: bash + + sudo vicharak-ros2-install + .. note:: - Coming soon! This documentation is under development. + **Installation taking too long?** If the installation process seems stalled, you can safely interrupt it with **Ctrl+C** and rerun: **sudo vicharak-ros2-install** + +4. Select your preferred ROS2 distribution and package profile: + + .. image:: /_static/images/software/software-ros2-menu01.webp + :width: 70% + + .. image:: /_static/images/software/software-ros2-menu02.webp + :width: 70% + +5. Launch ROS2 Environment + + .. code-block:: bash + + sudo ros2-shell + + This opens the configured ROS2 environment. + +Uninstall +~~~~~~~~~ + +1. Exit the ros2-shell + +.. code-block:: bash + + exit + +2. Remove Vicharak-Ros2 + +.. code-block:: bash + + sudo apt remove vicharak-ros2 + +Let's try some examples +----------------------- + +Talker and Listener +~~~~~~~~~~~~~~~~~~~ + +If you installed **ros-base**, you can test ROS2 with built-in demo nodes. + +**Terminal 1 - Run the talker (C++):** + +.. code-block:: bash + + sudo apt install ros-humble-demo-nodes-cpp + +.. code-block:: bash + + ros2 run demo_nodes_cpp talker + +**Terminal 2 - Run the listener (Python):** + +.. code-block:: bash + + sudo apt install ros-humble-demo-nodes-py + +.. code-block:: bash + + ros2 run demo_nodes_py listener + +**Expected Output:** + +You should see the talker publishing messages and the listener receiving them. This verifies both C++ and Python ROS2 APIs are working correctly. + +.. tip:: + + This basic example confirms your ROS2 installation is set up correctly. You can now explore more complex examples like running the talker in one in one board and listener in other board. + From 8b6f9a922e48d789153e2e179e73a556041ed946 Mon Sep 17 00:00:00 2001 From: Vivek Ray Date: Tue, 3 Mar 2026 14:46:02 +0530 Subject: [PATCH 3/3] software: rockchip: added more software for rockchip --- .../software/rockchip/axon/axon-home.rst | 12 +++++ .../software/rockchip/{ => axon}/ros.rst | 20 ++++---- .../rockchip/axon/tailscale-support.rst | 1 + .../software/rockchip/axon/vicharak-dao | 1 + .../vicharak_sbcs/software/rockchip/obs.rst | 6 --- .../software/rockchip/rockchip-home.rst | 51 +++++++++++++++++-- .../software/rockchip/vaaman/periplex | 1 + .../software/rockchip/vaaman/vaaman-home.rst | 10 ++++ .../vaaman/vaaman-periplex/index.rst | 2 +- 9 files changed, 83 insertions(+), 21 deletions(-) create mode 100644 source/vicharak_sbcs/software/rockchip/axon/axon-home.rst rename source/vicharak_sbcs/software/rockchip/{ => axon}/ros.rst (82%) create mode 120000 source/vicharak_sbcs/software/rockchip/axon/tailscale-support.rst create mode 120000 source/vicharak_sbcs/software/rockchip/axon/vicharak-dao delete mode 100644 source/vicharak_sbcs/software/rockchip/obs.rst create mode 120000 source/vicharak_sbcs/software/rockchip/vaaman/periplex create mode 100644 source/vicharak_sbcs/software/rockchip/vaaman/vaaman-home.rst diff --git a/source/vicharak_sbcs/software/rockchip/axon/axon-home.rst b/source/vicharak_sbcs/software/rockchip/axon/axon-home.rst new file mode 100644 index 0000000..7ed95c8 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/axon/axon-home.rst @@ -0,0 +1,12 @@ +#################################### +Axon +#################################### + +Comprehensive documentation of Software for Axon-based development and deployment. + +.. toctree:: + :maxdepth: 1 + + ROS + Vicharak DAO + Tailscale diff --git a/source/vicharak_sbcs/software/rockchip/ros.rst b/source/vicharak_sbcs/software/rockchip/axon/ros.rst similarity index 82% rename from source/vicharak_sbcs/software/rockchip/ros.rst rename to source/vicharak_sbcs/software/rockchip/axon/ros.rst index 809b744..8d48118 100644 --- a/source/vicharak_sbcs/software/rockchip/ros.rst +++ b/source/vicharak_sbcs/software/rockchip/axon/ros.rst @@ -1,10 +1,10 @@ ROS2 (Robot Operating System) ============================= -The Robot Operating System (ROS) is a set of powerful open-source software libraries and tools that help developers build robotic applications. It provides device drivers, state-of-the-art algorithms, distributed communication, and developer tools that simplify robotics software development. +The Robot Operating System (`ROS `_) is a set of powerful open-source software libraries and tools that help developers build robotic applications. It provides device drivers, state-of-the-art algorithms, distributed communication, and developer tools that simplify robotics software development. .. image:: /_static/images/software/software-ros2-logo.webp - :width: 70% + :width: 80% ROS2 Support at Vicharak ------------------------ @@ -25,7 +25,7 @@ The objective is simple: .. note:: - **Ubuntu & RHEL users:** ROS2 can be installed natively following official documentation on your systems. However, **vicharak-ros2** is recommended for other distros or if you don't want to manage dependency yourself, want simplified management, consistent and quick setup. + **Ubuntu users:** ROS2 can be installed natively following official documentation on your systems. However, **vicharak-ros2** is recommended for other distros or if you don't want to manage dependency yourself, want simplified management, consistent and quick setup. Why ROS2 on Vicharak SBCs? -------------------------- @@ -83,7 +83,7 @@ Install using .deb Package .. code-block:: bash - sudo apt install ./vicharak-ros2-all.deb + sudo apt install ./vicharak-ros2.deb 3. Run the installer @@ -111,16 +111,16 @@ Install using .deb Package This opens the configured ROS2 environment. -Uninstall -~~~~~~~~~ +6. Exit the ros2-shell -1. Exit the ros2-shell + .. code-block:: bash -.. code-block:: bash + exit - exit +Uninstall +~~~~~~~~~ -2. Remove Vicharak-Ros2 +Remove Vicharak-Ros2 .. code-block:: bash diff --git a/source/vicharak_sbcs/software/rockchip/axon/tailscale-support.rst b/source/vicharak_sbcs/software/rockchip/axon/tailscale-support.rst new file mode 120000 index 0000000..72650a0 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/axon/tailscale-support.rst @@ -0,0 +1 @@ +../../../axon/axon-os-configuration/tailscale-support.rst \ No newline at end of file diff --git a/source/vicharak_sbcs/software/rockchip/axon/vicharak-dao b/source/vicharak_sbcs/software/rockchip/axon/vicharak-dao new file mode 120000 index 0000000..68484a9 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/axon/vicharak-dao @@ -0,0 +1 @@ +../../../axon/axon-os-configuration/vicharak-dao \ No newline at end of file diff --git a/source/vicharak_sbcs/software/rockchip/obs.rst b/source/vicharak_sbcs/software/rockchip/obs.rst deleted file mode 100644 index 50918fb..0000000 --- a/source/vicharak_sbcs/software/rockchip/obs.rst +++ /dev/null @@ -1,6 +0,0 @@ -OBS (Open Broadcast Software) Studio -===================================== - -.. note:: - - Coming soon! This documentation is under development. diff --git a/source/vicharak_sbcs/software/rockchip/rockchip-home.rst b/source/vicharak_sbcs/software/rockchip/rockchip-home.rst index 95f5449..bb33f82 100644 --- a/source/vicharak_sbcs/software/rockchip/rockchip-home.rst +++ b/source/vicharak_sbcs/software/rockchip/rockchip-home.rst @@ -2,10 +2,53 @@ Rockchip #################################### -Vicharak supports a wide range of Rockchip-based boards and provides comprehensive software support to simplify development and deployment. +Vicharak supports a two Rockchip-based boards. + +.. grid:: 1 1 2 2 + :gutter: 2 + + .. grid-item-card:: Axon + + Developer-focused software documentation for building and deploying on Axon. + + .. grid:: 1 2 2 2 + :gutter: 1 + + .. grid-item-card:: ROS2 + :link: axon/ros + :link-type: doc + + Robot Operating System support + + .. grid-item-card:: Vicharak DAO + :link: axon/vicharak-dao/index + :link-type: doc + + DAO tools and docs + + .. grid-item-card:: Tailscale + :link: axon/tailscale-support + :link-type: doc + + + VPN and networking + + .. grid-item-card:: Vaaman + + Comprehensive software documentation for Vaaman-based development. + + .. grid:: 1 + :gutter: 1 + + .. grid-item-card:: Periplex + :link: vaaman/periplex/index + :link-type: doc + + Periplex platform docs .. toctree:: - :maxdepth: 1 + :hidden: + :maxdepth: 2 - OBS - ROS + axon/axon-home + vaaman/vaaman-home \ No newline at end of file diff --git a/source/vicharak_sbcs/software/rockchip/vaaman/periplex b/source/vicharak_sbcs/software/rockchip/vaaman/periplex new file mode 120000 index 0000000..965ee5f --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/vaaman/periplex @@ -0,0 +1 @@ +../../../vaaman/vaaman-periplex \ No newline at end of file diff --git a/source/vicharak_sbcs/software/rockchip/vaaman/vaaman-home.rst b/source/vicharak_sbcs/software/rockchip/vaaman/vaaman-home.rst new file mode 100644 index 0000000..0d054e9 --- /dev/null +++ b/source/vicharak_sbcs/software/rockchip/vaaman/vaaman-home.rst @@ -0,0 +1,10 @@ +#################################### +Vaaman +#################################### + +Comprehensive documentation for Vaaman-based development and deployment. + +.. toctree:: + :maxdepth: 1 + + Periplex diff --git a/source/vicharak_sbcs/vaaman/vaaman-periplex/index.rst b/source/vicharak_sbcs/vaaman/vaaman-periplex/index.rst index 9b2a2f5..7d7bf6b 100644 --- a/source/vicharak_sbcs/vaaman/vaaman-periplex/index.rst +++ b/source/vicharak_sbcs/vaaman/vaaman-periplex/index.rst @@ -10,7 +10,7 @@ Periplex is a 360-degree solution—it integrates fundamental Linux drivers, FPG Without Periplex, even FPGA developers would struggle for months to build a solution like this. Periplex reduces that effort to seconds. And the best part? It does the same for non-FPGA developers as well. -.. image:: ../../../_static/images/rk3399-vaaman/periplex_flowchart.webp +.. image:: /_static/images/rk3399-vaaman/periplex_flowchart.webp :width: 100% :align: center