Jetbot ROS

From ESS-WIKI
Jump to: navigation, search

Linux Version

JetPack 4.5.1 / Ubuntu 18.04

Use: jetson-nx-jp451-sd-card-image

Note: the process below will likely exceed the disk capacity of a 16GB filesystem,so a larger SD card should be used. ( Advice more than 64GB )

Install ROS

Install ROS melodic

# enable all Ubuntu packages:
$ sudo apt-add-repository universe
$ sudo apt-add-repository multiverse
$ sudo apt-add-repository restricted

# add ROS repository to apt sources
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

# install ROS Base
$ sudo apt-get update
$ sudo apt-get install ros-melodic-ros-base

# add ROS paths to environment
$ sudo sh -c 'echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc'

Close and restart the terminal.

Install python and adafruit libraries

# pip should be installed
$ sudo apt-get install python-pip

# install Adafruit libraries
$ pip install Adafruit-MotorHAT
$ pip install Adafruit-SSD1306

Add i2c too user

$ sudo usermod -aG i2c $USER

Create The Catkin Workspace

Create a ROS Catkin workspace to contain our ROS packages.

# create the catkin workspace
$ mkdir -p ~/workspace/catkin_ws/src
$ cd ~/workspace/catkin_ws
$ catkin_make

# add catkin_ws path to bashrc
$ sudo sh -c 'echo "source ~/workspace/catkin_ws/devel/setup.bash" >> ~/.bashrc'

Close and open a new terminal window. Verify that your catkin_ws is visible to ROS.

$ echo $ROS_PACKAGE_PATH 
/home/nvidia/workspace/catkin_ws/src:/opt/ros/melodic/share

Install Jetbot Ros

Clone and build the jetbot_ros repo.

# git and cmake should be installed
$ sudo apt-get install git cmake

# clone the repo
$ cd ~/workspace/catkin_ws/src
$ git clone https://github.com/waveshare/jetbot_ros

# build the package
$ cd ../    # cd ~/workspace/catkin_ws
$ catkin_make

# confirm that jetbot_ros package can be found
$ rospack find jetbot_ros
/home/nvidia/workspace/catkin_ws/src/jetbot_ros

Test Jetbot

Running the ROS master

Next, let's check that the different components of the robot are working under ROS.

First open a new terminal, and start roscore.

$ roscore
Roscore
Roscore.png

Running the motors

Open a new terminal, and start the jetbot_motors node.

$ rosrun jetbot_ros jetbot_motors.py

Open a new terminal, and check jetbot_motors node is open.

$ rosnode list
$ rostopic list
Rosnode list
Rosnode list.png

Using the debug OLED

If you have an SSD1306 debug OLED on your JetBot, you can run the jetbot_oled node to display system information and user-defined text.

$ rosrun jetbot_ros jetbot_oled.py

By default, jetbot_oled will refresh the display every second with the latest memory usage, disk space, and IP addresses.

OLED print
Ros oled.jpg

Remote Control Jetbot

Use the keyboard to control jetbot movement

Open a new terminal to run teleop_key node.After the program is running, input W, S, D, A four keys on the keyboard to control the jetbot to move forward, backward, right, and left.

$ rosrun jetbot_ros teleop_key.py

Can see the running action from the jetbot_motors node terminal.

Motors node
Motors node.png

Create Lidar Scan Node

Let’s create a package.

$ cd ~/catkin_ws/src
$ catkin_create_pkg laser_values rospy
$ cd laser_values
$ mkdir launch

Add a python script under src with the following code.

import rospy
from sensor_msgs.msg import LaserScan

def callback(msg):
    print len(msg.ranges)

def callback(msg):
    # values at 0 degree
    print msg.ranges[0]

rospy.init_node('scan_values')
sub = rospy.Subscriber('/scan', LaserScan, callback)
rospy.spin()

Then create a launch file under lunch directory to launch the script.

<launch>
    <node pkg="laser_values" type="scan.py" name="scan_values" output="screen">
        
    </node>
</launch>

First open a new terminal, and start roscore.

$ roscore

Open a new terminal, and start the laser.launch node.

$ roslaunch laser_values laser.launch

Install Rviz

Install rviz by entering the following commands in the terminal.

$ sudo apt update
$ sudo apt install rviz

First open a new terminal, and start roscore.

$ roscore

Open a new terminal, and start the rviz node.

$ rosrun rviz rviz

Install RP Lidar SDK

First install rplidar sdk.

$ cd rplidar_sdk_v1.X.X/sdk/sdk/
$ make
$ ls /dev/ttyUSB*

Check the ttyusb0, it's rplidar work.

ttyuUSB0
Ttyusb0.png

Setting com port permission.

$ sudo chmod 666 /dev/ttyUSB0

Jetbot SLAM

Clone and build the rplidar_ros repo.

$ cd ~/catkin_ws/src
$ git clone -b slam https://github.com/robopeak/rplidar_ros
$ cd ~/catkin_ws
$ catkin_make

Preview the point cloud.

$ roslaunch rplidar_ros view_rplidar.launch
Point cloud
Point cloud.png

Clone and build the hector_slam repo.

$ cd ~/catkin_ws/src
$ git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
$ cd ~/catkin_ws
$ catkin_make

Preview the SLAM.

$ roslaunch rplidar_ros view_slam.launch
SLAM
SLAM.png