Skip to content
Basheer Subei edited this page May 31, 2015 · 21 revisions

Chicago EDT's IGVC robot Scipio

#TASKS

  • Lane-Detection
  • Flag-Detection
  • Navigation
  • JAUS

Prerequisites for Testing

Line Detection

  • Your camera must be calibrated with a checkerboard pattern first. Make sure you use the correct settings. This will produce a yaml calibration file, which you must place in the folder line_detection/misc/calibration_data/, named as aptina_960.yaml for now.
  • Now, figure out what ROI (region of interest) settings you will have, and set the values in the roi.yaml file that's in the line_detection folder.
  • Run the pixel_to_coordinate_calculator node, which should write all the coordinates of each pixel (only within ROI) to a file at line_detection/misc/training_images/pixel_coordinates.npy. This file will be read by the final stage in line_detection, when we want to create a pointcloud for every line image.
  • Make sure the pointgrey camera driver has packet_size 1400 and packet_delay 0.

How to Use Scipio

ROS

  • Install ROS Hydro. We are currently porting over to Indigo, only thing that is keeping us from being completely on Indigo is some Gazebo ROS plugins. Should be 100% ported by November.

Quick Setup

Open up terminal

Type these things:

cd ~

mkdir -p edt/igvc_ws/

Then go to github, and log in onto your account.

Fork this repo, which will basically make your own personal copy to mess around with

Copy the URL for YOUR forked repo, not the master EDT repo

Go back to terminal and type

git clone [enter the URL here] src

cd src

rm -rf camera1394stereo

rm -rf sick_tim3xx

rm -rf gps_goal

rm -rf simple_navigation_goals

cd ..

catkin_make

sudo apt-get install ros-indigo-sick-tim

Then go to this website: https://github.com/uos/sick_tim

Change the branch to the indigo

On the right hand side there will be a option to "Download zip"

If it doesnt ask you where to save, then it already just saved it to your Downloads folder on your computer. If it asks you, install it to your downloads lol

Open up your file browser and go to your Downloads folder

Double click on the sick_tim-indigo.zip

It will open up a extractor, and then go into that folder, and single click on the udev folder, and then click extract

Go to terminal and type:

cd ~/Downloads/udev

ls -l

gedit README.txt Or whatever its called

Then just read what they tell you to do

After that, type:

roslaunch sick_tim sick_tim551 (auto-tab to get the full name)

The sicktim laser should now be running.

To view the data, open rViz

rosrun rviz rviz

Then in the top left corner, there will be a option for "Global Frame". Click the drop down and select "laser"

Then in the bottom left corner, there is a "add" button. Select the "LaserScan" type and click add.

Then make dropdown the LaserScan item you just added, and set the "topic" parameter (it should be /scan )

You should feel cool now

Using Scipio Code

  1. Go to wherever your catkin workspace is

    • Example: My catkin workspace is located in ~/edt/scipio_ws/(You don't have to specifically name it "catkin_ws". I will be calling it "scipio_ws".
      • So i type cd ~/edt/scipio_ws/src
  2. Go to github and Fork the [Repo](https://github.com/chicagoedt/Software_IGVC/).

  3. git clone **YOUR FORKED REPO URL** <-- Make sure that is in your catkin_ws/src/ folder

    • For example my forked repo URL would be https://github.com/l0g1x/Software_IGVC.git
  4. cd .. So now you should be in edt/scipio_ws/

  5. Type catkin_make to compile all of the code

  6. Make some changes (refer to the "Development Workflow" section below)

  7. Recompile your changes (catkin_make in the scipio_ws/ folder)

  8. commit changes (refer to the "Development Workflow" section below)

  9. push to YOUR forked repository (refer to the "Development Workflow" section below to know which branch you should push to at what point in time)

  10. Create a pull request for code review

Development Workflow

Here will be explained how to go about making changes to Scipio's code; when you should be on the simulation branch vs. when you should be on the development. You probably won't ever be on the master branch.

Never work directly straight off the main Software_IGVC repo. Any changes should ALWAYS be made on your forked repo of the main Software_IGVC repo.

Simulation Branch (New Features/Implementations)

This is where everybody should ALWAYS start to write any of their new code. Say for example you wanted to write a driver for v3000 Rocket Booster that would make Scipio finish the course in under -52.3 seconds (yes negative); you would first start by switching to the simulation branch.

When you are on the simulation branch, there should be no code related to real-world scipio (i.e roboteq_driver, nmea_navsat_driver, etc.) written/added there. This branch is PURELY for base-concepts like configuring the nav-stack, etc.

Once you get your node/package to work in gazebo, merge (not pull request) your changes into YOUR development branch. Be sure to ONLY merge your node related stuff; so that means DO NOT MERGE ANY SIMULATION RELATED STUFF into the development branch.

  • How do you test your code?

    • You will be using the gazebo simulation model for Scipio, which is already configured with all the same sensors as the real life Scipio.
  • Okay so then how do I use this simulated Scipio model?

    • Refer to the "How to run/use Scipio in Gazebo"

Once you have a steady working node in Gazebo, merge the code to your development branch (like described above), and try to test out your code on your own computer (yes, put your computer into the Scipio drawer, and plug in all the USB cables, thats of course if you can).

  • Excuse me sir, we need to buy new sensors because these don't want to work with my computer; i think they are broken.
    • I can assure you the sensors are fine, its probably just a driver issue/kernel module thats missing or broken on your computer. But if you can't fix it, submit a pull request with the simulation code you have and the team will look over it, give you feedback so you can fix some things, and then you can test your code on the computer inside of Scipio (ARM board, laptop, whatever..)

Development (Testing on Real-World Scipio)

So once you have merged your changes into the development branch from the simulation branch, you will now basically be testing to see how your package/node reacts in a Real-World environment, not just a near-perfect simulated world. This is where you actually will need to have the entire Scipio up and running (or at least whatever sensors/nodes/etc that you need).

---> There should be no simulation-related things in this branch. <---

Things to do while on development branch

Running Scipio

  • ??

Testing Scipio

  • ??