Pi-puck

From GCtronic wiki
Revision as of 05:56, 15 April 2019 by WikiSysop (talk | contribs) (Running the ROS node)
Jump to: navigation, search

1 Overview


Features:

  • Raspberry Pi zero W (rPi) connected to the robot via I2C
  • interface between the robot base camera and the rPi via USB
  • 1 digital microphone and 1 speaker
  • USB hub connected to the rPi with 2 free ports
  • uUSB cable to the rPi uart port. Also ok for charging
  • 2 chargers. 1 for the robot battery and 1 for the auxiliary battery on top of the extension
  • charging contact points in front for automatic charging. External docking station available
  • several extension options. 6 i2C channels, 2 ADC inputs
  • several LED to show the status of the rPi and the power/chargers

2 System

The system is based on Raspbian Stretch and can be downloaded from the following link gctronic-stretch-ros-kinetic-opencv3.4.1.img.tar.gz.

user/pw: pi/raspberry
The system starts in console mode, to switch to desktop (LXDE) mode issue the command startx.

When booting the first time, the first thing to do is expanding the file system in order to use all the available space on the micro sd:
1. sudo raspi-config
2. Select Advanced Options and then Expand Filesystem
3. reboot

2.1 Installed software

  • ROS Kinetic
  • OpenCV 3.4.1
  • zram
  • SSH

2.2 Startup configuration

The following scripts need to be executed at each startup, alternatively you can set to run them automatically at startup:

  • /home/pi/i2c_enable
this is neeeded to enable the I2C bus
  • sudo python3 /home/pi/camera-test.py
this is needed to correctly configure the camera of the robot

3 Robot configuration

The e-puck2 robot must be programmed with the following firmware e-puck2_main-processor_gumstix.elf and the selector must be placed in position 10.
This is needed in order to exchange data with the robot through I2C.

4 ROS

4.1 Initial configuration

The ROS workspace is located in ~/rosbots_catkin_ws/
The e-puck2 ROS driver is located in ~/rosbots_catkin_ws/src/epuck_driver_cpp/
Follow the steps in the section Robot configuration, only once.
Follow the steps in the section System: Startup configuration, each time the system is powered on.
The PC (if used) and the Pi-puck extension are supposed to be configured in the same network.

4.2 Running roscore

roscore can be launched either from the PC or directly from the Pi-puck.
Before starting roscore, open a terminal and issue the following commands:

where roscore-ip is the IP of the machine that runs roscore
Then start roscore by issueing roscore.

4.3 Running the ROS node

Before starting the e-puck2 ROS node on the Pi-puck, issue the following commands:

where pipuck-ip is the IP of the Pi-puck extension and roscore-ip is the IP of the machine that runs roscore (can be the same IP if roscore runs directly on the Pi-puck).

To start the e-puck2 ROS node issue the command:
roslaunch epuck_driver_cpp epuck_minimal.launch debug_en:=true ros_rate:=20

If you are using a PC, then you can start rviz:

  • in a terminal issue the command rviz rviz
  • open the configuration file named single_epuck_driver_rviz.rviz you can find in epuck_driver_cpp/config/ directory

The following graph shows all the topics published by the e-puck2 driver node:
Click to enlarge (Python)

4.4 Get the source code

The last version of the e-puck2 ROS node can be downloaded from the git: git clone -b e-puck2 https://github.com/gctronic/epuck_driver_cpp.git

5 OpenCV

5.1 Blob tracking

A simple demo was developed to track an orange blob. It is thought to be run with the omnivision extension. The robot rotate in place towards the target when it finds one.
The code can be downloaded from the following repo: git clone https://github.com/e-puck2/e-puck2_pi_blob-tracking.git