Introduction of Jetson Nano Mouse, a derivative project of JetBot and related ROS projects

Hi everyone,
I would like to introduce the Jetson Nano Mouse and its software, which is a derivative project of JetBot.
Jetson Nano Mouse is also a derivative project of the Raspberry Pi Mouse which is known as a ROS compatible robot.

The main focus of this post is to introduce the software. I will introduce two software projects.

1. jnm_jupyternotebook

The first one is jnm_jupyternotebook.
This project contains the Python package and the sample Jupyter Notebooks which is forked from GitHub - NVIDIA-AI-IOT/jetbot: An educational AI robot based on NVIDIA Jetson Nano.. Although the hardware of the Jetson Nano Mouse is different from that of the JetBot, it has been abstracted by the jnmouse Python package so that it can be operated in the same way as the jetbot Python package.

The object_following sample of jnm_jupyternotebook works on JetPack 4.5, so it may be useful for JetBot as well.

At this moment, it is only sold in Japan, so the tutorial is in Japanese. The most file in the software repository is in English for the benefit of JetBot users.

2. jetson_nano_cuda_csi_cam_ros

The second one is jetson_nano_cuda_csi_cam_ros.
This project is dedicated to delivering ROS image topics of CSI camera on Jetson devices.

about this project

This project is able to use the GPU, which is a significant improvement over rt-net/jetson_nano_csi_cam_ros, that could not deliver fast enough. It has Jetson Nano in the name, but basically it should work with TX2, Xavier and other devices.

When the GPU was not used, the CPU became the bottleneck and the delivery fps only increased to a certain value.

roslaunch jetson_nano_csi_cam jetson_csi_cam.launch width:=1080 height:=720 fps:=60

It depends on the environment, but with this change, it was possible to successfully stream at 60fps, which was previously unattainable.

roslaunch jetson_nano_cuda_csi_cam jetson_csi_cam.launch width:=1080 height:=720 fps:=60

other projects to stream video

Let me introduce some other projects. There are several related great projects to stream video from CSI cameras on Jetson devices via ROS topic.

gscam is a great project that allows you to use GStreamer to publish camera images as ROS topics (sensor_msgs/Image).
There are already some projects which uses gscam that are specific to CSI cameras for Jetson devices.

The rt-net/jetson_nano_csi_cam_ros is based on peter-moran/jetson_csi_cam. The key feature is that there is already a launch file to stream the video from the two CSI cameras.

The problem with this method is that it uses the CPU for image conversion and does not take advantage of the GPU.

As you may know as an example of GPU utilization, ros_deep_learning also includes camera/video streaming nodes for ROS and deep learning inference nodes.

I found it useful at first. However, the more I used it, the more I found something I wanted to modify.
Therefore, as a derivative project, I developed the ROS package called jetson_nano_cuda_csi_cam_ros with the following features.

  • Ability to easily flip an image
  • ROS param can be specified similarly to gscam
  • No need to install jetson-inference

jetson-inference is an awesome project, but there are cases where Jetson does not do the inference, so I made it so that it can run only with jetson-utils, which is the core of jetson-inference.

related projects

It’s not directly related, but there is also a ROS package for Gazebo, so if you are interested in this robot, please check it out.

If you have any questions, feel free to ask!
Happy Holidays :)

1 Like