0
$\begingroup$

everyone. I'm tying to upload ros packages to a cloud server and run them using paramiko.SSHClient().exec_command(). The function is attached below:

def connectMyServer_and_launch(zip_paths, server_ip, username, password, port, launch_file_dir, env_script, magic_int, env_command= ""):
    ssh_client = paramiko.SSHClient()
    ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_client.connect(hostname=server_ip, username=username, password=password, port=port)

    stdin, stdout, stderr = ssh_client.exec_command("mkdir -p ~/catkin_ws/src", get_pty=True)
    with SCPClient(ssh_client.get_transport()) as scp:
        # transfer all the zip files to the server's workspace
        for zip_file in zip_paths:
            scp.put(zip_file, '~/catkin_ws/src')

        scp.put(env_script, "~/setup.bash")

        # use SSH to unzip them to the catkin workspace
        stdin, stdout, stderr = ssh_client.exec_command("cd ~/catkin_ws/src && for i in *.zip; do unzip -o \"$i\" -d . ; done " , get_pty=True)

        # use SCP to upload the launch script
        scp.put("/tmp/to_cloud" + magic_int + ".launch", "~/catkin_ws/src/FogROS/launch/to_cloud.launch")

        # catkin_make all the uploaded packages
        stdin, stdout, stderr = ssh_client.exec_command('cd ~/catkin_ws && catkin init && catkin build && source ./devel/setup.bash' , get_pty=True)

However, the catkin build command failed. The feedback was

CMake Error at /home/username/catkin_ws/build/catkin_tools_prebuild/CMakeLists.txt:12 (message): The catkin CMake module was not found, but it is required to build a linked workspace.  To resolve this, please do one of the following, and try building again.

I've already installed ros noetic and set up the environment, and if I ssh the server in a terminal, I can successfully run catkin build under ~/catkin_ws. I have no idea why this error or how to fix it. Could someone help me? Really appreciate it!

$\endgroup$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.