I thought I’d just post these pics and a short description. I’ll add more commentary later.
I’m running ROS2 galactic with Ubuntu 20.04.
The camera will show an image in rviz2. The TOF sensor will show a point cloud in rviz2. I’ve run the nav2 stack, mapped a room and had it follow a path.
I really like using ROS2. I can drive it around with a joystick or the keyboard.
Shoutout to Josh for the inspiration and well done videos!
Jetson Nano B01
Waveshare Wireless-AC8265 module for Nano
Adafruit Feather M4 Express (Arduino)
DC Motor + Stepper FeatherWing Add-on
BEMONOC 25GA370 DC Encoder Metal Gearmotor
Slamtec RPLIDAR A1M8
SparkFun 9DoF IMU Breakout-ICM-20948
SparkFun Qwiic ToF Imager -VL53L5CX
INIU Power Bank, LED Display 10000mAh Portable Charger
HDMI Dummy Plug (for Nomachine remote access)
The chassis is 3D printed with PLA. I have a Qidi X-MAX printer that I really like.
The wheels are 3D printed and I use rubber bands as the tires.
I use the Arduino to handle the motor PID functions and other details like battery level.
I looked into ROS for Arduino but it seemed easier to write a simple communications driver and a ROS node.
The Nano is a great little device but I’ll probably swap it for a Jetson Xavier I have that runs a lot faster with the same form factor. Since the Xavier needs more power I’ll need to redo the battery configuration.
Ubuntu 22.04? ROS2 Humble? I wish Nvidia would officially support these releases in Jetpack.
Visual SLAM with two cameras
Use the TOF sensor to help with object/boundary detection
Thanks Josh. I like how Sparkfun makes it easy to daisy chain the little sensor boards. I’ve only gotten so far as to run a node and display a pointcloud in rviz. I followed Lou Amadio’s tutorial to get started.
I am looking through some of your projects ros_arduino bridge, serial_motor_demo as I need a better way to have ROS talk to the Arduino that controls the motors.
I also finally swapped the Jetson Nano for a Jetson Xavier and NAV2 runs much better!
I would love to see a video on Docker. I know docker basics but it still feels easier to run everything natively without containers. Perhaps more study is what’s really needed for me.
Nice! Yeah Docker can be a bit confusing, I don’t use it as much as I should and am only just starting to get a bit more fluent with it due to this same problem at work (client has a Jetson but needs to run new stuff on it).
And at home I’ve been using it the “wrong” way like a VM, where I keep a container “alive” and just start/stop it as needed.
Yeah basically if you use Jetsons with ROS you have to use docker. There is no way around it because nVidia don’t support recent Ubuntu builds and you hit the whole which Ubuntu for which ROS for which Jetson conundrum… and docker is the only way out of it… or sell a kidney to buy an AGX just to run any Ubuntu more recent than 18.04.
Thanks Dingo_aus. I understand the issue is Nvidia not supporting 22.04 with Jetpack but you can run a container with Humble on Ubuntu 20.04 on the Jetson. If you’re really comfortable working in docker, then it’s a moot point but it’s also one more thing to have to learn before you can use Humble on a Jetson.
Thanks @MarcW for pointing me to that tutorial. I am following this now to get docker and ros2 on my nano.
It is my first time with docker and I am getting confused between the polyhobbyist’s tutorial jetbot repo and the my_bot repo I made from Josh’s. where in the folder structure should the docker setup files go?
Docker video is definitely coming haha, I think this is one of my most requested topics.
There are MANY different ways you can set up docker which makes it confusing for new users.
The most basic way, the Dockerfile can sort of go anywhere (probably not the root of your workspace, either in a subdirectory or somewhere else on your computer). You build it and then it’s installed to your system and you can run it from your directory, and you need to mount your files in.
You can also use Docker Compose (with a docker-compose.yaml file, probably in your workspace) to help tidy up this process.
The simplest, but also sort of more complex because it’s hiding things behind the scenes), is to use VS Code dev containers, either with a custom devcontainer.json or using ijnek’s new template . In this case the .devcontainer directory goes/ends up in your workspace.