Embedded Motion Control/Using Pico

From Control Systems Technology Group

Jump to: navigation, search


Starting Pico

To start Pico please follow the following steps:

  1. Power on the robot
    • For Pico, the on-off switch is on the bottom, next to the emergency button. This also starts the on-board computer
  2. Now plug in the laptop you want to use (one of your group members' laptops) to the given UTP cable and make sure it is connected using this wired network connection.
  3. From here on, you should work on your laptop. Open a terminal and type
    The password is emc.
  4. Now that you are in, you can start all the necessary nodes on the robot. These controllers and drivers let your software communicate with the hardware. On the robot (so in the terminal you opened in the previous step) enter
    • For Pico:
  5. N.B. leave this terminal open!

Running your software

Pico is now up and running. To run your own software follow these steps:

  1. Open a new terminal and login to your robot again:
    with password emc.
  2. Go to your group's folder:
    cd ~/emc/emc<group number>
  3. The rest works the same as on your own PC.
    • The first time, you will have to clone your git project on the robot's computer:
      git clone https://gitlab.com/emc2016/group<group number>.git
      Of course with your own group number, project name etc. Just like you did on the PCs of the group members.
    • Any next time you can just navigate to your project folder within your group's folder and
      git pull
    • Now that your own software is up to date, you can compile it and run it, again just like you would on your own laptop.

Develop while testing

You should avoid having to do hard-core debugging and developing while testing, since you only have limited testing time. However, there may be times when you have to change some things in your code and retry. There are roughly two ways to do this:

  1. Edit the files on your pc:
    1. Simply use Qt Creator or any other editor to change the files
    2. Push your changes to the git server
    3. Pull the changes on the robot, recompile, and try
  2. Edit the files on the robot:
    1. Use programs such as 'nano' or 'vim' to edit the files
    2. recompile and test
    3. Commit and push your changes once you're happy
      • Be sure to set your name and email address before committing!
        git config user.email "bla@student.tue.nl"
        git config user.name "Your name"
        Note: don't use the '--global' option as other people are also using the robot. Not having the '--global' option will limit the config change to the current repository.


When you want to visualize the robot while testing, you can do the following

  1. Open a new terminal and type
    This makes sure that any software you run in this terminal listens to the ros-master on your robot.
  2. So if you now run our visualization software by entering
    it will subscribe to the topics published on the robot.

Recording data

A simulator simulates a perfect world, so if your software works in the simulator, it is not (at all) guaranteed to work in the real world. But because you only have limited testing time on the robots, it would be nice if you could somehow simulate being in the real world. Luckily, the developers of ROS also ran into this, so they created rosbag. Using rosbag you can record data published by the robot and play it later when you want to test an awesome new feature of your software using real sensor data, or if you just want to inspect the quality of the sensor data, etc.

  1. The first step is again to open a terminal and log in to the robot
  2. Find the topics you would like to record (usually those will be the ones containing data from the LRF and the odometry: /pico/laser and /pico/odom) by using
    rostopic list
  3. You can now use the rosbag tool to record the topics you like:
    rosbag record topic_1 topic_2
    Topic_1 and topic_2 should of course be changed to the correct topic names, but you can also add more topics to this command. While recording, you should leave this terminal open, and if you think you have enough data, you can stop recording by pressing ctrl+C. If you would like to record all topics (not recommended, as this means recording a lot of unnecessary data), you could use the option -a instead of typing in all of the topic names.
  4. The bag file you just recorded is now in the current directory, so if you enter
    you can see it among the other files in the current directory. This should be the home directory (if you did not cd to somewhere else). You can now copy this file over the network to your own laptop by opening a new terminal (or just log out of the robot by pressing ctrl+D), navigating to the directory where you want to place your new bag file, and entering
    scp emc@<filename> <filename>
    What this command does is the following: it securely copies (scp) from the emc account at the robot's computer the file given by the path after the colon and it places it in your current directory with the second file name. If you gathered multiple bag files on the robot's PC, you can easily copy all of them in one go by doing
    scp emc@*.bag .
    This will copy all files wit the .bag extention from the home folder of Pico to your current directory.
  5. After you have copied your bag files to your own PC, clean up the robot's PC by removing your bag file(s):
    rm <filename>
    This permanently removes the file from the robot's file system, so if you want to keep it, make sure you only do this after copying it to your own PC!

Playing back bag files

Now you can play this bag file as often as you like and have your software analyse the sensor data. To do that, take the following steps:

  1. First start a roscore, like you always do
  2. Now, because you want your node(s) to use the time that was recorded in the bag file instead of the current system time, you will have to tell it to do that. You can do that by setting the ROS parameter use_sim_time to true:
    rosparam set use_sim_time true
  3. If all is well, you should now be able to play the bag file by entering
    rosbag play --clock <filename>

For more advanced use and other information on the command line use of rosbag, go to the official documentation of the tool.

Personal tools