{"id":14967246,"url":"https://github.com/advrhumanoids/nicla_vision_ros2","last_synced_at":"2025-10-13T04:35:37.847Z","repository":{"id":242362623,"uuid":"808231917","full_name":"ADVRHumanoids/nicla_vision_ros2","owner":"ADVRHumanoids","description":"ROS2 interface for the Arduino Nicla Vision board","archived":false,"fork":false,"pushed_at":"2025-06-30T14:45:43.000Z","size":1329,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-04T21:25:17.212Z","etag":null,"topics":["arduino","gazebo","micropython","nicla-vision","ros2","sensors-data-collection"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ADVRHumanoids.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-30T16:39:06.000Z","updated_at":"2025-06-30T14:45:47.000Z","dependencies_parsed_at":"2024-06-02T15:03:50.078Z","dependency_job_id":"4c3dba50-55a0-4b7e-a4ec-5d202c202812","html_url":"https://github.com/ADVRHumanoids/nicla_vision_ros2","commit_stats":null,"previous_names":["advrhumanoids/nicla_vision_ros2"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ADVRHumanoids/nicla_vision_ros2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fnicla_vision_ros2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fnicla_vision_ros2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fnicla_vision_ros2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fnicla_vision_ros2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ADVRHumanoids","download_url":"https://codeload.github.com/ADVRHumanoids/nicla_vision_ros2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fnicla_vision_ros2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279013683,"owners_count":26085390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","gazebo","micropython","nicla-vision","ros2","sensors-data-collection"],"created_at":"2024-09-24T13:37:41.715Z","updated_at":"2025-10-13T04:35:37.841Z","avatar_url":"https://github.com/ADVRHumanoids.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# :rocket: Nicla Vision ROS2 package :rocket: \nA ROS2 interface for the Arduino Nicla Vision board\n\n[![Build Status](https://build.ros2.org/buildStatus/icon?job=Jdev__nicla_vision_ros2__ubuntu_noble_amd64\u0026subject=Jazzy%20Build)](https://build.ros2.org/job/Jdev__nicla_vision_ros2__ubuntu_noble_amd64/)\n[![Build Status](https://build.ros2.org/buildStatus/icon?job=Hdev__nicla_vision_ros2__ubuntu_jammy_amd64\u0026subject=Humble%20Build)](https://build.ros2.org/job/Hdev__nicla_vision_ros2__ubuntu_jammy_amd64/)\n\n![Alt Text](assets/Nicla_ROSpkg_Architecture.png)\n\n-------------------\n\n## Description\n\nThis ROS package enables the [Arduino Nicla Vision](https://docs.arduino.cc/hardware/nicla-vision/) board to be ready-to-use in the ROS world! :boom:\n\nThe implemented architecture is described in the above image: the Arduino Nicla Vision board streams the sensors data to a ROS-running machine through TCP/UDP socket. This package will be running on the ROS-running machine, allowing to deserialize the received info, and stream it in the corresponding ROS topics \n\nHere a list of the available sensors with their respective ROS topics:\n- **2MP color camera** streams on\n    - `/nicla/camera/camera_info` \n    - `/nicla/camera/image_raw`\n    - `/nicla/camera/image_raw/compressed` \n- **Time-of-Flight (distance) sensor** streams on:\n    - `/nicla/tof`\n- **Microphone** streams on:\n    - `/nicla/audio` \n    - `/nicla/audio_info`\n    - `/nicla/audio_stamped`\n- **Imu** streams on:\n    - `/nicla/imu`\n\nThe user can easily configure this package, by launch parameters, to receive sensors data via either UDP or TCP socket connections, specifying also the socket IP address. Moreover, the user can decide which sensor to be streamed within the ROS environment. \nIn this repository you can find the Python code optimised for receiving the data by the board, and subsequently publishing it through ROS topics.\n\n## Table of Contents \n1. [Installation](#installation)\n2. [Usage](#usage)\n3. [Package List](#package-list)\n4. [Video](#video-demonstration)\n5. [License](#license)\n6. [Cite](#citation)\n   \n-------------------\n\n# Installation\nStep-by-step instructions on how to get the ROS package running\n\nBinaries available for `humble` and `jazzy`:  \n`sudo apt install ros-$ROS_DISTRO-nicla-vision-ros`  \nFor ROS1, check https://github.com/ADVRHumanoids/nicla_vision_ros.git\n\n### Source installation\nUsual `colcon` build:\n```bash\n$ cd \u003cyour_workpace\u003e/src\n$ git clone https://github.com/ADVRHumanoids/nicla_vision_ros2.git\n$ cd \u003cyour_workpace\u003e\n$ colcon build\n$ source \u003cyour_workpace\u003e/devel/setup.bash\n```\n\n## Arduino Nicla Vision setup\nAfter having completed the setup steps in the [Nicla Vision Drivers repository](https://github.com/ADVRHumanoids/nicla_vision_drivers.git), just turn on your Arduino Nicla Vision. \nWhen you power on your Arduino Nicla Vision, it will automatically connect to the network and it will start streaming to your ROS-running machine.\n\n## Optional Audio Recognition with VOSK\nIt is possible to run a speech recognition feature directly on this module, that will then publish the recognized words on the `/nicla/audio_recognized` topic. At the moment, [VOSK](https://alphacephei.com/vosk/) is utilized. Only Arduino version is supported.\n#### VOSK setup\n1. ```pip install vosk```\n2. Download a VOSK model https://alphacephei.com/vosk/models\n3. Check the `recognition` arguments in the ```nicla_receiver.launch``` file\n\n### Note\nWe rely on the [audio_common_msgs](https://github.com/ros-drivers/audio_common/tree/master/audio_common_msgs) for the microphone data. Nevertheless, such package is not available as binary for ros2 yet. Hence, for now, we have copy-pasted the messages in this repo itself.\n\n# Usage \nFollow the below steps for enjoying your Arduino Nicla Vision board with ROS2!\n\n## Run the ROS2 package\n-  Launch the package:\n    ```bash\n    $ ros2 launch nicla_vision_ros2 nicla_receiver.launch receiver_ip:=\"x.x.x.x\" connection_type:=\"tcp/udp\" \u003coptional arguments\u003e\n    ```\n    - Set the `receiver_ip` with the IP address of your ROS-running machine.\n        You can get this IP address by executing the following command:\n        ```bash\n        $ ifconfig\n        ```\n        and taking the \"inet\" address under the \"enp\" voice.\n    - Set the socket type to be used, either TCP or UDP (`connection_type:=\"tcp\"` or `\"udp\"`).\n    \n    Furthermore, using the `\u003coptional arguments\u003e`, you can decide:\n    - which sensor to be streamed in ROS2\n\n      (e.g. `enable_imu:=true enable_range:=true enable_audio:=true enable_audio_stamped:=false enable_camera_compressed:=true enable_camera_raw:=true`), and\n    - on which socket port (default `receiver_port:=8002`).\n\n    Once you run it, you will be ready for receiving the sensors data\n\n## Simulated board \n\n- For simulating the Arduino Nicla Vision in Gazebo and Rviz:\n     ```bash\n    $ ros2 launch nicla_vision_ros2 nicla_sim.launch.py \u003coptional arguments\u003e\n    ```\n    Using the `\u003coptional arguments\u003e`, you can decide if to run the simulation in Gazebo or in Rviz, and which sensor to simulate (everything set to true as default).\n\n  ![Alt Text](assets/nicla_rviz.jpg)\n    \n## Optional Micropython Version\n**Note** this version is not supported and maintained anymore, we defitively moved to the Arduino version.  \n\nIf you want to use the micropython driver of the nicla (after setup it accordingly), simply run the `nicla_receiver.launch` with `driver_version:=micropython` as argument.\n\n# Video Demonstration\n\nhttps://github.com/ADVRHumanoids/nicla_vision_ros/assets/26459008/a3eaf921-02ea-4482-80a0-5830a338eb74\n\n\u003c!-- Raw video: https://github.com/ADVRHumanoids/nicla_vision_ros/assets/63496571/699b265c-3f6a-4a9d-8d6c-fccf6bd39227 --\u003e\n\n# Package List\nHere some useful links:\n\n- [Nicla Vision Drivers repository](https://github.com/ADVRHumanoids/nicla_vision_drivers.git)\n- [Nicla Vision ROS repository](https://github.com/ADVRHumanoids/nicla_vision_ros.git)\n- [Nicla Vision ROS2 repository](https://github.com/ADVRHumanoids/nicla_vision_ros2.git)\n\n# License\nDistributed under the Apache-2.0 License. See LICENSE for more information.\n\n# ROSCon24 Talk\n- Video https://vimeo.com/1026030054\n- Slides https://roscon.ros.org/2024/talks/Unlocking_the_Potential_of_the_Nicla_Vision_Board_with_ROS-ROS2.pdf\n\n# Citation \n:raised_hands: If you use this work or take inspiration from it, please cite:\n```bibtex\n@inproceedings {DelBianco2024,\n  author = {Del Bianco, Edoardo and Torielli, Davide and Rollo, Federico and Gasperini, Damiano and Laurenzi, Arturo and Baccelliere, Lorenzo and Muratore, Luca and Roveri, Marco and Tsagarakis, Nikos G.},\n  booktitle={2024 IEEE-RAS 23rd International Conference on Humanoid Robots (Humanoids)}, \n  title = {A High-Force Gripper with Embedded Multimodal Sensing for Powerful and Perception Driven Grasping},\n  year={2024},\n  volume={},\n  number={},\n  pages={},\n  doi={}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvrhumanoids%2Fnicla_vision_ros2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadvrhumanoids%2Fnicla_vision_ros2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvrhumanoids%2Fnicla_vision_ros2/lists"}