This project explores modern mobile autonomous robotics prototyping. Robotic platform is built with LEGO Mindstorm set with EV3 Brick as motor and sensor controller and NVIDIA Jetson Nano as more powerful computer with accelerated neural networks on CUDA. ROS Melodic is being used as software platform.
- Evaluate current state of the art of mobile autonomous robotics
- Evaluate of NVIDIA Jetson Platform to mobile robotics
- Evaluate of ROS Melodic
First step of this project is to get robot up and running. We would assemble robot platform using LEGO, flash SD cards for EV3 Brick and Jetson Nano. In the end we will be able to control robot using keyboard.
- Flash Jetson Nano SD Image to 16+ GB MicroSD CARD
- Flash Yocto Linux on 8+ SD Card for LEGO EV3 Brick
- Assemble Crawler Robot following instructions. Stop at page 74.
- Boot EV3. Connect keyboard and login as root (no password). Connect EV3 to Jetson NANO via USB. Type gadget_on to enable USB networking.
- Set up USB Network interface on Jetson Nano using manual networking setting. Set IP to 192.168.10.X
- EV3 brick will be available on 192.168.10.123. Add
192.168.10.123 ev3dev
to /etc/hosts. - Install ROS Melodic on Jetson Nano via aptitude
- Start roscore on Jetson Nano to start ros master.
- Run
ros_master_set 192.168.10.1
on EV3 ssh. Then runev3_manager
to start ros ev3 node - Copy this repo's src to $HOME/catkin/src
- Run
cd $HOME/catkin/; catkin_make
- Run
roslaunch ./motors.launch ev3_hostname:=ev3dev
in one tab - Run
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
to start remote controller via keyboard
At this point we will be able to control robot with keyboard.
Robot has 3 joint which are controller through ev3_controller: Joint_A, Joint_B and Joint_C. Joints A and B are EV3 Large Servo Motor and joint C is Medium Servo Motor
EV3_manager is a ROS node running on EV3. We will be using it to control robot movement. EV3 has four controller ports to which servos can be attached and four sensor ports. We have large servos attached to ports C and B and medium servo attached to port A. EV3_manager exposes these servos with [twist] interface (https://docs.ros.org/api/geometry_msgs/html/msg/Twist.html) interface.
# This expresses velocity in free space broken into its linear and angular parts.
Vector3 linear
Vector3 angular
- ROS Robot With Lego EV3 and Docker for ev3 control ros module