ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Deploying code on a robot

asked 2014-02-21 09:11:30 -0500

stebl gravatar image

updated 2016-10-24 08:59:44 -0500

ngrennan gravatar image

This question is somewhat broad, but we're looking for ideas...

We are a small group of developers are testing on an autonomous robot. The robot is set up to be a ubuntu server that we ssh into and launch nodes/test code/etc. The robot runs on a network without internet access. We're looking for an efficient way to handle our code between our personal laptops and the robot.

Our thought was this - Once the code was built with catkin_make install, use a bash script to scp the created directories (install/lib, install/etc, install/share, etc...) onto the robot. This problem is the robot can't launch the created executables, but the personal laptop can (error: 'ros cannot execute binary file').

Does anyone have a more efficient way to handle code deployment? Does anyone know how to get the executables to run using this method?


edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-02-21 09:41:53 -0500

ahendrix gravatar image

For my personal robot, I keep my code in a git repository, and use multiple git remotes to synchronize code between my laptop and my robot, and compile my code on the robot itself.

On my laptop, my git repository has one remote repository, origin, that points to my project on github.

On my robot, I have two git remotes: origin points to my project on github, and laptop points to the git repository on my laptop.

When I'm home and my robot is attached to the internet, I can push and pull to github normally. When I'm in the field and don't have internet access, I can make changes on my laptop, and then pull those changes to my robot.

Note that when you're using a working checkout as a git repository, you can't do pushes to that repository; you can only pull from it.

It sounds like you have a secondary problem here, which is that the binaries that are compiled on your laptop don't run on your robot. My best guess here is that the architecture on your laptop doesn't match your robot. In my case, my laptop is a x86 and my robot is ARM-based, so I have to sync my source code and recompile it on my robot.

edit flag offensive delete link more


Ahhh, good idea using git to do the lifting. We discounted it b/c we assumed it would have to go through our online host. And as to the binaries, yes I have a 64-bit x86 laptop and the robot is 32-bit x86. Should have known better. Thanks!

stebl gravatar image stebl  ( 2014-02-21 10:02:33 -0500 )edit

Question Tools

1 follower


Asked: 2014-02-21 09:11:30 -0500

Seen: 1,042 times

Last updated: Feb 21 '14