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

Copying packages to robot

asked 2014-11-30 20:47:08 -0600

genericsoup gravatar image

New to ROS here and I've been developing a simple package on my workstation. However, I want to run this package from my robot.

I could manually just copy the appropriate source files and rebuild it on the robot but that seems a little long winded - especially having to do this multiple times when developing.

I feel like I am missing something. What is the 'standard' way of doing this with ROS?

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted
3

answered 2014-11-30 22:05:30 -0600

ahendrix gravatar image

Most software developers use version control software to store all of their source code, which makes it easy to keep the source code synchronized between multiple computers and multiple users.

If you have a particular version control software that you're familiar with, try to use that.

If you're new to software development and version control, I recommend learning about git (version control software) and https://github.com (free hosting for git repositories).

edit flag offensive delete link more

Comments

I have used Git a bit before, but it just seems odd that I would have to push changes up just so I can get my files across to the robot? Unsure if you've used the Player framework before, but it allows you to deploy code from your workstation by passing in the IP address of the robot when launching

genericsoup gravatar image genericsoup  ( 2014-12-01 01:00:37 -0600 )edit

I haven't used Player, but I do know that ROS doesn't provide any deployment capabilities.

You can set up your git remotes so that you can pull directly between local machines, without having to go to github.com ; this is usually what I do when I don't have an internet connection.

ahendrix gravatar image ahendrix  ( 2014-12-01 01:19:53 -0600 )edit
1

answered 2014-12-01 01:45:23 -0600

Mehdi. gravatar image

You could use unison to synchronize the workspace between your robot and your workstation. It goes with one click (using unison-gtk). If the processor architecture of your robot is different you would need to recompile everything on the robot though.

edit flag offensive delete link more

Comments

1

I feel like this is not as good as using a proper source control tool.

ahendrix gravatar image ahendrix  ( 2014-12-01 02:12:39 -0600 )edit
2

One doesn't exclude the other, I personally use both, unison is much faster (Especially when both robot and workstation have the same architecture, no need to recompile) and you can test your code before committing it (because not everybody is fully proficient with vim or nano, editing code via ssh)

Mehdi. gravatar image Mehdi.  ( 2014-12-01 02:26:20 -0600 )edit
0

answered 2014-12-01 01:39:23 -0600

Wolf gravatar image

Theoretically the "install" folder in your catkin_workspace should be self-contained. It should be sufficient for all run-time purposes and for building packages that depend on packages that are built there; even if "src" + "build" + "devel" do not exist in the catkin workspace. So in principle, if your packages contain all correct install targets in the CMakeLists.txt, the computer on your robot has the same architecture like your development machine and all other system dependencies are met on both machines you should be able to copy just the "install" subfolder on your robot and everything should work there.

edit flag offensive delete link more

Question Tools

2 followers

Stats

Asked: 2014-11-30 20:47:08 -0600

Seen: 612 times

Last updated: Dec 01 '14