当前位置: 首页 > news >正文

创建ROS的软件包服务器

创建ROS的软件包服务器

前提

1台有公网ip的服务器, 最好有域名

服务器配置

  1. 连接到服务器

    ssh root@域名或ip
    
  2. 创建要存放包的路径

    mkdir -p /var/ros/ubuntu
    
  3. 安装必要的软件

    sudo apt update
    sudo apt install nginx dpkg-dev gnupg
    
  4. 在自己的主机编译好ros包, 具体可以看使用自定义包进行ros的.deb文件生成

  5. 将这个包从自己的主机上传到服务器

    scp ros-noetic-xxxx-0focal_amd64.deb root@域名或ip:/var/ros/ubuntu
    
  6. 创建包索引以及公钥生成

    ssh root@域名或ip
    # 创建公钥
    gpg --full-generate-key
    gpg --output ~/my_repo.gpg --armor --export 'Your Name'
    # 将公钥移动到/var/ros目录
    mv ~/mr_repo.gpg /var/ros# 创建包索引(该目录下存在deb包时再执行该命令)
    cd /var/ros/ubuntu
    dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
    # gpg签名
    gpg --default-key 'Your Name' -abs -o - Packages.gz > Packages.gz.gpg
    
  7. 配置nginx服务器

    ssh root@域名或ip
    sudo vim /etc/nginx/sites-available/
    

    修改成这个样子就差不多了

    server {listen 80 default_server;listen [::]:80 default_server;# 这里是根目录的配置# 也就是 http://ip或域名/ 直接访问到的目录# 如果要去二进制目录下 http://ip或域名/ubunturoot /var/ros;index index.html index.htm index.nginx-debian.html;server_name _;location /ubuntu {autoindex on;try_files $uri $uri/ =404;}location / {try_files $uri $uri/ =404;}
    }
    

    重启nginx服务

    sudo systemctl restart nginx

客户端配置

  1. 获取公钥(这里不用apt-key add的原因是从 Ubuntu 20.04 LTS 开始,apt-key 命令已被弃用。)

    curl -fsSL http://your-server/my_repo.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/my-repo-key.gpg >/dev/null
    
  2. 添加软件源

    echo "deb [signed-by=/usr/share/keyrings/my_repo.gpg] http://域名或ip/ubuntu ./" | sudo tee -a /etc/apt/sources.list
    
  3. 更新软件源并下载包

    sudo apt update
    sudo apt install ros-noetic-xxxx-0focal_amd64.deb
    

    如果无法更新, 显示

    Err:2 http://ip或域名/ubuntu ./ Release                                    404  Not Found [IP: ip或域名]
    

    如果确定该服务器安全, 可以直接将/etc/apt/sourcelist.txt里面的deb [signed-by=/usr/share/keyrings/my_repo.gpg] http://域名或ip/ubuntu ./修改为 deb [trusted=yes] http://域名或ip/ubuntu ./ 这个问题暂时没解决, 后面再说

  4. 运行ros包

    注: 第一次可能要输入完整的命令, 暂时没弄清楚是为啥

    roslaunch xxxx_xxx xxxx.launch
    

相关文章:

  • 量子密码学简介
  • ADRC-跟踪微分器TD的Maltab实现及参数整定
  • 智慧城市新型基础设施建设综合方案:文件全文52页,附下载
  • pycharm2023.2激活和新建项目,python3.12安装永久换源
  • 2312llvm,用匹配器构建clang工具
  • MIT 6.S081---Lab util: Unix utilities
  • 一篇了解Maven中的<optional>和<scope>使用
  • 基于RocketMQ实现分布式事务
  • 31. Ajax
  • STM32外设系列—HC-05(蓝牙)
  • 【GitHub精选项目】短信系统测试工具:SMSBoom 操作指南
  • 创新科技赋能,易点易动设备管理系统助力企业实现设备管理升级
  • Unity自带的NavMesh寻路组件
  • Hadoop——分布式计算
  • 使用pytorch神经网络拟合计算模型
  • 345-反转字符串中的元音字母
  • Angular 响应式表单之下拉框
  • Apache Spark Streaming 使用实例
  • CAP 一致性协议及应用解析
  • CSS 三角实现
  • CSS相对定位
  • HTTP中GET与POST的区别 99%的错误认识
  • Redis的resp协议
  • SQLServer之创建显式事务
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 如何进阶一名有竞争力的程序员?
  • 算法-图和图算法
  • 微信小程序设置上一页数据
  • 《天龙八部3D》Unity技术方案揭秘
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​低代码平台的核心价值与优势
  • # C++之functional库用法整理
  • # Maven错误Error executing Maven
  • #传输# #传输数据判断#
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (16)Reactor的测试——响应式Spring的道法术器
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • .net Application的目录
  • .net和jar包windows服务部署
  • /run/containerd/containerd.sock connect: connection refused
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @RequestParam,@RequestBody和@PathVariable 区别
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [].slice.call()将类数组转化为真正的数组
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件